From 072fd8c30cb553e2c30cced677eb9ba65ae0d08e Mon Sep 17 00:00:00 2001 From: jndaniels Date: Fri, 29 Nov 2024 20:52:49 -0600 Subject: [PATCH] wappler update 7b12 cleaned test pdf cleaned up some js libs TODO: finish writes, note boxes (rich text), fail reasons, etc. --- public/PDF/PDF-Template.pdf | Bin 78446 -> 0 bytes public/PDF/Template0_ERTFF.pdf | Bin 0 -> 617409 bytes public/PDF/blahtest.pdf | Bin 173015 -> 0 bytes public/dmxAppConnect/dmxAppConnect.js | 8 ++++---- public/dmxAppConnect/dmxAppConnect.js.map | 2 +- views/observationPage.ejs | 11 +++++------ 6 files changed, 10 insertions(+), 11 deletions(-) delete mode 100644 public/PDF/PDF-Template.pdf create mode 100644 public/PDF/Template0_ERTFF.pdf delete mode 100644 public/PDF/blahtest.pdf diff --git a/public/PDF/PDF-Template.pdf b/public/PDF/PDF-Template.pdf deleted file mode 100644 index 8589a9bae195bbcd3bf1eb007a44a9eb96627bbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78446 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%0D);Awz-a=kb8(JL*G1{4VZI!mNwMj!` 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∓e=8TW^ptiDJ(^^=kC!uw9ky|p} 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


rBoNF2*b}SB-{X6NS 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]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 z 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

Wj-Sd*fHR)VavGry?e z)G!eg2I+;to2#)I3Up*=A47I4F6b(1DdT5}4;G?F$4fGAm~PEf+lPrNOFM-3V2nOz z!%8TA-2w1j9RfEXV$;-hFwkjNz@rBa;W0C+2dku_u&{uSqPaM2 zl`1iv1lTF%4idR2x;k^OEV|fPfi>(v=zVZ(E}`&l`zi?7Z7wJ~ z2?$4K{N3e8pCO1>T15w&!sf_(t-iv@Q>UzcvMz+e60{q`~vhDPRQlV z2yh9Bbr)Z#yVDBHf}xUkGS3yOTt3`)Tn~Es*9e2+HwvB3yPOm&Fb&L!Y zxZcjfOIwLW>Tg3t+?EJt*hUq2!UIMWdI!4`l8}SBDrX)=S#X-?=|>!}nI#gZPa`j$ z0&yLNxs85K8URfzmyuU^dG(=lypV3r250&6eQo4?M78;X@&yudCXd@S8?Wa$E{%!J zc<#6g%^Nq*y2KXRZe?{2uB+EBTM@PVlU?5Kw>^Z*a&k$sa!dImjN@?*#@U)A)QK(l z$Mjy+F1M^aA)BM%*(8!qANHft9_lh%uB#_GQ`RnajRSnoJMS|VMm};{)`ZpCEksmF zR>5DIWZluS98sW3#=t<31x8i$Qw`_5&M)L7N}bAaJ%i+aQa0XYJ>;Pr{epPf+5Nj6uLR$~RkplB<+3{ODBVo@y zuS*ykPa+~Hh{ILZIW&RKmuJV`&RFED{#(paM$+IT*jW_Bh4s`ZuOiZD6nI9opcEz5#vbm(RzDJk2KhV0H`)nu5+OdI_=pIt{qZ*>9J zx%la6R)n|el~G{0)9*(b?qlWnCW|LW5hhSzdRMl5Vmma!xrJQ{QrsUG(OiMaZ%jeZ z#!cC`fg^mVmMX2v3mr^~roJ?;pK{cRpLC>nxWZ+xt^i@NJs{2Y*zYCI@4o zjIylxxf}G+4mF;;w|t*B{rfvKZ>n}TcvCUBP&+JzmDPhl`Q+BqV zH7F^6E=$l8F;vej8Y#rOfZ6 z(iCrsPd0lOo{0&c5){A@GW&7Se&qo0{&}UUi1KUYp-)?CivWj}Coi-5O^VfXS~^gb zw}f6}j~+0lDJd8~wiZNKYFaM~X*o74TkDiweip2wxyjUtd>*#8pl% zDJ^fzHwh11i~@LTKfAQm4l#>8NzF1!vg=KT5&xuphznDNH#*Z8Wh$+{2JDtN?R#R?r64EpmcjkX6?H&HK;pL|rs!uJQ zA`B2P%OZRw>+;jLQ~9`7GJYR~L#6nUl(=*6p^ZHGXx@di$|BEW$UlQhw|q4{QrVinHQ(F!T8ASPOy4&W=b4X@ zec>WwY;1N0Y@@QG->ooE<`Dauw&3|EUZE7PtS|y^MtDPV@o0YQXUCpm$BsnxMrLh$ zIoJ9@X78glV+?!ZK6t@EtdZ|DHQZJ}*K-Xux?>N)yMUMO0*siheVx@2(4W#+*6Ve( zS&K+vI<@lAsRyi7pI_rCS5KkK>@Vh+iHYC(ME6pV%!)Wkd5MUhs&p3%>j$oBAx9+U z1gR?ry-=Mo*ALj4RGs;>vF^+sdj~AOo)pSIKx`O*8)~w>>~#%#l%Z&;#lQwhi?6VI zBb|Cn`Xc(}#_2(g|8-l|X02_A-CQT_yMh5@2~}^d#iu-OUJhq0Di6Fg#l=lm4p9%C z4G;XcM`#vBsh3;#trz3tr-`=?-rVoPc8&QQ@n(tK@@|&UozG+@n+I@QQ;l%EsLqB+ z1X1*I8`3xw?F5%`$dT?*7>hO@gYPA_K*EHs7O(S~l=4^BuIF0B0zUS}roTu;?DMeZ zEh$Lkrdw~;Y!gUr_j3L`RB=t^60?a+PI~2R))Mqs$@7>L^!M5gfwO(A`qarg>lA&( zTjYh>Ff2RV;wBoto*K;NhSOW#lusAHk0h^;@t`FNf-{+jvo~XL-t<-8x}UedZFa&p zSwzxx+wLQ8eY48*5zWv?Ol(6Z7lKU4BP#Tq6%_&_H4@4k}&^Vd;6)STjtE@lT#!A)U}RnC@nTQosE}6DwJthG~i2F=+b=hZyY(?KCz-Br-D)e0xjE)XAUxGl7Lce_<#m$NX4+xlI?#xs0qPaNx0bt* zdTyakdR?_>7HKQX#FbHb(PVsncq0=bOG+BntgE7@P|-0Yaqfl~BY8w-hpd7Au*uG3 zX4=LSK;QlnBDcciE<_X2soB9bH;PIhyV8C?LbF0Z+m-lZf3hGpAeOPAUvEG>85v7p z+lrvcM_8VH>fQFL*g2pEy@C;7=1FX=G)*{*QxIEibD1MH30i-AmsZBwXX7o|S4~+X z?V~;8bu+^9l_q{>TfVf$x+7$!G6hhPb4D8VHBnO;Q^RSZM7d@s5u1|<*NuY~tRH7` zIKf6-@rObxV1;^8nHx9DRRlt`>>wjEuLOWA+_u?{aINYnl@=ewvlgyl+8M?te-mWMq*lVEe4_lR; zbdGos_tAg}aEX*Y9pF`Am|c*C{1jvW5GxUF&%|B32eaf&B4Mz*YTFG4WCoTrhFDVZ}kDax8rqQ+2?CrXB2*vLC*Kw z!QN95FKRk>h?LF7C44WGxo7gDX1g@Y^cd6vO7liVR(;XAM@~j(np_{Wb$VXIZo7y9 zo|tRk7)3PzhSPdbcL)^Jd-=3ziq1C~fJOoCbU+;yI~$R2gO;h36}A!BvaE*eQ~=Xgka8K*b3lM@~4sc#ItTH zf)!h8xUmq1*ob|Cxp2iQz6N?+wD$CfeJnzNB4v9^2=YAR3!exh4CXeim`B)QCoEv> zOph(bQ-rZ)q{n7Zw2<_C-cjOqldP$M_qlOF$DY_r8wS}E&+5~33sr1j{#zE9b;53xHd<7ubNamop_2oKf=lBNwug+YS;To0xa z$ovT8_E`UJF+Bot6HnABhhafDJTgfErc|KHXs-_vCH5+MlGz8#U~NHYwoM|m4+e1_ zF}?Lz$!Q)Gs}QahIp};M##wkNaqY;1@Xa|-+8!~WF#xn42_PdW%AEE-L%{Wi;Ts4Y zg|$YLB%`MAzRbR~tEqf>y0f_>JbQoh#;k1fj_K)_r*;<)sWvTWULH#K6*m`)`YN}; z2Vf?{+)e|NtaaId{>w2{nY+DNofjYP`R?(JpkhAB9Fr=+)tiij-A$8QF!Ch{BFYTQ zUbuuMPUcvpcrRtIuS@sdmhmn#6g)abw zbb!awXzl)-zieb{%ZTbawFXn$>BR_>OL$zSi*w@4q|-Q-mPxlw&`X=Z{wvk?zDG}Q zUCGunoyUw)fV?&rERAIjikLmkPe4rnb~@cB?7~oWwh~3*^79fGW%m?pq&Q_R~2>V$L!- z@Gj}N-k548cv}q0qW30CcV$KyI^Mzet#mJCB<5=|U#4wbYPcTB7uNWX5=EUkPoGRs zKX_oSSg5n4ueXsHTUI)T?0+=6k40k9*RDK3(cC3;3E58(E}`RFUjt zvqNg($)PpbfFwzJexO8nT*5Sv;C%#`4?TbzsIP1CYCrJ`w6z{`!y^q0wiWSsoEV`) z$e4c%tz{3XWlXBnZ;O*osYnVb6F|3}v?^rE4{K}w`W{`2Dg*(#3W=$|t1P{)Xs*Vr zk?MnnKcw9i9BOebSm=TwO8f1TXj7qBlxZ^e3V^r~wh|3N^K+OR#4kS2u9t%i9}JYz zo%QX;y|H1%r7!StuncI=+(Im4pLIDsTT+-CKAm*DxFZXz4uEQ>f-dhBD7eI+&zySW z!GqL)QgqPS#D`&os9U6Qij}X%W)&{jxzWVf(}vzoAngucM4mn;(03U_?aPw~Ju&aj z4$HWU270V)?0I{TPsp8wm-&{7$)wOAils{zeeeQ7|I2InCGh$Isif^}sE*?UiB$AK z17qr5k92s=QLf6j4veqf&-nz?Qh=rh0g`W7>q!UYPn(R>vgq^W?Dy&p^oj;NrJuYb zq2({`FMRUFZqYorXGQV?cY6TeAe- zfZeTkom?)wIs!O04e;@Nh^ei@I|tY68&;Y_ayqp`OQ~OOH|>`&M|MRV;JSKd&b$|u zU0S1xYIc#CHcKyutU@I^t{=E`YDR|_OMT-Mc3mhZ&0dZ*`}2i97=JP<;{fR7&Z7r( z_&zB|8Zmji7t!4|0*OY0zs%|C#n5q7O<7A6cUpmLR1zCF3>mS@@;I1m;+Qa*bC#!- zv@Esxs7ZAzos%uo%F@SPBK!*slz2N%^KH8&Mcnj?9xnb4+4a*p)?w0P4ZgWm8n9)a z$1jqkmck4yU&PIaFzw{^A3jCeIdpX!nSNX{ne!@$>(%9uJzsLUPRrCL1CQaCCmme) zG)-_~n&I37@Gi}ru~BFP$Lu{69GAwH6Gx&S(5|ihfr9yIBgGKeS#-{yw-b01n@=JI z22L6wc4rkBDO_8WZN=e^gvDe-M@y)WQW-j)r%MVy+#35ytZ){}!p#^F5QW?05aHwv z7^S5txl3U2bkOA!#2oJD>mE5UbdPCz;8L?hM+XS1b@JRl0YYXjO?Q5arjihvn!&Ru5&8a zm~yS4dO}ErQDY}qjxz{)IS$p+P8M0pOW6>E3hyrFPL_`9N0u#wc7nE}r&!<`PS;Pp z>ohr~j2G!kZ!#75{74GyU-sqH`syuo%10tOy)i=NL-fZ@tEX#+y4>siR5B#rbD5ky ztmn{$)dQ`!I(cR^o0zkkx*HSbW>X$9E2>rZHc2#+BrW%~THqiIG$NBKHi@@0O48z~ zoz44|sgDv5QJ}}>4rd;_ewQYF(=YwgG>MD(Z#0ROm7V=x&?F5jhj|Xvd#F3)G;c1C zcTbiivZl8qJ|%WHZ*J%p)~l>8jH1$?2*uD!}m6E`ws057R z7XVC6V=EW@d|>GmQQ!i|k=RN%iHQs2!F|p1p+e}#DD!E1jZh{Qe2JYNS&Qy~+vB{2 zuS&$ZeZm|Qli=ewbVR8;s{s>RP+jheWZDx7ffmUIStsj9#`VNC7pst%T5rPalfW>} zrw| zp!8s45g^rr{GL1_SHqluI9-MTz)T3BJWhbZnJB04%?dJ#dD4R-2ml>d1R1S{Kn%oY ziP#AGK%j}n8j*z%BhgE}F^3rV_<;zWObKKG`2ci6K3Qo54Ct6N6Oo>-BH{@kOjk;e zi$ZNBUt-KAz1_Y@0y;ry!a_IQIE3<*@yCd6x}jKl1Q&C`Q8nT(^i(fLB?c6t#2@Ji z=aH+#@MF`aa)+U(0}0#v$+4|I<%O~ah$c`BYbe%+I!u^uhWIdBa)~|i(*+mAPlh23 znx)Nw;VBNSK=%rw7E?&{gFET~P{UzZgyuXE5r<>c+h{zTalKu1S$;XvJ%S2_@A@T; zmj}5`eEs;+hnKO?YW!5>@o<-Ndq=CYcW>lNzUbgRwz0iaKLYK_aXMWJ7ChztVM-p8 zDCEdi5xOMVk8nxr=a1wb+OKqwX4hJSah_T6XrISHc)JoK=`os&pc2fC+*M_oa#g_C z1V_>oi^dwrgH_<=C$qDWmBU2PL#7SSUhP!0s=J?8qz!qEFd_{P$3E`sDk>dtN7~8D zz;alo-~~#k4)5l08)7jb9R*KxJ1w5>nbdu`yJ)Pd)6_ckt~-iq7dax(s+xO@^$e~Y z4BU(ZAf#mb2&+V)yWXmbFJfS=v zsXT}zQ>eztx+I%=0ML2uzKxm}w&wrY%qV4H;(7*Pvb*aHDsZKwn8vP z8OFC+D>Z!D4A<;zUyBdl43jX=86$JsGq| z9L#tqJBze~ejGu!M=H{)%_iX(LwVpaRZTBOFn5H@xz1RtbVlQGs#cc3St^R0Z#5fV zj8B-FsrWQ878TDJ>b6|NDLfra0Gk4K9|GM0OJR|A_{qmUBXtx!Jyd(9YZDUB`9k}t zH2bOir_|%Q!T~0l02BW~iI+neotqh=$At>F+XZlOVO`&nAU}?^YSk__VGJ>N(B@`f{@X_A9*{hAe z%Tg9i2K2{k0yc=(9z7#Swa9Tr>q=!fHfCTp9qQ+#U?D{)ep43~R?N^fS&|0>!_E1= z0hxKhQksPS$d1U17}2CqndQ*7La$I}k>7KsDV+zUSN|>J6CuS|>Jxc44f_6_%@r0( zc^0XR>LESD#Mi2@iX@UqA;)=Yu9*46rz`cDWu_h3MJFw1cj&&Oy3$1-+;Lp&){*y0 zn2PMV3lOPS_nI!kGtn#zC}Q>6|d^rQnC z^`3$_X4^Wp^g@ynV>l9}i^M!&jabZFw$HFgF_Ja+lW{zbc+!QhgQ(QDd-dUw_W~FJ zakQh4JrT#$0_B_zI39&_dE5Krj#a>?RY+1)Gx|sZl169_U?*PiQ9?4Ip0u6c zJXWfXq|Q(SuN+}*oBp85<7b90k7kqk;~*Z1M`q#^Z9cpTlNSga&Ps@~^=aE?%MyCx z?~re6Y*^p2b!mt7Ii~J zX@DHUh&_9ZnwiX|eT)pkq89aQDPD=dzWnr+^)x!32q{Gh`&V#p?bBt*r;H7#BvON_QDH(P?68dtlFJxb>!}&mJH@dng^tm>q|k2y%X57Zm9ct(b!et4wHLd%L?;$n~`FSDAOJ}x+*rV z6soVAn8$K8ynHkg>$S4_e8P#c>M(C71-qg+PS9Qr7a z+{V6m=vg6cEi^UR2Xf30@>y{?QEJ|y$UZBrGRFbU=!c&(Ke^U&pN@btiPXB{k4o@K zl#=hUA?j9$^_`UJs%09oT7FpLba-a`QU*(2vqz)odQ{YEMRws0ORhK>k+WekFyFa$ zJy@)VKP~O{3?_BYNOP(6ijQ$gwD4KMq&r>r+nbhBZ0~?~yq((t&kkx_9GyMA{psE9 zRCL%KpP+AX&tMH9oAgA5Q&fnY*6i8L91qwII2OLORg&aR#X;1LB`&M+>=?|Eni{(G z*lKDFUP2hVxqkB4NCnJf!g*CTK8^crq4;z(o3;D#%Ge6^RrjpONly18mrXRh@z}PF z^q@m+<|UE~#w(Y8>Cb*R`nLZXQoKn zwxqhzzL%r*ttQaa57K`23LkUP)@Uo*S)W9L9hI@+W8C39Aaivu66^u<+4L3exUf%th;ReX3&s)bJ zWV|6$cXQCaJi|x8!1~4$>mQ6H#$Axeuj;o|3jk@r>6s6Qh*7tNa{hQr1&~}5HhvWG z6D2*e$bn12$Ms64sZ9hEr4_s(_Pj@_x^o3=yxubV<0t6!)EQsToT!?7Hb&K!<&2qSu9kogtB!j)w z!}(J9i~3mvrySM#^CdQ9BQ6j3QPE&LC2EoJ5B+M}h@9Y?%;cegktv%ZnxQGT*B zF@v9rOz^lQEw(LgseCwJFwPs#CWsssryAD31v_?ceaf1?w8Z6bHLIZ1*s2%p0hRVC ziL&=tCJ0~0?3xRrjnWrG#?C}^4jUigyoaGaeBMq1WAy@Yx{FBU={#2HJe}%muY2sq zlW^o(ERB@l%(^_SNJRqgbpg{-i7+0c&r~FtC`Kcm9+Oq!wl1xZDFbg}9q(&jmlb-; z?NvN_dJN@_)qZxcU*hPoG~6FERIY5+0?W}buoc$gpxZ}imb`j&#dkXFaX5dOz1GBJ z-C%f<&PKDFN4w+ozW#0~;u73qn!s@V1=f{g)S)4d*<*Q2(QM;(Q6I~Gqfbi1OT7~F z1v{TOqweJUYe+*5b56H44QifV48FjwzqFv6gIuGB2ije;1sQhalQC;2c!SFlU9i&c zy*gNGyhS|hIq^TDa(giOXpS zk@}KZmp!)t!Nm|JY1_m}<3Nc`2H7yEs5s+xi8RExloW=zpg97iusL3(lqEQ6j}C+_ zX>1ukA6uau*TBIEF+X#en)^0rjdqMCO1aMn60-*cXT7BmU^b0OgKUay$*ZcPpfG+*0V(1a zm_>q(_=p!ziXk8%7gH>HwBz$Eq`BY-rV=mPanS5@6}0^q9XW zP65x`B6`SM7J+Bsm&_U_ydA23#i@al}c;NH&5PCFHQWsbRHj@F`R6xR~@$z`UTah@9y=yQ(uF2m7F5 zI$3&1R{DXD+SYJvF~O^|wgk8h?)@AT=Wt@**ih4dK$1C%enz*?BQd(9+wVu`XvT~f z%S?Vv345sDMFQ0Te{F~8jwfeeDnI0kD~v|P`%2FM@73!2gzjW-sjG9JmuE=0S%i40}Gn#NnTbM#7k(X&CGs$8YveoC6&+W)0^H%x2tGjXvE?<8pi zQsK5TY%V?lX64S+$)~khC3wk?ymiEAiJF-`jbhs}9NaQx;i-a;2hUUG15lYV+ZZfZiy?H;83)_K91Yjn;`k zq;_Doacp|~%ahB3vA+GAFlb&V0lQNbs8cTm?L-r}NPxQ)&;+Ylyo$kC4-eHE;{_Gr zgzNVur!91xW|HF+t)>}yc+5X zD6_TWf%Jr=fjo_Y%d5g;CN*%2B}CNMQ@6?!Pg|B33uk0V%Rb>Lx2Eqk z2+!uG0bR4$5L&P3j>)=T^do5v(KQfdX1iFv;yote8((lRcXG{vQC}$V2j^3u{Fv{8 zqJ13`uW(Amio0htXm;$|Jy!VQeOotxm*8lhg!PDqi zQV70gL!Nt0t^FvZWWwgzrz0I$al-b!pEhqK0`ky(LF6fay!eT@<-z=yl;hUbQ2{I0_IQ>D5B z;$}`mJ+Z=~8Dnsnjje32gT=8CO z!%O!*pW*Nyu6+*d<}>!m6>Z95SsE^8b*!Q~zgWL_gSQZ4?(~3fBkh%(LnH4!gc76F zml2PL@Hpd+@KF0yxM!GQgawRZy7$)9PnT*~B1-p$uy+)XG9^XSFh*ps!L4fA$)&)p zaIPybLx9V@PQQcV4JinzSC- zo345(&lVRbnJ~N+uHVu-PHT|Z<*0G%hu{TojwqD97JGa41l2es8pbPN_#Bd%8^}Gw zzYK;}@A85*q{EK=eo-^Bvl}`UNaS}i&v3-8>7%OLwke{XU1~hT*4kHm!|<_GgM88p zH)Fd+q#@E|^NB0v<><>}ZPxTdkc zy$NW?xS7U+i^S^0d?gWKO`Lthf^lhuwJLdt$Ej?XEZ!j44G}|IZp;qFnu-2uE2Mbq&hFY4F9yiDQRy0p$ERs zN!(TbBZ3QteqlhFx_3D@3!~3fvk!!audokBom`fE1WFpihqJDckd{62n;t8URKsTv z^I=}S?@s#I46Y)EjytWX&E^9!?qFK%yW~5qx21^V-}L7^@ny*GSf_(H*L^-pxtF(G zcUaVSVwNU5p2@1B^`ZhGMQ7+UZY~CRi$r-3V~9#;_ysw%1$v(0omB|?2aao82Gn4Z zjt&KGwRIxf!jdqzdW!ZCj`rL8frdN4!RA^^1>@xBd+ObLg{iyTlAG-cMmGd5@in}M zIc1YP&5JVimW0=BU4({-+YD|;i=Uo+3ThKIO3HRV{#>$ebIAX2H{Nsc7UAt2|q zWYJu};h5=yzQ=V;ImT%+QG~Y4Ejx0@VlL5ohd*SJA~Av}d%N!27ivAubx%r~J^~&Y zkl2WomAY8_MLOE}z~QxhR<4`Eu7!Q&qOO5idDC~UtW;eheDURVGt~tqj2d^NE+-xx z!|~fMuX7_Uaya}%!XlHMrj7(4VNYkgvOqh{r zXW6ebSoKa}qoV=3MMkd~i}d)h;@iu=An7i5dKaPNek`=6?}W0-gk?@4XSSS zVmV4#=Gz$gsyZnymX>PSL$k`C#J2UWE5TH|~jW9E-UbK15uNwb|$S)9|D#U&SwN&^aE19Yqvr zE!m_!7#w36mVr|4KbCKF=!rS;_DLpOKco@3sR2e0)kM^-T3R9#vSE>0-)O0$@ zJ4}THLTBw`HbVa5@uAuB+(q2>0O8ZN>qpm8@Gp>AJ(FbMQR3+Ko}$OKQ%Q=@B`%SE zkPpyPWG`)uPe?5J!mEPFAI~5Cd@6wC?I5KhSIlLS2nlGv#grYAq{~7D%s~p^ot)jS zBVH}_O7Q);IOuheCL{M$AHeX|M8dzTj=tH0^{3Sl8<6?enI0CWXKk)L zW*%PU#mZg_E!U8Zd2$iTSv@LzSjQ%WRb}>!^>tgPZlw|Q53)|~FkJV%oN}!^1|__P1H>2nYxWNK1)yNhA3l@ZKx;k^4OU?|aw#U+-EE$AyP8JAU&$ zd!N~R&;EUWwJZTL&YJHkzyU$!k>j<42hMv#3D6c&?&^3qvH^~k!N~ZYJ!0xG)ah2` zlSe#p!lg`3P1jRWXGyX;r?>65J}73kBNApW-fkMkBNr=ZZr-w^V|gb&;HAGZHq9_L zaZN(7kd8CqG5M9WHr9^vZbhG!Wv6;VA14hXlv_`0B`b8aztSccuv3{4reLqLexcnX zBFOI;k`z+Gos_%GhycB>H*6%QqbHVrtv#JS;zP7JO4K!N^l0BzY&0~q0lao|4)ykL zx{^0uM3)<+BRxh~v(;!dy_XW)?4%vPt-zc@0$LSk!jYM&xa|e(!dUnQeOkHe!^O5# z9JT%0>cz=$ScQjqg0XH1(a>8&P4UHLxs&_k2X2dpK}TS}iMO8)d_rP(rw-oCEYRAA zS*QejQgE?Rn`iI10z0m#G7nght9)M+&>>N2zxv4_*pT8yIo4)xL_pPzKy#N>cC+3J z*ql*^*facRH@-cflSdHBTj?>V$dZnjj_ga;t=?NTbQamS5D;+fPqWn_V2@kxwEkrK zf$oZj|5c&->dH%tPewSTIY>Tu`oH2}Tx+GndhiaqCyPr@xdH6lkTx=K2fH~Bhgh!N z-QP8DQ>SbQUo1YDTA8M(3JqgAsS*?udnRn&W)?ds=csSc5DjS4Ld7ZW);tkey0zuLU#4S1)QY)rk%BTxd z-KFit=Qy;?-uWnfZ^AM7=S35>b`GvRo7qpd7;u134bj}McfyP@63ug)U(AWpx|1PX zd5c4o7{)PJ6B*JIIlYw#RLf2UM zRv){$oeuc5FU1pd+gUno?-bLjwKg3(0@^DK-FjV*g6Vg99JhQKrV=`6DIU#YE`3Ip zt=VfT`anI;D=3n5#3QTlc_4qE^+?hUb`8@9N={o^0!IvVx85ug?`XJ1D%j-o)v=|_ z*8jN}_L!F{=A0K>8Mw*2&qE9QemjquA%q~z{!o3%3RjeDhKyF*CJ~akx=nIF8c&*p zm81j~BVP)BEUDD@{2ilC%-5~x*5KDwUt5YMpUm0rZzkfcB#ol1Y7sBE!O3;4CZs;R z9R1q7u{dd)J*nhtOr=6pwcKRkRi z{b}ULC?3C?eQ^{2%9u2K@UR{sL;bM+o0`b{s&RF&XP_w)zVCtEjP-3+`}^XU2DQ*) zsstRu7)spH?!MW=T4xXI@+s7%fw3;-`+7%2J8wp1+8cwUcGb6*)XjIf=nmQQ{Q7vf zMkrXd3*Us(ixljqy_A{0(l!0Qa5T?lJ%RgSRIohrT<7@EeGA=f^aCWGJkf;L8KasF zmd^J!?0E6-f2i`hcUOD%nPLZdDym>Xge#f;5eiiLT)nJ1!)NcLpEOrFS zg~ABvUo?bHzI3UFZRJ$8b!1ebD?1P$=r#92ZC?tGX{vT?PrVoE9$c@`+u%=q*HI#> zqI#RW{rFObMr3~HZEL^67<2aw)6W$2udrZ^(~k%lIv!L>Yv&(jmp=lr8k8Q9e)|{} zT}4+uLEZ4AD;}>lGU(=;qwDnuAe(613r7Th<=XsrykUWzEPo>q^qKcD;CjsSe;xi= zCJ@pEK!tAM`A$7b(wDPfy!p^!)W;-RjI>aj%ohY180 z;7QlWCgKlU!FROw*QSZQ!^=A`l$>yD>M8`qR++Q?67e!Lq+FuHYyHd63o^IJ%ITZ# zt@_g*_E=#b`(G^HV(hB6)#^zoyp7(sC>FY{tr5p|Ap)8Z`GZ5Ddz^T0lyK~e#QHh>#rQO|D)Ia z-*U=6GnkKt=M2vO59;%8o$djG{yEb5|J3ImKqvkMOY@Xx4F)jYJOHDI_aZU@|KDO! z{7eG-M`4F&06zdGbY}V~UWoTRrQqkv&uhoU&dtm7ofG*>I6r`#_7~a#JPYbT%;Il7;ZHT4fR^^_&FI{>*?*FV6SyH@K3;&h#}2uW z$Hf1)qBNW;#0@C)4-XMI!8~Wyp5g)j#AEtiALl9Zj_U^>lbfCEH|CIpgyt`xXMlJW z7eC5@h#2euU=|SRVrUir-y(>d8V%6-!2fVp z@dH3E4E)&H+rnWM*cdW_y|_6_)*BA$leXIqvzLKg8^j+k?_M+#27*HUr#r}b7D@7d z!#K!K<50j@fMs;bGvWfm5<~vC`HTR(>@U>&6Oim@?Ji)Hf&bPN?&q=1KLIqNXnPG1 zVo4>x1C2n?UY-myGm>j58{T#)vN=&f_@WcK*NqPpuTeYJG9`fyHJ;_B+2nG+$LGzP zNAf+HP+}MiPz$aYVVsj!FWn8lN2T@EE)O|AL>Xd zlT_QD>C6X`K)CbE+O@=2w63gb_Mqo}WwoQ=m~ko3SSWrgW)bCt&G2FtNjxhgKP(Er z%C0^3VLPG}>nKkiuW+-2V#mW^QR`+r*F$7dgydGLjtf=(tHC8F82DWH4#vEYc632w z=KNdF_kR#d2w*YWUt@R!Sj?#-!RD(DfwJZtT|ovY3%*_YFPK$w4CkkLhqh0S5`mZsNI1jc1_C|I4)v!Fihyj9ds(|F;m%usp`v)DFugD4~wL8 zHnZ*qU2>oQN^l=x$AE0(LOuU#BnqHLLHyrG5Ih$@!7fttZvpN8Sw%a}TI+9$R@9jG z`n+PJYdws$qX5a@;abu_06aq4%|XntR$3gG6ioqz@B{c%)TF=_`j! z)j%>666S&lCONspti;zhW2CiMc1v!$u?kBpQZH(EaNPDo%oO}gSC0@;O~H4eu0M@l zfu{rH6yyt_Z~=NR_+lvc|2rlZhH!y7fiC~QuH;W6C%`~1UQTu}7hvG2lKaZqK!Z-# zX9Q#z z09C?wEJ`D}!-gbQU_X$3<=dQHMtrtQiu>S0eydhCC64Js%p^~J2`@cWtLGIJx;@O+ zxB4zx8=?wy?-e!w30?Ck&^g@Y8w0pF-XJ zR@wPECy?y-Ko_9@JWT*5`xlRL0A;?18UxzU&x;m+Ul|CX%xMSvCl_`gr=|iCvd+(= z&XfTJJ2x9Y7Xsv0lsPy4yPy|+2cYmncz)k30pW!FC(qt{OSYo|5s$p85g!~=ynMhm zg=0PYF-K*2@2%`|IW0qMvCV_v@cY5!T3ZqJwt}}`hY9L=fAlS)=!@h(_jbQQyo}jhz{44S8?({)tMunSEAa~8+IVh-7 zlQ98_4Kc2Z+)yyUOo1e zFqfW}M35oAB9H)GvJ7Q;9Fv46prk06n_w7plSV@2^4q*V1zF_PE>K3gcndfKS&cuF z7IQAP2*Umh)QUXf+?8M*<#|Kma=R{=iGReoxw<5(=e-$DHfbp@JvCZCxz`k>d|qaV zaiF*cW|VAN59`#sTaSn(d?$VA!r!3>^fEpzQF_bJ6BYdC>6;IDHNIHk#UF8ciDOjr zvnWLUT70ZiKGTqWpYfHb_BFGZz_`txe^=+B;EWMNj{M1luHAFIV~~ zMB6O>88l3V%lz*}vI6}XsN$UY(((fR>4N*-HhFFo)ZzGv&)yGBsJV*OO{%84vk-v) zsGSOD7p1%D5EH3&c+YEnPeXeLMOpzjw8dN5k)N;fzOD7fm925m@u-zIFHFT9PjTx_ z1Vy8A+%AD8&W#q6;Z`4o&v}|Lk0?Sch1JRiVPA#gb^RWI#&1$^De0#7L-B{EmTas* znfp`v;Tm;E#Nj9VteTXy-Up8r(O5r(oX~@M46j^6;c!NPA$I`J92C95)O_RYhN` zQl6&?72agx#~wav_#~k${ADYxM%Pw!P@mj`{?-tmCYaP>ZI3{MkKgX1eAT_2f>x^` z*-9A>@%6eHSFD>3nDk2K*t-ny7mR5wyRN&rBlK^A*sPM$T-xvU*Q!?#6}bdOF9t7T zrpKxy&8>`&Acg3l_m)S~Jh8&;6&^=2Ope^bdlt3SxCQuZO!tkC%Wt`VleStTYQN2#x{7q9_+bZWn<>S~*3ZY0DdizX zWtNFu5KmTjxGqg1O^x{F#6jkV*yaVEOITZ7U)>Pz(ruBaPLM)cJ=Rugkn^3gJ^U-3 z-qlGT3vH~4&K*(LFn`q8zCUadL!xG3>doddUQm@0z0{KHV9@{M&Am2_cJjec^R`LJ z^76+v97Q0G!OZ*tVX=I7AKin1NOP4hF3~a99+refj_)wIIOWAvFEq^=JZXf;UB^>V zAIY>YJ2_EA)WeV+js{5?zo{M;6<(p$%iv{fD1N!*@`(Jhcc6s}Q`wHdFDDx-Fss1DM5L8aA;HCG)cE>qK==o z>>P8V;bvat6A7FX%QDjh96xfyy&?~b{6GTor+)CO?HepNa!&+gNS2{8S^i)r0>_!oKXOsE5ySZVL5rcY=MH6j$2f}Uvw)ddTjrGI$trOpH zb7aNwcbx@acpB-uHjr-`O($edX(h4cZcvR>`K6H0m8jd5x0Art5LTkxJ9CFclN61H zKSxmdf{vmTg}HiszxFP*N#n)npl$jUx+1~0L9lzMY8b2XjaH3nciq@g({DY8x6#b^ z%$W;w3>R}O95OyhBhfM8ASvFrDS?xWJi%B}Q*#=OBM}353aV z&wlvGP^b5)PV8u3yty#L5}9HavLJCdA@Nki5f0{I+<4JaN!;rfw5&}0c-Ho05I$%zejK`C{O1dq@qWevPZ+J@%^3bF+VNr3H9MN71GILOQ& z$69!sy+&3CY2^H_JKKaq)v1pGgPZ!ng5`}L18LXi_@(pWZJT*{g^pXzkw zR?RSJDSv5J_upi?vmNBROdCxST$Qm_++30XTjw6rdFG)LU58n04#r(}seImr&Xcrk z8vf|j%q2D$!<`~w8t>r)T?|wMkRN!EX=J`ssP<4cClDh`bRMGPufea@2ft}?)~Owx{BXkd4L#ciZu4rNKAts4cQPb#LSLu3ut@j*Wn-5HC5^Y4sjLSx>4q~7L!dB!SBL05aoVa_g-PSNFPiuR z`T?y1xpBxSM?RGHT`GADBy+d%(s!hXAxhW~;#nO@ErOwb_l~PlGDziECw7RqB(0H)@{Oj3gu|onBAM$7ND2 zNi2>RD@O>YcdpzY4C-EO6Dkxy{3+S=(2p9(Zs~OLQCAWfw=;mxewkv^ABrszk(LIdR zs(Q3m9G<;wR-Sf{^(^7mE@@(U!^l+r@@N>^TnkC1D)w_zMrEJgva9cCZw}2Evke60 z!mrGIK{I)EkKoIf29rI6L>n4zcQHD&a^(d`l(l~!6q=WlATliLUnGH$YTwQ%sT-r$ z_ie5V z?1N-Cesk?8pO+L{H(jr{C;i>4mquA&#nS!lc?rkQt`(6#-})? z=sPb9eUy?Dd>N>EpS>@00kA(_Q=5;Qxld-2sJ4r| zJ3XBo6TFdGJt!DMo*&0UPtXNxu%0jI`!H@;n6NgTr*LUxI*RP1wl;-^00j zW+!{KSLwAx+6;MAAy?%YSIjnt!UaE)LZwF3gJyxD)YE6PMbQtq@;c4A!rLSw6%JcR zs+6B*&(DkD;`A=Lium3zu_j&2b!Urc=n<^B@oao*q3^I8_kf-y*PxO7D!N<9o06ll zExuMYfo{g8W`@t#sqc@uZ-=_n?hu=a^p%gaBr|j>YTB1)u2@HQ9S@lA-5ZC!5OlpovxuyNm3K%nGLXHAOXC-{$#o+?8F1eKsj-$?08@4kDI&;A8 z$sqPbk)x)Dr^qVjjxbq_SyPb?ERg5M3o-=m8|@8sxBR3ChNPS1MhX=)G^?>Y_EBzO z#zXKJ%Tyb&ux8#i!w+Z%@rj!fkcNq2b6lPa~ z+tv|-Eb(}GiLql~>b;g}g_jAqM9bGOp$~|+*c6ldIto?_UuM7U(vcKnQ$I*mG#{p2 z3mGX(hr;Y?V!6r&{k9jGq=qN6V48?hJn+XPxSABo@)9%o>>1i;p*nzc(jYr?#?A zM@X;vSkB{lY95lZE=wKj0dDp@GBS3RF=eS3_oCj_-p@@d1!yS}XOqBR+;FznU`X0e}$5+?G!xXYnL z2o#=9$FG$uk^=GH1{IqHH-8ACUqyuornNmJc!r{B#Ea^plXTbB32(pIg6TBD^D43Z*RAF5IbZekMuy?6H3pC+iS!iM9dW0QTae&>eSpU%9 zBU;ndmLo&PhqFz%tj_va9@pSfwCid?OA&tY6Qw2iOV8$@79FN7S!1!A67Jj9@Al^q zU|(+GUAT~S?(332JUX~fS1SG;r4`u0^m_z8K0e5Q@^{w>`&3GF#Ofx$p@i-7%|QzZ z)FL>4yukdl6Qph^GC zyW?4~`M~A)%Qv6DB$^8@pF~b%sKmpNrf0_JV-Po`P}Rl@lf+1fLNNOZ3MkA{ZpgzB zVSrglgb^#F%oQxD zp$IY*y4?sZJbEp;&y%0iQE>d=ue8Z;n9bhTv`ka1aq5{CcYo}qkWE4&E~li#hmI`g zl}3@E6XNR~9DLo@+JW;SjyiL+H+lOL1S0+*qDv1R!}niWGq7C#h|qz3iREi}_1q+u zB!781AsAKTnFOC^Dg?)pT@oo96nEwF9dvfMrdrfBI8ru(3JaPNCzl#ZzzCC6PQA*& zP|6*Rk`2O0qMVenYrJI2qHA2-QFtC7)5QbHf=GP{lvWV3vQtC&cdlj|$hxCki`d7y zFJYH_>1oOPtJW0o*$^N7%km$Upx4p}>)&D|cwUj|6-Gqv#O4w{aoaq6S&LZn@Xfal zwF#d)dV(kRn=_r;Q#(85zGbW1@jh)G-qo=VM{HY{YVBm)LZodRS8X; zLLpW~XiYv&lIxKs-&n?0Jp*j~#Q2$t*Lkw+7cKi1B;I^>%okR&!{m}N^rh-IjI{6$d2DP+wn*72K zw{j{nQ_*RWpP*3In~!J7N9a%u==El_?chdY>*{A92YbiG+A57BWHPqtTS03`D(v-6 z21lLBPF~%%zV6G1w90@N?GSv%3(sV3LHTDnx}7%vTWUGTVHk zyvbpkEo{#$(wwS<>W0ozE;iXgQcI3N|E|M+3-hr7`Dy4&ts zBAlf;YxM5gd0d*6QG)&KosH8K!fWVjL}Mfl*E(q1@9Ytfj*|$eKQo9yh`+T?s$YQ_ z^Vpdhi;H>SsYvP}BLDFAag|;$&d2$B;Ft`9q8^R!?BozCC5v4Ozs>L>CE^o58Z*)0 z{oFe#(cK_!N0>;rv@kWBjX4q8?TX|ot8V%CIhYm+^spzhqP&!n=725;>U0(&Y1zF~21 z@n9Ze3oOR^&h`;5n5oV+DeTM8(=T;atr$TAdyy=cLN0`Xj)0)t=4)yWxAfWYWs@LAH1C`c5{@slXaliCvd!N>;%2BVy{kn%pdZ&t>Qf;8KueG5y;Ty?cGZdhY zKTe}i4x#&gsPoa1OOu`*dDar(P|(?-ITc_+0XsWhH{$F6IBno-JUjG#>8fpf&W^X! z6v}bGpJPa8|2Q3b7}J7(dYDnb*0jjJS7PH+V{H1pS%nkV*d!5@SdkKJ4xV z?D%{VPIt^&j}U2LaUpe```p*{zx;X54TAjsc@9Ke<2m)vg#49<=JGu=t5Lo)=(@t? z^whnGcf+EW=6tsmM(qu!M~UA)9Ih9vfF<1R*k%Z zipt35W*}Un%jvm-1O>Mcq4^mKLIY7qVimx6q-}%}1J{|fa2FG=Qlz&uIJtLDqPQ{nCB&D5Z=8U3$<@Lg6iRUtd1UYfHgl4TL>0@LG zEWA zzNA-qOkS!be0I>)VCcPr!hH0KG>#Q@Usg$`vAmjLK7sATc$7zto;Vbc(^S@vBD4Ha_-JOaL(Hi=?> z6;HDy$cYTEGlVM@ky0Pvi8Nd}F4c3~UhjXjILe9mT!!!J9b%j2{d&%XNUc291Y7}= z$i-SluP#fRmtPz1++&U>+|XcCrZ&{fFE)sYjNI=ym_y_0!uQ*4 z{m{?~BL8eT{NU3_(L3q>B76GO$btNcD~X>ntvi&(!GCp}$btj+G}^4Ag`z^dx^wuX zpNCKvHtT{5f<6sGYfP9*A24>21lK9(8#n7uRll?yte%VLsy`2 znK+o=$qB7o%+1&yt1QuxUxMpY-2ON{XlbF`MTzfsJkXzS7WDM7>_YEocPQx9LLRI9 zU~h#Ed*X!Srk1RZ7IA#0N%p;Ni{i9b7-MO94V*g8@ny*A#mhn9a<;Lw8ljBa$~ox z(@od-3V3-rD@M9WaEP_L6r(oQYv3GPg}iO41t}!u%`%Jk_xaR&Q<@h( zD3LcZv6P8eA2ibEh-`Nh-dQ!!U=W2qaJkx{r-BmAYf6gnP#?OMLg zMp>6@;Vm0@hh#`0r8yc`LZ}$*gK`MZ2y3Y_GlRh5Ghqy59)YZ^s;_fBdxB)iYgdzZ z)u*$$LItLU5^W0X#$U}Zk*c=~%KoKn-L;&-d%oijblupkX}ms2HnEdAKJ?SEvLRp^MQH4_+%urh8Y9^Y z=aBwtOO|w3@m+r~iTxI%;ADv2c(OtxK^Jq<6P(XCk%eucnV6(+_38xEjjeDa#9c+{ zYn}sm2-nvLL>U#Zh*|-@gCr(x#yH~}L{iyvvimv_ZcZ|KM}$;yQgbH=$JMqj2f7;u zO(C3n`FsYgfeI0CACJ6l?13ORDu$_&!WRurD5tCRYmrLhsT4eK%5P+{=aydUZhMO? zKsUX9Em4=6qNO>EMbMpdrm7>XjFr6+ae^5reQ(^GzQWgM%vVAPsjVp>yDA{yZT2!d z?I9KI=jX^0SW{A#gO5=0V<^l#H|nJ6sgeekuHwB*P}mr$V!HogS6;k>3N?TAbA57X zQ%(ER1g2#i9DySY)TGHUMzAl7C$IgXG_sw!H6BfPtS~VsPSB^x`BT9o%$CTYX>M%{ z^FbVGf<1R2QdNP>2Gcle-%0D-K|kW|`_-MMnxZM)Ve5kBx;l*=sJrEXjV-A1IpGp? z;gQfA25tF~0e3!Uo{C4?%K>**oxmI8<38a8G@bPc97_}>q3`aMv265uem-6fEK7d; zIrJTQxh3k<0qdUO^m^QJ(&v&*H6@B^ZcBozF$(OMZFcpJ&FI+%4w~y_&H32Se zUJ!?>gTB3sHJn2es_=a%0fpPc3}N=L9~-;{MVzf+24--38hyC2sihF@T2&n_jj5p! ztp+y~1hp22o0!VD+QL;`74I0hni=pL(uxRU2s#TmTUc8FrO`NBm|NNjI1ACj46XFx z0>Js{We!@Jvn2LrLbRf%FVJX0m1xARY~eIO{8}~xAl@YnFF!jEFSjAci1!At{R-Hb z4&ve9OiA#5N%HZb@O&~iB; zK+9zV@d$uG=L-3r@?Xk;S{a%ex%?;tX!>COJ7ACim`i{Ye7=lxDgU*M-}>_}m2y7q zxpIJ;B>;F)89EriZU0h_KP5Vs`K<8?r~?uL_gz*(`1`wtLeE|LDYXg^hRXD`ors&m z?CgXM;YKhAbNe&7fQQA{PtPC7ZyB<)PgM+D|0Eib3G33;TvGMYAgV;{@Yq9Zj za&ocp^MT;J+%OOf#QTR)=koqkuB@eoi z8L~k@yawEGLjz6_nCEw!&*eQ=?r+^o04Nt|C!B&Df4*=*O2_Xy3Ih+7AE|%8_*?q# zt^M2+?5s0D=&-oes z<+k`gHpTOtZHfP@#pxmlNC~7=_`1ibi=&fO8PvDirEop86au;wgmRtKOBQXEf>s|P zwO;@A{jtG}f5aOh+T)oh|bKXV&**w6>@bug8e`DXB@AlnbYkSAh z%gmwJCG+v46T2MrM%(*tJJ}nu{noF+z_^~X5CjI7K!7o2A2&#q7o_B$d-(xIcelJO z8%vkW4LLP5Ya97a*-mIDYtP5s&fB8k`VSx8U6COtCu_h)V{X5F9je%D>Xk@&>+vOo z0U^+>3*Xy0$0P~3ft4X#31(|?>YOcZW$s{MX-C5iKn~!BrUt;I3GjRXymT&*Kvv?O zAOs@G4dLVE=ab|E@j)cHcqBzdMIjP=d^}?O5)iPMu%H+i!ow{AmI8?Z-!On75K*uw zk2n|bPfUuROG1)QScgN_(#VR2ADEq=Za(;JEdg-s=TNb-vInkz4;`y&>I%%`fqC|w zv(*I^xDkiOJ%EQn!wJwAes>)=8DEaxp*$@V6;0lSz)9PxM zg0bEsH^W4iRTxr^DXJHt!6fDhda@mrcs=9&w{eX*o^C8mm4vdrt(Al|{?zo12Bd14sJ@X9yy-O; zk-JZgpUkwQC>Dl4ee-Rp@W*kQW2wAkZ$(dbRpSo2_8^nNXPugA!yCD{l}|L)t`6wZ zqX`+pb&^{rB6D8h<|HNLNFp=P(-{U*x3JT8brcszx*}i@M?yTCiAM&iu~c$bkJ(YiMEUGIGwe+FD{Sr=;=a5? zoPLLhp+7P%;8hpxw0{$*EVsdfM^k4x^bs&DXXs zpMO2E0TYCN?Z+tCd9_2WoqCtt;|pcWJa~95;7J-K#^NkiHP#v!Bb1MPDrXQ9kTPr@ zkiwN)H6CnEZf=Erc_@#a02~=ST^dnmV?IbUi)D2^@RAi0h#Brbz)2M%ujbFFIebX< zr4EGKWv@itHGVH=zh4a9dR6TMj-}koX8bUUait6j++|C&aOe(XUEDeTGPd)#`qg@-}*NtNCL5$M1&jdqwGLL!tR|^36qG&B1A5Pt5s=Wm+6= zg$8+gMUZy&zmY6y+Xg=p7!@Oc-gh$-A-$`?K@d#G?oV0swRQz8N`MoSo}2rCH=8u? zMrhb2JbHC%ui*AKU~s=H`0pM3QD%Y*-WFG~QYL1`M(s8~!fT7hHce;1-nFFFV)6<6*Wa#(X(O zC^O{`b9oiQZQ61&46*hgiOUp_jjy@QcV@934`f)N7uHD+-x=E$G0z+) z1Rt{bkdfS@{)`c9EK7*R&Gpi-M}b(de4(z=|OZjgEqXtVHYy<3KR1I^Km-1{`R5?4JUdvBiH zaehL%OtB$!6z1ppeycA&G=|qT&+9wxNnhCFz}kS>`Y?)Gtae+5crs(P2VTXdiRp0Vz*F@mx7qT(WB3!J?6&gi1>8|i;Y0Fc?&c#>s+4_3 zeeuTQUiVmu)4da!#tNTN`QyinZIw&UY$;ZDxl@^3L4D<}<9o9FP6<0neLC6RE46C2 zb3b0?X;kAdS?l9f43t>Y_m4pttcUSj*-c`FpXMe_x36ez4=PeT%c+qcmw0p1b9+6| zK^$B4u)ME#Y%yOV(kCzddd6Mb(%hVc7fv_@d*mgFZ%{mlm9(YMX)of3sm69NTXm&7 zZs1~H13Nu7e!)Vd9ZJA(wC#mP(tuF9t@SgD;55`!Ig!t7bL266FtAEY!E`y+aShuQ z8~#-cTY}vk`(qWU7+D(B9{VFr2E%4uR$+p)3Y@JZ2JZmeoEtP(sg0=~{lU0}Sj`xF zE;woOld&sCOds}K6IFwrEB43O;CY3Z#znjjiG@0it`v=2pT4uJ_J{?HRKuE>Ut?vYH>b{{lNR`kx!ys&)eiT)b~2K3Zxm> zRTVO|uNxxE#5L#Pjb8g3$6>6j5WVY0+O0)wuW!2;={l&c$x|w9JU1CE2%77EqTArG z;<^4A?>6d4D80!hC~K4X-4G; z(%lUt3y+^JxqjO{rI?t&)b=!_(<<1TbQR4iCb1RH=+z5=C_#NQRB%Fl)B6>aPlQ;lcn>yO7dIGK7q1+)Z27JG zP>Ie3&tWq^KBhg%eREG_-QP9HZfnZelgIz`nmJmLWhgBn9?S{))9e6JXGRQQ&j|ci z_6$G&ANCBFATQVdWY3H}U~0Q^l;~AK^HxW9qQLx$A}xvj<9Dqzv<~(Aa_CRUjvMGd z+cvt^8gOMS;tg_>67+>4R-BACs+~}J1no;K{|j`r%-jr zj}hfJa>CdLo2@JOB8(jAB&h2g-%ApW1*GM!U^WVk&9`Eyq%A2$6nHa0 zh~KlhUjGW_mh^^hOZ|1xeG2bDg{R#_L~cE>NLn)8HmR5Sm!$G>s%Hrv$-Aco z)v|n5bpcbpwSZm!aF-8E`8awsTd$u$lx5dd@202vz06DHJof{IZYMWW#qi|si`F@V zL9@$k*rJzbyQQDVBg^l!OA7O$_6sa0@$eRk3f@32>uF62nroydUNU2IqqjD@1Xl~X zeB+uI>l7CqGT=ZEFBR84Tk&4h{YzFN_s#jQwxX(W?!Szsf=hY3q+%o{24v#3DPwRb zA8IMz=@d2x!?{6j?=Hb#<2I-H-QK#zE8cu4NZG`-J~H&oo%nGN!`8E2+QzaN1;Oo` zKA|cCVi-mS&n-3D%bDErcV>v&T3lqNrfiy=ogc}YQJc^;?l9aEUefWu>Qg{G+YyEW;PDIEI33PEM#YSCuvJ!J6k9ZivsHd-DPBR zP3WzPVT@o`E;5ggdd}$6VbA!svmIfQ;I(cZa#?D}HrDTA9$3K$u*-IKEb?}0Z^CSA zi%@wQKG*O={LY|Tu4+s&#KOl;@2|9F592<=>`;3v#nQ#v>X%e=fl3o&H8E<8-bhzZpKyV;p3K+~)wPX~d4Z`+`EjnLbMV3hEuUaBkmHMy zx9HDH-SuF*Jo`>Rk|*oc%Z}kF%q8=q^@4Fd>pR<1i&2RM{jsuCdfHTyjH)YYgZU0EeF7~dAANt=WW1TIa)RhE105_e z`8RwkO+MOr*krm{rE)TxyyI~&{X9$J=zCq0|4uK>>5t7u$8D}B@Di_6W*?^gqN(KN z24-Q_c^}4Vz4b^p&WIj1VO8hSDYEb5*G!ymKC!0<^m2TLNb9Mx+uq_<3Qkj|d zPRDO2d=NVixUSVB6c~k`o(EbIcUstY7+$aopn#z8LENK6WKB#$E zYxtt>XK?enC~IM28T&fozqdel00Y5KJ#p|PW-v@J9lp)Q`nc!6033<N4zxcMf zicXE1SMQE8WpCe2&bB_K-`=O+KBC&*+q%waCY$L+_aHPwsUcr@P({p&BU!N_{TfKv z6!BHAQzfH1Pdp}PfvLNXW!uAd*ZZoWHnYOVy;Lj*Qr}XPrTxuUnyw{Qo)3BkyxQ%G z!v=s=jj_PRuKNr5Q2pHz!DB5hdwYrL{TRaL!n32pLNOxEhkDkyka9Kh}|~h zM_oKw(JI6gdaIs;;F!(dduz(r6+{(`D1_?ZMRUd@-j)&yrQC?!k!88cazUC?E~d(trHOKEC6T z2`yh=43^@@FK;|~wPO%A>z3SFLVP=k)Xmp7j3n!T=#oRoG-DxS$h7Gs{afosIW!}P zU z8gMhPZRHbp!V3y(3vM#TVajPFnQyaxqg$<&(kGRrIokE^c^i?MX_VksozmF<{KPdw zn{TTwk9d5yn0QRbdBKR0v#~?mIa)QUu0{!~#M0g_ZS8QdeunL(UG;0#!)9FpYLSxH zDOe@G<%|f#UxN>&^E6$PpJA={Qn7Sw*mV$e%iOb8LQ{ zxrXrDEO%U0OZJLB#+`txwqRSr$N<%T)tgt{z9c?-AlKF!(eg?+yrrg+p(8Zdz7-j4 zt(}**?tqJYq$2E8*NP;@2mwuBp;jQd_xO$Emx#bQ$x15ScykShP8a!*ImssmI7-62 z9%|UbQ$j7Vl%m9W3s}9m*9dxpBc>|^30nf?m<3-c2DRMisrSS-34%{xMq-f5*%J<+ z$SZdU<|)d^{dLIxWL6(_HUTVHmd zvS41R(j@{9H9YfXT-*EL?UT3~whIN!Q6>>7T3Sy~_XTGN6XciYmcF#n4@i+D2JAO< zvEj69U#f_-UNz@yFq4E?9!9II$W*h~7nhmBD>IoR=> zjhN+(iSsQ}ccZgGsajk*%2Z=_AIwQ?zqvzvoQ=((MCAp>dXcw@_2YJ5a7}QIB=M}@ zmzK}TmuK{;^aAHvrkSfmYth6WhdJ~Gd$waGDUCp9(Dkx>cek&n&Mmw%iaKnTSxbAK ztlsN?u+w(hc(7O6o7pfn_`G!TXnQxI_jD(A&D8J5c2NJWgV`5?y}T@&s7Q7O0NM}F8+K6Bji zVYgr1NLAXgUpbAyp};|>>IovD>B~3J&!m4{N7F&~iRzKtHM8$l{(hhLA~g?pB>Yc$ z*VY_oH@>uGbc^QtHkGF^KOoE1b-l$pv1-vZGgkS4tBJN+ci%JnaHeDXK~rFO$I?hX zxu6A4#I5UoxBJRl&Ef>uj_w*S13Aubp@L}>IR!Z;(3J7Ht8TZgyS+)$i9PHvI3(XbOb&jg(&LD0GE_gn z2Pfm(qaT**p5ZcHN?kg-N^0Pd#;hNOUV>WpH2rSsk=CZGd}&X3U-WU=^$DvaEqo6# zbO%4(?wno+D^`55(e5v4H0%aAt6yI{44Eo&3XQZ@yb)CA;RB@;>=fSrB9cpDoMmt` zWQxkawAskQ)2|Km|ou&NQB92;nFup+=lI=4JQ5u&=X(W zhPO{aE(`d^;?~~vX}unYqcnj{`x`6prla-k73QoH+o#VHi}Xiq2lR@5*gj>~^D`WI zpqs9D%uvkf&rA7kyJ7#M18Kj&?Om9^sHxd>H{IS)xe^zKw$=Vj*e<(hpEih|lz6p* z!c;V6&a8i3Vb{__DCT__e29JOHTvN7m&E~xc*FOaU!nJ0U)QIHMYl2$!6IZ0EHsmB z9x>g5MJO6rXeH%8V&WXTn(P>n@%pWrk;QY4SN%!DwkpdNOm40(CTc&6)at-Z3aU5< zjFK0NRdxm|y+Ej7j#rlW%c67I8$NBXc5y_TX4?H4XC9a6f47CP>&;Xw;_H=V=`~s~ zJ=gWg8`!8?!IMz=vgaGEdOY*F^!{lyw#tP4oOEwUMx-C-k@4Fa!D_GL0XdOh6bkr&&2ny1r?n(8=)m68N_LJw}>nOAD^hO0eMc$I(-EhME)(+qG> zyM$n_3H+kuMC<;rg)R6S7We5*!f#w`80|4Tu~=p7nC;>$@9C_cIO7;|ZQq|K{T_$V z!jXNNPa^-3HeH(d%EJL##X%yevLIt6y*T!c`AnUMgx}=3S5`}6)TEp(_Hf?92rLqU7JEPEXCa=Y8m<3 zwBw2=@zTv%0>qohG&x1|xO}qAuu-$o3SKOK-6Kg1xaS8FxB<2zVg%_8m5%8sN zG?2TJ5HGG$BcLc69lAm~l$nb*!iL!{Ul#1ZDAJw*#jXinW^VV@2oS}?Z2!XQ7u0oI zsMc&jWY>O2`BE7rX8S7XjLmZmL5z-hl!y{m#r21;rVZ(8bZ{PWZQf=i3!$wc$LM$} z6K5=0!bk=*7ahSwaq1Wi-G0UQ@JjQb;(I3>Wp4W6N6@Hp){b^_?T4=@>ppJ1UCld=tvkD zg1sI_apZ?Up&Ixd?b$aT#!GPkK(=4^4DlBh%=Sc}oV^1ljUOm?1j+@@hYKxYGGc4y^49hC`D1oT0qK(EJ3Q3J3KxvlY1Fl8#7?^rHx^!bm|;kpPAE;Q?}72Y~F1GuY)%NpOJVHQ+8}B)-)Puz61)%x%+^{g(uy zj*@4-J)0{yhT!IZN`y0C?jwLqAK%o*!Q4lgXSF}!3e#xj3D=lHCP+U)!^Q}~GybxZ zw?M$~NXCSZq|MKiFJSF^L7?O=VnCAKyT*?8p-IWjc4%@Tmh=b!*Kq?tNe!laah;~6 zH*u^=?-7z`bQ~=_kCm8?2qRB#o0RZ7XduP7boEqb+(S3E(3lr{mnEp=sK5 zK_won%+Q=34f&rQZ}qyP#LNcx9@vo%uoP(OcR9Hd^; z8pUz6-}rV5xHu(h`%TTlN+e|3}p(u1@4>ng(@30{`krS*;z zYX{!=09klh`W*3S>xxfRi2C=#fS3Q&4>txSB98Lw@tI=q9 zPRg0%P7HcPuH;viI6*wd81x0r3WbmDb=!^~&0<7A+iPzggZ8&NIgF~*tE}9Yzm$D; z9N{p!_uPJ@vbe6OzKR1C%SO}vm*P_M-2a4^D+zpTujtvguFkR0o z)OfA$QcQ+Ol5X_!hrwd_xc%jr;Q*N?c(d8*o6Cog{vS&>5B*Ci=9W?`60=IC@!Q5s ze6Msy&QDgYQ|4sB_kPGdqV+mxd^LIHyCXWMh3}PqH~+C0yS2}JC!^N%p1|E#OOFpqZ>168UPc`0BFX;r^HzysAXK(luyc=f$&;3?3VXI@BO_&8ovI zKZ#?%(mn4FKMs;MW9O1vR?F|tT`iaS@zP_mrqfcFqpl2>@iTwV|LF}WKj1%NZcA0r|65P2!yZ|z+4w8u zTv*v5`-f7e@mk?=(U60brH^N-0{hJMsEci=ek8lcU&6T-sM5VUT(ed9^iXA})M=!) zJVCB}?Dgt0^wsiiv51HPLg3pM00@ItIgQt_36+but@AswvpS znB)20an=JEbJ{Z>P1LY@SMQE26?tbQ2xsAM3U}Xd7oxb;4k%89xmU5bxDHC!s|Z`- z>dpdfvMKty{u+m#gWgz&D*2O*NG4BQMe;a#72>C0bJ z#Crnw$Y@miayLD<-xz(_w$&8_EH=lE)sPH?ri$u1WQtS9XTx6X$2EAp? zOvPI5!$>z!MQWk4ap+PMT9Wyacm$YOn4##w=rVy)flr#Jn)RiGz_-DI;8}ecJY4dt zma=|D*HdNUY!XHMRZ#K4Mb zyFyO%L)IXSGJoJ+q;EU{Qq~MIWUcrzc={n0BVGipts+5(%tL;gjn^QHhxajvSM6D{ zXQu{siJXWQ>^*4b;s$Do+=#x%-OdZg_KTq)S9BlN*OcsnaCv}{k3;UaPdF-tFGuoH zf1_HhXME=rb)5qCQHf+dLGMLey`~xapw!*PNCN6E47wyxzEZGst9UfuDiOlsowPL6 zFk_h|(MFzBcJ`JgNeb-1LgQ_tD4JT!)t8q(`Z|hcb?vzb@Fp;DxEiEmuksz6}+m3-yVITXkxNTk6t#7=9&g935wm$>wmKjy^pP|i$}a% zss(*%dLxElu)j6F#mk71TR%2Zw#TOK!$M%Y*LxYL*o;tKJ6hor9`5GbOHm%fW@6rG zmSWxk$GVXK$HgnehlRH`ByXCy&s0tN9WiG%=N=zz42?WwIys*4_dh!Ew)1}R)JVjQ zBiXQ_vclf_#g0*D+F*>9h*R;hAzLNF9yMh5qS8pjz4)G?|J@e16_!eOX3wl_qbDW` zivXP?2*{@ZMh6lba(ar7lH3C%3y-skHT z8L?VBpolm<9j{mQB5{NhcWWKec23;dRPH3cxw?M=sT*66i9NHj(BQHc)`RTP9Qu@ zntBgdVUIf5>bT1%wsw8DmF+u9+7mqoiw*Xap2TW?GU7ot+}2UEV!R<%%j5UTka?GW zGjgy|{cFh)_lM9=`vho(cay3W-xS@G9I^j&mBm|G4?P-hKIgmUr46|^3gg?K^bh58 zI6|2+?kzH1Na7H`|D%svPal|{NA#3DN6Sg*I|M@7N z`BQA~`1V$}Gy!KkV{t`Asx9oP?%-hO=w{`nxN>1vWAez}Z-E~bs(0<(EQfq1i+^VR zINMs3#9CLRuG^HSwP{h=J!$rlu|Sv|a_rP3|iP@(;!2^~4vD1p2V=+RBARK0Tk*MCz*Li@+21J*D9k zKdop!z}nGtaMmC#xzclRw!EjU(5DQs=k=rQ-9yvSj4H=hvUVa3%T|uo$tD?-)ti(% z4(~Nrx;$Nb{iQ%3OV|`lzE>Aep%P~b5TA8F=`syyXBQF`Ed2^n_*d67e_Z`uuz8U2 z?OjYMTh^rV#BvD`shmXyc6EiynOQ4(iMa(2OWA5lv`W~Xo&_NVMMNClpnJr5tAWO1 z9w&({J_{|!Ch%3w&EAs@e|mBGg9oQ9@ot7=Ch$jwj_wVbTOL)13IUhUIGBuQ|Je}W z`Y#LtUcp~Z2|nI4p9CNGzxx=`CsFkwB^^OXX$~d1(vhOBcKHWRgX-JmD&J3r!t?m2 z>~JU#M1-&n&4rz3xPzdhh)4w_~-R%6e7G!wW6*SFIVj2H{2Cc7@GSQD>)=?{o7aBVd_+9gSVxPY-TQc{@BB`g4DZ?CXWLhb@2-0H(^Oj z9~H*khle(54uKCK=h$F6@v4cVg%t*{xg`o-u^-P+7C^lZouco(<3O5|Kx^8$<_=OyiKAYn#+bLU^;3 z6*YdiMuK1gR`4@j&HY_)9 z6YfYivtNv(uht zsbJt%nJJNH61%}+X7ZS}caWEuR7&)Dm0O6y$fp<2_SPwsA$ z8+~0h?v3^Mb2j3sy?&Yzj*A$_wjVoHrd1{Ioal&*c>BalaxPjNu znK9IG(n$pAoTaDk7vUOQE4vLm#ZNUd$E_APNee3J{ngbjqDH!3oN}_dsrFq7Pvd z<0ym^!y!03OsQs%A2Y%+9laoM`7(7m^Ke1%V)ZV@P>n$Pb|rK5u2L@bP(4N14glM0 zB>CLdz+Al-G9|Gp)-vw>MrraeZ*71(rMK;sd!{!7RlK+LO0?VC<&2>TkJnu@8#A2` zgXl5k@E(wova)Dt4; zSJN?=>pL6~X&$#Tm8_&wG;YUwHhHqD$|JYByn`XU0=-_MyYI_A9WyH>$R2zg6*W6% zh2oFoR7!GaM7Di><#FfMzeYXo!NG>vH}Wy<0)It%^#|iDL6KAR)i|907&XnmgNq&e z4JuqQ#vp5vbN)TTgg5xDnI?xW=G5kM7DWCf!k-ALn&R;I*J#z9n5O=nBb`w@e=(t5 z@Msi&X0)~TFe!hCDg=mjH)e~AHXKALd*7G;866r=e~RMIjkd@gX5oKu9=X*Y5XV?m zSdPa|Xi$ELv0pQ88S&UXFYiRrd(KNj+_U$+Gt#X0ee}YKoO@B5o3!$9MM-5)mU(w}0G+s19$t{fSgM&`c zDGnHoy!}%3Kd;j~|HV4Z#q-N+z|Y5jwovo`yOr8Ur&EiPi{vO#s5Nl2ap)OK0ZyDU z8-~d1$ZKS;MC=RWm=r#x?yvEThH<=UReE@Dadjcn1^v=}O$=LU6#|H0AXtU&fs7$C z{MwK7Xu6IsYu6NWG2TnzP>fSzUxC&bU2A8kvI46i4Uv!E-X99UT!oQex%)WJiR_AI z-}1b2x~wybuU5CRg5+85nla@V4xYKVmw7jx6H({!4Tb(uJkF2CX8nZ7Koi&&w!c+@UY41~Cb6k~K!am-(>Kf5-UU9`YD!3F&*VMwh$VPc1R84*|8T;Ml-?>9+e>|4`K)w# z8XGAsR~+B6$?-H2~M=46m``n56PStZ>CfE@!C5XH$=M1EaNdY zZ2CPpua!(GXo`}jKEO90($V%=?F9Oi4y5+W^-^^kfp(ae@#O_FVgPjE6=?-BA?@8;EeIWKmI_Oe~xxh^ca z;?T@3Y%;d=>^`~sqhs;w+h|1pN1_i@5vG<4kezY?D){`pI`iwJ$1P*k_Uoovn{su` z!6RDL+MXXDReLZ+b}2RXa|n-QFpPh`l>G8@QO=9)`_PkoYqJn4LR`ui&+1~m z@Y@T-&8!DLJ*W6!w3iH@xc+&_^Zpk@9yp@&^SBNVpAazO1^(TDUw-t_E*MN2YR07g zGQs99Jt=5*Q0x6;9Z2veeET=^*_Af;S6AF~um__F;llb)$YxKYnf+sEQo~(tqjyxu zM?8LXslY;*H(#*rsdTUagz@9syZPbe9T=Z#$3&h@LF#Oi#RJRbXt?s}2l7IBcWZ;b z9-Gs#n>nU2`VLQwG`yizl}Zib#k9ryM4C4vMaXmS%H`{m8yX;&9656Vw%nuXcrN&5WQr#b7} z3MrWPtR^4J<#x3$orY6=W?}ZENLTCqAt5-qL!2%Sn3!8PZjtxracL;(#y1fM;GQ5pT}@s96|YP-}! ztiBIR;~P}3C+m|R>B$$8JmUJGp>_LVnW2^5MEmk|-1>v{jrY?Gt#5=-&V4pF5;i>q zAM=YR9fu(dcOL9@Lr!Zy-r5cw8kmxo`z8VRVP93Q<_(LEJY3y&(c$OZ;650S+kf*W zy5se?1&QV4xdQTITe@1KyUeI%-H(f_WZrHrh@+b0)%lWr5vq!{+V37a(CDmzDI4&M z%#+x{4d{>Q*W~Qh$VNS(h3LYMu7Y}3?%g>&HS98u;)`^QTI;Nj=!95n&>7+SCmd(( zhT0AFk9B~Sia#0M`m}TN@~a;W`=eCTVsk>-RAGYU!q<|0qziHz@Y~-$NSLg>eA^&* zs!!;KKLTeXSt2dJ$H{={njP_Q{dB#%o@`ONK5q`yld|RDjMHN?XisO_p&yqYhoBoZ z)hJ=i7#UUA=bq1cDp%SH=P*U<-hXk&1(zwa%=2-Q)C^x1RH2ZLH&Wi@CqHcrx5fdX_p+b}?dI#;_bhgnrk#DR~rr%*`%M*1JX7{E(BmI;^ zV4=c+juE-sf}_!*iEDFrzjx`#t8nj1cQ_7&brU;T7UQaok!8>@vlE>1a{SO;tK2^% zD}WEDP4yW+pVLeBIApa&b@xJBp65M&^Tj?XFwirvwiAOUnZZ>)il^1|kmKf^jLTHu zZ)q5vUsTEI0;{j8=G#eiu~6f&*FDO0#?pAyC!(fzRIkpuc~jo3F-xFVUEs=2v<21B zON$1|!U}x$D^Dnls8>j!tuOZCp%h=6NUT0=)~G%fd+W^E{jHV#-H81mo@deqci?M- zY}Qn!2)`5ZV)wX%1q)gsn-qWGy9Y7Yeegd`ygz51lqCW#4@WrCo^AHDKzAWd)+{Hd zXmV(3XdGy|XxgkGRS3df$;k>1oQ*t7!l1OS2oy|Q9Ha_!g+L*$5ZW{QLkpyia&@qE zf+19s)G02@nJ9Rv)f1&6!Ro*lu| zx|rEA08Z{(pXvrTc`txL{sDy_z#L^z- zN^1eLwsjJtU#n}Pr?rKO(cj}!1*MFEt%YFMCTND7}O@o~VbghoiG2 zpm16bM+YaQu!k5u1UT#g69&>}U=Tg+If|>j7`@b40j<8O2CWPn0izY-Cq(l)=D`72J`JeRxIWc-0 zS663Y5Xjx#oztC%6OOP3aR~_tfxz4#Zf*_$g9GX5pr!+E2imLQk|%n|0~iUexp`bRqF-}LbpF@XYri09uC0sZzh4O6vT0mT-&T#I*5%yLNaQ6#6op{D%2A9)HY|hLWRNH5MCY&ehUskZhk8cUZ^E6hma6Ilta)8 z%Ebe=g22FF{&Ti}rTrJaN=`^uh?6Dk559shDG;DZmBgz32jf?{BpK!WW6Mu!C8;{?@}lKcCN7ZJ5hnp??%O*oyOrg3cx%kouG1 zS@AjauY`Xz?q4esg<1*&nstP@ibI^89c(QjXR{gv40}<~pGALGaE9+{>*@geTcu}` zNICqi34aQEw(JNy01qQEdJhgL%nE{XaHR+RjmNp*e`Rtm#NX>Xlfm+Azw*uu>Q_O z2JYw#aq<+Ga)fxnoqp2%0sI%_^J)LHDlV`fH!zgWMY)*e(BHIr)3G2W+|g}fq^FuEYN>q{{j4of6-yTJ$%mP zynq6aHsG-e`t@A>tqB)H;QvYZXG8v2|``agC3uQc$#LjJ$e^?&O6 zUuocfh5Ub`>;E@(;r+QY2fPkq^zOjE`yX5 zZQ#(~m~#QvAs0Un@A)?Gg83h2D9gV$Ls>z8wKRW|^up3)1?ikw_AIP_I!1mw;VNru zWd%dPfb9>`h?^H=fq=QeK$Z{$uv@USMF1NvD+ibd2nu(FSXu&mFOUt&$r^${IXXZ9 zml50=?gX<3ApnOC$ko;X3Zvx_0=b~zt}rA3asa#<{2*%tU}4g7aSMVhP=J~43W7qc zt%1Mpx`?0_4!}0v!PXgRiv+y;#nIEF93kT9AHSKEy&>l6%GR-FG{@5 zBjCjz7$k>6z<~rW$P$G(>jF<8!w+-;+#cp+0YLycLC`P8mT+g!3*ms>vK0(yFyO`m z{_cz$1UTV<4W5G&+!e$L1i(HFgaEu&NZ=3BU{H`F1n@mLfuJyJz=sENc0eI7bmi&} zN1_0Q*}@SZR~w-0R}Nx{a)p5$QM6owJZCDkg+tG}{+yd73~KA(009C0{tF+F#}R_G zM4kB+0UE)xLKhSSarOsoK+*={V0BT$Pau+(3wT2ybv`gaQWv#J{WjR7&W936>Q~dH z&Ig#397yJm>g6toKEwhzoD!D zMEFJJ2yAn0ogF+u>KC1>dqJvuL8|*3sqQZtgNs5PU@dY20ps5h7^4;rND$;*kk=Mv>@kdfB@6;4>bUN3QR5#?1C8f8!^yLKL@1k1&-|nj_q$aw!d&- zfEt`Gs)Jvk!!OX`zoEl_BK)F)+Pc{S0>UqpfVv<=T@a#vBSih8@VqEITacYVo_~N% zF1)aRc!K|2rhvEMfTQ>4KmMs{v;6eQ*&^ZR9zb9Z%MC&zoqz@I%$=(SafBfOuPxy8 z{=*~9#q*mBSjq{Q92b5NZD3Okl0vxJS^;YdNCPBoYvEvf)^cYX&$Eo2lPkg#Bx3`N zVZg&|jY7acvbJYE<@hU$fIG_ozRsVea!ycyIUvJXAP+do|I8^loy`kv8weocPwbyQ zc+j~RfP>xE9(Lw{zsRC2F1)aRWPu6zJ3t5K;VKRHIFlZv>jZ@%&bXiB{?=^%-~K64 z)`*My!q=~FU`WfuOUo+&JRLc~fXf`D0M~*4Mker|-`D>1p>y%@3jFCQSBxmSHwho( zC-ECHbBVnQ{`i$R;*$nxc!KM~ON#~iB4Q^RsZX=xv@94bX|3rZJ5o4W~_}2W6WoB<%Al z5x(t4q~>9oT1VXX$jsaK#q4llk^SJ9+kk{(y)$gF+eXzx)4QPK?(-EVl84`oI0p;0_nI&Skvz5p+Xa884h zMZSFyLtGac>0ZM{&Odf_EpDuSPADP9?dbfL*gbg7?LC{mr|Gyzn6d@Fru`QpnM-eX zP9-tM2_pJ_M06QfbEfLP;oeGKS|d~z$Niv}!;;lo(j#OVlIfu2$MZwlKeAmh`g-7; zjmD~KJcf(%jrPYSSP9S9Ufw2oME0StdZpH_p;%VlCc{YMsm7pkJI9TjR>S%$wGZD& zZ$ERaE4`lMxPI6Fifewv$-^Kz`F*SiUfo{53@CbpS&4J$CqlcTZ1(j4Y6A1neEE0I zGCY{J0=b=hR%(hp*`#-@QgD;7kG3hSkCz4o?lwRy7`#N9V0U;@Lf@HmRbP|<(rf}doEcSzgp*fE9X=N5( zN@#X;K!*YuDVYy{pl%B$gXKoTy33e~_Q&JI$%6`^JIRdSWOlTjV%{^qQhP*zSt;?V z|K#mmeB*0%ShBKdG-g?E6(Vv-2DPD>E~n8787POigbZpW0pbAT?=?m~S84h$DbF_G z-Dt?87P#lV;N(?+jv4qQ%@<3yWJUZ^ZESewWzKj?_?EhPYg1N)=)FtxlwX|d*MvTF z=F#`1d4D2Z^G_O`<%-8-x1~H$a23DaL4ZtUEyo^Dwqtwo9F+VSu(LjB4O89O z)e;)ih$?J`Y8yRoEPa6=v)_HSK}qqtqqYC2PmH{T3Dnt_Yy)cLsOu6amz&e7uGvCz zHwnf)1U6F0ty&^bGZgg`e7W~={;sC%TFhkT)Zwj5y@b}^dI&PW)@4~b!7`G*Dupj( zL#!p^`wtEr8)o?G_u8o+^h=8s5ytmlah+`rUXG?-NBNmRMxG{9dZ`;AvUtq!2r& zuL>J+#iyu_rj)f;g;C(Z36a^o6wH_3w#RlXyZput2}`|aLuoA$g>&b#Bj#zTvH%}?uA8j$kGvX5!=o?cj zx5?y<#IzloB1T`>d*@k)7g#2(-~T3aI~(;9tZVmDZ8G7 z^oyVF_KDvSCnd9Zk*y#3H1w+nDCyP%g;%^9t`-JTmxhiI%t<#MT+U2ej#v+8Zx%O0ZyTX8!cGRCtpz7YsYFn~7vcs8Uw@UHWG=aIQdlF_cgz!mI)7;N2 zFIsN0n?&!u6h9i9Pb#J@zIf3^{9sVT){(wA{r@BFEr8-kr69}qP7bI8EM)H5qg(Q3-j-7i1?WHxbZ>RBi1S$->m0{aVJ+=W8y1mND4!l# zKM3XPyMuYzm1kyDn0%ZX%EhlbX?QS}aCartcg28mS7AZQ8z+}OY{aN&frSJ;ZUgfH z`?96tuv|y()rtxqNT@fcUd4;gPePK$*Gl%FtGz8qRKjKW7UebA_xx2duJA93@r4k- ztm6g*d32`DkPC*%q)Cm?Mfzj#7J`N#d(V&@7fm>L!pqh)iP}!#lv@YACE`Ao7)g=< z;*qf?oUr`6m8k^Ct@G9MjD|$t(BZl9?hY*XY}EI0wAK;IuWCK#&MI(dEWDsB{`>|j z*ij?;8B3!`CzJ!nrC=t(lCiCh@)0e+?_F8yr$R)Ug>+b)_v`}dnxkVJ;RUD!%jg!6 zyDtd46**2Pr~69S&?pJQKt$a@uDJ~%QofoF1uF7}x%g$~0dzcG)#$Ut9SAIqPVb4_ zN2`HC2ly8Uquh;p*X)v2TSRYpcAo-|A5bmj5M?WXq;$`{Lu|P<8iQ?X8#i)>T$X&d zxm`zZ)s+PBXB5_{Uv$V!eRV%eY2~2Z`h;Y?6nY!OZ*%g~+^tyarkoah);P{Gj+9Dl zpiN3_qBC3-C}nOHD8Fe*lj(5f;djTfB_kHDdN1lTO|=0Z!6;FIOoNJ#P*GyFn0O)O z`)>9qW4`%)vLB1b6$D&!!wPV_hwus$O^QIQnKlykhx|mp~wAww_7wQFqN|6;}W; zHf%;&BM%AwIf3Yb`WJq481Trm)Yj5-&lA1Uk~ z7oq=aj?_u3KMb}5DU}r}isp_QZLU+}u%?j?J5zf# zb&g7>)`_V6&OBjz<~cJRCa+gG&nT-U3i}dw)FCq{)FbBo1?Kl-e(UTaUZIl9aqQ6F z7T%^{>s(xws(}bcfvcNk8X*{rJ?)gYJ+`O|u?@tKWpDWmU%`w2J!h&5^gS({ohI zD)l%H=lieMQ(n_|tMG49LfGk4d{e{qcW&ki$~s7)q6I-%+T17iu~~jmi-pF9TCzD; zd6F9SljND{=Apf@5$VvcWibyvh)qc%1pQf;fyw^2!CWwxzbn(x72#z7`@qhw z#UG-C_)Fd|yv3E-pSdMs=Yw^pjK*bW)MSxh=?NMllx-7ydNr30f^Ce_Ukg51IHD%4 z7KKe_aq`&=SQu7B=M?EHfr{q^=ol`!ac7NI|s#)_LzBK#jFmB(@$+9W$X;)Yba1Mo{_S^W72*UkdYLcmJ#wm zoaGFXv}DX$_7T3E7}@;jz8H@jJH8cBSM+-eTP+;yn*M1?ORD#R-npH z&xyeP9>motCqIiK|K5!BaT58fKt($djyfjgzG8^e9BvPjg*HiWr0<3SH9c>J9dEIg zn(DhKXvJ6igzucyH6y$7NVf0yb=)n$Do)2OHI>1y;oItsK1(Ov^ABq}PT% zCWLhK=)ZbF(*y5x4a9#QPEkeO+@_8{#KH_ zSgk{Mbr>WGOBZc3=7g~}?wLw2&dd4UYp6|Tze-3VhT40H7!MpqWNmx#7;$Zf|`=oG;-i7c;dx|V={|VAeQe$V%(JIYf39r z`RA6!jvm$77^r?u2mi9UuV`HytTGQcV?C(d0v?u=n)RQ-oRcRg8F`*jYRk~<@I(52 zp{4h^BBVMK5GBV%9>01Fo-shC{9s;%7Vq5U$cb?E3;Pj5He>E*t(s?c2Nh!VrhzG8 zXbdSc@}Sf;WGS7GBIRkY-}j{<{jUN9>=X>BQf8wRD3TeWzy?*0i=O#iEv|+uG{@HH zb|sVmf`VrQ9qs+^0q^O`%BX#aGV-QeM3}u&=yD!fADefdR_`ZbkNG$77sK0JS;!`y z14O;tu-f$2o?dpgo^ldyr)Mf$*GM-n)Cx+mh>{gMPHb1#(G(AeKB&g#^hJGiC*@UI zS~v(%lb;F4NZ6CawY$(X5PfIpd>h}AIYxTY=Y59#;|!_qkEV}BKmzhVvf@8n)BlYX zc{u;cid9-V@AuWQ{l3)ld}bYJ?a9RBAS}<6Fahb-4GprO<;$*#5P9w;**@N99U3z0 z0Lgx$KmWAf*6A_B1N=U_q9IuDGzK3=A%6E0N-vRpU8hphDUnSI?bI4eVsxE*;(2A4 z&8{%+SfNV4VR67LL`)OAiSR9mpx%!@k7g^0^jI&uR7bt$_#m%Z&58@CYTZ4dCgQmpw>%hYG_M&_$9g0#B?h`pTM>eA(0Cu0zX#DV25 zv);uwm}j*1k4i`quwOeRzV>NDreHR3w&bjZ3u{HwU%-x4fJXzm#rXQ~h<=3-wWQYv zq42&4%DUcI(@CqgzXiARc;d zVK$ECMAZwJO!e>`WZ7inp)_ZAPEAYWUxw`Y9DD73J0a;~UXN|>$E=lxa(6VFIw4h~ zlm6;jBZ<{KH|IfFI!elQE1_rq7SR(H!(HD@>s}2p-bLIL<|yz~t}dBw=@QhNR+s+J~(kIa4r(_)>Lk}$M(;UF}(VbUtydB(JC7jgHS zp|AY;^m?<}9NAb4J0EZF0z*_bP?{Knm|R)J{GY?)kK}*6%P~M>%W<}eFvVj0(dVJa zA1$Mu(YwX}BWszJ()IQB#5PXScL8}eG)rd3pGJYs-J zPn5p*Q+h<~LG(ZKruMnPncqh)huR>m5yM}0dtr2jD{1UQ+!^Fo)PIx3zuMey;tet$ zuiR1-HP{TfVxW5U$dy2q1RVCe_1y?okVMkwQPuW|_ey`I+@s{U-=vrG#AckR>qAc4 za|i@0-bE0uc0GueTz{I~Eqy%RkB_|@eRz%c>Q4f%5Dgl=ktxAF<>r4R(|V;?mi@b)}!W+h>r|Yd8e<0$GcU-f-}T zUkiA0dmswW>V1vjwCEC~VNX}q{<5%@p;K}HqT6Egu9S~*tlrvBqAIJ@Y5BfU9lAD= z#c9Zs{J^94aS71~FQ1j>pazRWjwa7PIuC;fNwCqXs`A>biuYk7hppPoilw23-&G~O z@(ZwyQ)Bb{aN8jH{T=`hs|;h&Gmc;{iPodq;>pj>SM4!3L<~@ihkaDtJu!&fl^W9| zmFc{y>KADDoJ1Zss&6P+CPvj~4Qzdv;_&*IMS_qLI9P)Ozj8Ir-1v>g^56*i?jgY! z>uc6hs|~ITXzpe;LdcF#9dX*0`Ot^$u=zj({3K8?d%&ZFaNT#=gFz=?+1(rnxSbF);oG9M*I*VesD1bxG?QM26 z1)vMfT`s9hFQyH{oW$)Iu3W7V0$7R4*VvuH2py2f7J;$CUlML(bWPLAsi)0CaE(U% zrLwnP6|VU7IkG9$*62y#`YB~q;yvE!>kF07r31XMfV%3#>a1zkay2`zLUy}1R+5b* zxQL}oO1@p{a-Ne-PfPzB!w_WoY`&uIhfA8)5$&5LY4 zZ*5M9=(!O6cQ#6K>Kod1k&nip3K*M&glqCLx<;GsvuedCBO}L@ZJ$jQ_f6+Db>?mL z#{_)kl2UO*vN;gU(h-Gn*Jx8>bXFhxH(04Hyjq)$#i8)oQmQ5L1lpyi8phwbCrCFC zO!FcJex{L@mM5l45*l4sd0&FR8Z0rg+*`k&m6*@@(rRAIExIr8F&YCo)Q3O)7JjSh z>(oq;d*`@aZqCI^Pa&8*^O-LAH+c}^1M2LfvT}<0`mGC>aklPC-Y2H@Ftqa>dFPE$ z@hu(prSL3D$j=Y?z)WlLeIhmK7^2dQ+2H9NrD)m-K115{qJYhd#8P;1Dis;vq4Ggr zp>w4UPt8-CTfvjgGN2x9#@C!#XF;}(3y+GAf6_m2W#V=HNACIWIVt~jd&|qo z`%mgg(pp#CU_t-5U7I%ArW!r!oaGe~*QQZmTM0I}FTR7A3sJ=>LsuQ%_8dvw2%U>rK>`X&CR)Ttf|S}{r-LD>*+8- z6Krg(;taf6gAEAL6&7OmG=;05uBus;$YE*ND40y4P1iD!*km0KQfSy=2*#)f~vn(y&Of*ayIqTNy3-;y7{(ltlTZ%zp3xjxYqbdrf0D9^#yM+f{*GP`^CeuUKf9!wIlFuB#V)IY{an24!u z_=R?0bX{HDCx)pEw(lX34TMGbpJql1q-^BHRuvX_JQE&XCN>lx&Pb4H=dUQ75!ZJ+ z9I-cf#Vtoq0U8TlhZ|m<1UwhCaH9nu@TI*#^jJCkLz1Ix$qVCk9P|!z_44~V+oSbW zYie<wS4`0i^OMoQ!&7$M#*d9l8{BO~!u(T1d}J?{RukRhCt@a~{7NCJkuaTt$%2<> zOj2I8;U9YjmLKTw+3Y!N1^|z5POjEQw)FqR0zCgc8Qi~}T&%4B%gL3brSN`(3%&cQ zHmy+G&E`52IS{+~P#lq#DNfRV;L_w<)n-$Kfqje3CqFBos+??6>$M4^4M$cwx9?|4 zz{~neQ-`lBL}g>{?%`x3H(o72`oLhN)-j2YL2H)-iv1;-!3)%Y(;}a>$*qa|SN*!? zJ;V$~J)+CJRpB~!|D%Z4NTk-e_$(^V7Ec?0hhJsE$c1ryVG9Qi-ru7910mh7Xvv|` zwgid9TfQV&cq@b8+RyQO0#!hwcM)V1aQVfDrEp$@Gf7#-dv!_bQj z#oBHEKKHErz%gsl;4R2y+Uc!*GsNXw-Kb(iYHq`s@;N9nViB!}OF5}f1Kh+Ukv#A0 zEwAlVK547_B}O0AjIz2XfM?M%!S7QS$EXvg3Tc>HY5P7hn1+1(1Xkqh$Z`jGt?jNF{r=j&u(h<)tbX{27$B+2X|_)aYc!zvEi+ zog-U9lrgVIU>wkfJ-_07ImI0}C`jYnLol~Wisc^`0fwc}vb4}$ zms?AdnaV6#XJ1JCEL+jr&|LJpjF%kDMX(!LO|m)M>ZbIe>iThwl1`xGWB&53c$-7V zx%VX5d^bf6_q1Ni(!r+PgjLIr*_RZt3sYcJdRN*R%vrvgMn5pbk%vDeqjc@?NYbz9 z=>COgQ2=MpdC3!P(^)$AESvFzbe(pEb9QWagJ-OS$$~)W4w;LVJf`;dSV=N8J=}F? z;{rJ6$n2x}8MJT&H*ijHO_B)~!*vO0a6FWj_rZ^;B*acqzOj*5u0X`y;Z;nVEyKiQ zf22l7(KbgmEYVps49`}whI%p(l^HwZht7Nb*4$ftl zrpWoM+iL#f=(DBa7!Orr6&=CF&mE=f3@cyGDkDCQNbzPdOA=G2@}61#M(D_GV9kh%xE9 z(o{n9DBaT_8i(kQU$;8+Vw~dqi=~|Xk}ICpUR{sjibi~?f7x6qysuR z+`a#gvk6Xy2JSzy(?9ex|Ly*W<$pPwnzY6pv02f(zi2Jg$5`)gZo&tQxxiEOnJ@u& z(W$ZEGt6hrWrnuZ4vSNpKA_7`&AWZhwfkVPEC)C_{<*sMc!!P)H#r=o^!;ox>g!-4 zWt?H(w`DkKc=*Q-bbWY)Nx3{cs7YyS(Vh25x`a$5+FzY2jlDa0Diw7Y+rw;!Z3juz zwVcMV8TIXT9)HI5)THlYRuIt)wxmvp!JJRt7)+huv-@;zZt5H9U+(y8LO&Rqp;pI} znLNA47upRIIgtt%9U-<<4!gI5o|-_?8jIyUHacsr7N$DKIEjIFWlZ%#6Kg6MdNdY> zx?vAE_Lph)-w(5>qf+yM81O~F6usTkd)ojQ=H5~Lun59zER^=sscstAsc~NAeuNI5 zN+HTc6lbsBROp!W_rF9evCHgSMq$(aR^l#ZtC!ST3;pgP>{0XLm1=o~pt%)Z;Irpr z4Y8J*^o>7!PzT9LSK5O#ju)(%q~h#sOh!;e*E4mQ76BS7AGz6*DHlQ;G3Hu4-$h|e z`*!Fy5nNC6lsF17P7P5tp`Frol5)fx+SaH-b`#Zo+nlYx|FE+7WE(ts?VjD$pK!DGLb0*hL(=J2YX=oN-x=&iORhe<{ z_?9JQClt26{}j+`&9T1@n;ZUO&KbMmVAVOz|8A@jm6DhiKZZ9Cqm*w_kC;dKRc3vO z8@bRRk9+OIsI9c3M?XG<7jn7fF+cI|$H$Zwa&8mKm|BB7(p&gK&3Q`3M!t7NizQ{{tIehK5#2ShTf*7B z6R}5E>bWqs5(#OIXM2~3iYi%r8b5TB4N52SABD=_v=_ToK2T$+CEdrOr>68`$11PmHi@z28H`4<`=DptJuIoOEk5ElKyC%OX4rYoPnuMEGJ zZ7DRq`mXdjMG*+{Aft8+$%*pCqr{1nTj=&dr_buTZcj{~>XEvaCTOv(-NF(NDl2-p z=q>AB{H=3QO;8~?V_I#wAY|HTYs7(Kn~R)T4~r^6yP8bJU*MWxpqNUmO{d}y z$%;QW9b;G}k+c}kG2#AFR2Ld)AqDu=t^>jNKvL9=3)tDtL zJZ#J?RHen<^kV8RCXTL7CVy#F|DhY>`KQWGR*lTk#QsflE2i)!hkMgG+B1ublKqJZ zR#N^~kCL*&TLv;U(Z52}nbj0bTaSKHQ~4DPG&6|^FO7Axj6ox z`@G*Pzb^r(e@V6h=72YY_`MDo2Eao9v9}f$9u^iB9uXc64jvI1@sA<@F;vt)4LUjw z7BUw0n-LHa6B84@`yYdVgL%uT`)4pb0z5oC!e2v?-%{kFyuJPy+MfyjZ2!#lW*F#y z4C~EsaB%SO@F4&HPVjpZ01d$S-3P#c2Pi?nLjfoN5Eu}U7?8h*APV006BY^p^=E(o zWsuM?aPSaNun34q5C8}$Xefw(_q=T(p`amPVBz53I?(|TkWi3NPzdlre}CcaBLEr$ zh8z}?l|m%}4hvgU%_Kg5j*^OvUCg=u`fUsjE*?GsAvFyxkPgJb$;HjX%O@@&DJ3l< z3szOv(A0XbZEWAlLc4o-dU^W<1O^3%gocGjL?$LBr=+H(XA~3`6_=Ej zl~*)0HZ`}jwzYTk4-5_skBp9uPt1Q^SX^3OSzX)R+dnuwIzBl)`+jqKcmLzz@#!Z9 z000FA2?>o9@vmL_8!{$2s|pO3s52}aHV%cjs)=df+#A@xuu@X}jh2o5UwFm-g;(ug zc>lj}|BW_2;oo@k{|9jW|0Uw<|AG8_4S@W1b|5eyF#y7VDi4PYE1Xi|_M&WznXnOy zv{XfUAi|dtHTl~&36_wpY`at@YCaV$2e!3y%rR3Bf~~HuMG=jLarxwR2nr^J4j=+k zeJ*%k!pbrRI1#xQc8L0Q%_P$BYlg*6b6asyMmf!Mv)jxC#=Ka# zOBEC+A{nDNwhZIM^dytY-o#b$&T))NNDEabGvgwkf0uF`WQgSbm(4;;bSfB@3PZ5~ z{${$azW$fmAEk}rFl0F1oH<20rW914=c9Pj>G&MQeIS}*a6e`&RA4symnt0UtnDJ1 zRJg3Ep{3}ED2o=*#u-`2h&l50D(Z!nb3$%B0>wk&*={C zBa6ZDSs=E-q@uozRPi0tecRZwAaNqxrj`(%Mu{R!#WqQKu`&pPfpAWML?OFfYEo*- z+fjoOIGedN{vy}N61YB&NcegnZulGU+O$zM?0Qw~a!_g==5I?6fh_JHU;?NLf`mmF zZqF2xRaG)wD$_XO>t6Y`FUL@0ve2-#r;-;YPc|`X_sn2ZZ;)bfjQw)}TNP5aO--w2 zCVWI5bczir=%zEvG8SXU3tn|;=mQop_IJFc)hB>v$eW2l%t?Y*9US8+D2asg3Wal^ zTh@v-P<>y9(1zl^`axdE0zM7^dw{%xJz6-}D$}y=OpQuKM+>AVAYhbZWE)haeqh=u zN=(#HF;M5#aRp^0Be~ocC6yh=-$&c$fHkNdm1|bZe#C*u-UOrZtr9SS;YlX%9d-Gt z#S)iLPGIMGwGA_Ez3C9BK_yjDKh#6fc@YRS>Z+m`MKFR1u9S=JgWk?mK$)sfe>Y%F z{9~@5Fy9ZlA$Wyv94qi15!7)`;n0gyD?_l5W5-m7SiqZv2?%%1SrOlP6o@< zI5m{iG`nsNDJ5ynkI^|QEJ$$>6@bVyu3Vv!&@|~Lq>~8FOh$5bF4`+QC@1XBBAiWG zDA#D=MxUnjd{<2oNuwbL%om`5TIK|s0Q+HB)V`l1S9|XgICBFljF-g|QX zGTUc)c3Xjw2E*VB%1T~jyS(7+jZ*yJ#VH(7pjgzW-?NnoE=r2Lk(=Y#BPxqf-Qtb7 z#0{|Pn5VNb$l*S6=`Ysb0Ss#t@Gz;GTAL8gM+6+kK=_r$~6LiQ>#FNA@@Ee8D zEzFuH=CD%&kejrbA4nx)%Asnacn?Qet+L8y4B zL5l8E0fXX3%dPYzJ}%PaB>v+leESzcwHB4yQ;(v_vCBWSZ5*0A>ekH&z#IVamcN0q z8&4L6(I_0X1sOQedIx7EEMqRaiYx-hsr-_(8-5_Dij`=p%5)Qf zrhnDfevzlCcb-bu3r;9bK;W#YToFtEYX@HL1_N2C#G2}N(>YM;TIt~&n!EnO*#=J~ ztbIdh(Jkv_xx_>;_-#lc5eEfvV##eJ0l7v|12dXBY0IVTI1$pr0n;8&!+R|0IBiP- z#w@Ezi<9jv$GH@J%~3{G24GL8hN;e}DTB?}H=RU{d>%iFdo~$MYyn(IMDu_rjNEIs z7~ldpm_)v_hY4cZqxUkfsUdS94|DF7Jw;-aXPdF2a=u<63NiZ}(rvaGR%1)8SI0hr zc4O2mm_bTj2sd9LRH5%I!gp;@#XlHsvg$$Vkl@R~II}u^TB(7e*%qm5mn)J_g6-O3 zJK0h|tf^6M%duQ6#Rn|xqKXEBN!u%m(Q6zXm#NlJ1MTE>ttA-#{zDMsH;NAGt~@Tl zHU6dbthSn8U`pn8-SI=E?#dX}D*zH2Y?=9c&VP6ZU)px8!Z}WFW8_Q~wTid^U1zDy z1R^3MDH6KOP-J;K(IZS^4HGP*?2XNP1~^B#Wn^D?$U$g(}s- zW{M0gi;3*=W|Xc(<%(UlLzI7`m&z1d(jQ@Gu+$w>6s!6*hu=U;kfaxI8;J{pf-tUs zv4u`cR;7YCHe?6nG>;B|J)um_+`G7JVD@JD=@2E9nZ6HNlNP!etmQdrW0X|ioHq7m zm4|?U$f*zR6Okg@MEQTO1C$>Q#lWEg9d8SeEMI}0s$v=OqrhP$O}iG6h1aAmSR|jo zkynBN6lZEE4qxYYuI6t=h@c6X6lIVx%NZz`D`IXXz)dIdd0n z6un7Yag1@CIV=eZ>);F*5-4OeTNNcGDRZ|cxl8XhVKZxv)K$~(s!bN7G-Y@7eZ?!0 zI=@MgHW#H6eI`Dpc+HV<+sW{UG=qlR8fPdN0uV@a!lzg;aJQ*)e!w(7lhFlZLqIDB zC4}N9I|x|LpR^ZkM&zJYecRQaZW+*l)va(ACp?6S{;N%ZftgoO^>SnY17*er_B zvKCS1ES>;p(exz6#`1d5q-?BNW>cGkDro6o_p>X;k#bwJKt&AzMV~8vN>P-e0&^%$ ziLWpn^+_&i12|LnkVM3F-xr59G#!fIJ5H?<8{pBgEOwI$aL>+9zpu-x#o|$C(}B?w zipwPm4uS(^s|Ox^R0bl!0JQ{$VZ%!fJQ+uqO&$G(q^@}xcPPSCpuPnA%2z&9I|Wc$ z&8AufMbnzp4~PBme3ng(4rexxj5O;|Z1sjn7e)5rBJ4s42*&{etEz~QsZ{DdRbo!= zuh?15HI-U!mQrgdd7RuDs{RayHnm|?U&etjaPc1>%Ao34b|UR?om=N|C6Gn!WhM}K zofd6v!Li^(!VB4aMo^UoVDA?AWjVeRo@%%eIIS9Jpuw#OKC4~RB%rZ0$Z%>qEnkGt zMOl%=Rxe^mK)$1?vP}v!32*sE8y#d&eO$sPb9nGhqHFyS;b`j;n4Smj<6N}6zni&>}xOPBo{`4=#6kUy=ytsD7RM>rp}|88z73{Z~mkM z*sEC4V7l2SIwZ)@;DZ{EE0nlCq#+4%j9gdSaO7~kfZQE1!QTK}zvk;?2TGz}=DbxW zit|*9!7WkkLEKa}NS}VsSHzKt1cajhX->aGyx=&lsPU-xIj5&AOft1q*V`yU25K@D zi#5{M7$4Q}7TtR(6*+A3SvqMfq)ccQPfRiF!$5*n=j*LS3F2@ai@`CDQD#kj)pT4b zC~Xn+vUZt`oYwr--$a3QU|o=|h=Q1Hq7&p9rk%61mn$#C;yqh{nRSISWLiCbbUq*= zaEsMnK@7c7y)j#srmT0tbbuC8#Ybb9 z7N7iRVJ%XYqDdJx8TL^LSIoeRJ~Tn$3wgVpLNJ}RShh8tLdCg>G*)z=HL9qJctZSy z-cPA2@20k2XkG1aWvuv4soGNoNfi})&Pfm;YW4C08@z}`l;U7qc#gkjGTbTVi62ySVlYks!KLa`5_`N zc%Q)KWvgYYfeB9?P7yJ#2!AO%ck~rKb$E30mXE>k=wv4UZagyFACw2-)na+_g2@5p zVAU7^z)+SK8vAV-i$GGcK!NIu&&MkjLK)MGW#1~X_WV>X#ZK~90LZA6lTi^8Y8Dw_ zPKDy1()UNG9)`!2Drbq7yp@y=!z_l()At6JRo|&LAT>Y`lSCDLMRF)8pyq^WTCf@4 zu(XwALKs#HV;sdze_!Q^D->@>owDY#p6O$;Q&c^&O5P#^L9LKcET>#8#X?7A8xS=t zS*VHth(sOt&+%zi4Tpz8C`Bj~=wq#pGSfsCROdUQGu+lhry2-qkECXqp`Zznaz-d+ zdAk(#P+v;%#dcocYN5>lCqXzXw5Y}@obl9@s}m?d@SR-PKRwZF%2tYfac7?F$+Fx~ z6yuH)Z42_^CfehkuZTuSXwV`DPE|Em7aQw_quxnF{c5o8@2!Vmx!nv6q`(t7^$ ziYxdyWYcA;1L+o{TlCZrO>NEHlKa7XNgPisG*ov`{FnBE?(4!&AIWEv`5T&}vZ>tuC{rs(k`t$Z54a)DY|5(_6t!^#L zwU(IA9O>&!CgWC#^6R$6BIMc?1lSox8Z>!lLtrod;tYkKtie^bpl@zdZK`XV(j1ZH zHj7C06|TV&EEHA`yy%v%lEJ zQmE8?;{{jL54TBng<|bUJtpd*5CAG29hGLV0i@5&TVD`vbmgDET{Ny#Ol$}U5g>*x zmanD_y_ny$Td$RTH)t<0TyrwgL6R!)Edgh-NC)3DE%*|9b*h<>y~JwWz6hr$*=8?5 zG%7Y3pa8q4OjA-)|3Pek+Z{~pEicPyQKXU+Oitu`mx=eGj_w*tBbFXV2Dy*>$Z5q2 zm6%XIYu+J1t)}{cVTh|az<{llP$mzcf>I46;1s*{4mE_XLAv!6-j?!XB`kJpS)n%p z<-}#$?CYCzmTZc2%}1)P(OgDgENZve1ZhihwDXg`SL#}~Sfo_oizK6?qp1{=(twW> zTj1Xf6d^N10r+DN5}e3WaC{TZ2ihTkSOP%==MgC;7#PYSkke8$bYkA60Ng#&dBQn& zizo{j`?uPpF8yGH>b^38I0d#i7}sFD0D}3eF{Rd_GHhhTaD%in9tR~X;ZV!Kfr<=3 zNV4*mrm#8=-KDst!3btOYK0JFw-Rk?NzN`vLuELg*~{4jj!5I48plsPF}|k!H%(Df zE?7RAP9TF2zNxQ`VC+H#mK~k);^Bps%!Vx!+OnS!Zb?r32xA17QctfIb>QGh(4JZpC%mb$;PJ%SCrm}E^kwr&DQjg3 zY6qLC%KIAf=mki7Ne#Do;6Yx>7itxo$t5NCG?YnTVLSS(t}59LoJ4UubQCR5Nw59 zWC2a6D&)RwNuqaEt;n+%xzwCcOb6x!QEka`Cm6@u`IbMFh9}csldbbui}|dLmy6am z6B$PZ#RWzUABy;|xuV0`!c=Fm-dS2j6E$QHWKkzKT9T-!?++_=6cf9|VeeOrkh|+3 za8ME53?&x7M^>SxaWb57rZKhP_f=KTE76^bi=KwjWDE2}Rgr|kpsLzfh&s(k@E-S! z*O%5+5&Qb)>`4&Cfexqq(#>{uL_@4r(*{o28&^##OiHko4MqRd;3*j|4~?VU4}5?I zY7I&Gh;df4UKT+7C?eTPVL@anYQhYu!idf%G6x_5O0d)3t`Nc%TumUM;qm`d^Zxhh zfAXO7{$Gg#csT#}W49_Tz4z-Qm~XPg6=~Ko;3d;IHCiO3bHZEvAVh)`kGIp$Jeh{# zkrd)|#k0MaM|O7p#;&x=Asehd3SRz3*QX<{Pd@e@c#|51elO0ynru=kFD$EPj-v)+ zetz`x@OV_q*30C}=09wbjqykZRj^Ip=(o?8a8>T?taqYKzfMa{zp2;0O{+}f-Tm6Ofs?OWa`UeH=ajr-P*C22-QjWftK zPL&OVuLtppV^B zFykh2Z|94Us^rzENNELaC#0)=g#s$~7mrVsmFvzTotP}%aiuTXt^t)nYGuqPPpi2- z6!RqMJH2_!J!%)4(uI{xEF{#Wjpo;*+gLVaCxY>3&k{efD&b~0fkp4Oj}OGJWUp#A zt$uqHwSI8P^Z_%sX7`5S%57U<+ zl!1$ovq>_JoHjKJ1e#l%Ce+KF6)Ois$wApcVGBzgdf|RT#2IQKWt?w?R1i@aJ9@>; zW-0Fgu~Xl6UL_NXcOEZLU2xt3%&32Xe(vzSBNNjuEIC7@qc-Ip%#{n*ub>O$qh|TW zKrM3y`6=JUpYSWxJ3VS9PIaQb#P5DF+fif=+f-aI0!1RrUcEkW+9JGqyyStsRD?ME z1%YYk_M$;q7vFx()6V~jO9G~im80UpK5JK;(3zfg+I$iH!MkAR#S~sxD-3;~{yOs^ zplD(D?)$vpQ%l}?sS)q@ej@4~lr1dYYAzfCteIzJMl2q~mWfXixks25cdCyRCR?<8 z(h9u3rqbaw=>dlKc&;mJD|LYfq=UOoP!Ig`0C_h2C6NRf`u@<9p(TVpi6g_V4AuTI z_!oFznGe~^k6lMoqX$mv34QNq;sj87bCqs~tm(?~&Ay0@W+gk(%A@3A&} za7+HEb}mori=Q{@c@-d@4|>y9Gf1T!WLLI}Go-nUc;m1FJFQJwq6}r-hVxk3(O1qs z=>(ln-bev-o!c~ak^`F=ogYGZSR)Hh6|3Lp8{^=Q@-D|O!^>x^dS|vXOK1iFYmDY>F+5l=OWd=cGTbJ+T2Xu8r5{3*W+ zdg$Cbf%#>dIHEq78kT5!TD4V_q{TM+n1v)?IE;tTE3)L4_$1GL&cW;gf?^W1kAM!^ zQuehy#>Tq3TLe_^bc7~AN}Pka4LxV(f~hfaFSu%-U<{Bue)jir=eIvMhS9&wrcWIq zuPT2Colnl%puyo(;OsU|fIohv`1G}0-wrLCs-c)d zwTNKrzB@H^5@^OE7IgcH&mI<*&c8c{_QK=Sx{Q1j0{RSNodpaWEgu9d(n1zB8U~+p zn=?&~a$W`0dPMX`7fcC|VxH-buJ_Bs-o{Mwv#)G(0We9C3JRlevlH^>#OkA&0VRBPp!NnUAd++$#%gOM1o|MG{2BG;wP>Dm=DtUV9McI_ z_!4d|Frxi&M7v$Is;{Oha(DvEtp05xZB{!D&G--9syjPfs)Hqi%duFJmpu2PNfm}k zLizpZTLm@FmvBJ}#v>N_lRB-1Jq!c`OP2%zSbM*x@7Wv6_(Fb?991qT8M%tF-nqvB zRX2)Csu%Hupa*HD*|-_P6+32mKk(1n+=q3XRTKf>9C|y5ECvtZ1F=aG{jsy-M^^A1 z$8d9FrLHJ7R(`Z-1^UkJ;e?}ZhuPuzoIRj=zP853+D{QdB zFrV>0NCzy0OzA>)w(Q4}og|G=0&J6?L0;$R0+KN;5Lpql} zuYSVPhy@kXDT4etG4mT;1Mn({#IYlUGrPn6+8lU{Kj|mPUvv6nYcTO#9pSrx9tI`QiHfOe?tR z-7rVXTMicFA8Y|C6JKnhf4&lWh?C4KeI3OD?AGH3W^$j-02${+d(%;R^8Jv3lcv!tW9dA z=Npzh9W1cFkD!|gjTAIusDgYn@O4dOj)dgQGZyOKC9=KNgEmmup+}FRXBbA`;x{aa z4VPS=fA5Sc5jQWsikT9#O(L`-B)WYK&O)^gu~`7+EA0B`N%cz$m^?{sRMc3Dwm*<* zaWlYqR7Jun?W)BHfK*C!ARW;?V5mb|Wj;z_>Cc+W(cUacs3J5nb&GqGa11Z<&vBM`*8;vfT= zz{_ro3YplrcRNDDA=UvTR&wfV~;5% z_o;jQYsHdZFYhRsU3q&oDfu@Mk)wn2O-71QX9H#*`=lzqYI`2Ww4Oers4&)a=nBZW z%3xFkmsj%fr0TJiN$0e&@ylx8l}gfRq;W*B@8DP8E!AXYaWN;Z%Wl^E&r<_5-l&Ei zCx_yRvkPb!h}6VCSZi%q=90R^gm}Bf)?DHk{i_8s7<2F^Q=Bzta4lmj`+kMX+bdSL#yxCemqG(qKI7{+-u(>|3lS^0Mrv#uhW_ z^aWYF`({ASPsF=3h&wWMz~~CwPWhYz*}&9^+0mmAdgr z6|HjGw_esVb7~M9Um3@w=%7Y7MMN`QlQE&;L`uUi;ctuc8&ZzJzbCR(36~>>A&%15 zL8}$SS!?%evZ&vX7{N&tnMty`Ooz+wg&~|^r=@vmZQ$>q`W`-R8bC)dsEgy-ouWlX zKwq^+;fXq98@KRjEZT8HB5l}M1chiR)Zvdn;VY1w;tL zCa$4Zf)Y63;t5gFZV^Nej#E+4#5o8URnRbKRoa|*eFEC7O$;0(HtzIf1if=;4^}){Bj7$ zarP!N>}6g4ZpLU7t`q2EqdFEoTR#8;y~wEliMENxIf7s|a;N$OpkTSe2ZbU|?wuZ9 z2a*K3epUM@ZR$p{23!ricSi@)ha?NaY)9{vff+OsYt&Yy{yQvPlsQ@${Yk&;g3MeC z<|)FUJ7~;Lh&PF;AG%ntHRQ@ZFF!{wBlWi|lsU$|K5Cp7V=#?$e^aA#sEJaz1pgn# z&Vg5yu-Vevwr$(CZQDNEwr$(CZQHhOpUr!|n@MIexs%L4=v4Zx>aO=$YrWpK1noFh zb#~o@964K`pC>G3-clyAtppd}Ff>7-)M<*$U`=AK&y!g5k(~*T&An0nWp&Ba&7NP# z5P3l^^gJ*31(BIn;Xo&dtbb-#bj%HRw(2;c193PyvO%^N71*=|wbeFLTQ8B*1F*z!)&bhjWF?CA8*42>5LJcN3htMAk6}65)VmqF2-oV^~ zT1dxvM9H~?%)yEi9ZUx>S;+*TF-8SrV=cGFK(*)#4T zj6{3{Q18d23W}SaKox=ppGfrG%fW)kx~>1Md9cL;~nPB^Z91d{1vWHqZUhu%qgvDt9TBNY7+8&3ZureH?HH0=&w zyJ#{P$Hvz`X?J{Bnox_LaREmBGv7^BSWp%GY#tc!_Q{5P-v$CwHjl~9P{sm(ygVTz z5wZewI|yKwITs(em}_dU^|IfPX8WmM-Y;wO&~k{L<%LVdrVV;njype4+Mf0@6Y5*J zpmU0i#r?tY3PKYmuuR80#rEx@2^SWGQ0OD4QeZsry-bTN>Is$vx$_kd2|<;IsRvos zXdzK)NCi(*nrfltz)9(AEnHor`eH+aJ$_vYBb^EMn>~lLOHaedfn>KkIUL79q^Z-7 z*Z_gkfQb}G+jxV#!N;hMV2$MoZ5df>dFoBi`+JCYaRk{1t8~~Dol{4;6d>Rm1za_j zk=oI^I~1=tHp6XM8<{rF{`h*Y@w!Nt0L4Z`7AkEWB5LxCj2(7DZkk{TXHcqx(&dZfqrdwc*;L@Hqo% z6&HzvRKQd*6NT3DRI1ojWxULG=%@s<@P%VQQ@Qt5IZ~?g@)UHQA)S1H(Xinku`^%@ zYt^N^jF-kQNuuy+K{fq{QPCFPjM=P>e=#{{$hMuHVq^IBO`s?@5+0t`ZCt%lNG4X@ zkoPfq9e~Hl0aH8!kkd6L0(jZ_t7%By018KNyGDwr!nZcSa^g&F=x)j?cDVq9UZT+i zU8%3^qjD>cpfhbpAxJkIm>6qDFIgfFMX!}Si2i(ctjKOiu`fC39B5>RKmH1~OAqaF zuIH!7wydmxqtTkSj8X%5KVXv~$Mr&aVM~Jk#=21KQ4havGBWrH9f$fL_V?#5aoth% ztCNn~8xyHP-8Ulcq&*9x?dm)Joqt9D`RE5og8L4cu^dh%Tpby;a?~@PIrarH1{t@K zEHEKvCWEoSC@()aaecLst8En)^4!TM^oe;*f8PB52iZr=hd@j}ZumpKVb&CD_$X($ zd0lTlB3!fRPh<-M)Lf9Ho#9srZiimfSFe&qR4Q&he6%?!?jVe~` zEg|E7bM{>-I+gst+t}(za4PtvB(F$D1~C%$-E0cx?w$Kvw^UGX&jyV?@=t3*-(Le8 zzCt_Hb8S=US%A^r!B^aW@vk5VcXUxo_~;R>(na}V&qBCX?zgw8P+OWfuY&2VYb^cP59{T2w^9TWR&9}wmVL3d=*wWtr;HT-R?>Ahe~^AGC)Js z@<-neFU$(Skq1Gub=tT(F88#r*ftJf#gWcBsrzesua@Y0Btdosc)8MXE~l~7`Z~Wf zLnFkiC174p$Hw|Jt5bo#TIY6GyuZ+Tt5~fX3PQ3nHc=7IiTeb7>?{EFStEK*6s04# zUsrtBn%=ja-~K7wJ-51&7yLu@g6c%-Vt%Roi8IY0!k1rlu~tg((G9-4>A6yDG`5GP0Je|GqrjD>+EpSu9*7z0KBW25y)Gw+6~DXY*)H zej_%FI1qL$$yRu#{T@pbNBzz;)*rS4q}(F6Le_uY=9U4SZ+Gb5O0+|1m~I6 z@%Zc{*$_dRlMJEM-S^r$_?5m1d|2*J-j)rU6>?x3qn-`YM}xh`E}fKOYw5QeIVpZ; zeCnxdDEED;BD;5#6<;!jX`vri{#9VW}Ou93Obyg|Vt}d3Y{zm)Zo}g;EM9AVBT))BZuus=(ei z5zgqq;WW=3_sx1)m+|fu?6l@gDz{mZ+l6(%x9H>S?fLWV3O^R=6NkO6u+ZYs9oB$A z2q+vMM|utQJ%=cGDHiyTQND;6RKTS`sw0b3iD@A;$N8sF#kWvmMU1ntnT@_MEm!hY z#644&rG!YqG|+-q%pgc;l`|VpS|kCZs{*&PW1CtNLH=r|Q!99@cFa_OU(e)pkIof2 zsLYW)nAW|jeu07sVYD|xSf6>gTQa6x2NL^5r2yOi`z^vOSr1WVw>+iWVr8=1QpJ;n)w%>RE$NV)4O_@~ zBT#R}1gg;bVeT(z!ke^Uwz`^RwS3BOC3cF40&W^ zfgDP8rI_khEJeI6DR#>(=)+dNn6`7bd9e*y5YG^Jw9(~V{u2y`I4{kn&Mt=_D+l* za38M}Rj%jC`}J(Z=1MBWMG0?W78IyLNb#(ZlJe9t;wl79%Kt31#w#%ASLm)u7tY%yA*a`l{WEXGvnW?$VdW$$(pgD+5o`=|44Pl zqfWP92u3i|Nxin(3Z}u>!SO?$_7NF+~0`o;70Cv9_1n|0Go+pyeh zUrMl+WbqOV#d0*w7dxkE|JF8ygpHjPb5CB0Fk6|Hk>@<#o+}0=^WPmzkrOU~<(WKt zBebq%n7=xrvSfItKRdQpSG1G(2T%E=ecvYOH zyoo+(z2`DD{_Q-1rp`yX#Hfp3s*a*x8@4@-;xsApm=UX>w@k1jAqKx$WXAjk93%{r zL}%bZGS?xk_Y#RFyo6Jn*q^HB96JN`kJBlg1HEze-qc+Pc;WqYUre<3k`wX8xtLLS5eP+V(XuyHC~oCS*=)F#!J9G%;iQ7h0)DHBBQeYsU7a zq>z|KajMi7s`$!Ut){dY2<3bPLfMm@a`ED$l$*swX~&D1z5M}8{-8|i+97Rkz@QQA@F{9GTbK#6F)?uE&>bF8S+x_7~MQ~2Rg)IPAs&_n#U@0(9 z-71dfG->=^G;VDBY~RU3-oK=tUIs6q6{~S2Z^0IuOwB?pKCE0E-G;x;zVwOnp8wbL z9qaMPx4LH<$hltGh3HV1NVM-KAG_^aLP26XH^i&YfYtDC%l5MQ<&pfeb>vG+xcgeA z_W<``=wnf7#&Im$d|OLqmHfPZJN&da+Tr&n{i2;#w)XB5o_2nFt9u;T6sl-PRsuK? za98rjMmj^^6lZ(8N*5NbZ2CXpdgpaoP+>R5w0`qNt!Pn3LLv@65qebiUeULpB!Aiu zWyS~7mED&{aUbfTu+-l!K_*yuS|Pqg-=k`cE!YQmUpI?xjZk>vpH;Pa!k(sGIZ!Mj zu-?t`1!^TZ+CuaSBgMZt@ZBjDtATVRDXZuN?)LpYWG@o~d^&$3o(-O8Ek9Ii$v6sJ zhl7iQ^@3;QBs7^zk9gzQIZ#X{{=z|)mecNV6mB)Pq7)U-#*|FvbT2Qars~64NoWWa zP|Hb^?KGJ*EiR;}n64qC(5I$+^`1*%x9N^DmKXp*OTLoCt5b}{KKTGfJ!7Luc1so= zt%N}}+SQT=4E~$R00DO49_R!F`cN>Sk-mEp?7w0hg}HpSo}b0n`I!PVYT@*oDVaT0XH?LaWg6OtnV{`AMM! zb-$_SP{frKj>Wx`4fMuF9wo3$($-a~*qu+-?O7dy`>Za2waB3V)_PL@jA=ljh-lWz! z>HB$lTDl-D2&HsSIdm;(*L`R;@3djJV#ca_XsrXH3uZSsd6_pF$xg?_A#!d@`@yz{ z1pUg&SKafe<*vQcv9<>8Tj58ey3#0HVlDLt+Q;0NN{==!USeIlxn>#P1B?t7T)d5q z00I_*8vNFT>7NS&XX9l^WN1^kEs=)RB}henj?u8Dqjqd16TMwMQPaX9jE+iTa?A3h z`8XYKwW}v$DZ@8H0hS2E{Q>vnwwX3-Pbd*R5C4z z|6ihf9`ng3BzrnZDxtLxIft-(Wzuf^kB6@wwRt05vx1j{ORB!TAJVW}z?nJX>SBtq z{!GG(keNZHi3Q`voq&O!AOO_F27*BqB%pDFfB@PSLcO=L$y2zucIii>Y%47`dp|}d zuK~<$OTWKy;68!Q7a&aLo(B4)W$|N=6qUe>f{O-$VPupk6FJmP2CEERxs>BLJjGIy zzaX3oWgttjGHOmqt{%bwh7vSC#6X6*;6jp61_6?sd|6k;vUtarvfb6=+EE8t8HBqn zGMYjPHI%hD6JX#b34Ry>mNy(xdAk`?G13-HiHhF%eL_g89Fw;aPtp*7HRWvMnlUvTMiFt=C#_VJNRj|QATU*+hWW$#0^XP3G zK#8S7wo%rM1_+#kBkgW`cGfNIW#;iCzxVU@`paHJZ;zGQ#ii8(f7#9)9sLIXa&mL} zYLL24)~vZMxoVPz9_mCoYoj|b=nkJBhmV)#@*01}apih>BT&sQt?laOvEH`r^7D?K zPQPMfEQ2X{gAZHhM!^&b_u z--CZUDT#gOQ>m8q>Dtq}q-KSun;j-e>GvMF=1g`;C_imYqKS^pQK6p z7S5@hO39CTWYKkU3@KP_r>=RR(t(1tEM)q+d!EAc6=+9JVTdw=cKH( zyVVf;z}i2eKF&PA-*;u8ZVHJJVA);*LJ~rd=mw71>=5_+thqUoQJjYW=o0WJevG4?avqfrB(r>6~Z?dFN|H)C-DFa z?b8;nJ_I+Y9@ZDd?rj6a8^mE%f0Lj@?Be{{4m@L$#aqS<&^*HwRO0>$nFchP*5-80 zd7oCW1&|)}4Em&V+`>c30>op=xAxZm2GS7Vb2|_*_{z3Gu?Yh*5(oza@7|zoYr~P) zVxvr8Okl>vkN$vMBQQ6R{w(DNUpP~&J?I#Zb?u8doO%&&1#+l3x;QA(ZmcOfFWa-< z2c|}~!LC7ncV1K}mf@MJ)grU+z7GDy{i6j!UzBnvXaB^u04haw3+*XlmxyJd>Z`H6 z`d18u`TAO@p;4I05+`@g3o{v;4t}G$C%_ zfRZ$TSB8WU_O0%ej**LGS)*Y|gK-IIH@Fs%WN<(1O8x0+I3FsDR0H(*2U#k|+?pV% zD11219JJLj7QZjEZxASQj2Oz6sCa{|Dxj-vL1h4BKLPjb?mDt^vRfI?lM zo|R%ixS3Om347xG3S{=y^^Xw6?m*mC4wOvpz4H#^j$-UlHsHO(x6v=D6`TtbXYx|6 zk~r@n`WC&=TI|N01v7&Is8x_ufffq}j)@=>6iH~ZG*O1tZ`y^9l~om2iE!SK#w9qs z;3SAdPZla!5Ib)w^;6>xr)2Z;GE)NubJgdJf~s*En?p(pth(r4>~%M{!(WyZQ88{N zQZ2@C7Ad6MqGm&$%_0HOG3VyOwSXNv3Q;>Z2Q;w6I2=Z$^W#^fZkK?zF@!y0=LU{|+Iz=J=GPi*fL1(zG z=SK#phaei{wV~t3RmuiAo@pV0g2imO&67puV-W#&94-)(k02C2`98Li6w+9z5RrC_ znyNkBKFCNu9ru^9bv`lQm&Dy9JdQfR!}MN3@;0`s8AB^e;*QziK^R_ zNr3i$OR}}I-W*%Zb|3uemRN z)w5NCH~@77MV#GN!~+JG_43aNO~&Y?%g0aj%Fof$@qDsKgLV{ zAkcE~MWe*PqroAg(Fte|PLUSQ7Cw_#!zF}@vl#WM9)M61wzWwwT;~qi z%t`9*!pZ+p$HBkEy7V7^aql5Z^?G~Dl&&9$(9xqc9s6Q#9NcnH@nuo(Jv=bv$bG`tsTLuapP5CMfAjd_|RxXG{+ zb&u8T_u4eZ;0rOYs+ui_7H$f}2Ldn%#E^!hu&fP`ctc?gVw@i-lri~Ph> zVx_D$7Eu$OOpcQI!Acz0kfsyrNYa#C<87R{TV8oAUehH*aWgAD-KrU`Fo6#$`vOO% zWD(~#7`G#JHcJVzg*pbxq6=B5h%Tc!UQUeFD}!iop@an=Ki`uno0hIXPB~z%qxQ)g zk-pEJ!XEN-DKUE}t_Un7^}tBM6jV4Y?d+k;d!kEGXng?eX8wYl5eoW3+%(*L5N!uV zG4L`53TJSNokxt-d2k;=$$oAnVmG2Humy;BvgrVKP-5u2r|xdE0d-n5rcy&YUt>y1{Z?KVo`5 zL#eD}72J| zSX)P%sxBWt8@g{Vu)qErdDYbM%3+jE0iB_q(zGnSF;1p*!X%@nSh_p&clyUFiNSH6 zn)=qeNO@P7UBNJE(jejIT`%<+TIp_uGh3MaE-M&&^*hwdL(>la+;>0wL4=?VIz>;M zk7&kKzCl?rtfLlFMH8G1G=W;z<}-KC2(9>%wvTn)96Q${?`6D@9Hsf>z-a z>icZm&nS_A^P|SB?`1R;W!v~FlHiJl+rW?94UbeQkX0Q91;eXc5gD5@L7Hyj$vuq) zKU148kcsFdwJ=WUBIleD(?I>nk5NQ>@EqY7RaQUx6@k=8hI@deg*4b|T54xaIDC2w z!x(S&$$2@{J@&zg++hLKGX7MOi0Hm+Oz&R>NftOI=W#4^VCWl1ONA@qi1niz1gV#+ zQeGm^=8k*N7Gk(sslYC5LWtC$?G>cX_>nW}lF>RDj1mJ9!aTq%J(zwk%3p@fZ=w3iWi zP6?Xi%X0uY)9`*jaN?Uun?hCaRLxTO0c*l+#gQ~daJ{MIiwtlGKxbHJ)jj&)EOq_s9k0SuPo#}E{@@~Khpk8Fp%qJ~OHmzh zW&8JZ1F2az3eYbYUV1autmGs$6Q+WzJS}DZ1Pl53gJ)44Qn)u^hkeDoh-Bd6F)w|* zX7qNuC|(t|Cvi4DriO_)GTPV9XNP4@^SyEu0JvG@<8oEG=|mYXP>AM4r7>a3J0<#e z8Z++jgtSbFA790y-BBw~PhEv3+(_wa0*?e!dM1Is12X^k{G?oGcsI&X5qnLGYd|h5 zgbh9=BI6Zm4Mg%6ll)hvnz8azCdO5A2MhwI^0n9&_{LtT?I56h=von%49Ervta*ou zq+241d8K;d+w7|nvNK!Ol{2xN)K?*@fj7DNVFYXOQn9eRq8aS=w7;fOr2{il?}I+bw<1>J{bwK?nk zD!`jEZTt&X$r!@+d@_@we*jn5RC1B7ky!SpTKQ|R|7Q=Tz@5^38&%E z?-E4Nhet*DfAi_thl%AEm)+lT-T0YUV`YP!dq|%(MyVh$r;d$si?5G<>N|Ax@V!s9 z@;I^9n6{SPiCCg~6Z`BxZYosIP1V#3mRW=GXx@YuN@7k{jcCx}SF>t4&3uhCfx@yM zxe7ifg(0`p`ga_BHeve}szs01biqmYe+6Q`rF2B4F*s4Ftfwa}cK` zCyLrd*6d}VXcT_{cHUU(FLd1y{B@Z;uHPn3P`U#pc!R&8(n2E039-9SKJHiriHQa%t zV#!m$b+~AJ6m`ko%LVM?2J`F#;7Qm*F=*XxZHIaAI}pfVge@{9Yun)aj4It#YTJE8 zb>pB!xXeSug<#(JND-KoZap`2*+Xz;%I3lr6BC>B)Cix{D4dxuRbe|>HDQ~{kUAOV z(3w>_TRMJ;S8I#hB2N=}G<@0o+RCHkrF~I&C;qVMh6Z1>`5PG5I&_IueefEu&QoDf z<}o@l*+y(B{P+-971Vo|TZ+qlsn^->eP*5=X(_MTW7?lyKhkh^XVjQ$lM2zOsPC++ za_cySr|aG<%~Qt+p^|5lDanr}O;SATQ?4Iff3R9(E{Bvvi~C_JWNjL4l|j8j%pknr zd~=28&w2#zuK@^&bjGVGbFVj;yiiw4xhtJBCFnwm$8WviXlta(OP*?eUnhRQCRt%i zL*<5-n*AYsgTJ}?x4kHoi!Iv5!xkbWh?5rQvUDt5gX7CnerOU5vPqBw(QZ*41lOC? z9zhWg#ky(W^hHpPxbm6-3KC%4X$IaQHkIr-w`b^+`ca!z*H8@7*B9xr5IwT)FYks| z2wQb0oFV>bKGYQ&zjX;0svK4NtPS0sCdt#(yhjV<^t@o@D^*dI0|)ftH*Otbt3 zktvlJ&H%DY`_EbuS!N~eAvhc;yxjmGnQoV(w3w89+i46}g+O4FHexX{xV>I%(6Imw zH(|s;fM9C<42g@BFfohX2N2TiO}O_20#7{|M4xRHAmk;I1@hUG{C73Iie%z|6dkp_ z3YXIl54G%b@EFUmYdOxo+XhV57Q@A~R0qBnrvUvw`tH!ir?jU_BepMxv(?d8sD8M- za`VbUDsm1LubD@s6_kMSV&fEtqbLK~9w(f~y^7v!4Nh8zl5W#^=4s#uf!M_*tA4j7 z%zs)XkboK?BsCK?E#4|N=s=LoQXOS7U#+78}NY&;iu47Pix_0J(<~tgMQk^@U}iuRI62c3Ew-s z&pYH$sGqAe%f1>iDn6jFQ%cRUDkL;UwT`*z%qHRR!}P9Cbd{66F9 z1-lsf8&=8MZkJ+Y^&VQuU5lInDmPX_-M;$E=r>gYqV1i(k?Ka6lV)Zxy-h^|eeE%u z6%=y2CF5l@;62hM%U-La=k0pe5Fe>*#MvF4(}hg5uQRD4UcOlkqc&qGjA-OK{>J8wDD*lTiW)jO01 zWNpzs04DzvQrs}-GF#vNKv-wds{z$zUh{mz)*nu6?7{B(<%6DvZoF_v?YEA zA@#TIKZ8s9KAXyoF8g9PqBq^+w*eT$s8jB5CtdwI^o9C%yA>0SfBxjPRY;u`{WsD+ z=lrf*N-QUC0up5#>~q6m zwK=JHPA?=$6R2XLd!|xQ#~DFY)~RBeV7qxIYI<`}1nF9lWY_Kmv7EJ}KkNjX(q3#& zsUqRN!U!>k2AQ2IxpE>)?J=}&lD3>b|yd?pr_Xf2FD0KE}}CiY}o1O2G% z02%Ph>Fu7t{K8B@-u!8n2_O?(T-hHB%a%^FC~FxWTfK1WKOBLof0OiRXZ~O_zSrGj zc#=W6Nj^AKZ|!bQm>j+)N7-m5lEWQ^OEKNn(dSN)cEn%5k|Yq|b-e?4`-^ZSVMZ+% zj;1ymNGHoW+WfoXq6#C7enPYv?xk(OYCCp{Zm|t)u;Wty_EcRBpbU#4U5!?Y=}!`w zS$83evUKz@&i{ZjjvrBBt7C=bHE_X=p)d3T252F5pZMY-!1Ny14pts{AM|h^TjvRM zMU93Tk}odGy+84Q7r6s?G!rF3D~97d3HVcygqLGNgv-D*`i-GZmdcW-=r%sgJu1}0 zl0D7Jl)?MrOjQ#=bFC>F%VL66x2~{NUC0PR=yXY3^D^`RSxw zOKIU8*vx#{*(ElxeHz6Z%y?NHi-^f5@+^GeT0b6$rOdT-Z@?1aabX*aqq@&2^ zQ~cv-#o)1<{-k&1pFX=jq5iQq#|FyfsM3AvYih71svsyVxf7xFvaT~TCF`slRHU56)3ma)4g za^JewwyeJgbCLKX@M?5Us{^Y4{tw*&!g{&+ZQOK`qT2`(032qU<-x3|b6j|JzaxnqlJTZE|t*?{Mjc zJ@e{T(J)J~)|Ar*qtpnodOPyS8prP>i@=hJjHcfKy@lzh>$akIURl{JUoDO~yScHl zJH^DI8i}EF>(@4GJp1YR?eKxu)xxal`Adt$Lr;}SpP>R*1i(3HRiU1y^y*VXcv$PM zkO~|b8NQ(3``H;p#I9~&C@IGcU>P1;o*n#_SHb#G(YzUI}bkT;Mwp_j z)hDdZ#IN=vo!8(>7q7;eQbO;FY-~5k?BQURIGTuN%BZppKds(HI`!yGPLgVp&BXE<_)}4`x;_jd<^lZj*JYR*OryV_8~avl#KviI z`6gn0H3qnpS4IBmO%rvVr6*pfQ6Waj6j$1&L@6-QH(@dRs?G@ zP(ra4(emF}u7uK#Uw~K=V$Dva8_>!HwPtOdXjjh(plF_LRSNf%+4;%8b*W zA~+jOI4)!jRjLXKQfM_R_zz$>Ie1o09>X+j8MfL=qz_QY0~JDcp~ZKhHCI9k4XRq; zA2^_w{2~}W9naEvhcKpgX-B*X401ln6u%~QJ@LnoD*&~$C+jmR0Ig}R6p&Vt zwZQxblF$@GU<w*Pbs1R|P4r5g%02KhXZ&{S;NsQm&a_@6B-tnW7Q+ zR<)_7n8#{tU~ORZ?+;7kim)1WRANUa7dexn32$dW=!!J3a$@&}P6L)a9t{zD4+vCo z=lEh|m=c0+vQ!fck&bsmjvph^kIqSuS5mJUoF2bgOYR&&AlIH`{ZTvO6Ku{g`_RsP1Uza7 zIamK?>*n)8_jJQ~1I_$9AjGz389U}xnoiPhO8T$;>FMgwZl0A;OB&2}ah_({u3*(9 ziHIG^R5}P$o3YL`^FxKmH)1Rk4QH`DClYZ1MMM*0+=`?(QliVT)jVOUsb(^H$%#$; zsQ-&ufkIn9{~xdN{|`6f|F?xXI|m2j|MuUN_?JolFXCwe(f6$GTwD$zwzTUE1PxlF z)$ND??3xCcIQ}i5w4At=gN?PZkbs}hK~Qf0MdR;`8d@}HN&wn~Y-kJ`}S-YuUq ze4g9sF@4v}-&+H@)#q0;Cy$;z=e3*Nudky;h;?e038>$k?BnN0T~ylD$QHgmK^(_Ci-qy|z+RH7X(}y;!cghNWJZbR67>7Q z%p;p7tJwyoJr(mg{rle(bw8p7+>m~K25bIv*Sn%77p?Yyq$$aYoe>>YVal(bJbKd451c0fR zUqZxp<8+9-ID^pxN0v3OzziO`Jgj71s7kBF#@xDEdI~-8)Jm)yvv=@oT^h%$07QvU z{2P&A1ds$;LgQXc2>o6#IRSMd7UxY@U9Tl(#avH)mC==oDk|$psPOV?s`rGCQMicn zwALFu;zB-mDZdJi=ky<}pn>RlcnOo;;On|1nvh|AUE#Vz_fvy2@qVX*Sb$>+hU)rWQ+9S3RvvW_uw9cq|OD7_XLZxJ&K%9MGdh?SCt25KJ0l-l~(4)Kde#W*V@->4n{gq$?i2$m%= zM#4Uc=O_+VPIa2H5e!T~{6P4dyQi=}d}*^|r{&>^1o(8}8lii0siue3NLCyT>IcI* zDfR!%6!sC>_{;NX^GM-@+cyN%`tN@G71bTs=Euv4AI5qDbWlOCwt&47Evrh`DB^n(Rwq<`oqG*@eHDf(pZ02WWs$@(L$8P{Q^RZddn#INnp8r z+J$8lf038r;3H@uC4KIXmI%yOO|sw&!B}T>_#AZ0u_#|mvz5YhIy_$4Wps4w#xqn^mJ$Yrh?)ZbPL9IlOf*iT z?b_I(k=NNWJr#x=g#meWad-p)_W1r>f|f@ClVCyE+-U*}o|M}74_TMj{DFDidd6@L zO6rdrdIjma&U)aD$L9oef+s9g>Xe%z25Hs!iIR z#LILufGL-RB)A4Y7FO~5K|SEn=uUG>4@A_u1gMX}r5)6R%vypYZAHED%R@Ogvi}h3 z#UH(0;%gh4IHKgtBU?XXsd}b_1BO8N2)C+iS<>p$J*ErcrREXee!zJwpI>U880?nm z!Ih(Q5vH4|a;&eUdU!o7q{375)tRI-#?wSIcKM+b4${8QSW)2di6%wX3NgHaf1n~8G& zPa3%*o-1iQky_adT>E;c9&&b>?s<@zk}`6?o?c=&X}FsOb%0| zcS}Uk5eIp!Ims$Fe3^(_I153OH_GM<$R+?NfCD@u_aK`z_KX&try79 zM$ZN_hRP*R=$%IaR&JWy!wyfNT~-VLUMMdDT%A z;BxWXOR1Mj`#WsQ)wJG>MHEEsXL-OzO+P-v*4D(yG+$1noL7bk{!&AMEjS5T_R-=C zFYS|Q&r>o(@xWK!>8c?FcvqQM=di%;Po*_H`G+(-8R)5UiK!Hw37Y7;LX|c;0(?wh zASG0ugmW;>Z!jzXS`U~$BN@~8N4LFG@aW+RAAMU|oucSFkL>If^$SGMYX>QG1 zGm~5$l+^-c2!PWjE|BFCKs1 z82>asNYPa)twqlxU%e=n!q%@afrqioICAQyUu>j)4vw|+-6ibX*q`ES|BYY%CNq-2 zLt66T-{We}+}}C&64PcsVJbIL8_ORX#CSec1@$b%3eo#d!S<8a#KGHb{@3eBmV<5h z7=@s*z*14<@Aczp{z@#nw`bNTQC~?m0LKb=6JX<<93H^^bj}stju$a(3K;EQ4%Q0&Lmv4C#3qG+`6&FAs6Ep9X^f%7$r;|(i^8IDuB`xHeCS;TcGs?#?*!1LDcYujEI3@gNYh- zQvMYl9*KwuOIji&#A^i);R6$DSn8mdN_h$OgM{%5$zTrwOfD?DqHjJogsOVmad7I9 z|B}XYr!(>0k|j82yep^MlwykOVB5iEmSiV}Z)@3vV_m=`@n9JBdT8l|gIPVre_pQ~ zW*(+qtdZ^x4%&qdwoYQ<@i%{IkW9z^9b*1XJ}=t4Q;e@;V*p?)u8be2o%$-lc+ck9 zYV%xFxy+?{MH9pNHN27utwIc&ua%x#lrtTl>(tcBMa_MA&ZT)Nt4NOC@Em6?sO+kY zjk_6DC9?mi%9+Ez$V`Hxv+h1Ue@Ct?A#p%h2@cDz>Zxqkx&3KnH&s3#PTa6j6dS?| zV<9ts0dv=XmvW=X@0{d~Ga21EsxgcN?qPw+lJ9Gi54e zd((eaV4biZ0Y`fnCeWPNvwL5u#jx2reih6}tJgTS8nS^yL)!Q8(javN62+T8mLO^k}|Sz1WZ>YQH(a| zF;$+RARo{a*Jn3T=(Bb97tD&sFl0>7hyF&|u zbsmHo$8tHF0A&{sb|ZJp^}vQGItu%(3IZL8@L_HTDPG*Vn?O#u>GMUcH(OY?oD1bceq<<(#S+H zCQ0Sz!oED6DkuR`(GGeiL=h6Erqncg{a7eS1NDrMVX>H>&7^gy*fFj`uAv%p!)QvaAjs||o1c$GPcf%Ds=rV26) z{+B~;Ay4kBty_uWH{xPoCV=nMShFh1Vpwy)E{-jw&B+;RCtV9FiEjkr**_Vq?WXua zy_xs`J}0EpRZmY$L4?*WJYQ$9biw<-K=in^w{G5CM%z$%ZHtP%#|v>UKn;q>LG*UQ zbCeDKuU#XgLQMn~^?!om1>MiZqh)=12F)w%Rw?;_R`uJbQX!akK~-;eH*(r^WH7if%yL)hVukr*JUMc{nIrR2Isg?;3-PR_0XX$@q#rSy zzA+E&7RHS-;sPg(@8aH|!S~fdKYYV+0xCd}p^zYkdp%V7%0hyIvXNLh0Nf>5pH4Xb z+;zb^yr`m774e%a54KHouB)p_l}{1n#ZMJoGQ^e}oT&RzWj`BsqERA{;Kpl_lI^p- zTxXCm8l#V&DgAqY1+%wef^e%BJ+}U4u^Il`t6|x{g~2v85a2OV%WRWY0`_#~Q`tp5 z{#b;ELVBxViXg0sIIV|6>xcc};iC$~BFk2>Ef$Mq_U3cJUR_Pmduou3zTMg`h1Byq zb}o<3(p@jbbkEr1OW-K9CZ=|ap0rw{#3!92pEC@=n;!6`2+~`7t)NGlgN|HSgPfSC z_Vljj-*PzNEcK$B7>e=BLOZGl8Ul!shjqP_s$Khx_MI^=AySaB} zwHJI5W{gZO2igB&6n_8aIwfjgZOxPfZx`w)tKn+?$15WAg zh(=17$;~b%gO!%LC^Fl{KFi<5HgK}RkBz1M73s!m6?xAGd(q^DLlVcgkq0=kwkjT4 ziVqi`FwKIA>tM|BhIj*hF4{*r@Im-F?AM}VN~%`4BxIa5RQgxK7|;TP=`SGrV!)Vs za)wFF*tBkPolu)YONZvf^z`Gbja))8ZfaxJ8mtY5cn8&-ED@}B0j*NEYU>_Z>Kp(_ z+uH`=)i-o|Mz!_{-QFFBnH;-cUR@R9KQE`eL`Wa2Y%(O| zfL9ZF3~PQPz;2{*7SGh&=W?b9bj|3_0Lw+Hj2h3g@AAHwWL@6N5%7X<$ZpTyIey}R zY)?Xz#CeVEGoIXD3hLR^I;lH#7GPRJ+R>3DQ~3Qf`by=lXdUJ)uB{_EE$BzLo`%x@ z9YnfoM4Cvl^(zrBMXqwWvU0yN7_v4QUv&;yspx(1SVZ_YdY6QaiGsCHo=W1|8}@b? zbno8kX`{6XMz}fH_3N>A$E&!@>E|1P^M?72E#ymSmQMox9!vYL$99zYakm$Flb3N{ zr8Fn$C#?(HLyyY(Myx>a+TFF?eeIaWqh{e9EF(vlr$P#|nqN{iqBw9&A!Sn>vW!MJ zWi#z#95ziD(RwS14e;&kT2XRr`Lw3i-$~d1K%65Fxa;-9WN~nbp1#}UwUY4sPCvU zUHTQ4!N|{xK<~1bS;5yi(k(od!dmAEj!djqy%P4H`$cOR9H>8^yW_gMdDc=H+~DXf)!ZdG?lfoqdT_Amdfm_CQEc>cV^69~;Y)nJ}H$Ls>4tw_I3 z8%4?43l}Mzny`yt6nM#4E{rRQ#46DQ9drElrp0e+zmcgBs)H!+YCr!mQP*Lld(Zcr zCd35HIZU%&hmbFj<{9$LAHb=2k>BdfvfWaqPs;toFi%5Urwh`3RD5^*Xhjt^G#joEq1#) zMqN2{f=$)U6=pP5&c?K5vKSv8iQe`Mys+a>=al$v@@*Kt$IvPkOhgI(6j`XTABV~d z%(uIM({9JK97ta2geVX{f;eX`dvZi#53kt_Vab!X>y0*3@h$a=fA>oBjBFdND4rfQ za{m38Llxji@uR3U%@Barh!&E!^JmYmz#5+e9@1FYn^abs(>x1T_xUYRib{ZKqY94m zMKV+!_A+AAAlnv7Ay&%;EWLbv* zA8f(2<$TJ%jh$v=#l0&$5;_ep-XgjYcfWxI17yWb7j>_o?BIxs)DoB1%X2r(IYd}l zDo9;7x(yOGNyqKeeI5qELRc)|R`lQG+i*jF~i(XrV!GNyB z{JyNyFs9iJP=p=Mv?}NQG865$k`i5s{UEa>L;9^}@uNpjN^MImZWtHs4)=yFC{JmT z@JJ5FN!+AM6Y@q~u{kD92~PvU9l~WZ6v@i;iMY>x1hJ8OF@f|J@~jG+!c@H2u>v-v zxhib8TCa9c$wAwsP#=2@WnOyXVPLdwD(6O;{$oE~f57fx0ebJjJHcACNu#?+wnX0w z#rH1Jb%wJ6yf{O@1pUx4bnzR$+lAPR65#yDFuhF^1leVUZGx_B6yx1|VR139EQ_Po zAcZ6B?+`JsXoHT|5CZ}x3f`@8lYGv?pUimcerjwn;m+mvWz5jo?Tpf`I@JPmOO6w2 z;l8QNc1>fy!PkkN=}AGIBpAMn-K4~<03m;b*+*>J) zJ8N9kh%ZAWs~)msV`YS>4>q}NG3BA1csLHq{ZsiRS=4hdVQLv_9HE$X!y;8~OLbE~H&*M> zUlY;$%89#M-z&f zTq4{_Nn{rha~4)xH;@xa{d6+%?p3?^l?&mw$|Y#SE_jheq|u!Ms8p7Yg3tix=z`U! z&EOObGY#|7-^{!>8_!7@pM+6Iz>!2J#tOU14rIy+d^wc<5t5G6&@w150Lbxmct6G; z_-8YkY)sy<1ZoHGAsvh5Cs3D81|jL}PI(*So74WfBC{Vl)NOoj8UVFSXMMfemKz!ZdzvHr3r-|`c=xB6^$|FRUquTJ+Li=jhsnhDnS644Oz;YJT zR2P}qdl8&^_8Xc7f=}C-8O2=!w7bQ^wt>z6tk4hz1cS1K*&C=Q(}h1G6nO-E5r2|< z)}?xe@tSSCcL7y$mtZ;Pnad?AFS%1_Eaz!LCPP497RbK1sl~ark7B#JD5XKuc-WWi zEx}h02?7@c^Y1>WZACFSM~>vSzcp-<9{iO(CRQ0D$M??$}>2}4OLnaMVEZuL4>-tR4d!-y2n zF5}Gg@LVfERhg?jHAd;)2-9d|%e$%WX1e!K+WG>cdl2MW1p9bdvA?&Uj-o7u5UGDE zua&t}>{FGIs8=gDds9-rl|-$pR7n+O$QC;;xN2Tv1VLxTOsCm70pIi1CrFbvK%hr1 z1Q1P;34LIx=urrwQX%4uyA~bIyEIz+pwAw9G-_6K#xm!3Y4jVsclQ&8KXe!P!ubO= zdt1yy*E-*I2A8-V4kK;3D}90w5gi#hfHlpo5S`A{Vhl%r;>Sfc=q-Lj|E9p96#pnq zxZ(ZepRD7Mv>R5xi+jGiSHFd4d=7n)Of~$*m?>Qwkheh7t}Zw;8a_ErSu=5$I-qUp zCfZ-CDEFAk(2vhiEvVU+%}{g=GdRw=7lX`ht@u&S%wvE}L30=II3T1fqF}pwj!9%; z9@z&U5pYjHls*xnpiyufEwjr)RmMh4C1D4hN2B-5tfR10SaJ<$APdHbsKa}T>Qpm> zN$$8YU=QRIv>Bj@1b0ITzW58!MLrLu@Pzb)WO-(JT^00-@s%9%B|Y%PN6sj@Q=h?jcsae-Q1bM;XKeZ(XD48wt6mPhb$M zV`K;8*%zPT!b5#Q1_b!QlT@g9yYDf zvWInw(Yh8zu8_3Syb{(&=yur(SRdc80~kHl)Z6~fz55GAi<6Fy6nVPzSDa|n;8*f6 z_BGp^`L&bZLhN5l6rrUeCa$OkP-0I^52g)7O1xe8af3Lh#e?_v=jgy=4%HV8f@@~r zrsQlfCliphhXD{>$zQz1BNS3ir(s7#vt7>Mu1BC}epL>W1&Z7gQ%)Slej#FBug zB=~YIb-39{rW9zMi4tZ-k^37y$KLCK(%Lc%Vm5oVb^@)(oXbgS{LC)r94Q}wZ^h^gN(qQ z-dpYjQYEz9XGT%&!CcCnA(73p9)e`YWpF6vY9wC!a>| zb4y>HY))KbX*Ndg1Oz>^8|8f*9@j#>aiAHrM^JB!C2P=CnrUnBKYCV>Qa&p z4GXm0r<}rRf)n-Uy6F@PsUbj;Yxf%{w|}i0rK(0JS?kE4l6jsXDcG|@31^8JYL3Qb zUxI`lT@U%xktGHb(az>XB@R-lRpYT$qyjWn#NsS#oX&SNm51aSF!I@t2E8BPmtMw) z@av4?zo`ZXTI~z4wzEO#8bm9c+%)HdUvLR7?sGR3t-rF|>AU+2ouqBSJqKZL?MbTf zc(EGRuG}>P&eY%yS08Egt(4Tf{fP8FdPf!M_BLps zY?-WULrP7Yjqmb>64alG*Xg9@&L1XjCHR3LI#JGSpE`E+OJ3lKmEwICjeV5*8&!PB zT~1I4>d#3 zFPvh~Ecz^B#MnaT?&1Sn6g+`xA zR@gtuE(b}9!p=u~CPXu=6SfPf7L;tmGHKc)OV0uJdwF?MLQ+F%DOl``XcVc>qy>4D|43_DR8~K}Uq+7~0Tu8RfQg zF@W`P{_>7ghk{J7~<>4r5 z9^x)C30i8=n!Fh)({?e{3J?gJm+N?~YN8N#!eiFoEm|8`@zZ-LK-G5CplOeNE-b12 zPQF1f0D9$j#Q!lM{x`DSe;*KMjelS(dip+y=b;LLk6Ud@g#G#Bvb)PJje zJS?m=w&+$rZ^X87XfLnq$2Z>JzwPV`{azg3grZihD5e!v%w(BxHjI^XRT~&-ZN1)@ zS+`^8qKY zD-9E}Ol~-G+`t-69Gc;Mk!zL0!#J*1PC43L3EiL`NTOZ13G*G$HK9qz$^cZoC(fxc zfDl4z3Baf;8cpvHEGM8!W^vkOxA9hCT*$N3Q781Hyg@B$00l(9R3TB7}eB2m#RpkifC3fPaPwB|tB~K+Qh%PW^{a;5rZ4E z&qbeeISKrDN|2@*WoR+Y4df)C)ueT+ZO*C+B0E6R%{x>ty5M@ftP9j_!a&E+`|vda zG==%KyGQ?Xq{uLq3Ig(g=Is91)rsS1q)QcYaF8YEkG%ndyyWx8hdB*JKN{)nlUR0<8ZOE2>fDf@e z>xrcdpkE&w6FDy~w$E%Jc1fBMRQS|8YoB1367&~kb6)`XNn-^_LTzECc9n+4!`3D@ zPK#%!c|Meth+trX@`LdecTZCL?6mzM7pN1F32YU^;ZU~X34;x>~=FM{IaXR!r@0OKSy$O^-{}eLqhc`0N_A7VK}fi zxE`BIrlAXyNhOkv3K(*9n_pSD-`_W6F6_*j(lxbJMe6FtRBmQeh}6g?m^3Zwdopvn zJI05ivBu#smmAMpPipl7U`mIxGEh1-YZA+4L9=5mLB@tzukXSO0-QfG(kQRNlCGaR zs%r;H6?nI3o9-;{uvnf{#Fx%A0Dp1f(?HY2#9L~hQeK5W1mvy|{S+`sL$+FQ4?oOE4MDAw9?oucG`zK!uHBoAtA z(H_J>Iq~aBZ{eLkKnoCAcy`zTIUnXWY#XtZCurWYpx-Z8Bi@a3m1n&A#-93kcbb{Q z*8!A>;*|>iS?t0g->OAGYu$H5>W)`&x)F*63(%A3@t&?)!J$T}ZQTgFKyG6e9Gw*w zy9)xc+H|ux6}8>ygJR<%o~yC*2#Cq;?PjpDifLes8j-(Vsz_Sy_;ej4E_9TUNI|%o zJ~697?`Jp%3K+NnMTsJ_puB0ks5~mkHpb`?X?&1}>UQbzp|a zJwh7<1gQK`zysvty4U03hCiNLrxdF5nZSwhiSAZEp4Kb>Br7(}>EP~m-SU85*R#26 z1uIpSX!kwu>VvJIK~|kAJG`gZkJ|(Pj7s_wcg=Epq^pqegm@ z+zFwU4iF$u#gzaaxC_yR$UU9dwQ82$bGL65{PcuL%JeL<23ksv3$Dz-(gb ztn<)2IX$pNR8*aJx%<}~xHadX|y7PqQ2&FX)^(=iVYj|p1&#KIOfm#^7%BJISj*^uP9NXe;(XJ)L zx&<9X3|16Rlo0g53a(Eo=r>FX|JIQrgb*=AX<2vqY$TBpvWs$D$~wk8RiPSw)|u45 zd6;wP=G*P(J`}du$`nkhQzQNic$#01EZ9CsN8q+Y!t#XUfU|9r)o`hw+nYn%WrSfX&Vq%jxHf}LLvszR8)3qwIg*uuW)}<;&oWn)gqLnYU}(bWF9Ts{&Z{ij-SEp8>ZdHJ zEoIC7I0m}qxUhJ8RPbQ%F23sDrrqP2SrSP%+`WZ()v%joaXrVTLH%T@IS^oA*K#%t z^bNH5(X@{n=Uisb5I9@1IW zu6;LVheF4UAid?_i?p84Wu{Eccla>ajFe!*Io=iCejFwAM7aAMb70nL&)lA9j@+HzLs^#avD-1bI(5KY-KI(d#%{n1-7i zodULbJl?**CZ0>zpdmXfK=+z2h7tWIr*Vn7FX@*g8 ze?{h=UqGUgMvET|$Oj9KLuM1-=mG?L7j&Y%Uo#tRgaY|}>CTbiZBmWPNixPUR)mo} zXXUY-q^E@~+YPg**YN4mn;;W~@cGn|N7oZN@&40BU1&fELh^S~C+Tgmsmt4bWHEmJ z{6U+M(C_-{u$r*5`cfW%)^HgF0V`06bYKa6^)hfK`l9~M<|)E}_+pZ5SeP(O~|fOfjOD}k*+i=!Q97yS zG7*Z6(QywuM*K>n5E&$`Kc^dW_Vds-f}8B;bUqI|Ky@DU`B2+u2`InHigaEzuFNE! z^=l<-Mj?Q$$Lo5bGWq~vtQL+!K^PoBGCHoMdU>@%WCZQJKnXWgq8_#rtjL7khole! zLWj84z}UDeDnK~5di_)g_>L7a!q7IGz>up9Zmx}GR**U*6}Ay(+@ql(_4zsn*s7!7 z`*RzWfQt24j@7=b zXO1sP@+>Zl4V0&*dTZ~x74y|#olry&n;>4KxO{VGgh?ILi`yl{hYJv5XSX%Va9~G3 zuSTXNF6zlZ^i=NvbQ_?q{MSd*T}_AeVa;5%?MpaiJPXD`CZ{3X(7*>2 zco&WhW(Hna23q^*@UGDA1Kt~%r&aF$N3LK|{YTyJwpgk*7%&75i?L9op#dex%w8&n zgvwzgmAVNzT1KItsm$~$-S_j5NFRJ8As~?Ntz1Gu*Vrtg5-+BPiJjEtqInFLxJNAo zo0-)lI8Y&Lx_}sOf>5DAtsEfYqm_h!dw_y0d@TV}v=w~7(XKq+rQx|j7;(81*Kdv6 zQnsxX4-y}KaX)_{+hIRQ>C@lPf36x8G>6Qd?u>?Fhv(PWSYfyp$IscnsdW1U zSL{9T{D?fN6!@X|5= zT4|P8AhiI%3lU8~zim8!rIK_u?V>^1Hu(4iJSIrtaax+(;aWP{zT5t#?2;XU&_mr7 zA#!%FHwFr*ZHCGA(AEN^+bzG(9jJk>L0Ci3qY!-!qT(lD)@~;!C(vlWe7v8oEuGN0o)8XEqNhboG^=MUtI7E_U)2& zQ4yja8izq(*zwp`*OMZ7n4&ZCc?CPhFuxdl8$c;`*rdI_)9YQTshaVZ+A-;a0=co*!?lP2pTzc_$ctb*5GfxVKZ6jRWgQ`?mE=QN z(ijLZ`g_wr>8C4Hq`p3Wk)6Dhc92z+_?a2T(DJBtQ{AnDrRAEY^ED4RIO4(vsG&DA zMWdtn%a@l={DMJ39l8gM}NSb zzNL5{Z`-R-)I5_KojmAc`mzfa2$oTRlO5H>Ol|DM-FCB^kL*q_o?bHOoJe|KDe2s~ z`vr z7~V`xfGqN%XarOXoE5HSb3(a@XAEZB($I3I`nqF)V`GrrJ^(*zHWq|2=agnaK5Tt%TLuh9J1xCdsb*Qm`XeiQY7=PBw1K!y+@gN$L!OCe&>aJW_ zJ>vXj z+vR=NlD|4l)xwLC_7#rO={am$*0Jj^P@A_B-KqRd>^0c6ebfNe--)lFGedP1F!X+) zQ0n!KW&ki$`zY~`u5}gy1_FB{D_9;L`hV|QXJKXjAFlOD^$n*DF(ls;^+{qy)Sz@| zGXQle)#c&N?I_&QV>`UVl;}cX@hbx07ilG4)mhco7b z)(xlT^l7Qv&*y_yQ_dXSncAUY52ej0{ZVrAVf;Uy^;OA(kYp;gc~hb(n`{i??4^1+ zru3JiuLhrvoaoz~lZDDxwHWe;C(8~U+mfS-)d+k)4o+^=;2rRFs8Smnrh=U49Mts@ zxyVbOo9I;-IkMnelOzaAvgm$_$YhboF_{zAEiJ>PnNk$y;VmHrHBE527j2w9|etx0A$C%)EIJPXjFF3K;7-+i!U|C|sq+v!v z^t<6`gPj&B(T0?L|a>*A!19ICM7;YAjA*Zk&6g7eyB z!@p%(f~dLsRV|8hc9^3G#ghh`y>?q^yLlB?hqS%gtv_hZLV|w8Q`dUZl31ZPhdEgQ z8F0Kp0|oMD2F`kcoB8PQO<4&u+{YhD!;`wh9o?;(y*E}WbJYS#(+PJ%egS$%2PR@+ z1diMkUBD267)oeGq)%f9pWp`|&;BsCI4!1_Fw$jCjBJ+6QP8Z)P9|~{5LxDYLHw=5 z7I~_xnBpsb{AaV*0GJmN0K(2@+yj!cTQ27GPV0KG+8f@(o07EDa zI}97AF=Q7MPijJ!nj(maoNkJQOkx@(Zvf|Dtnp&m_-i<-4Uh=(+WI3`ZJEuq*tky^ z<^bs#y%zv&cG@)^5r$t333sC~SOeh;gtVqgpIw@+SQb%}MP{(Rimht;q#BGrSo5vs z+*839?(=-Qa&m6vn(F!U&N~iBbF6Z0OO_pFBc&oQ*KmLopK7QjO0Q1YJ9*Bq;x)U% z5@f;l^1~iO8Mz@wv7#r0#h%D=RynW7A&x4`1tx~d{$fGxWQ1E{PmvF|2H8&>uP+g$ zq!|k;0}T+npWMGApv}M;xeyE4kOagJgfFF=h4ZWD?nnIa-k)SMyb7#+#t%QnNg`6< z0ySK371zncP+mdS0CA0vx(}llHYJacN0dS!zi)7@oCAyeL^aX-^oa ztFx3e#W*?pYeZ$0Z;<9oWfEG#az39$o&H(S%dsp z(Iw21NxxL0*Sr|~dgX>R0WZVhp6(4kAmJbO9zHQ?p5at%i}8|S3)N*FFyz;eoD<-s z?PlSVp|Xw~Q%Q5rcM|O=3R5bOm|emO?@A#Mz&ha8jtPzEI*-|8lI+Ah*Xl2kLVe+B zfU#Isf@L|&*>yIY0pAg>Q6dlrF$@{Us*6RI1tqqAaQ7{p;cX&m*{X8shr^7aZs-c& zmP{IAE>F>>LGvjQ2}|Y-&E$%%KhtLVj3wJEm>j&XMA-I1=JG;W0Ek^zm!zs+7rZ5g z1llUsSW~6L+6xTJ@^SCJ*Ab8Os)tnVCs?aMz91fNXdSpDAF@|xA zV<&((!`F~q5GDm~f^i6B$iE<-tRjY=N&y}PWr7ENP^Ao2i5C*_$u=sf+Y?!AJV`-W z3aFqb`c-p2u%vcq?>>IE(Q1!K9PIC!7cO>AIa7PGIy&U=(*sJOD>Qe41+NSApMDu`tU+fIrWla-k3(0$v`mCM^DgQ$0vc zxL~J%Xr~=I&=&ESQD!p;^cAZIR^Q*4KskrOBU5m!MOEaluhJgGpr2-qRIkhTz{w-P zpVgYd00iZk<*AnYfX57r0XK97KUVCd<;EjlEu*R1%`yC1=tM+HTEA9 zTmY@pcxHhi+kw;j8Vj;lNZcTi_lY$#Yl3ye4WSbe^Lxen6iA}W0BO4LL?EX#57AI% zwD|26MilJt)K@do7IJ<*zx2OQkm>2y6X&%FhFwPUrbvbQ1lF9J(dQT*-o0(9CtTMtm$BA;4_#`! zto)vB*1UMF?d>0&yBxZ`3|aOW#K5i2(p&s;>w||hD{UIKq@Sni%EeV7v+^omYrM1uqUBdcLM$tjil z0U-Kfro2n~Un(Y0+@9%${-^9vx(+u0s9+;cIQ?hgE;tnLa9@K8NGg4}r!WcKwf2cl z7%YE5tXC;eH}le5T_!ex?Lc-dGmAC+^wNaGH0>Ygd&QSYr|^QD_do~w%*7IjE;o&^ zYH=5}l8lMbcICq(7>rjw67-H}j1${|Iux>i%LIEh>UB4tjhH`04bt-&f7pgnxwSou-1iry2u)$sxz5c3|9xDrC8xOT;G4x2w&m@ikR zDWH!Ai#&YV6b@JSky2547<7`F4L_pNk=d6FLK27_T!c(q2oX;_Dqf#b!QYIJQCChw z;dYT!c3oz|o6FR`4L1QhLKzqPtobZ;5pz^(xxQlH#tr%hcg~M}kY0hh+05xi4O0Uw zH-L}e`5#8y_%t4x%r3rMVrOVpcP9tMw8e@mF8(IjK_Xv?9uer1UO~moXJhyS(9dEJ z5z;)*%IS4I#4VmDs8$g8K@7qO+eLWcUb>AgJt1HMSm`f*?=mUaf@juA6-y-E71Gv` zDKdL+Lj9DbrW`=8yFu`}sT(KC`pF92vPQk`vnD_2{SQfDRu*VS;(^wWI6=!#>pE&Q zcppHhffo#SN`J#y(4E(W&ipb4naXzB!z|tKHc55EY*rqT75gM-^XcLtteZ7}9C*|R zVVz{Nie+FLY_#;RPUY3k@gvb30+-qLESmoZp6|Gz+fc_b9Qlq+E44Kj%>HUjnebA`Y6r5{=^rXbSxMz)X~u#@$zD28B7vx6Epb%W z4xookj^WLikf5Je>uvUso(Qr?hmI|6_4sh$ZIIuTL*4_x`Ku&ZDc`kQ&eJweNu1Qi z-Tzb{k}IMterPdDay-U`mRsM&6=Hj5f>NJMr2}Zb-+&V^-Jj%{aKJA+BI=h6+9|nI zm7s}%^T4WKgsSmHu}E}|N_0+>eWhJ3B|`OuO@)f6w=yj3HEr;3wnYgb%#ro#cf3gl zS}gqArnH<;)f43c$VFRLtXX zKuwAUFymkC36~fH)6N=txIqTSNjw6-v|{vhuP^m@N=x7!4>uQoWH0S6pO9{@si+de zooSNSzql0FgRC&1lvMCdYaa)k;z(s=?e*Eb%WPVG3R}{Pj7@kfN_|H$*-Y}QgG7-n zKjsS}x^s*-!!dc{i5A=$yqK0THe?^j}4O#kUJgQD+C}P^$2`7iZgE!PM zCq}a(OC;3*D5o^i=GuRD%eA{9OTrOisF8TV-G zybl^-J8jx1A*t2aL%YqL02|Y~?NDmo>Uu{C_7frE=($J(F&9PkwlZ;S#!_GT(X$1^lM|e5YfT-O&|?bNvT*_ z0w9-9EJklg7e{D?9V)06G`65b7;7l2>F%nb3HND7m;o;aez8otjvs~wZR~VX;afp; zfO2pdIm1z}8g)DAbx7gTxX1GR#`dRFt1fQ2P*Gm|X}?e}U?VoyD;QV4HEfYGel~lM zut^<1UU}}OYF7r$uf*PR3_&nl!u*PoOXG2umqVRxuc`fcNx82p*Aw2fZ$?dCjiWL2 zyqt#v{|nqK0$7il5-gE6b(}y*N?e})=cdt!F zFVQ?8c!Fa6XSNg9isu{7qcxwt-j}u@@+um@P%YKybc{k}_Kvsew~ywYmm|*tpw*DU zWOLq(ScT=;fN3XK;9{=z{@7xCl^rw|)*=(PxW**a)x7EKWwP_o{oU~5_M`=_trqai z?F{zBk3mUtmz>Dnt{@FVN=I4Z!OkpA?S(1AVs(vVLO)x_+$#j5cPU1(A0@;~B3Xou zU<;uG7r!?d*vZBekTo+7Kqf$iKPX9*nRv-LodW2=M+gnUnPjF;bf*Q$4Xk63^L(cT?f-prS zk<|82n`p|9qgMi}Q0{2VPf}rN{1S9WMkTL;M&PO3Hu#-s`>`vK7$u)49iEDwHm7Da zuhFA2JGpSp&|s^N-UZG>XGQLDyxo`|I_7;)NfXbL?%q-eqs7Imzo;hS{ucL%%6k3j zB}9|&n~@k&*1`E4OVS(}p2WoK8WG#?qD%4Gfi3s8y#n^LkWB=w8E_>!WykTn;`_dx zbQE;9I6uQA^wWDBl6GN!TCok8X~6JIT}UeWwWQ!855l3&AzIp8b0FZQJ|fcS_Y zPDNP#&IZIVe>Z%}pve(+ya+l6BYS9XskF^c0yR`%`B&yrClCD4&4 ztw3pKnifm6_mP%!iN;yuQw#ZM!mu|G5u=`4pCOf9Ps5|5ggUpVJ$}tLx9YB-JCR*X z5)=oCb_(zJ7sF0Zub0h5y|;D$3eA0&|SD zuic9AD#PrvE6$$nf7{g3iXKb}j^*?40z%h7J;@mgW{N1ZV`%P7z|2H1W^d;rBxLWQP0Pf@K=9Wb0V6X5`(N_9|C$stw6(PHq!6?<^s=`j z5VbWjb)x)_2}>JOCIUuAroWz9>0d)~hPI~k3d-VQQlixVA@HyDv_keaCjVNX?BZnV zVr)S#XYXWdX!EZj_5XN6b_ND|Nf$#KOJhMha~o3v26|-|Q(H9xMivfw6;B7#f35xN z6`U*`TSQ-D6Yx=L>kMaMBu8H}7mUz-hny?FIKoEWQ2~C?K3c9I7h9p!a zNz`~KnD+w+Bow6r!)(~S<{peyDo^bjeVTl1=JnIVf!>%J_jec8ov&J-W{WG?JGN3n z?{Hh*2(36ff92EqcGZu~of$h~np#9}!R=yE{Q{?#Yt&v`aAwxAIC!Dr!}NOk@q;!8_ZX^V4bP=<$42*NV0<*Oz;Eer_R|A9b7Rwm`KV-&$ErV=UUW7l;kLV531!-<>cBQZuv4~WRSge+DReC~iJs|c5 zuM0g4oEFaoZaUP_jn;gH{6-Rkula?g4Vl>8Xm>5b9GGA11LK8pf3zipyYq_}WBKt`j&N7nDZvm?O#)qH04)v;2E7GyWr(|3LT;m>CHenK+sLfSKk070hh^E0~o`&0TE_o&Fa*v-~?e{~7vJsI>Y`2CRW?P?t z5Jl1rK$y4v{=Lo|vRPG;cZliE{BjugQ+A!dJI9Xj9W9;=oknZyjoV;WRzch$N^53P zL#;c_-gvV7vz&R&Jhi%dbxRz!A4dr*snWh>(CL-C+B;pjaRz)-dq>%ZYWUkbcd|aa zC!SXvKd`3@@-_#m)oNfzQ67r$cFvt0Ub`*~S4w_wxp+%h_gufYVh2+n-;@EB~qxeXG)W%;c-2dARgnY2IxZtbbJ=t)g1p9rcVH57+I(!_C7#wTq!5WYZEN<&5%QDrQtnKQf|Z z{;PYQJ%)$EOX02XkbfaK7u*0Y3P1k$fqHOZcro+f#<{g!8y7YX>>SwXzjt|Ib4T0< zZ|pF57XY#M?qf$&CAe37FI$hXjMuI1pK_lu+|*aXYyATpF?6*;?VsfTl)XDi|MLDv zb^2Q<;=k1C|6&{1{!yL&SeQTR#P+}21_BXFX9pWY&;O5&VE><2|_ju!k~?2XJ2D8mG-`4C>>3oxptButDw zta*4@dB7}F5H^&T=<@KY#lD046wWY7_Ki1sb!zU6CxriL+ci3!mD~$MNKL%}zx8q3 z^x?kZHh$Oi^3pc-GW=BJw^&ERZxxR|YP+;fBz&DlbvzMH8NOuH6@yB2t6zh{4DvuAT=xo7!&$eTWm zHk}HG1{XICHysBD2ltQd74CJw9i^*?K|g_h68#YR9`tpZ`!UmzDTKIaAcZFwcmGe_KEmyD=rr+P~fklq2`v36umeF-CiF*7qWGcz+YGdRbQ(|HLzc{78PXqq|`r8akT2M|w zQTWf+L-qHm)Bn*YQPI)=W0v(H=KsMd{b9`idvTNYV`66aG2hd%_zEo&q#n&HeM}4g z^ZX5ks|z$&GKMKGOKie-2JAv${TbAxiYlrAsqrxLJuMY>OH^6xMexqt@MLsud6d~P zd;Be@ZSnAfMQt9F_AG8XbAG!Z$TIG+%(Q(!e`6_iyFrh1Ubg>3dfE9vL*emc6?I&% z=_xs&ZvD7)culsrFhtnv+N!nrcJYiJHr;iK^(jfK)V&yj;zky({8rS1dGM^RwA5+) zc8u}e>7^BLbbaV1#UQzU*pOMV&9$!57IRtaID}{MZNhzKPyxt1Zpe(W z9&_F)eudbAZxxCLhqSy?q{~$)*$3VTlCXm~!UleX{9#TbzrjsW$MqT1<8I`-q?2Oo zE__=+uC>0uDL|`){__0n`BT+Lu>i&R*T?QaZbMF4IFHQ-tAhinGYPU9vTA_v5n)8# zSH0_FyAtsH#E^}rr`_ir>ca)*{^bew0^@+8!zg1MB;5zcyldBUouF*7Y4ZI>#!hr_ z$;foE&}xECVFtT2kGDH_#bNa*L9qQ_1}34y1(i8hkF076R-c^ zDS-d#Da3!s^2tj7S=ax|Q~dur5Bo!^|5fFgm>B;>XXl z^TC^+enGqLX1xZXBTMZ_{E3d%_Bu0Y;;Q}AGJ?qAc$-I|jr{~pgT3+Pd11bvwb5>w zNw4MhzB2p_nZ_c43TD3M_U6*;O-rj7e|UOpdz-oUIFtQeMWyLQ*ws0?FTiby`IU^z z=&`;sNN-tV;C1`#@(sGme+kB55=1neUo8tVzmCNFArs(+c;brvPi`(|T zUSL_G7fn#%Gx3^#QMlf$hOQ#@l+pIk{mr6&rP-UCrO&X`{*x1vp@B~VTF6bDZKpaO zMKwWrqSAob9@AC0OF)a!8euzKJAOL@iNs-JLcgZxV2i+B8_u)q_({|+l}Io_l!Ne}a-0;tpfN zD1*BL_W||CMmn0mc^_pOIR{<)KSFX*3mqeazdH_PX1Zxx22wg-4O44G&lOlc+0cZZ|!ppa|*l+G+6kLZ+w7xR2qVw|~MRyKcb3g8OW2W7={ru|`P%^cah2cX^7c)Z20|NRG@jxt?pS z*wS<|GFqF7+Ha%T}hk);i+HHzoOpfYS`w99?)>goT=obdDzFM`~+ zmr`Fmq8dp=IC&3=?K*oYac=q9LNZ<)=@MDUSapJ5FmwM!)q(tZ&AyR5HCsm!Z<^Qw zVW&GzCG*O-J>%0f9$)CO%trz3PzXy-z*cR0oL03Z2ylX@Z&)m`^z>6s_hE_rT6G;( zR{Owfplg_@riDoFEU8;c<|w^T31wXYhgAHxv@oV6fqu0L_1cCahM}pE`e!$Dcv}%U z@?%*@sP}*=GdIOITgkHNA$^TsL-wc9C-eY>aXZ}2!Q~p(110j>(`ogh5yf4|>N$O` zfCW9VTfTVt7f9#z*P5{B$T^Z%( zC`*LyEwZWNDdX}`$X>-yw}n7r_s-plg`vr}>IA*wE`H?SL(uhTI444*nyyoz0U?#b zCP2N()w?i41wr;E2~aLuhfOL~sq&7U6y4LlKgN zo0vR0+-RqElL71}P)rb$OI$QB7X>HY&)6I`QOVNSV;>=`I04Wk43( zYd4Nxh(w@RDsm-zgCkwE7gUSh%B12q|FUsCEpnYL75&bFR%;wM z0bo(l_jC*J1~sXv0L`a@EX%amW|QMO>|8Va7*JOku7I|{rFi~VX$C8jo5^1lEdopd zx~^oc<0&_*vlyXOD;HN2-7rA+kB^(ZPvF$cbyb?YXh?f)4Q839vPzn$32DQRM43SPd-*Qk>2T;=4J_K1|ZE-!fRmR*q^lx5JP#zw`qdzvI z2FRtcy6;7GM{=B|B@OG0MC?tRN1Zdu6#`eFSAVr0GGmcXZe4tZB_anRJ8xCgban@1 zpaBRs-5bW(1L7Q7!ZHRo8ADZ#hW#0V?$BUKVt{iqyFfprWhKBM;}W*D)=lOb-ARTZ zfG(LsM#c`(9ZA?}@J!7DAV_xTSS{T*5Cu%GszK>q@4Xv+PgSe#_jDc(&6!-qVJULpsneheL<>CL4geZy)`? z^UU9CW5trY)t%AruJFLW$d>eO!k~*>M)|e!fM6j5ek^MbKct1_+P(c6Zpk4DXs!5KQ9g%|YtVh6$2#!|tVbAN zw|S364AlmUWt%9KI3|ms(>kDozgDq3)ZMAWukHTr;kF{jQVYmqXBuJ{-4?mc%WXrd z-86!aw+!cFr!~0<4|8EUcgAd5f;6xRNp!Jz@6xDnHs# zwy>Q~ICHietX1)RNS&^YD~wWXV8F3~3wTZ(`z`uwSigA05qQgff+Mlu5K#~eQq_N$ zfA*P`8MWC%yw$d2d`ZLJL{Vk!mGiX|zX6NSllst~c|cZUB1AL$WK2GpOf&X1&E=%F~16mIDTZ0n74d3-zV*bI|{21F%?HCU5Bu%?V(;FhgQYTi~)gEY}w*xwkMOmmj zfWx$rj871{G{V6bE+6Iukk)lR77|8@T2?sEqg{i;8nCO1JZFn&{<`Y;Yw-+O$xbHO z$M}p;7tk=0jEzt|*0lr>dK?2ia!@p~JdXtC1WtNx&b2z{K52f2h(5rdxHj)y17>_Kbwf&tJM-I?1%}GC zf|vPndtVp4;b-k=GdMXoIy$Ibs)%EWI6}00_NNX8U;Y9sgrA{1=@Q?;AEZe{4Af#h zaJ)XMwZIcMDUwps!?&qWk#31LwU%zj_p+*&l(EK3cHU(tP&iuj_1L1laC3-d>z50P zE{iUeweu>(8enppDJ&894LXx_5{%=AvSxjm*;x}X?CiE%uNwkJ)|PSr*!8T_Xs{p) z74T3npMsiTq}neKPW85R-mCnriEgM$P9{V7NrqR<(#dCO^V{!1FULI(+gLoQl;OS- zsl&LJ${nCXg$JD$QBA%kx=T@ia}62hwSGIVuEOw>-)s8lY%C_+v;L)00V@wvocrh( zP7BpfS1Ys3HB3@c#&gQNB9-lMyI1P|_OKH_r<>oE9}5zyUGc!bMQF?uWlvo8p{Kg{ zQ8ww~r@I7Hr^@eN9b93ukDwO!uFSfA;sO_SSf+^>BUZ^+Kl2$EY}_n!uJ!D(uRQhq=aGnkTqpz6RY!H zwGFUlg>*M5Gwd^uv)!r+=;l?%m*6yRgzp@XQsV8=2BhXi*+KQF>YdO8ZMNx3o_o+}@>|H6Y1~hs+WRxsO#gAnV zX>Y%^ygi{1h;HX$R|md%R4DW>@UBqd?ZG)NEr}9o-!}X-o@`N8A{AgSR?b3O_u1>V z*riuV9*%W%K$ zSG#LEQ_DkYd8r}*cdUkht85PyXeSrlr1;}=Vl(#}zsc3Rhk7nPZ>oN0{+81lN!4V2 zEk5E({uhNhZ;)Y>_V;Wbh~qrg%O8g1)sBO~Fy|&>1ydC^KdSC1l)m2-X$UQx6 zjQ$;OH#n8dI`ZK19bTmsL8K&=`i%fvibykOW&XchaU6cZZ+E^}0Wm^#OySQ^_K3|E8OH$WkmB-2Vcc<7d zJs|?0aQ00a>>yM&%4jXrrHt z?V3B-_>}S(K;6TbV0fFdZ)^LMM zZFt|kU-vS0*kj{NlIX%i1LHsH)(lM4Ow2$gJbGGYY9=}$9uo@_H3I|P z$C!nhfmMS>nnps$#md2+M#lUjT(!ZHkFU_#dnqI@XV8`0wa3AFB2z`~Dxa z8m2#9DgWWTKN;J9t`RaZ)6@SWP4>Yzpk<&3{y7W$Gv38r{v-M2)qYJ310{|K$-eF8 z2bEc3`2F!SkrTCF^Qyp%g3@^C2KmVb7-W4UgeU_; zWpMd|34vJpX@(fcUAX1@r02C1r*qExx4qQ$`>&802x8iJ)$bXWmnbmTM#rh!OG4pe zqqdf0m^Pr=Z1Aq@2fpq|KH0p5Y5FC0>XsfHO43*?Hhl}>#rGET&S~NIJNiap2xey7 zc;sr&F?KgX#xWannB}t%V<{^yhl_{XXLAqycrC75JCiE;IBaGRC)M6~(w1}f`41N< z0PMW&QBjq~MHtq1-RtKg!;W*OB$k0*+_X9E@`NJws#GvH zQc|mN*HMFsGEo=s{5^T;Un7T;XkUwa9{2ADooT^}W}Wx}Pfb}p3*CyCW%u`!Bvy|~ z(^?Wpem>yICOPXp;o49zp?n_WrG9LxpVmLWKNlpMWPoC3e`+kMkWHV2E)hUU6QGUn z@;90QIId(qS8VXOtpuU>6wSep^hqG&BhzGHo^OM>2S!}badqZDz%EyUv0uWSbXmHG zb1sBLhn0BoCKb+WJq>!~7;Z1{e|N$DX=>BC6r1-ge^ zH+Y9U0M@r5)VmBydOvZ50Liz4Yj)2cKi60J*QN}{xyNvM5;}Z@97~D>*360rq~n+etjFHYx${SPYbF!!c(bOh9td->Df76 zh0Uejso)Y)DItj7Rf*2BfRRhYyy3#g`#HgyLCeU^v4ft{i1Zt6U?=HJ08)?HK?Iqq z)$wAuBW0J6KP@a+Lllh-M|o8=(j(eih(gMUlES9!o()n0-S6YaPxn{CCX}T~V_0{a zQVYJXwKe=sA9URp;z^?gz-nah8hUWlTYiu3sEr6kQCN<##aZn5?oS;CzA%5GSOkk6 z43AI~p{U9ZWn+2F@o(km$zfD|)OzWcwWUF&xutQX0aUYd>&#uuOU$E+2I)p#W1h3H zEQBM*(>i^>S4TfHjGma>(Lwx{sve+ZMoUf}aVo_tE}ZSMRjyQ2GV{KzV4A@^gBPyI z4k8>vI5j@4U}pn9u?ewN={Y(z$RKGVxvcKpK3YDw`!vCRJ)oV$HW}!k)z?8~E(oW2 z45^XFUe*sdi6;CKs!d3lL8$1kQykt{q*wXFz?@N20b4C>wFs;Za&}VHA!m`^BHP@h zPRuRn=wlrW2Z1CiFt)AHnPj#r1>vBh1=NYj7ER$irU6Xzuf_8Sg>0&;Gju`@DdkXw zCid93YzNPaO55z&fOlRLGD+G|n$h~aF>lTLQ~w*s%eKtcVfStizZ*6lHGZuIn#F`O zxhCgwlaMP^H^NqxwLrCMsZj`ysI-LF^;I;E`2C+G%dP83XNQMe8(bTMc2*7)6srlV z3AZihJBar>tzA@SGD@Y#O~(WqZ2N4dR}Fy1DRm2Vi}3HbK=e1`hl-85zVDBh?GINz zb=kpjl1ppy30=mP_6c^F*z^L&WMWb#lC`iIMoz29dRcY8YHm!iDGr23+hbcyc(qqe zV=gSTcCoBpFv?R*)@Mq%wXLNzZ}o<+O*8MCE2k16GD^>dk>zb(nAfpin2sL59^F_J z>}neH!LInZ0fh=>$^cUHn5{)?xS>AIpLLGjFOT*|LD_(@(s5!12{X$Iw`*rbEviTN z^|D!C3?yW{o;5Uw-Bm;7f=A`UJ#x}o`NH0xKRkLE%_YZ}Ew%-*@ z6!-Qq_UVK$?0&9a89^C(ag9Nx^rAh+3y3k^Uw*#-XeBSP#llgp2^~c|6`F)K24;V4 z&^CIENd99gC8C1neZ*-Yb#SFC!X*~%!OElq6bm0gEF0ClSLuNoclY%L+fJni-`!hl zqC4Jv)cJ0M==*s3gD}pHXq^s;<0hTv&R3{yd&P%C5t4mt(&xfrX&Y$qM=$J`_*D)ia=t_y*;UPsXq!aLClw-b{aT5HU0E_agTj$`M6zgd zvUs2@xj~hL;(%%rNx*KPJ0ZkQ0ancR7Gk|S3EECpN{rR6dk3LR%mq?ojv*u{B0;H0 zcW}*?3dT8S&zS9@P^|nq>4c5rdc>59V*!*Z2;JqNXi()TcIV{i?|SPV;_t*HJuDHH zs3VDKK|!3ar421v1qE5|E!8D6hm=%yQsrwOMUPvvosU#a^Dzw zg6pDPMK#tUpWQg3=yXk0CqLg^)lreP6`KW&0Yzme$PBx(gT@32uSv!VF%glL$*B9% z%k$5uB;K)VCp)CPs_w!8qN7Njs|F&n!EyS63?4f>{3CJqDOPzMR1;3tq@;a;saBB(|eALvvzY-F{t2tanS<%sTW}BdafO_}q3SLQFe^?G4 z97VaJ^BxR^CFsXAq8_6U+3hJZ!`DKFREc~!@oAIjyr3Y_%jZ7rlp(my9lfC*8Q|=_Vx2;kNuNYi{xj3IErOGVP>*w05Ou|jmx~k5@duK zA=-tKMz`h;$A&>R6PhotafvVWdcW(X^DjJbRJj(>?FpFxk@MJ9>etR2nCZ;5^pccB z_`EYum^#L*r`oN3+P#rJ&|go34zxiH1$k0($0LW;M$#NBz*`udqm@NmNvIIM@Z-bz z4xiECo)%!s(bA_*A0#&w1<$B zg)+&pIYhhq1%sak)Gqa`Nhe$xlXZ51gwWvDP&U2IaC-A^xbvfPs2VsmiWf80aE>39 zr3LNF-(2gG0^XRTy&HDh94ipRJ5c`;@b%}ahz0Te9O0)c-#8^??}1dkiJ?(w-2vr zSZLt^e zop52&;aFOwE$~Hw+JNbLBH<=%PB@+QL4;q@AZfh0pv?S-P|?%In@9E|sDp=`t)9p4 z5!^~^b&t^bMe{zbUNMRQKMKlSoLXC=35Fo1VYItOe=sVTzIPp(G__4z*F6PF*t%07 zTSTyv-51+~lalzkxjm5;uc`5jkoXO_mF}U<$+hjF5G$WTEb9HnhFr;zW(m;!HWFdS zujcZ-uXX00E6MXMaVkDFH~i9PxT`Oxp}{pFaVSTgI7(eM$r4qGV9*Ma-fR*4qo(C4 z2$iPisp~a{$8|W#+)h##+O!qA+J*I1;z~u8AIxbptN<%_@U(Ok>Riv00k+(m;ym4L9DD#&(LuY^03d5|FR2YU`UsdzF{5~d( z!6c}oZNC0ht-S*Q0z2g83}Kvo$Y51#dvbY)m4IN-U-Lz)X_rUP_s+C~weFfunc2%{ zW?8Eai%^+h#y6S$CJiI8YGxy5clZG!Z-a0<<;^tj+P3%IKR}Haw&kvbU%};}_XGVS zRp=VkDi&2V3LNfzz?w1U%C*wz>%7(%7TR9*md7L{Qgq%fe+~Zm6dt{OB9xG8_W7ocda;=;hd6owM-ON)wTK$u2BAqUNM55Vu-PX`i9vK1#+_KETipvHu673V)#K@^ZBNadrTxT* z+6P3$VUwqsKiH7NB3_fj8!uv|!oAMZSM3g+@&lN$y}0YM>slDOhZUpQ)B@o=0?t~W z#X@Ktcxo1Q(Xl?551MC^g-#p!$MAM76ppONh zQC!|!QF@G!M7)?>lBE*AT>BOw@4)B#N`xx~`k+RE8{f9H^1$v;$nvfep=?a_>`UmS zw)fXaLOw8g!?ARZ>mgnNGTa9;XyBB=oV`u)z!Kqykxo9J0_TiIil(Mv2r0 zh`wa{Ed1olLS+-JtVm2eAd7~Z0gdZG?0}sCW6ppj1rPQHM~F0${Y3OmV|R&QhN?yM zSWPa%_xxmaVB}Gk=yK9VX_x}cE0>?N_`dPU5G=_X(-^#l2V47d z(HqPWvcTCsxv?Qrj+Y;?n6u)cwTt0Ch$i0N+A^t9(aa(@d4*TE}C+UXwZgS9Zq-EDTsUwV8QL3HlSrr677tr8p;Dk zc;hWq0^PF)ziDBv4PGTMuN`7A<^OFCL*+ZOK`cOHq`SU+uquH>1Zi-s2w zZk}Y1Q7FW<(u`UG=sls|2!fUK=5NS;x5t2T;kh8&z&-Rf#3bCHF!XCs2wii52 z5016Sl>OFM^tP@$!iab6H1vr5bb(rDJZYEmU+W+N>kJp_TD|YWuxMPG(CdL`oIvTm z@xqJdENyVGr?kBV1UpZ6xiAbgN5IPTK?tPq*m=Jg)tr!rf&L1CTk0Wh_GT%%JUCg5 zR9p+xg7O2q5@PU|yyjElM@g|uswm*6#LZ6iJ7;%Q&6zc%1i$7;N|Afeeq{P0^B(f! z2II*a*Gi)Z9O3fKZpHNCkwgA^NTylG{sEKAr^Se|*Y;?*pPXd1_iWf!QuWT|{3$u) zj)P10EM)H(s`#9uIh+&k`IGbKN4SxKwgL<6S^v3ODrPAM_nD;?xHqu~-gYO%H&S3T ztn~S`${`EWWAx}F_yJIDoas!sfTEh-)bz6cf_n$>^7BOD05@kmStlo=;kv4^BJI-U zWXr)Chqn4}R z-7V4crbfPC5`|@Rl)0k;g+W*TiT+-E7uX~0Zvzh zQKdsbLr?AjrEhwNnzrOXvSq+28CVaS!AbsJ>i)CT#rGEvDI8la79cen_ttr~EyZii z!QG@ZwVk4;pOElF7@gO4e+VB87jV{B+<9J$6rp z$EH|Oo=!oyQJsnot{NYHvR|A!&R`I~AJDl^z0C2z3p2Z2S!d&*KeB?ubeX!!_siIm z-qjgQm+ET39RK11%U<~8!a4S0x)S)p_**M*n)G_vBqitVjdAR{V7ETI2E!;RSZO-v z5iYFxPC`n4$Zz>~XJ?Lr<(RCpP{^aFhf2IA3=WTyoHihNvyp#?DeOX*4;NY2!ibV(L}Ln9R7?05742e;VCVzyk?BuQ+LQ()>lKkG!j&nN{9Rt&_@6z{XEz zz|eizek$v{#ENY;6}>G`9s~s=gzTN#aMfIcCVp+GRD;X^e*WoM?&CY0y}Itee^&P%hDfU3I8w`ervQ@K6bO`rfSbBh_k2GFe;>L7 zELrBBei!}6kco|EZQQ;ohRsC0s_N^Up;B4T%|u03Tavb?v*xNTqPCaq8{ed0co?@+MR*NAF5(r% z(~Pe>y>2>i>YS(wj_I=RboRg}Y@DiCh*kX?zn^tLmE0q)J|aRtnE*oCJkKW>vP&YTpv&DuIHdA3I64G7YKK1yd^qIHG#i$6 z78fQS;*X+PxN^NuRhtn`6)0NT-`aW{PdcPN638c=nkU^#enzs_&NN5qhyUTZ;j1jjl{hnywYV+ z(m~l0G)TTxHnUs(Lcvmz_&ufL`^!(%dT~x-+7PP?IS=P@J2Doi#u%V_9~Hq$Z=w1a zO-~2bjt-F!J{kp`Uzm)q?n?;23k=esJ}k#T50OS=VPZJM0~DMA9OX(c=i&fq9WTfy zI=Ec(U@{`bZ3}r`+WqQC+)A!*y7;J*=_o2bj{1kgg&hzF;gilV#pq*@BfXeUbRe7! z{^yqpYkFM57w0c5Fs#A2MP1+$+p5(1=t`H^I9u3I(M#t2`i^^C3ny!}HA)mU*&*{p zPk`=8EDL*s+fKZ5wJoC7ej8O;Vb#N>6%wssmu|y{Z*ieA9|>W7d*(jO#Xd^C@F=Sm z3wLc~%;T`vKAr8H(%{m(()iNa(y-EIiwuiEi;_}20+y}PKsUn-40Hb^DTX0)oxVhi z(K|z<>ii^A!{nF|mpxUx>TKWaqHO=}!$4a`yBq5p+Z!8L>)`3Lk}X&Vf1nvVVTxqR zI1mCDLjcFvqKT!9bv3Y8St2`pRVwb44nU%sK*gR!3rY-}E!tLlBVtncSVV&2c{dic z+w${+y+C2O{VbiN!w3U(C{tfRk)EFok3$D)37ctgcwL?IvbNf9DsBQ{hZUwwHono{ zT-cL_$y)X~#o<`9m4o@&u8rZ&!oJz{*;b9=@UuUT(Xjay`fGLDw}v8Q%KYZ|ix-+o z0PjCgBxlf%;|!^27&7`_bMQH(UAX4fe$9bU@J4VllB@VArp%7XHaX)M|8ymG;o}HO z+vu;R-UAiH7d&?xU!4!Z65J1oUJ(xd6tdJD(G-E2+sM*zZ#-^sZ?THoM!W987hxT; zysoh2y3+*OP}V@*7_8o}VWHum?l9Ju%7*%2tF7gxu^qqih@w?zlJcXZWcEQo13J5D zlCRA8xB%G5^ zxTgJhx6F(ctsEz85_;P6(6aUy*4+-KM!VXRIub#wx+IyeWzy>yhittZODD z(53>IWrHPU!Y!1>=j4WnNc*eYiPVZHucJ$HtIU(8%we2@NR^gINAp}=`qYKU^`tJz zaf4G=7t_ma2-bInprUAT_FQl>Lq;)%r(5zguVTn$!!EHpvhA-uJoB`0yrANa+=Iq1 ztzJ^7(ED#!IvHBV-bDoOHh7>EF=w@@JUd3+le`S|@@SL2bd)^13Fh=IgsPc@$z3#c zSa7z%=X8*`daGMHWuZ2l$8M&g3R6b7+%+{kqOyU%-ZvB-b!c*DzrO{wK4Q~co78Rf zuZ-HYh(>%CYe*c~p}f;4cptP-@27e6)=MH$$o(RH1??5^h8|8Q; zSmn;~b>%)<1q$mR+a84C@FRLwtRgS2r1x7$vsm=;c>MHyDLA&LUAAM2vq4a{fiAV} zQE5ZBF3)_v%}Z>9BYokv7BBXanKF|aw=^gl)7>CU(9;Pkwa+>hDKQuWMXy0T1Und= zL@#YP$eKi0NG~KbY%UsOk3oS!ue3Kzk3kbcq?I@L$wkAKNDW#)S|Xl|UIBGTR|UV( zmQQNX1W0bQQ<8#|(6F1Qp7709uxyAaT{weyQ>ro7@B&Pi4-4O)um@rE#dzF?IZiD% zv#OSnpX%MMSb+NoY36gmW@xYl1{#tEXUT6)iWXi!>oD(uiwhAe9{l}p6eu~FOOPq0 z{!`g&gk6~7x2AYrt-=cHFXW+tbg7%X*zuLNBDEVr#~w_ADo!~*Cv)mgP89TP)O7|Q z4RJY3RByG64E68JG@9M?wrUDhFvs^$N5+Sf)6?h8#5bF$l3`%#o$Ubgt5~nw`Vd(7 zo|UD#d<(|?O0T&_^$(!As~g3|F~nbI-G5UN-(g(lUWa)2w+Zmx*!^@E8V|Evzlxhr zlQNxml5ajtI=SESMFGPUu0Nb>*4e4hEbXV1lqPMS$1P!RN@2+gXWq&h7ArkBM^}4o zcULl#i7`SQdnEXRAjXfFMF52_(ttrN3OP?i6bboL+|n1c>wC2C0^+4F5BRZ$S)^-b z?V0)fY;YqiAy^TR0Df;_s`E) zY1dr)Df=#K_i|BeBATTVgh;$%>U=3qYT7f?kGe6lo=pW8NKXtiH$TvA?=8knMvG=6 zdNJB->LWcxE|dU!5Gu8B?|cJmtV6N%}>%&QVu;B*`5mS`=;|*7C5>p z(iw17A{!{7f+l8fNUiJhfTEv(kVD zIC3m`-jbuhGG)QAE$ShzU$~<5bkoOKBMkOilT2xsi74>>M)z>?Tx`xZF3r5#^}&79 zF6z73dl;Tokhjj}UnNDZ!B~RGJW8G%A|GgHDWNhtrv2HTTU2mQ$8IDUDx`~$B+eFT zV^T<-y#KP2Ygg76el=*J_OXueCzFe*UNaNGWRDNZv!>?YjIeb$-k3AM3p6(+1h>cs z#LfEYZkrzsa@6NZyLJ zh(Kh!f%WxN(kTbQQ6`>Kk&yVGs=aVUX>aSsz-wSWK{Gucm#sSsakaBZ3?5)CAU-kd zS^6~=C`C75o1cC{1WQ!+>}7zZj!2jNdA5OCPnL%R{qgZ#OC%DmFa#o`9%@Z&et1$b zha8lhn!o?cTjuB+?=jT+F!i^^^e4_%$!o%$2)Lf`?M4zIdTfWSjxTJ4GB8;Np?3NM>LlvG8Y7jJI^1AKxx zl*{^q#pu!o3oFuZH4V+r$)=QoOxVoBn-*#sej2E1Iv6wJ%aR5b-&L3k^H}q(1@n3g zjxYu-;*J^3g5_+=^?Ni1oWZiZ$G7JP$0cfS zO@ig+?7CSv6IzE6;nFFL#v8w*J>~67n`34)klz4%1-bA2U^-=8O?vYb>=JRisz&_T zr89VuSSy^jN2cPz#T13z-}PO+T?)PjhDclDnZxPM@Wv{$X+h;UHbfKI?H#*`&9)LN zmEOao@)nJA<-`xzXEQH5TVUk;RGcTnm!xcZvm-u7a`tXTvA)0;r|7g-o$QLDLA*jH zHABhVgf+0MU6}tWAt7aXc-Q+bW)=R7GlW}KFHRNA|D6Ac-{aR}Ix}-mzWi~8r97Q^ zH-p5$l~nN$npjEm+4IYnf)bv%JaxN0San9CC9i1RkG`+=%+ui_t&0x>e1>gb*wLsG zZls1~83`hOb;)gpjqIhEMi}PwTLe2vSlrjx&($+a929+TVsbk=n#xsBOLqKX|I2>v zAPp;|W>6vfbDFY!qXpQOMTg|#Tb31liLQI9$tT>gJqooFO{@C)HE4ijP%uun%Q_3w z?6fdKan$8~#N>L6%9u6Us!?)l?;*VkTbp)Tc(!^~4I_q&;GIMlC*fPU!X-}`Jd-mw zwi|4U#=T8QaI^G*7pJGhoc}&hM?Hi^@Ko2ww444{-Ux*VO0aX#?C#9m1XN|-hQxUt?7#~4Vmh&8&?{a6c@?_ zA#FLmD&^>L#l->6LjBM8qvVIAHXvdXgkG56BfWTz)c~hhVC8U>M@oYrr(A3#1(Pk% zPXGQ4;R^cmr@?8tnCa;lx#`k#jrKR3;#tHQ(@(_;Hug&XSXqLq4wTi72$fA{0OcE| zJin0?*PrC-G=vmJCz$(z0K9nk8opZ`A~pqHh*4O&OS?`Q#X0UkLzWdmYx6Mj znFJvQR)OcNE(CVR3l4@fX0OTr`IKtUP)}M&$1c}ZuDO0~TD63&hA%oL>bTTol(xJ? z<-2H9;O%!*qdJw}VQw5~Z#bG60HjjHh^Y+CTT)p9xw%YD(m6>dN0MbjBLiR~Fv!%j(`OfsjZNuZJ-gzKsu&4^bB}93ELll&@&)9ojjYOuux>-r|Ced(!j19{-YY&XKd-!mdhA_SlXp?-Y?X~2iuGC4& z0~_^&ZaX9+OJACWp~^2B3tWqX0re~VTui-^EoYNc7G#ei+TpUmRJ;6dFTXzsE->Q)DRt2*l&EM zD}o~o@jS^H`?wv~A00>S5wStZZ%eqyKf8KkZaCt>6@a&3qI7&(lrqr8-5oNK$CERO zFUiH&5ZC|uG)2nK%yY&}j>=vL*#M&qC;<@z<(2`boV52jQ_5hd*n>5ACD98yf!1R| zX>67M?3&PLE2%^@lSDJ?@b0kGSW2#gHJ?B<5Jz02VAAej%=WbbgVtxZ!+gUsL-t+^ zE)4VXi7(7CJkvSgs+X9ljdxAlj>oPCZKD4HW|#h^A@_z8t6YQ!rgX;-SN<+ zK?#P)yms6%3?;^3t?j|M3M}p*8)7jfm3#SIwOk?H?#JN{CF1i6WYqY9I|>f%?XLZm zcE}S{)+b{v#AM)@LkTcv^aJHZ=_{pfAX)*Y_K?F~@u8JHjCQd6NthPTTX{_^oo0QZ zN~r~RZ6%z}y=^6e8Jl#-PVogV_XVo~288#zk5-t={j~l($HN`SOVI5%PjY4)KN_~p z;$d_cZX2wg3J)P>A1^2_ofL3Z!1bVf<)x|D^B}mIQHZLTQMzt<8^{UovlXuw^a)rv zSVP|F$2!f78Se!{Vb1PA95x{=+@2hB4&oGX6mlb5ARO!5wnvIITfo8@6tKI|$K5-f ztAArb_bjFZYUGk0?B%tC_#)L5r*1H*n5xWpH-MHe@M`1ZSTR= z+2fK!k6qr=#uq;bKr64{-@>pHX#Tw ziwJU}blgEYL$wF2hP`aKEoSoPx0g!e=owUh_ zUcUQE=}9l(q|!UN&?Q%`lle1W*9(M?65W2{m~i_Qcz5)8nHd8twBbfpf}u6^e&oL&ToU|3lX~1c?^3TlSW1 z-?DAH>XvQWwr$(CZQHhO+pc=`deVP)yccJZlQTLeG9q*BZ|w$pv`_U&ZU7F5dr#{E zY@1ZgHgNaOM#)Zpx4(~>A$S@woul@Tm@)n=2a;HSYE_KT-eJmBIQp>^yiD+4B3Jfu zSnIa2UIBGL??cveWDKqpb_+~uO{DvT;p`_3a*i?sEQ9Ic+OO+qCqR4QFmr^uqURSm zOnOr|S`w>kr#+$}Mm7v`0%)@*Lk^s#lxFa`rR5`A2?-eHy7yMtY@FZMU*=#@;c zX6i6ZQoDWbrYY0mZ^SPRqFL`bacm6!z8jdD1nQ26PZEz&qYVtV_;HUnOL`lGtDR=} zd%2*z45-giGKpdF{V?G9doB2KUckR9p}&CI4@NL+0{)QR_V8CnmVaGD^dv29f$2`& z{PFRHiy3(-+l2hV_VePOyz`pn$wdUugUu=D{%db(_>pKep{QMW$EA;Y4RUKYZex1* zAQ@|^6;9u9vqKT^NOzTwz(H#-RB?*h@nbShn=r1YBz<6U#Yo8@L6d_27P?9Pl8cp0 zNamBQ5~*1*Y0Aig(Gh7tlR`OiH+Nchc%nke)TBy)+T9jwNff5jWnN>io;```*w zv7;T!l*1hM2Jol#_>Nn2XQ4C1{1inLQia0YBxtd-cZ;puEzE;l8zpGk3(slypBoYsnR4Iv~`H6(pQ+&??;)j3&UXzHi?q?@*Ok zOL#8KzOQx+9XP%7Jnis!u_RX!l~^=QYLHSmD}=v%RS->o3MKCgsxrnEHGnl!|M8)@ z7vx4e0$Y)scbQ@Ujv#s=1Dovm0KpVYW4*wXzY)H&nicF9kntCpz%S-|7a5sqdVpIY zGVNqL<%#hd2{5BOM2KB?$H^7tlO zU*TG_CV6iDaF6H66)~0`=I;XT`kQM3^_i=K|2mG1u%EjBv#|Hr6SnCzyhWb}WC78XrLeJR;u=!tf+r5pqj2sJ<) zorGN(RV5y98IeseEVEgnvH5X&Yld;UMpzN!a-u=TM|PMzV0yBdIn87uXvvB8n2~Y% zcj|v5t(*HyhnX9%ot+nMJl|k4KflRrul2#0EIB4&jqc^qY3fNkTH9_GOkL968k_4{ zf{8cPK+M~mLMx27Yrh}>tMLsWfDZtXw_g64Lt5877F=*G2u+_#JX#Z9n@}Zy#`NkL z39?zx9&i!bDw`E|M}9rIJ5tWAi$-ry(^z&>TWjfu0I8KfV&w0g8ITU)TRc^sF@MHn zOuL^9rS-JW2X6=(zae!&Tfum>3{wb@L^F=hT;RqWY9ewjX4`oJdU|8E@9{l%NpZ*7 zrpQ_yk4z02hGmFWSK#TNSaIz+kd%{;8yET1$GORC|8yunuU5(FTN(r^>%2V9B{OIH z2mohqKu;@bs6t!{8YKwHzd|9RAHnvsjM6UJlY+ z4&!+Gb-f~f$VPv$`9e+(XfC~>MII4&7G3P(QOE_EWA*EK1`x7^+uUJC?|ER2Kz#Zp zumvr=BAD2sp4j3%&?7+6sSB~hBX7@~v`O_Bl9S$IUnin|iqEHxh-r>(>Dw_(w5nus zjjptYe+&+ZOP_RX(#oYqs@x(6>tb#9R$TI(*J>Kp0p|tYU5fie_L6l5me6N|dYO*f zf##w*$@c*}i~RDfB=1fj+6DkrJ$iqH{+8CDjkV+}dLYKNR4Md++0I_RusGXCK?Kx& zspi9|RDWX2LAu9%j_MOzvq@sAy^{Gr3HJD$3nuCVQ|m)}^-o{iyTCy4PDf)no{ll;GDT$Q^PL@0IQu=;$lSoz)45-K=;k3H7RlUTFKI2vlJ!d+ksqAAy<7)QBOsqHg!_H9$+YZ;;7>+<2fcRjI_DT`JVzDWV8!D%0_yU{%~znYki7L7M(puB?h9 zeH5CL&$%uWj%(YEIXaEhFzacZv~R6hW!o>kEKQ#qEXAl?Rl-(ESFI~GRk*t@m6uDcJLH}FXT$xL{yL3jj8TXf z!N|H5-zy%4jhBy4Cn*;_DUE;M_kI91V6mn~MHQ>e8CDHzM~O$-EcwL}|7P4ToT@4l zp6=5wW4+|}K%|C>Gz8zMLb`~#BTlj#RJPSkDAi5QQ45-qkvgecFvNPmN_H5|E$oCn zy~v+j+>~=}!MHk-wNxBVS&IWp3%CVe8{EAShs9!H#j7|xD3-~wrO9Z8@ldo>Bkx?5 zwl)M*%(C9UwI7GQz-4dXRA_DP;>oqw8U?>vw7t3-w^znCi?fw&96AE^A{mU^M)t&O z=sT4l9;4+gOAsrA7^wKko8{S$^HkI9Ck5&pk5(y&*Lak}CDP`##8|cl7^V$5!}fTG zLf8k1l>6RorLsd8+dU~%$DiH=_L=eJmVDJ z;B$6k8ZjoKFDG+`WYQ<3ux8qD80?Wt?(|^yF}Aj~^~qUlGrv-28vgP0`f-u=|861J zmGUPa5`~*oW%Efj_Bdd-X4d-v*2Y1B4pb)OXdLyzk|g(?=<`DJ?9mNxkSDhYs0`e)hzk;-nK&-$d{Gnm_r)nh`aEQzBGK_g9I zK-M`Jou@t9D=F`LJXe-*6r2SxsRZVTTaDboFiA22<9Eh^LCbiYDvkPP-27=uvuNe7 z8ih{+t6>~fV$XO+z3R5SO;r-yqSC~nlN$cRk(CT^otwS(Vf@$~E((7zP z!7ky9cm9X4!p%0~uyK2g)Eu@YdN4z%e+V7C*DTsg0WQw07ar7CTm-E z0mm3h;XR)-y9@9?72HB+G~DMo93gYh&|fSM4LaFK*f8kAF0b?~5i6C(@wnIPw;1 zJXN$TG1XAI84YG4O}Kc!T`r9|55ler#m*O<_lq-r^DHIO1@oVchM8MT&gnh%>sI66 zzNpUR8z_Y|ib7nzz=-PjWL&e+Esc(HLI3!{@loLS{X&}01#n&QI`~}N2$)Zzub3c$ zOg&FF9j>`wICt7kj-^dP;unw)td$k45g3s;Ms;S)L55c8jtYt`!&0#UILaXz6El5? zE6@ey#xMwNDia-ss9q~>H)~lsN1dE=Ax8p60}LC@D^T*CeCa^ynO#c%5h(Xg{8eOA zQKuUwebi(rEeBBu36|0U<+h|NrafXBj-;VTihjCZu^uz+UbWVlMHQz#2UYSHGonzT z@maEM#I#ahHuZRj!~Lht#L;LuZMxFCwtBb>7^nv`kuLuY4B%>YV8h8=)E*2wk%LFI z58q-6=pi8N3j_bpvpl>`voneRVU~Vc>a?lb|2W{LK(ew+H&)0}%|?}rwDw4Ipq{y_ zw2V!uP5;ZyV8|vjLxqFW*Xsdd0LXbLmtg2kf$~*Loyua(GOFdEJ#NfDmVC)zN~v9+ zu3Iq>Puk!wi6dcg)n99?QkFl+kkfr<b{r2dNGQSMAlMMrk|@*pI`p%x`4$oC`~lpF7%O&`sTPbq1`6w| zgOS$89o-VqH>XRNU@ewTV|XEYK+%n0nC#3SAyePVtUVK4>vWVx%9t4x1~ckg`10cg zp#Ibue*0XflFJt^z|pK$g@t`jUWJJ{*U9_hC8H+oR z-C-#X`Skjiud*g!SUdtKQK}iGhM`Sm7+*jb_(oT)+W294fZJc+DB$q09hvpMV{iI; zMVeH*RZ*RML|nEA3!t(5=0GU^g;$^@)UX(xEP+pEl`<=jOv{Y1sIRnJ;3ncdN?JPz zGYtiv&$pz6D0yBI1-* zy&75HNZ9p}X$t%XOmPR>-!_>6DDKs|?BPtaejz43%U_w ziNnj3n%a)Gz=E2)s^THpCiDTiMKrY$R?a9f=r+Yn;$xBn>SF)+aLjLUA?!x-WI_%T zCTz_Se|mHzB~%a1Ym#MEUJRkTU0A;0$3eIPmV#&bZd0su(0O^F$p}D+$xih!^9)97 zL4Qp}s%Hs11W~uXj%pVCs-z``aGV$$+mx@AsU7$N;a2$qThk+W#(y(;tX~LEz5=X` zc!L?SP&JL&=)k5yxRxRLxVw?CK->2I=wCludbp{q?so8gdT6Q9`rUxfn>N@?8fHCl ztNp!+c978{2K+C{vbue6Qb_a@59k#JRfz*Ho^+aJ}0h3^C2gL}!8ZiC;<5igznS_8H|L(v#pQxM!f z=}VM(34EaJ7)PUE3$7=#PvE5CU?2R*gxp+-Q6Jcxg3O8M9z|oo?vq6=2M^9*Ol&6C zE*_tXk=O$ETq(qXSZQ=i;#k&$+{A^l#Q~7?sP^B;7JvU{|xpO%FAs6+UC?0_vWji$`I#Z&?btJ z{WUtJZQ#kkvooN5)vVMth=Bm!Yv#mqW+lfmup&6P@1h$P^Pd`lv}72AcfcBOQ{85v zP_TB2*;?lrxe<`&V$7#B&1QQl7krsm=$vdZrBm4fnc4PuTJmV%BCU(YjKSHmtwl5@ z`;$HJbA=(Yoi%8<8~ENC6>Grkk|2ZD`nkBXz+7uW>-x><`rA$2K47+SoMyU9+-r~# zfe%_4&vc@nz3KO2l;$jt5f-x2vqFrcLTgRK9~37lB!$5_&dM4=abW@x7s#CVTw zj_1k{IA#kIOJa-$TD4b&wnXQ+-_`$^v#EUUH)MP=GaCN{VC2+8Ahz5bldmjB!bb3T z*q7iVraUH`z2{n?wfPwgMrT;5!iIPZqe&D3#wz`ZMwe0jdzl0e}LY z&paDHz-=&{6sk8pYwPqX#tB<=Hy~FVtChvJLg-*iOzNT4yk?=*5|_pkznPcuGpS*5 ze!`?!B8Z(0bvoj6-cWz>DqVWU^SEfgOb5Y=k#>6!`b7yh!R;Ov(m+}81R=RN+k#`> z-;xY_Cv>HJMV)un7Sbn&ieGs{60>#REID9FgC8^bVz zj%2g-IYGyjY>xi40lX&jsjA!3fT|l`t??C)Ff}2fH!QT%w%#4zyA0vyy0*!bU^~j7 zD(F3nQl-1=@eGqyW>LS>`zVA}yW^%C%uX-I`?f4EIdUbfX6_@z7X&=n1*y|2Y1ppR z{oDk;c6~NY0`X_BLp>m)b^4U2aBJy$dn@TlwaZGZ*^sljmY8S_-9RtYQgMUp6FwEN znOqheUeuqg=8sffBJ^`kEXx_uC)wGIG^y0Mq<2Y;n5mh`y0QE`g967ST>?frQx+F! z+fG+UJ(0jb?p6|4!;Z@g_YV6>ccf9i=M8N4R$f=}b+_+LfM~aLwM|0BS`bJ(xSYGR zIr{V4Ypn0Y!93_ecX6#(*|Ce*RL%B4%gg!sSES~IPP{o1vd~tDIfW$DBK&CM;(o}E zD|pYHMw3+rkDrGVl5u_uh%gI)`m;X=)h>0T_Dk_beEf*D*!HmbZL_ni6f=6lny8>D zTBm;&g69goltO$&srY3i%#+P#Ramqd>jzBpeV;i5mKSn{YZ%iI!?fDhiuLM?ukc3BM zM&@RdJ&G4hdyVb8!0WL6$Fa=uT(QjY{qXT=VCK`%98A+$F7+8+a_pY57J5)f*rbT5z#zN80OU~~uB&N`2sorPJ_l87dEw>UB4Lo5h>~d(YPtXOSl+m;h5xXG&KKA_yYudbPe11-2pJf_5fRGN8mHGNztDb=Zw!j8 zUs)WBM@?5A+6Cq_UoH8iJbAq%PYcr-2cp-e!YP6*1~@(Id-NIRBU)f2 z6>GpZCq>@ptR8w|_?5?V1(>3psv5!W6>IE9*B2du@e2DN4?y*x z0pkO6wnpELqF{886__8JB(P6dP`9}V_ z9hByxVil*V@SC&?Uhb^ZVV? z*Rh8b=}KwBjI6!YXH{?8t9R89%Q?%^GL?46>&woK@Ww#th56Z11_q+K>B8X3`p`N* zo>X|tv4IZCQnay9!q*#;0qaaV40=MC{WhM z?_f0SICqhq5wRp}IX(BkL|=K2kB{2F;U@3RU4lwdVE&ye zZug)*KY}_rhPyJeR2u5z0lOsw=mkC{y>js4c3nnp)eHpQ76Y*tFEKUC5R}Sfm33S- z3t;YXf4%1G5;bag@(^~eq*?L=8`BLzJm0Fb5Q1LA>bw>elt7O`%ocnvj9iD;FC5I? zsu!ATca$J&7M54$pKk*v3_}Q~hr~lJXfG43&WpRCdgu1+EM*S$*EGZfNb3mxS%K`# zyD{@jXR2LjSeoopHi=ax5kcvjUK@S~`*0U=;qo#x@xULg6U9+3lxTQ|6wz=ddDBZ3 zF#l)r^i8UvK+B_&4hOQu0336_J0|gHjPkYeF>eY`kQ!oT1sE+vE+g$65!IJp>1*H1 z^;e;V%D9ceiF`Cw__cWgtFA0dpdg+h;P5!vGI*2+qnh?ZBxHO=^mwdsh~Q`iTp1`9 z@`nBe04bAg)1(oJ%LMuRb$<8WrQ^(J15cc?}_$k&Msjz|x< z5l1H0MH0bKWGL)(E^3#iB5R0LA}KrXj!lBQP{!w8W8aETzaGaFyqGbJ@_^gJEcV;L zg*hh3tLqeNYr60{syI&Q`D7Tw0lh(CI|HO7$d>??N|J3_IkNJGxymEoc-%JXB=rh> zh?(D(l>=1-Bw7IITnWdbMU(ofT#$yhu1usM-E#iiA3At#@cHp}+S^_&*LYV550@mJxV=xCUPWhkGMpK{q;$h}kz=u(jA8ep`6A$bKH7vsoyZ7~2|Vm52QvZ9FY*}_ zZ!QYSCj^aIb}u=9X95abP*gqp_35v`A9{DsUDg>r;oTqI4ft2TCDiRru1b-ScgB!r zxGKNSzP619EBY=YL#g-DWpL-&vWECf$9A~_(i}D3YroyOJcs%PE0?mU?LJ36PDe_b z@0c%hnCkNOev2H3os&(KR@Ory`-ff711oJVz%ahxKwy1;fctXlpjf&%06)4>-HN6v z*vKl7g?soCrD8@aCBt)FA9`605Isn8Q8Oq6a)N-yQUOkc!Q@SEiyg0i;=wfOi<)JR z;|`0fku{Gio2ssrwVcqW^@P##gL1FtOyz})`18=?mJuq254fa<7T%FL!z5)Bb5xaq zHbrkR7}C#-st3}s%Jh7 z*%FVmA+=RTa)RvD8nx`&fg|wObqDGS<89RSFo#M4*O8Rjv2|g${3R(06$nFE9^Xx! z=b0L`h{H2COK(A{28OVa$Vp@A+Of`5PRtju9-qj8f`7*AkBAryo_?(d3EO*%Uh3a& zF)LOZRU7}dS_K}dMzHf44HsNCHjDLGx%Pc08V_*jA2U_MJp#8JVU}E>If<>cIBHmf z8JSbhvv!}PZAZA?vY|!72d-k(fLN6`b#chWpop&ZT{I1Zw@p%kvXTP4d%ny(Ow(p+ zSX=sv+vutfw6|_9pw~Vwy?rRhp-}VtZXZ_@x;d`gFHQhDZ> z9?kcUk$QJfRy9Iz{^js)W!o@9awvq;u6M544xk3~^yyBxj#oY# zbAFy7cT*n)w4@Oxcnb}kru5zjjS!x71Q^TN@$KATH9#*`s)Cv)N890GuQ2TPspyWW zR@E-T`@puZrtl(e-4;>0KJ0sWZthm%&%s&PzfIZ|w;a3AYgPf&0!maehV)2{lx{K6 zs}$*MtxNq*t}J+cV zXv26yv2Lefd=(kpI~3>l>u<&FoYGsmxeGskCZ0{#o<6i@n%xvi!=_w<>p@RbH$FVp zF-Cm7cuEF)V=y~%DfdJim4&o$`^>&`6t#B^I59A!`w_45m<47G_r)7F(;B{ z7lF${DFQV30p{Y60gn43>H^A|`GJ<9kG|S$7s1@&d>MtWR*(UzRmc_{UKTQ3fRt;SmD62gzTEXV*c;FnB+8j)Ay2(0#A`qz!dQ8ea$z;ZYOIh^ zEy^&!LrZo8O7K|y50rL2P?XHH6hRfwM#xDF?i{c}R)|LS=vCzDV~ekd1UCM3yX*ew zjjHjX+JYZFp!3HnO|ys*~>z1H0dX4{JkW+SuyoUt_K-W(gLKUTR}|g!^%fY1RPzyN-U2z? zzf6V1ED1+`jnPXgSj1cL3{X$is6xQ{gtVaj*9of&z)*p9PmpZKp? z{#EbKW&ouZzR*+F?iIvs5*SWz*(1h^jgj}hjfC|MU`!;xuNP|oLlJL9QcU|8$+LeA zjeQ+%=sqo=hwKl|q4h5DF0(GGEX;0V1X@9t&Ts+>5|#vo_iFUUe$atUa%2NRG6_yN^fZQtBsB5af_u2e(L9bnBLkz$dzb?q5GCS@@a%#g+{aG_x zFgAs^(IrFACe4Sfr-3!bNZ1=D)ki8JrSKX~v=k*xng_-NbTf)G>rSOxh}BR}uIZ&e1cmS?w5#2W|p6;aq(+$&t@ z2PXf3L7eCxgy+twSgy!jzGoAUDsFCnpjDQXE1?foJQ<2cM%kA_!Fvp5b*efo&*jbi z>vW@<#wX&VhU?!uI~g9C!#BH#jUJMXvVC(7pquL8OJlyBY^I$xPS2wCRFlDs?8%(; zlR<1AMXO25^_rOBl=>5+?SR_7%q<0$;^*=I#2)(8@ssHZ>}pE++emy1x12vhMkGyG zy_{DKkQ#Fr!^Zo#oYEpX9)Z5BkINx zqXHQHmtLB1I&EMS1lxQXDb)u;Klr0^@Pjw`Vet&pk7tor*qR#f$IheX(Sg8(faYmo zH>9l%(*kCocm*YgHkRbgJ*qR6mn6JQ7<~YWj|l?|-ZuRY{enzftp zq?8Ng_XzM0bd=CL;@PdY1tBBCEZ9}zosEPhPM{-2b994#O3=DJRP_y=V;KG0`veP0 zcd7^Ioqoi($)(9l^=1bFQ|3SuGq8&{s2kB$INQPGsN0K6k8p$3%7BxObcXPFFs9C0 z%q^oeQUgaW*`1;k!DP_f^X;c&hFR{G_ifR8_*b)^o2`7sxjw_&auUuX=OgN)-J>g! zGNbrL)qGW_Rd=$wamQuSb4_OJ$kt7pBM>bxUFs0^kTRW7{ddK9h1kWfW2$R`d)Lk_ z+1=SK8l8NYz#!xp(Q9Ogd(um7Ozsy28U-8le z(M#LUFw0GG604MWpDwuXl`;Uds{BOy%@Dg;C+Jhti zDzryaX_q--K0b-N@an4 zh_Onu^Q3DOna~!8} zt^I?DMb?W&HoM0`wD)%tFEP&>HOwJTat=G3s(k*egU`>G65#~V9#7_l$_VAH%RGfG zYoA@;^Pip&g5|&XONCNdtbDo?p@$Abr_`9*{E28su6soBxNx7`Y|?4s=UZm`(LOdq ze5uhujmJnKpLji|ljED@gPDBf_gzB21C?xPzMbOYU;UuSBr`zYbOmaPD7@ept56E zg@^R4V&{f14Jk=W@6|*uN1IeC~%mRSqkPCw2lYk`d_gO2F3cS$XcYJ>b> zjV9+Rjff(1^qM_b{;3K*g5H}x>)a-w#Q?=zFDP5~-o-0xl$MH}3iZzMa@LBv7-3wW z1kK}`1c^_jdtzRz%>9wj2uzb#u>)XU>qiGB-;s~Htr$Zv&?o>LMkbt(@IA^$bUbh0 zj^ovo)tIrm>E71?*lH)5!+#m+uCr%47k_+iZ@)GWRUJNdedbwUsQ~m(`DN#z3 z`kxbl{~^5o-xGl>boBqBxS(TY{{MZ+u1Z4~!#gjWtgM(4%Khn?9&x_)EPi-gvP1Ib z6^ZbC8u0jhc+J2xYj{-nmz+dY_2B;b&FboWxqk%};mL9V@autFSuZ0j;h6Xf+gf(o zAP9U`vrp34O{OPVO|}^yzK!|*G|Bw|8tZy*luG4htH|hPuQI!xjZ|DIZsaEga0c*q zhn|{Z+3WEyF((<&B4jWhUtm56jdL4dJ&NinKEmJ|eSBAs!_HmPva*R5pAzL{ zs++;U<3Xg0ZWlH&`Z(U!0OoQVD|ay}ZYv*oNZk4h2W>X-5BOBpWmMBELEGy@lBhu~ zR}yI0$8@OJm0RFPu&i)?E|7-yI5O>0^^JHts0Pg~j_wqd`TI zww(GrX;_ffzt1XJg@@DpX4Icww5qcd2kI{e<`C;=hw_rcqb;=k8L`D8wM8^yE27+o-n`AlGO>d_u>(M}gGjLhQL%&B+2gR@ zC9&RvnH(~gltXYSg7BH*bzr1)i#d4XXgR-m*OYwT6Qnue4ayuup+eoGLA533MF{9% zkE(brTcyKgq=zh^2eP2cpq34T+&re+?g!>b1E;;GQ&XviYPjY0?)6%O!M)zCw$$U| z#0Sn(4W(%AS46zHMLj2ojA)I+ttZbgfJkNt?Ssz6Msl*h?2OSy4`8iJmO_sJQJvun z&ShPB(CQxcX^18KmAlr47QFdUXiiF6?;;92Q12K++=yzK4bn*dw$TMlSyvTxas1T54gg<+i#oyfDHv#5A9%Lm8S5^!&7onD;YxGs@PcQjNp_G4UGp8m!I z9eHlBE+s9TbKjQ2XTxv7SZZcejvn4tjAC^{!kkYdt=JoJy_V#tJdAoW z>2z14;CrH7m*T28iYuanejU%-uY69HEU=}ptNn^10!wpi$(ES<6OAatsHM@IB#I(| zYCAQAeV2~~(Uwbcxg6nN9Op}?qRx+Yj}FkKa|qQOe?LnNQqNoE5me$Lk8;l$9`NFWfd`x0ko6)in-1hE_Cgx|o7q{k^Wdvb@9rY>J9SZ-{IH zU1C{3@P??*UHKy>+1Ozl%2>U z-Gw>jNW{y2Jr@Lrnbl?Q-j7(Nu=K*_<6cb40%K}h`Nf;!ouGyCJd3GU-=p~Z@9er_ zm_Fb7Qe}4rP7u6kPqzv`Ar3K&)RJ0Oa`+lvyl{+(peW~WPUnyMiuHnNaUmzSl&}gE zlgeN&bIk54T|02(t`PX=KP!tfm|u?e6giMdvNz=|5$2s+!fs8g_rJzu#D&z-?`BQ! zm^H`RAbCr!7K))-n4aL-3AoxMA?xG{GGK7G-f z{j_euD@l4yM9Nr`2b#rnNj@ji-vK#yJPvFM`Gq_(w+uOhe35*p47eL6IM*1sYLdev zT8`bI*d_JZkZ{r8s-neFl8N-O$$W;zu#&wETJuPs4kP*z^FYk0VAH2(WrAW z{*6Jy-mp3{o}NMdI8=gxSfbu2n=1Awo-)EHPcrFW8r~a&9O@WR8WjkGP`F`OWulop z#mHf6;wS_=xskp4^r%uBmCB*NW}~J#HuxgZCNb+0v>%^-E8(VXASa?~>MperWt$ob zK4-c8(*0bw_?Oke5^$*9u#0I#?d5Xp+$pxEb6)UsX*UvNAvAMk%j34R)X89++P2Y=RYZi5#u8K`z0i-GM3h<; zec$YXj((wz8#W7!k$yj|Q|X&;**`KVt4KzT28CEy0+D)(-e9!B(QJj zS7H39a@)yb6QPPip4&Oh(~0rNFv+v8M(r3h=_iwS6#PeljC;+w<#5e08J7A09rX1U zMs`kzMD^!M2BaS>?pE8RsXM#(V$o^QF548ZNgh5iL4M{jp1)19t+}&gprnFEFs79! zyTOJ&FL^Ly&8rDgWey&2*`iq%IP48p`Xi%jRtKE>QX#>xS{%0vgdyLqeB-QgA*F=^ z+YHoIihdHb!*%i(mqTS~%>{%VTT^FyWyi@=me%%#Rwki6G9&xg-nedoA`-Pmv?{*2 z1Omm1eNt)R-_AGbTiarBwwAkeKhKM^h6)$P?ZG`$$MOPRj25q$j_oZ=7sTAdsx=I7vIfjS^L zFLMK{n62|-t6@_wfpTjpeiLc!K^5%`9pz;O+-<~Nj*69~8deUdqPl`xlbFPmU-M5$ zr{bsij}!O8Sh(9>x5u$!~1? z0O*1sNWG*>um9#2cwZ=4s{L_xctN9a4Vyjc!{eW}NbRI(a${*gm%Ak{?o$5j2tV{q z%hD+~>JirSVhk_q5OwC-sT64Bf%VU6@34x?(TzqrMxd8 z0zEn7B~?Nc2L(pepRRGzB4{u6HeL?>sB0_e=AT2;(Q7lAMh%b8^WED+4ig3Q!lSb? z-O+`PmDnxSlYD{duw0g!1v%BsxsiY#8QF*XA}$EVn|vuAHo-$615}Tm<51k3+7Nd-Ek@mOL!iZa3y{<$;P^`VsvpHlnafcc>z@RcJ_^eWK zj=vlEGcd|h$}ea=ws^~h7E#b8_c6cYqpMd%+hM(t6RfM8_U@GT#+R!O#nJPR)>^gK z$;DT?A`AyWntiAT#cU2}4I*XzpF@Q~xcewBW7*EZ>WbzxLuVRN2hF1Ag5lZD9vTE7 z(zri5<(Czv5Up=I0YQ6o;-?hO7|cRo!$uWI;o6VT-p{1D`6mQ=JME*7s9BZ38}EyMCq}5~(GBJ7cbzX_3ru zc@&K0A1?m3Y!$6#tyfKJW#uH8*sia%rP=Heq*Q2BY2ItiK~Gf-wrAR@ir_wJB|-EF z7_ClZ^2pO`R-r6~Dncu<7R`I9Esv?|5LFnDBbf$D#}nX)C@vRgAI!|T6apXKw(Th7kZHO~3hwmRTDp!IXizr9; zL`%2uA|d^-uzg_Rl)RQ~u=6}O1U{}{Zm(ciCVv-hc9OQr8Z4&$E%5i+E}}3{o(o|% zUb^Esnmx8vSb+o0a)#1cV;NUU`-Ipjx!fPD9^5@#bKF*XzQpm?-m-7Cd69>%Z9~;< zKzE2!OXsH$vTK)F%O)Gu(kjQaw9bFXXs$%pq95%EvZ>!aiKsQ<-tTT@p`wOKOX8OV zYp7Aw_L}UmU1STscn_!$S6^Y@{N}4NIuZU*O>6dCRlHzM^j1S|Ty#`SX{nx1k2;n& zh})TGPfuAWo~TQ`mw3w0V%Y=W9?nLw$YbKiY?QAW$51mdP&2D_I z_R{|7RMJp1uTwfkxu&@OCP?(!5829TLPLkV?>iC1rYe4rzeKCp9k_f7PjSqcuTQc7 zzt|#|R*^UUTVX9}_4njFouC<@J^rV7LS1`)H=lcd6JZ-olFfHA0ZVZ7;^Dm(C#W=L zfdM64t99V=R$8X1%~`RCvgNui=p|5xOx?n=5bkyGcFM{?W&1%SL|Ni4mTu+t{jHGZ z*5*ESzZt!llDVoUWgTthQBuHbmd3r%-|9gf=Dkhd`m0;fGg?{?V$O_K28$f#q zJPVN&9~bCe4{2tzcg7Df7jP7$+}Btay%qrLf>hf*+EN#!pDQ4FQpP?t*sy^EF))B+ zIphVfFuq%`-p_iMo=-pr5q0+57tuXj_0StZ7~}1bQL$tu5YDa(!WBdmFroJk9S9dJ z7xhbotNgIDCnt>V&d82Rr`Wz43!=z}7sizRM#H6cC+z6U+|PriCrjfc=biUQ{R`kk zb`xKQy)JmI1cy^Rvo8QTkaE5B9u;@$>W_(p1s^WYSXrywo3Pd?hH zGlwV{HnO)sPA{hnINGVQenHeAgef|qG+%*h$Z9O9)9xKX4AUqfj4R-78#InD7YGiD z>vX^fY<9#hgg+rPdM^Sf^zW)fq7jUxoybFQW4&*K#3+6vXgg<=DUbyuzmZ6ove`qQ?9Ux#@mEjK*q><}6ns9E8Wx zIX7)5T{!KD1n(tRw_ZCpU)c`bJu@$vW8Q@R*X|&!_b6@rnz^;$1Jk5rlb(c=AMh&M z3&CxyWHOZkSu;YN?q!pw{E^b*3i)7e93(#Ugo-q!TFkg?8a?Kx9D3KL-Bou{(LyQ2z|}YC={Xh|Qt-oMz%ZM#1PJh^xO+Z2S^ zr(>RVD>okfMc|PErR0OMpVC1DWtKL;HraRJf9mL3fL=KPyEKmKWO4LA2%=1WrVu{| z?*Hh^MLTftwS+x{!rbGnA90|Rz^3QtqJ6}H(ffYSl7dB%^LM&MtxnV>{bonLC5d$Y zaKU*)yF%$==AzZg3efL5PtvM1#f{P4qa1?Us~TgPb0i>D7a>+-xcOiBI%H)XxX&{e zo|Cp1J96U*-!Rx(=XF5crXe68q4U)M6XiWf6@^$)K%6sDGPa=R=`7_|^G271gVnI- zJK;>73h~G~q`6NlVr=A{Qz~eT0*pv68R`~*iR$j4fT;cGB`ha2>8)XZ?&(; ze`4*b&33I!g=8PJ9#8Ag%A~PJA1J-c0CLEcJk-Clp=L6^R(Nv!y)?kBeMaf6sI`;T zYYuW^%r16fIKEL|9sODZb{vIGwo$(qc%@rr1Hs8D)4Gp5pUAoB>?wG6n_XbPc2YE# z=GWQvo_t%AggLewWe0d?E@vnK;)NB>)A87hwf$919pc+Rip|*N875^it`|3WoRWgW+_TIF-9?ZcKXhMDm4#Z8-1n9~5nqM-y zcf|8`2Z$}#;FXD*Zkm8*!Yu3++_|okt1aweGLyoG0c87+(y!t^DTXsQ1#oBAMvbMX zIGTF}{yx{f((0hKl%vo4(1m)JJc;szkI9X;!q8`B{LqQOiQJhUHcUOG$4zqn z&GE4-*0Mvi+`<|b+^+W9zib6rI8Nhnogs`>9vqhLkPZV@*CPnV&g9n1UYX}Zoa0~A45}b{@1or?z0>NE^1a~J$ zAV_csF2RC3A-LV0%*>h0oSE~TbH984o&7v)R`;r|e!IG=SFP&Z-PM|;u=@V3rR@*D z5sm6OwI9Q6DF_LA$~+aHymo(l&=T_%-dhlDOM*1|L4p4?A^O2W2K#Jj7oQ7>1DbY^ zc=h1*5v!rW<+CXy&T5~2&iY*XQJQdAVs}OpU%oGT>_isn8vJBWyRq6ZzFMhqs!`YPWWwV#7P*dq)wfgb z3OTb4{TuPab&PxXOSW}ZwtPmD7ge(wWhBn2>3H>r{`;KTzBO_6sp*N0>)rDjJo@~$ z`TV`7rIVRou8%dC@Xliuc!vhk__;h@b zU@b(cE<)f>(m7U-U?VAEE{0)~sKFaSSXaU^L@@JNHmrM;8GLBw@G09}{86{C$AxXK z`h{8erix5^gh7M`(_HUM=qAdB(XlczyiBdg`~(Xm^NlYUi=q-$1Z14?S-Qy6<|cP! zMwMw>UldoRu2&LZ1SR?Vuq?aZ8{Yd>nOIar2+uEfxjaj@XJ7+4Di(5I$rwK?I}x7E zUX>}4WKx$1-1|&l?`}U3k#ra{za>n(bBF<5>TmZ}iQ=yV`#+sJ`S*c+Adnpd{(Y%G z4;S#yOZ|V_ygGfsMk)|9WNjg>TZjFjNZJdjqQn_IT1%T;wbI-WDeIzQ+CrbDY3#CL z3rV!Hx%1+>*wNIg5?ZjRghG~Aequ`WHifg`InSnErt`sN>*4iv8xp({X$s)=Lb2`8 z7V<5k;$$KPyUM4lg12n0zWfx1H17-a<|?T)f+?8f;Js^V%ODls7H@B@GK-Ne)*nQv zwqCc+Gui1ZH3Vdjz-T&UWflpv3}`N(P8@&Q?EW@}nDww%sf=sFQ!MLFG$gu}-7|aY z9b9+pHJX&Hp0}5VB&BbhV1?EF#LD)D&!Mx>C!(Q-Md|&eaW|DN&ax$>L91;zM2sqP zDk2N4l>g3;xq(WVktFX6dSu~hwJDI1`3 zW@G97#8PtZ0x-w^w@Oj-9Iq`&O?e(^?H!l|cpuzx;f~k57w{FbBzwvtO;5VI*(ahr z5*L)pk{P?~M-hF%z8ry_9O$CXt-5JJzF~qd(HSrcsCs~h6%O#hpnLXE5}q0>U#In0 zP{IV&yONmin4_(O)jQ(zOi=4gD0EeS5ci7@+=02=Azv=g>5c>xR&f=+pbi^j;TI1- zT@@|w;?YCej0t+SwgSt#DtYrl_JZUtYM?Q&q%j0~Hd$I@aF!#9n*+glCA?}C?iY1a zX=y{rs10Fg%ssvH6+g8RKV8^fAG6&mu!{TDEI*Y(=4S80VBD%Py7`G}W}<`K2T8)0 z!pSco$%9vU=&~@OvdE^ORQc@))W~jb)Sk!0-*Ol$*b)ZN|_luQ|t< zkab2(Al66dO8;S;+I2S-#pw-l9?DI$@grb35$!9(-0Bz$R1Q#NSkGgc0WGUij_OxF z(4DN~i3~%M*9Wi6;A#?}A$)LX>bOX6Fe^%{^`&lrM&){SPN|NDEz^`|pG@tX*0x3n z$6TthZDpH_Cyy-80I%LKy*Zk>wK-Q(BWd{qO=-=_k`|^3^`XhZgw-9QruI(>-uE}z zur;Ig6m#|F;#cmtT7|({kFy`CxMo1t>n|M#yeJH0Gi}(58%IP9UD;H|%tr|+46G_P z3^zph<`!;kpD8WqZs(1@k*(fqPROAR_8bQ6^OUS7o1xpI2 zP$TpW*NdYBstGssqIebt4qPr?c0W?e^FQ<9Te_3h^AW8xwTg6zsOI7a>8(tf%WDy8 zy32Vr%$e-1c#^$6&e4+{QRiT^@@wtH3kC*%d9*9ow7JSm$wqJA`Yzpzb|l4(2f9s1 z4F7#gPm`o`^v0|H&*|?py~v^aVx6Qs(sg2U2c_(O>_c+0+guoIN{maxNitd2+Qe4K z`g*vv)UDjd42ky$f1=BwU_tLZ88JO+X>FQeGq$TS%gSe(M4A}qGzFJh6KxkWPD~&G zUFm7@xNTZ~aOAl;|N@|sSmdI^KVSIOPm3P)} z$wA^wX;X#w&kHN2@h^EZktWA?Y{_E{<&=6#-T0nua|Ez425>TVN6~k5#v1`;s^t5D zT;0_PCU)Vp485F8eF`ASXZ`W`GS#zoiH@whGLP@6^i>pclKWu>m(}hPB=gJJmtFCX z5buZJ+dBQiMf+uGi&#!C@y9*lFq-0e6EG8KC5&fNd@kyE%YkXf5B!$fyL1_)@ZLIR zPbfnd`giEvWa?db^?Vg@HP<{_XTb-h$H=XfcxQnxo-A#Q)Dm@vM1Ju(jtN&uh-(~` zmxx-Idv5Y{acbWdI?>0aScT(t9QE41lIt+M5;^Sz;5>QRhRrycSH-?=%4&>(zM-GF zBAA(g>HE>6KR9HNAP&u45!I4fI{oA2&C5qK8Mi5&ZiM}SkjiwGZ`c)I^~xEkEs^qf zq*ylrcIyW2+OTGXcFO?#sgqc z{njlVFXcGpyRwfZ@el;Fm&N6A;XK}o+Svz+3{Gg)do;MaN)Z+8I z)7M;itp&D#5b#81u5UzjP4bGRmo^Q|X;$+IR>F=HNn<;`+wPo}89n@-={u(Q0T4E_ zMDhw7S$@;A_e~dh@duw5_vZ4Q3(ofE>Mb)Cir055>fGx*YBXb0pKw~HV^W-dm3>9r z!&zv+_SSBQm`$yM6psk&0Ob(_87`sH!qUie@B9jcSVYa9I5XZDBAIWRro1wg+PYjG zT3{u*ql(5bo5)EkkQQf~@BXRO9Q=i&X4=oR=V^bWUwWUxMS1-UXA~1}&11LA4c4ZK z54DB)As7tt)DakC@urTVj*z};<5n9symyq4v7GVH&r^;o6AB59&(U~`#&gh?EAaai z(_qi4(Mb#JunJtqI)kq#?>K}619K=e{Jpz`#$Fq07rYKo&D|~G zUqOHEgA!9K$wU3QJEDfMcIjhGOJ3RbzGbT|>Mj|Q3oJ}B6@%@1dfrN4p2e5Ve!TqG za9-+Zu91-mr9Q2NR&~PTh%9Ak=|!st%B5V%c96n;%9^0&NmQ!*#?qm|Vwqurhik4x z#N)P>d&xc9^?9ne;N~alUWc0c?E|^_A`@+Li4nbOLrO2C@q$!}ycKbBbTIlX1=#%N z5UG-C^0wM%o#m0Vz`^d+>TN;~GD`&(SsA8iZC>8Pjy*xEN_jHMHTSR*M&uUkRVYZe%roEjjHJxi~XbGC!5(+1iMv?lLEJZHZ6Zjg)#QQVx6Zv zxnYlWNglw4IXPJAPZmrRSgs}`Hq=}(ml^aaKZ{jiShIRi!~!bu^z^RKbV8+tly@X#taEZQxuJrGPuJkA7 zApprTegUsB=u*D!S&1-}6zYJ}^GpJzlEtX)iM}#g&KC@pI!BX#z$qt;nxly#J8^cwK&Wm@_eP9Q+Duyf7_2N|s*~mE{G)rd4 zz(Gr(f@dNyMNJ+PkMHJ`76n87?8l1PA!|elJrd4kCwv@=Z_NnQGxj|bm~D0^zj>uK zd&-*hWIyQ5Z9^>Z^lM+Ve@^$jkdDNv$oPrs37%ET1R8Y_sECSQn+ShX-z}%jx7Wyv z=8HIN=*6+j@xjK9N^)~79-xMhLFU*?N|Ud@aR13$UbFcS!sx>*DJlFpL*h+{={O$pNqRv}fKnA3f82kbObcUWhvHI{Uf|`KMO# zW*?Dt7$UVyDM?DcY_%ZlsC#-bRRs}U^suH#e!F=X)~M3NXqN7{GRH{_xfED z>-&;tcO9opn&s^tkd?)OQp(H*`fcdtx(li4I#`@V`3%6R_q1#tr36eS`XFyNNx>$ZxfW+1w zPWRqX%cZ=nZh=77tyZ_C%ML7i7x$>IVzH4@!gT|bmi5K;r7cFRX`3FsWUhs#G$?hS z33W{n2aehLz~x>i9bfw~DI$FQ5OfI9*TG0X^F*!TZMGx*Neop7__&RT`afE7v5Ptv&w+P z^?{pIB5%T|mRkc=7wqz^U~mF&G3Idw@B1~P()CdIMu}4*&lBO$ZpayVGB>x^k(AQ{ zYx9Z(2WvRVy;GiN``54MdMyKMl{gsFZ}}SxHY#T#bj3f8W|b~!>GLY?3c@^e6UNhC zv3fwrV#9M}gozYX|J-kuCRu6rEgS5E>8_b)XwRI1we_`17P$NgyLfL!BO&p(v&$#K zXQ2cJm&XZkL}}fS+L<$S-0+?QlU66HHeSvc5_O$!#m&Xr%ZyOl_ivXz5MIb?df%;8 zt$Y>NF+qM{70m1zvl}(dnk>VatH0(MOsC>5d+LBVQ|8;FTj}_PtT0}e{G@$|Gbsos z#Yl%R2H*DKBgNJbs>f8$6*Do9R?(AQ?9y%81fpDGYP7UDd{(~Sa*k= zo8PvmJ*la&npxcI_b?lGt&`$y7%$86S1)~nRA&bYdb1Q251Hh%Qby1*`hrBu*J-X3 zZ{8KeN%qriszkJvr@ZM_4L#f6mzLSz&iyd5@@B%u(}jKvydc374yO^_#wD(t#7wB< z;bvZt!4fKO>@_RxR^;CL(#6-o29Qu{a%`jRT$`!l0xoc5w<@IJXCd-sZ+SY+$uvL2 z8pky^ufyGeFlioPu;j+*b;oDF!ZWt-?M=@o*mNAHFm-U`#a(c@5X`wW`{^QL+imIc zRJ0#!?gnFi5_W#VBlys7|GI6uEqdwsjRkfuy0p~$fUW@k3Q?(5;-1_WJ?j}LN|-jl zH~oZ4ft+)tk+@gMQwqiG5<+mtGh2jA89h4C)6)~0t#r7~D0RAPMJAP@QC9WUy_@s7 z4rHn4|?K@rzZn*?||@)7e5 znZK8>NmWk}!WVC}$ML*r#>~u4S;&-l%wNmxe5_AY+>RG4Tua|H*E_Deow3PIi8mB@ zT_rug9+_Mr%+#|~3;itE!y=U*Q#}<6ooaNyZGOw?Qj^!VcvL5u>ug2WQ!hAHRhCy& z!aMuUTUpdVttoYm!N|sCzYKa($%n&4GH*&#?7-#T@^ME-3TXx8{@baV1+m#mzw3_gvn=rT!KX$i- zN`lZ@O;cZtAi_949_tD-;yJ!Tg+;Rr3kOKU>XCZx)b=cz;kl*h1{6#^j7FIC>t1>K zQdnRXEL5K^gRvc$tw^fEBR*>2HME*c{?Y`d>y0W*ab);o7j5(>(HAjGiotQHWKt?E zv;e8cSse8}%!1=PyC^(QRDfCET)IrwGH(g}X1LV&=&IZeo(e2vUTkOjl(8t9c;edY ztGC0Gw1$1Fhb-CJU9wpbYmIU%yq1?+%-7vw%J#WIo`vMOPbp(dC8!3r`h1Ppq>@9Y zFj8UeHXK1ACgXFxbJt87e3u?R1#r7pVa97~}d2H zoxPWG>8X+Mc8s6T0d!N`IpPlJ(nlY&_HX3n{!;eEcF#4?R|N1o^N~L%xjfoL(7~Lc zjP?jNqjDQh&*XO`85ZcH>|RMj5F(MVUdCvtrn7xm-4H{7!x5p(evJ|6L`-;azC6_2 zVxb~ZGs+sZN7>%sXIrxTevPcQyEx)`U$zI2_-2QvlEX$>3qKnx455y?wk}-qxQh}Q z1d%3H`kVPnt6_K6!&AcsTr&x*NJ&x~hC?=~*=a4p8J`dlk1HWnZR?f|J2&LnXyx2x zozfleGf&ogl0p$fh{8wT|>cL6VBNPq7r>`@CuAZ;Md9;`iLNhwCrOocXV$sMtV6ZO_ zw9v6K45lT@Dh!_GYKjdrQkR)VTekRf%6rE|8$ZlBQq6p^wTVDBdQ#1KK83foDvIzq zHk1VmTN$NgQ~P&{>M% zPQIP%H;GFK&0;JF$9A%maazX3ld@C@c=^sx=MpeFj2CSAKBRK99iV!ZqbBINoR6cS z;RQO$dbWjMZNK^HmdK!b=rS};<9Tj7T1Yt2V`AWR`$^HJwr3H?u`*-4LvU>MNH4rc zQ1seYT4aNa7=ZbVWn4Mc3-cK)?cJTJ#Lu$$S<4=FZ#K+)1p}jLd9gPh!G{E(W$1d( zRzNaWvd=H~;3aO6Yld1RxvP+^1|B?doJrTQ{TN(ipvm07OD!hpNJ;JVVvl z7e2;TF|e;B-v_ojqj4WG$&r6+uxUd2Aje$x02i^0L50mIH8%kla@t^d=zp^%_k|1p zl#CR?SgJxNA*8qPESDl1n4P9BU_E`7U2|ml`5Yt27A=SL!92{eg810hvt%=q$S&lB zLD^=0ftgJ_loHT2a!Gv&w%0leQ&AbCcY?ZdZYVqc+DO;6i@-yWMjCfs*m5tN@jc+8 z=#31vU4=@K8VZMZJjN)mJNr`A!y+KQS7_}-kiL0ygJ-1og^GGI7a_+R*LiirO-GOI^FUBSi&!vGm-gnM}>I`J4D*AT33g$5V6L;+8j8f+S~k!8eNmgR3X<_a)^4&D>!uU8YY4v25UOZtA zwkjqa-^Fm!m%;NW*2Jg1#^pF^NFmEc{HEJcHDy($%kJkh%r`MMYn!?|UD(N0T?GRh+;YMmS=y0#WH6~13{SaMmd;TnJR!%OdU?< zF(%9@MW{%jn5;Uz$fyJg_UOxcWw*;#u9`FAYYODr2am%qLe?gS*Jpl zq0Ab6L&fKt>{HZ&$JiMD2yzJSln*)mk@#ana*kUbqr@mJ8kmKu=H#PKG$}Yq^YIhW zNPh@wdUNSAeP?3_e`e3oWU3K4Qg}OC9I&SCvGuXsO9Aycf&YaBvvQdDm+>L)wG;iz zD%*jj<1DHO<3bpO8mk+9J;^?Pwqy_Ehm|2?<0^0QnYJ%0o+yx*rW9`qp!+>+TMh;C)GS#wxXL+{!xT3PGmy8@gBVWEEW705bdk38tbZ(uA59?A^qa$ zHD3W;iQA<4c^yUO65k-OdcuO`VD~WMj4rXh9S`B^WwLj071&KPkI~Eh>z0$B7Jiw? zIgTv%=SYOCbK|@5F1KZ&R0FIWcsYixk$0v6q7%+h8QZUd*9tk`O_iqlCrIZbbb()Ve~ zQn=WvBkZFk%G6n7r(-301^?t#zV62v(@4a%oV%|wovx2DZZ2L^Tt^eN&{y#J89qN7 z(_L5bp^5Y8pOUBR#Pl7m2!%5g(r`m{mo-#pSu<+&HG?l+n_GT3Uu_n?ulVeNpT?|= z;Gh+ZbddZU`Ym+7JBB)!4s)i5niu|RDrEQF$ zeC*)S$@xeR2I-6-vIZ^5lP5s30tpsu2jwWVSFiSo3oh9|EqW#`26JLsD#G*mcDGT_0PLk@*NDqRNOwq5bOv|({@Y*y^yArU z%YwT{LTFf-D>T5ZY!U8cbB~mAgT=;vorKRNGQsZ@z!h4@pBY3rvigS6G%Ll-%IBD! zKQ|MV!@f=75#+`UNl$~5ozm(l&t_Ytc6rR*C;T+h0+HOWOJAB1e5Zuho1gEO4b$d5Y0kzweeO_^O zcZKBE+yL(V5~a!4eN9L~%HSOm3yL%tzPeS(3rc5nEw0!}SexMq+LUO?uc!GUiWMq> zCuLX*4@7CI6|ABN9gFWjBsdy2A}1W@mC_FAgim{Q^3r|HQK2hc&XaehW7*|?)A00h z4(V>JNU_eF*B6n2({^9@p66fEVhk3PTuSvB!KKYB^vo1WERxb7BwCSYQI@sFbXjX; zWxlT&UG`l}uD{1l(}fP zDt3rj`DWWpoz6!`?FAY~x;cs>5jOz#UhFMQ}r)(pP@ z%~Q@s-=haNlq45)PYU`ZR!{})J^}>82+*{@40aY$F(C@7xi4lbJAUY`=+Ms@WOsY5 zs78;b^6cwZ6axi*L!&3En$_bCF@83Wc3)bQ1X8;nx8$5N5})Twa_enFH_Fyi5_^MT zN9qM@_b`3y?h9H&;lou~wy;3zX3cx!hv}3rlUT!GwH^miUmc}(0s z`t&YElF_?Yiuy~7kLo7^-B`y-12c`0c@j2Td18eOL&sHLGIy=LpNxr`7s2bbY@Kk? zO%ELEB(tD##-}4#>`ka1s4iBQ@8x?VQrcKt5*)!=6a`YoXp8hkDd2_cOB%JrQgH5= zoZ?jEIOZQhS+#RGe({dFC)Lwc%+>_z!fG%vR-}YLo@Ba>p+43l@~PYUI<(!|5Hr|@ z#$8dLVbn*PA8J8%N4gb0;OQoqyJ9pk>3N91pfYc zA&MMZ^kU?ra~RbAPQv^zOb+*m%_L8w4iHJm-yZrr0Jmy#9=z}nMD#|A%*=D9{zjbr zSs(9!76u9CgFlQAE&z7RVH8mc?4=C8!}!?}7ooN2NsgxDu^|=tlxs z_KH4P(3n}tc7dMYn%RYSPd>StyL>LqKFlvPUC{+oo3x7m6^Hxq6nK~o?~9)K6z-U5 zU5sl7uIq^8h`fU|6-LV)#<Y+!@CwkB{jl zg=myFl2hHkgW|pHO)cVAD`z~ zc9kP+s794oBfHeUTBDTArL5E^SuC#D$HH;8CtR&dr%tZ{eNLS+{KZ3YHIv)i+R4ZD zFsHtoSFycMO7F&&?51ySv2}8oX`{cQ)X_(exwyWtgV7ZK_yv2d6vhBGKbW{ndCe9K z$mp+%4u3tpE`y`b%dn=w=qka`m7Fq>ZI_QYHQ?*ryJYAcB=yOrDgz|}QVUDcD%5@Z zc#)=}QO0AH{Y)mxb~?!Z<=2FgEy*k$S@L7ptIWj;41Q_x9jfKWYeg>B%LBrU&j&?G(F433@;PJP z2*ND#cI-lC;GhRX*6X9bU5s03gC{52d=QnP5DdypcpjPhF~D_!Vdp)~s!%*JoG;of z(FBq<;vy{PgI)h8+2ps95J8AjpmX0a#o3o;@0FX9*B+cf&Y>qXBqmX<85nzPt2#0J zU%W-o13tip42Bv<4#fCoA`CC5O%uItfQ=SK@4K97_?Es;lvO@pazS-6J*>BpbiGbE zY(L0y!Y$zE-1GE|D=v30dQhH^Eyb&e9Pt|EX-!j@;Kejra^;EF@{n~)o?!oA+9|`k zvx#dWuau@IbHT0XhAexw4PR=a*274j&2JVtw~VYmi{p9k{;fT0-4YvVTOi#N>8@qq zHNV`de{b%g+H*z4RsUP)rU_QP(N!@ppB2LT%qP~K8Mj}QHuZc)BJ#_xP@LUVQ0L5I zq|2oHdehjmpR#)+w~2Q$Yji?nBy_j<;&ONilj&Wwhs6DQ*v;%oi7nDw5s64Y*qI3X*lM%;8H#cb{mfny=SJQkwu4cQ ze(p264JC@6)Qx3yei*XD?Z*ip`BsuMNZ3T|8V+%y`ru~x(9~!T1E=5kpi6}AHl8eY@Nx=i!h0h)^7&u+`tw+c zwIVJZ5q%{d_S)F4cQ-V!Qz(JJFF8!+~!CR_T2Ix-7d-w7*F)#x62%I)T zVYsjF@J;l>gIKWnwIA!A@ET1Ie({N+we3!|3I=;eFU6Zy(%lu;#gLQXVJ=H1(?ewF z=~)X2yeu9jekoi>!CFX!PN>G6ynPrI1HN!lx_nY`_1u1Y$^Fi;n}mTQXSdM}n+vZF+jTN_w(b3KB%$9KeZ6P0o7E+OW z6-v2rtVa~9N>S;|1ooX0wBGk5YwbdJI8N&=3-f3x=kHofV6I7tkV1RGUYfITcZ=`m zJMv(UaVC7;i)547IxwEwy3I+RDPGm9ZHSYP(9}*iCW7m3>{ns$-qGA>Ca|6>;hc`4 z^Tx2;V=5?LvB_jSjDQO-o}l+iII(&|tcG!?7~fF98igPK+63Hx5(VA3+d85%-b<`VN!2gIJI5HyOcgA{x?iDTXb~6t- z7;>svV7^}phPR8vo)hBv256F^V!KoAx@B%or|auzjaMA$Pxa%3vDD7z8zn7!4;L3;`N>b*$`lz1SA?WUNB3_GDo7Dj0r31JCg0x2Wov@JQokhb=5t?L3 zsgk0-oPm~pl~l!}Z{3}6SN%fSlJ?;Uhf|s%L2nL}G%4`|c^ArhJw=sU`6kSF5}Pam zrYXt-#=)J5ZL=ud#vA_Rz_L3f_Wlp=${g;|@JV#%y=_bSt*+p7JK+Yd`Q%GjabJBy z2*IyS5eV{u**(EX2CRDv05D%*Fu{4gH_q}B8B4ZI5f(5*2sHD1?@8Z3kh({^g|7M{ zYd?^fvg^CeR{8ve>FsvZx0#=`PO@wxx@273kK9CYq2#-9v$|d*HHfjb>Z+ zwD9v`R@tSs{g_4rVx5LT*pw2*#18b1xSo=3l%uPlXh|8vm^VlF+$c@R^XFOY52~>a0c7VwjX?qtjFJ_#kRVQ!bt$<5-c}I$ROc;E} zZ<4wM;lAypZ0}_#mSyAZ)>Qy*;99IVzk1egMeloBxqJc&ec_%u70=ODsBd8{w^3iJ z7{0QmS8{3Zy4#%R%q@NAx;t-xxyncO?riT(N?Xs`;N(8i1oSNCD_-I_;Y8$}sOoB@ z+$t@bO1V3++}Bzm3dKlomJQhZ#fV@a7Xx_5?(Z_Sjthw}?o|C@9vm8sr~l>8p1}Z0 z0HwXL6&gQ3n}~?LyDpfAm5YOt1HjJ8#mz~{!3AdJ;pCy@0z&_TfqHC;Y;r~(_O32$ zN;XC&5L<|y3!8|Iy@|D;AR5HZ^gAOU5d70msej?g&dLD-a#DiWfvj9$ASF9D2P-!> zJ0&}qofZ1p_3v@z_%l)fD>MiC#|Z>Mzqxpz-~S#bF7Th){C~>{1OWcO;`C24W9MWA zasQARJ1Y<>GY)ocRt{*Iog2W)!3p}eS_!-8${zuxMcIo*aX@Anz z|B06SCmsAFt%|+d&tRc~_=j2jYr>y;=wB25q_qE1uAS>+B%eAsIl`vfqgeoRW?a`HT$2W1qS?7!S{0Cd-@;cKpTefQX0!*hK~P z*re^u>?wc2E(ftQcd>vP1s9u&y}b+NcXd!MjPy)eVE;cm}sE%u?K+M=Qb%B&% zN}!&gptFk;#K;y6#bR+UWkgm@8MpVaDK|Idf~gV)?t{Gct8DH>7OR-LlvvcXV7n_g z6qPY`7HS7D{YPez7uoW-wut@syi82}5*@FJ;$C99Y*W*wXRe)QRw&2^8KDQIrZ-$1 zt@9svocA_CUp6Z=ZY)$@=~$L@$`KpNx*+4j;>eJ=77^MrUG9H0pTVQtp^o(A4%>|T>;0Mkz|?*Cb%E`eEFGQCutWxn zOpMjGX$A?rLD0I~xw_e~-YD8NjRi&jl;iB3;Ix6)OksI2g+@}Y+N94$6@5+hL~K;8 zE=G^ow=)`AT$ErhajSS=OqAeiedJ&fBYX?zPesl|>rEbgq;cq3iZjekj-~#t=P0|& zZ{pL>y+9+hBcuwoD9Kl7E>z#dN8zUOW}XUb3b{FyU#&0lY3l`xytzR`sgV$M4a#kq zUU*O5(DC4TmXJzZ3SnytP1dO>+b5s;PIGG&l9T$wrSpYOgG>^UfqFp-I|6N=C(Wj( zjTOmtyChlXs|$^*G$&$2q_LJHif$N=s0d-JI5%hv98Op7 zb{W2bK!NApp{IL^Is}FfRHe$L{^CLJ>|*5P;_d`7Lqh?AK%77@8VW6~xS|9a%1`5u zm@qw?6vXB^R9Dr^pkL;c3~XX5P-_ymgW8s*ojLSUNlZe_-sHCo%J1W>%6GG}w{wBs zm4b-aQ+^*$ReoUv{61c)u<00y8B+p(*nlAP12sa3jj6LP5X}C)b`_{eu>W8Lz2Nvh zdVSB~{89A##g9=0dcpM@G1qUzP!|G93>{G{%_VG%%$+F#zmFHW>a-F zcKKm@@^Zfzp*+OJ$kfQi=y&_$f9mdFWMU0*p)`h=TiOXwAHHj+rnEE_pw{G&2go~! zLM$w$Je?q_o(gIvp4KKjrqoXbQTW|?-EAFgq1-6lZEftFdEEu5ji3$@gco}KJ)4c1 z@&}2FwE(s7_ZyU2@=BDV_D&E=9#$ZW2>|L$aPhEma&edf%($2-K>+AVGXN(W5Xb`L z;ROMCp%4FGKh%OK&?|l?Q!`!_F^OO6gQf(iEnHk2c-h$8+}v2*z^wL8=4?P79v(IT zhz$f{fl{zId)T=cxkJwzqWOi%Z+yfc&L&Ql4lb7Vc9h@w8W}^KJOOIz?-l*y^J~Lw z9sW^~oipo?MzWgN+p@VEIj{j)0c?L$NM8P57qhkf%aW!h|0w3*>SXhyQKlwr5St&~ zr!%xh;9r(=_(>jrfC;?;Ed>6%LePHuRf>Nu<^H$Dj7%-;P27H${~t;Un>g7U8@UL7 zr_r=`vNp4^cl$+7Kf3W3>GDIBhgTkIWo8~?MlKLRXz#PL00Ar@fEtjK7t8_eeHH)* zF95*L_9x2Ud*}xbQRqX&1@b!&0Eh*^t_I-d1+w#kxmf_5|KRZx<)3)`W)r`2`4>oj zwVxlff8z6_274zpdwUzfU!_0^9YExbtRYU6ATXsF^r;M$i0LnF`kDHVjO68cp@WX= z_qPpcF+o>XOH*C|$cPTw>{H7+n zP|4aFxd<9LIM`U47=5>DHmKV3v;BVS_X@t#yI8u|K>k$ecO=3#e`><-V80JLyf#L5 z<^t62ET#}MBUc+2YPLV|_yPQnOn!j)bA8`2n0(hSU_Er&w*9fhE#k&O++ ziJ4LaVq)#_pNQ`-YvhMYiC4+V-qh6u;w1RXFb&mMN;ykoCnF~hsM4}>Ltk&8s`UrL zpM(j`cjr~LcXcv>{4i%rh^e3$?{{+sfB@`3b|450{89R!sQ%1E)ZW&?$j(Dh*w)C? z-tN~jzh(Xt@ei~AwJIQh8w6FQA5ea=a?_ur`n`?rymCg)E~-Y)e?tfL!9g6q7Ww_w zPqq9y#PLGS1v)%IoAAeszo2{$adL(#o*;C9{+;@_%wOq$>9C(3K0k2&k_&ybK_9DZ z|9Gzc)P!GD;Q!0_?+y9?!u}Vg|E=Ud67GM+^SAHg9$3I%D#ytMv<`AFdVy8`L}e zi8&DJ9RfMQ&DHSZVZzqz6GfA5Aeu>H}~{0ZqVo+bmE+IP>Mp5gbv$gfeCU*~-O z5%U3pehvCCut`v|vq`A2skyVs%kuL><26dq*y)c@3!4h`odz19WoPAthGjT;pwl;C zFeQlVmoyiU^LrW^kNGvoqG@Sr4sl^qqgR8ty8xkBzDHh!?d-X6KP96?cc6R986?6*gdm0*<{ht0CIH13S^CJTFzmg6ZS}i*zCnpyx4-^gvI)(Nl z4TT9!{|y}Q-@*A22m4>Zfd;Hu!C=ro;Bc`2n*Nt?*#8#J&ms5U;)VZ_?r^bkfuL}p zFhI~i9<-x=NpnJ{jkuuGMt`Y09DfJrM@;a4B^@v;2L}ff4)i~Cj_ubJCkN}_brk2{ zLit~+F%bNH8j};q{X>aC+&@z6fPbOFTz?1UM_lxOB^54K5C}-g2?G4+Bo6jp)4z1u z-*gi9-@^H6TIet4Uw#YEa)5!q2Vtec1~upHXt=O_rZtb0(MolOWaB%bwbX6~EQvXZo$PceMzyDM@g?h$rf_Hk(ADDU%6+$(wE2`(v8U=q5Xhvu%Oaj1yCzKx9Si$mQP z1}EF6-b_6>o>$y@<(%VA>NZ^sOPQ@cG>GjOwRj4%Go~VZ1bj@juQIUbFP90bh|=W| zzw|xEQjxUfk)ju{-&zNJ2Ziw__hWUGb%X z>5?=Tt@vXVaef%XbU_pbEB+om0sN9A@)&~RG;|>d+^;)w#-zgDB#**fyy-p?Bwjbx zLUCZk+G4x7{FrOMJq~9Zuw*!)zx{kaHnI3(_aGW+F-0l0{An4zahu`NVc%dd=Aar9wSM_f#W>Mbyl+AS!aE5vM+q92t-9U}~wjk!7o zut5Z}{n?SogP<_vSWq_;0I3nkd{e2tW-Pw&Am+s;N1Gy(bsFdsaG5IP5PO=S{Q>^y zusk6a>QixSviY1KElgh|+Tl_PE?L$*c`R*qxhxZH7OnjeT{K_Bns54(U$U=AuO`Vf zQ*s;b3m4AEDY#KgX)7e$2tF&>s22M+hrnpI6k*OYdUh!6%S)sc^*9&5#X@bUJ83tP zlm7^kDDuSl)Do5_tmt#qDOhati4#!VQmLq$L2^hLEP3hDsBl5%@jzE4d1^=XW9`G4 zhk}=%5xNl4(l95JAJR}A(Hy0f{mJ zqDBVzv9GEXTID7XMA^Y`)+&*>i8Y6u?HE1xH|a0eZ~X&ybE4 zd#f`z6?A;T6;06upPSQIuk_#qZI0E1Wt>QF|Za7}FEa$O4-%o{yolTw6VP zon{{Ckg$R)w>*+?`uyT9)K+ojOHufTaC)IOCxpPH&kiI{q`4v(pY1a*V+Rjm42s@r z%ZnSS4(~mC&)CI_K-~op(UNhZVTf_YR61Wrx4}s`2w(}A)JQmie0=$=Y6T(Qs2?}c zXm-J|Zkd*rHGV?sW=lKIXFjJxlm7yrgHzBiZ01bbVPE>eJxOarvW|Xh=&B?-Vzqoz zX^}o>%Y#YI%RTS&9LUsi{6?}ANxrIdh%Kv=4hUFa+6AD{s+QR z_wS8UKXq98G@2^uhyawXv79uN`yIc)ri8*?<;08RND@)ENuEsDQSZz+_lH?g)-mSr z1N9o`!msxgc=Yu3B_dJVcJ(oQib6@btd}_W$@%U+US^EGXXt`0IuGjq=Feyw*k6CW z&5HKHDJ4eO(VnJQAVn#t*Ox+>7})|F27)P%Kh{;IM;84AQ&*dOw5!?}PE1nHxX~0@ z7ry8PQ#5Yc#o)ShjgsjK`@n$nHqIRR1&hvD!cg2xd~8Wb(W_9CueWZ{z2TF-yf#r0 zisJProev^)V<&@g5F+6zVTTKC=5R)@8l|~&$Nq|nbrCReMBHTI+ga8YTSEq$O=hqv z=vkT2i|&Bp0}?%crrP}mo?P?legt#tF~!F0jnLPc%(YFnH?MFf(uRuHbQLiMiK4&h z#v#H8sc@*WXu`dT!T=zB3mZh{SF%{Io5!v7sjq6?p=K@x5a!7;s!^id0nhMG#Lvtl-!+Rz- zlNAbkk#V!K&80g;0!ee6UUQsO=P)3z4o7R@^}atvSCt$_K)Yg;>@77q{B}H}3G9W@ zNt|L~^n-7_h4h~kz2A9fVqu7oHy=yQY3a_6DzeaiLuK%!ig%W8G}|Fi#*fNtqhy|j z%UHD&m7ZQ;3fN%;Ua)q5m?Nu?!WGAw21j~ zAaqJF$*3dRB3Hji=uobXgLxfMB#m%07xmQ~oYN`jwR8LBuK%Lw<|neeleQXv?=d4v z@&4K#jyYb@hR013hAdkM@X24T1Ul^jiPea=9dH4z#F%KsL!OfxaCQ zctyVpUMkq~5sbUW<&x}}^yyu}G3l^DlU#I5n_0T*{P`s#v=mKTU?YA0muJXv+k~0) zRQ836!$kv5C(N3U{tsQ}6f0`bChKL}wr$(CZQHhO+qUhsmu=hTUOf9xCMPq=%-wg@ z7oE9u~6}RF#PL6ujgH44hC*-lTdmX|u^_7=H-K`Ml<^nDmk87R~WjRd-j zpmq*-%#W5iD|AD~C{05&ka~6^POoyRr#=5RAFm;lNaRQ|A|?_-k{4?k;KC*^~=TEGKn554!u3KDA(y2SYUl#((v6FH6tgc-p%5|Gym4}X z2m|anxFgkw8=uBQi`l^!O6&s7?D4F)gqB2cO~>CPC5YoEP9uVRx+3L+sDxP)_dKUb zBaZH2q(5@~uvfi|#Of~z0Iz7`Eh&+Hvq>M&Bl(TAPQNeNSZu=ci}=cAJa1}gs|Z(_ zfp6J-%2JX}sa!BN6rT&GUB0|8tk4Tv#P_bCxoY2YVlsn{{vCrK8%f!OBh`|w*cxha zxSxTk0jJGhmubLG(cIR1OwXu-U}ZXr+^GJeD6abe^kDA=?DO@Fci z!!|{;5PAqs9I0{2&TesRayNHN?6fv+@0|Tj3|9E^?oRb^f)|5{m?WEzz*X_nGNPxF z(IeZ$5?T}fhf*dKBl%%fpE&P1DGNZZGcy~`G|(xih_>{+x$mvt zMm<~E*e!+kT>XP`xI9g!G!sd;y~VVf65$IQiE{WYbOLM%X$a||w&%4sZt*1gBwPbG zPr^vri*ud6DdSgSC+lsk54mmL%B{1zCf`};d4TaI zJ@|MKT@e;_BP~&KR5pm}Crka{{VzejzdjCE^jk{7OHkjq)fY#ttvh3F}2nj`H&(QR&2kW=Z9kr z2Eh^?n8U~9N3Y(tem)jN6Hox|h|b*(e37=qO7bd9P7n?_1M?>Pa1?OgIFQ^AOV?-;h>YlRr2$;g9PK`VmwEYR~Tz3nd;FI=EH?34TilU&O=12pJWLbGF z6iQI#jBMGu9)MUP@A)DdmSyKmJLhsPp!^Zz5bZ$7LzN6ibCeHV`)R_OV6r(cEJ6`QGAE=ltywn=IjUy-r@|jL3JZiT(tC8=Gy@eYn>oeJ6x}eh|!DS!c35 z{R8x?lyWpe5NR?9y*LEG;(2z&#$p@A-RCBNLGcyReKdPDXHNfZv^Z+WB~P^b5VLIXxfZ|0bdF+Z886-vZXOG-X*?wLhJk#7Pvgr!bAf-*Vi9?s&SWgLCI`P&70J+OFtim#UwHWP+2lmtqT&uvVK2VDq)-Zk zlMq8HJ{jR(hzEh(NkqAx9AfL9Su5TsW;jAo zFfJ$1H2TkR7I@AA=8ypsA|s?3;+41r*lYLwM9zaPvFUouA=yXZS1-4V5-7z6N$|dw z(7+8qlYDic%aqlKd9^HLj>__^`|!9aG(lp;hn)Gt5bB+pnSWV$GhbuW>*H96(nPme zfq9AhGVGsP2+d%y`huV^E`Sgj!9j#Hz;H=$(2sWH%lcNP337pgK`bLuvj+tm5_$CZ zd3t>N^EVJgwNpivWI`jfksbL7F5Pd?2LDt*Gu{@Ks@9r#&E`aOb zdU&&T^sZ>u8Y=dioiXib8sN6kISLg%uirkukM6t-+=4wvg#n7c)j?|l(aN~I;0-RMG#G)cgj_htSyJH6Ii!lP5aQu}&d+GuXmt$o{y?cmT} zT|10#etP=YI~2NFp4^6_R;?aYqDnq3onI|mg|Jns7HQ7?ri*KSI=Qy#oDM;mn%W?e zZkCBW(dtO|CQSXa&(GtO83Yz815KQ!-W>gR$|N!RuVcRy8d%qP~JO_ zH*u{lQsj5&qSsU_cP=W;ve2lM9Qve_{5>+Iz$I^@(Y46yKx*)PDwM^yJLsW=M3W9U z_pjS;jUj{(QcD0vUD0TIe_%NQ zRWgh79=olND&r!am97S%)XFBcs39OkOzQ*EmDHHX^Ykt|e4?URkD$GGj%5h{$T0$< zXCQ%7RRRA@6H0)7eu26}=#h-U@&b6a4*)!&xUA^-4kHFPW}oW;=SmXz$&?^XGs@5s zntRA;K&xr%cH7)_6-0J`r29{(essajMp+lAhlHW7kk(~ zEyNy4GlD9gMrZ9a>~ey^;vDX406%H007 zzLMT)YM;H1>G9(R5y^mXDCwTCJ^E8N#YJSRiuGs(Ms%>-kUBt?q2ur)^e6L3A>=x> z0I2hC^c1csi-H6_vBRlefSRZv`u+_5aiFLzVHBOP1Tz~pV0V0A6+EE$`Ef!Z%fcH3 z09+a(uK?<(?VG>x;zPM}i$w~03;F~H6n7JoZ<3)>?CluJDZeOIGiM@LQ6;nQeyo2o zSvAXs7=ZK5sPHRpE3hbEPFPCEa&`66DrrMP^{N2iK)Yc$u(!BgTFPdji;_ttl8p)( za&=q(vT%QXZpmERnYCnSYO9JgG)$=6fpkxemaS~T`$<@R<>jznWk!eg#BU$&ps z>jl7+k7j40bZgcnR?33r#9D$(jI!Q6h8G4ne`Tgq-hn0Ey>`{s50fhJ?$EY8T0Ua2 zysC(=TxbCP;l!tbriqES)Ig=Y4Sx>ETO%qJFiA(Y+MFc~jy73QM~b3*2c9a3nk=|| z>snkB^dnZa5xY}?&hIv+_frzN!O9=#>ql@*D#x80>EIiT-iya>sI8e4P*aZpbEdDUC`8VOH9#(ac?jD@EawSY^ei0o3)YBt<6P&Nti89VKHZ;X=J0g@C8GFC1^*^??NDIV zCZM(HJ0|tWt2o;X#exOsN%ZnWSF7Mqr_`}&gk31NH4l!?3X9zX0ahL!+Ed8Y3SR0A^A`pdky9eE@M($ zYb)|6&tbT$&&fH&-%gi4W+WiJi@PUo-C2>JI@giZ?F4j=-^57Q|DHWLAh)BW4F;tS zdtB27v$_svFWIBf`m5T%3G{HxQ4#uE)h}w47Afa?hPI^8g;^ui99z-5mdM5!JtBP| z{r=hS3q5M3&zhT*GHQaIj!M_zZv_jop{Cg$N?M_6!fvV0o|WV_yPyfukwV;kv$|)o^yCzXX&%K-P`+8th<7I zqX|j*YH6w2f;SE1@0VMgyJEwv<*M)%tWVPh_x_;7A(6NdD-(y%OOjaD`|cs2h|rr^ zRf>Lpe*pnVb1E1V{M#?K!X{aD zs+{n?5dKx(FqbaLZ>mPUnM6+V zfNjpaRr6uO)s{Crq;*hSA=TL@Ntf(9;)qg58O5v&v(g=SAB4F$hmH-wz!_Zg(&l~> z>W~M;tCs`Y9XX(@zrT0cm))7kYW#ioz83WNvhtM}W*8oUwcdMUl0n`H5b~SrFQ5&1 zYkKM~l$(-|_Pc%_rt84hV_@=PuE)2x2g3vX+cmHjYn~#RUS+ed1Ry5couW>z%jLM< zxs03VcCoxuqiNQd3Qxy8JUSt011q>O zsc_IRDg0MQiV#A?5T$L?<-3_gM#wJ8aV7f{^IU~$^i5}4|NeQwp_gxeko#EJW+zK9 zsX>kSJK%M3HL`H`CjswoNLsq|aD{vX7hR(PdUGPl8R5e7p&MxuLm0hV7 zI8vc`k}3_utZUYnH`3c7spR6Sj$L#lh8~Humz~=pT%ZIBV^7i+a|sKfO(!$VN=i8w zqt07oUHNGYwc9n8MoceQN-f6<>d7?^Pi}9vpOIaUD>VW4NC^TyBt$UCMBNv`@ zqK2Nbi;tnF^ciqyrq|FlxD;Iz`(mr(kh)TDuei2PHqC;0b5k|`mX3GXYuhUR?8^a1 zOZW6+O3}ErvUIOw7sw?gF{x1)jFAtCn^!%2{bFh&!V)j`T23?v1tzpsq}R@FaY+Yq z_Os~Pd!_5uGFmKny4sKyRN^=}MzpOVheFI_N&U7{wj#zJEL~tb|8y3(ugg8s*Wv;6 ztg&!4-Wn%B3zjI{ENQ}pvvBXvv#JoL?-Ef)7)Sa7=xj+SJh>b8Qwf1D`|luZkR1lL zbgpD|pxHG8#hc7+HQ|k$5Ez(h0(Il|drLtV5&JD#oFcipn1^(Bt?R(O*|E?mBS?QG_%f~M zTZJi8>mxo4HX|k2Xs&maw;x9tJrV9<*8-Te+8ehgYF{Fr0C*{4HngYO;a~-rz?yY; zh5_@XUGjnP`X-SKj!JwRYeDO{MnM$&^}1}$=5q&X-|Tq(<*JX)vEbXs;|^-S7F8hT z%Zg&B0_!R9FP+wy;Z`Jiq?pT@g&^-4=NE8B26_W$8`Efuqf_8SEp9BMr0b*;mWK!cR|#r!<-*WsT4b2{;(nyltTU9Q^Q3)xGFB2T8h};l{YmBhT!~E@b%_d| zaT6dJd1e{a4bT*0*0<@}RVv?N|EW5x# zT;Fp=c3R&6ns}?{E3v*i8J@qOJ3mXD;xZUzf=F4C?5KmB6gH6RUXK{fH(;>UfX8x{ zdVdexD}JTHFjpv@td(QKX9^WhcFg9gwBU1Ygzf1Z!-H{22ZX?U>Uckp)++rW&Wf}2 z@2v+0W#~H=9wbB0i(30%H~tRWIP_};u?y$Ri0kV$*tEi^xc^1wUR*+=l17Uk4k!Q% zjzeY>-|7Jb`xJDdecCV^Z-xT7x^d^o^fsx*Lz_CF?IPkj4Z(~SUl=561r-v4XX>gXe{Re zXb+b`5U>K3$N-kmSFZqPqAwooZmmHzAF9jU-}jc|9%44gGxR50NN942J|T~_y3Z}=c44-Fq>5?|7(v$gNfWv zjgnP<;cs(MX%cR zydc@S>9cX)%dxc>+e^RvVKEVkG%}tbcf9%D)DY=nAlBSDVoo4gL~3exSdr?f&&$@p$mxdAqW); z)Xo7SK3+`-cmOEK!q*lsLtDiM9PP^ET^^nngb|lFb@$P{D`neW^(^t_7gzcR*$(?z zVsAJuU!VS-{(If1ur*}j=YO5shJ{WiiiEL(D8_~*ht!sd8fZr`W7U<~n_ z5cROT(*Q+Y*D4gy0tFm_=m!6BN*D5lmx?-Q*EKcV@W!#=PHCQ4AgvI<3lU8~zhkms zt(tT`{klonHu&@mJSIrtWmcNp;Z8c*zSsV};)Wf8&_mr7A#(npKL!e@V~)x8*wzB1 z*R5c{9jJ+}NmxVBqX>NiqN)@yd%v5L6KH%;KHg7PmmY}f1!9ESxmzRZ4P<==D=UF~ z4#(@YK@1)HU*)vzW4_A*ZP6*YA}ry-S;II#JOOx7dtLVE8wD%f%sI&4*0}`ufJo^( zlNK~f%QiY)wEJchiAZd7CcbtKxmdfiMY&M6mf%p71JM4zs%SwKi(_iGd*w!2SyAcG zN^p?UzGvY#jGik7T+K9x6+Wj6G&KBO&ovbJZ(r1hoKfSIj~f$_>;e(dHp$l}Y4#CU z&x7n^FS^@IaR{#fmg{UZOYvFS($w^fp5->%lOoN7lL9(CEhD+=UM94%hiVp2$cVr> z&ez-X;F~?LI8wGo{nkaUCs|o@J^b(NRbc%5yAiQBP*?G#D`Df4xeORw?WMQQ-;!VZ zRfx1WV_fe)`xx;7U3;C-c_!agwKxfm$L2Mq;f~4DUp#2`coyGU3w2@5r%;!W;>u=X zSoOf^)1>hjmnOjNcrIS8HDI88wf$IB%dpiCP0AEKU;>%zg?js_4V!Sd8Xg=hEjKis?|8t$5tp_=4ZWEunk9|k3k6zT<$D`n7#Y)! z>X`8n-@Oh>ox`uEPJ*lgJrgkM>c`4wJ7{+$yw=2C`~mj{R^olUZEr(S^G)h>@}W=Z zE3R1}SjGX)_EZzIw6PQSJI(IDa=N{E`pKYkBk6smr1KV@p6TY^=Hoz&Xz3Ae+_hkw zUxK;Cp@a6GKnbPxOqYF@-Pf5>Hew`$to=e67FuM&;}P>wotcabi5L~ghYGs+ss%vnrJS^oU&3u&No#%xA#CYoy%g>sjap|XZJV=&v6 zhgLE*Hk<;S8iVW)0Qga}u^>!9=L|dwSziMv@`^{=h>#5`%UC3s8EI34mGnBm#U;$* z1`DvUT@mLmlfv4K6nxYbAaS?zc+7fb^$Mw0MbdLzWGS0&nI3w;`KtD;zSin+$X2o* zSfSNnD)BT)ku18BWMiTApJd^kvd<3tT}I|av#otxW{548gGwp?vzOyZSr`vrbNtG) zPaD3Nz++2in;=3*JqYZ8c$*FQv#f$01&s>km^H6y7g2l3TvRbqRt6_DR(c;HHqypK zSoUXK2eTM+pB2-K_gogB^8_l;Z%(STEl66sw{Ko#K0RJ1fB|w{&cE_ed%{<;-I@e+ zW%2lIwEi_v8y}Pbm)NV`Mc1~wW{6PK=IzFcQpSQ&cje0N6X&m(w55CEET|$E7D%7o zG2rXFB$cy>a5GR2j^G(}Uoew=`Lf#}DY^Riy&jV}8GMzzQ3l0gxNKq?OyxJs)5- zOHZz>zwDc0L?tQ{3abph34@CzFtl8fy4~{FoAk}a+r#f6HuD#F^A6!rygns+vlhr$ z>ChCd!exsOPkjykRMlaIs|^F9W@jV-S4UKm)s=BoPH7R9L@ba6n@?X$e{;X0up^fG z^)kXFZ5gF2vZz&tHq~R{kaS8t&OWX@VN;##hjpqq+?k`8-l6_xeRM02rx%`QI%4|Frf0 zM!Nss+B!Q2$N%6eYt%LEu_qAy&g##_|kHfZ-Se~w;wIX3B;k7d1#8l{$M zo=$sNACLDo&YIlg<8{go1`m~qTCTE3H=j(Iq-LM|SS8m;dDtOar*)fv`p?Neety(P zr(cb3;X4q-bIh|?7@rUBC99gI(Q+sZmrYD&mTE3RzaPvzvT3rKZD2Z3G5-gxOjY+M zTEGn*&}XpbKX?i%;1L(`c}V$Jay)1JU%LZ(X7s?L{zm}QrO zNNVpRX8><&v^Cjet5g!(1;`A2!urt%wfd&NqueJ1Z6E%e;u-+n=v@5EhR@eMr_CpY6Ykg$ zP#d`W9Z*zvWSjp}LHsb@8>oW{YVX(P69-N~2T#!fk#M@5BR|;-U%7~45ymIWoPgGs zMK%x~5rJnAO_a|1yCM_emxdOqEbbo|R@_%k!A}Cq<=Y`Fqxg%w3N@`yX}PG)E~sSyyk(QZ)n0tP+R=<&dgyony7L9M;t;g2lSQY-ZAs zd&=_3)ba7kKC`n&H-VwLs*ErwRMZsscXABoACWnYwrgXLMqY2n^i&jj6b|Iw&EXjg z*z5Om30e^iOo9brbEgR`cv5B)Fl=2>YYX$d^^D;XoIDUe&RZ=G_-h4~!_^EUPLRtL znfC%frgOM4En^?)=nf%YHXF2FHY^$6mHQGSRhPUwiI?SW08=3eNpKB*EUe=HgL=TD z(Ub0;5rn993D6LWOFN_onY{!@+J<`LpO12GQvFN` z2MmGk8DUk`x}?>wdrTL~OU)y`{ebgWF~8I@G1Mc|iz`RzDoi(1?bJ|3_3(OFM1`m5 zr!z@sjHijzR6#crHF8>Gvq|B%EU1y8mj*9ZO3o&s3CvX@mNW5`|ZYjt=6cXcB(o+oKMkyh0LT=#mY9(s0} z;dPLenmT&Fo>6KzX7}7S!5*v5c4V2gXAg=JLo1{<142HpBplu# z82tLoyfI}yk4CKPsxUoKY^?CACWV!FmbKp#o68jC(;8WP#6ccsPO{1kUoPSv!9vjN zgR=PovIzhR;0VviJ;WvrzTT#sGD8X7CF&Vq=M6Hv(YwKnp>oL+cIR1$m6tB}u)`B% zpB)Q;7siVZ&H-~OiwRKIa#HDmnr8ONxIJZeY!zqn{!&AMEjSBV_S51EFYS|Q&r>o(@xWKz>8c?F`c#|O z8~SyE`(X<=Uz<@DZAta zjYzi2JRIZWYi%!CUcCIgO5G1V?@*ozDWeH9r49BHf83B`qKn;d6qM1xT(m0+G%|oy zc&Y-XREPnhZlvcPZa&jw$)0nQ@poPFinZ9uw6x`~nMtk=N$N3A^d&eJ$YvNjXTtjM z>)mdJc$6kLKX3(l-LyxJw+kO0@1`2FvKw|)l>B+#`15IgkgBUxR)?NXzIst2g{@y{ z0uN)EdF0$fzt}|m91>^mw@cW+u|LJv@td&xO=cv4hqUC&zsJ>)wZC)hEvC(W!c<|T zHeN73gz%H@z*1Qp;Qixe{z@#nw`bNb z(NIM;2*(O|6KLa-5)sJ#bj}s{iLYQXaDD@4uG-@V2v>_ru$b5}NZzbK%Q0&LS73P* z2R^Y?9a5*i22p`FAWb6r-12h^v8)?EGft28obV7l2h?-NzWMf9;|aD;Kzf(H4oAl_ zfTz81lu+R7Bw9;$L%W0Y;qlnle_aWvx<_ub!^6rs?r5Q^n|y@B1!ELO7E#&qz6Y&QHFj|;A zv@c#yQ~;$ne7X`6wovN}jHw&Hlc@0x84&}+1`{>=zbEB0FTinf*oFiUby>64EOii2d zBPB(z@A2yC&iN`@#M*eG21-Z$?lxA9UpI1ISL#&i_GZAUz&hao0*>|wOprOTSI@pu zt6__E!YY`NR-bWN4=TfO0ZI(K{}LY$rdo_7AE5nkY<#~xW_4E%P0QyG+E}}qLS^3_ z+3EK?nOe#`k|&HUP0YWyJXP#))nbe2>nS-a zytoVEzMkTE@1p+M{nj|LPgFb!>AXsl(j=qsyF&|ubsmITrwTcnKxJ1?b|VkW^`ORR zItquaN&+2;h!Ji_DPG+An;=fO>GL!UlLmiirHua({Ai4K>OzQo z^dPl zIJ0WX5?FJ_iEjkrS=&t34paQ#zAStI-xJd5>Zd2BU_xtGp06`l zx{&=}AbQ-oTX!EWqiv}C_C>|M*X~hLp=JV$2HW5SL639s z7+K%mA@fT66>a5nrRNEKThXR%8H&u|Dg^UxsG9Ab zCQh5qOa^y`S?+3G46$7#>{`4uIjoq-jwbC$Yqk!T<3CvtzUz}OUu6*K+Hg=@j-Pro zK$U8~Zn5D?N1(##A)fU#0Ox*=^kasz_vWF!!njdJT;PQ9J=|L~_`X``#~(OOK!qqW z6cWU6e~(puvXP*mY$Vo>0QU(tXA@4p_g%1#uWKk(Mf|2KgKZO?8yf1;@zX?C z46)^gry5dg?B~PIG|B`L+;}Zga(s4I8w@hXWAyQ}q^}OwF#D^f2zUC?V;k?6Tj77b znpXYW7;Mu50bU}t%(iJIV9)2im0i^1Pephrq<5NT2*O&3)B8BIQtgkAUsNELS$0Zn zu~;l~w%-a58tRHa(}HC5?Kbu)q~1QU^LTVt9{VX~`zBuA1IM8?F}2(Dq}7@wzUdtK zoM8Yy^nh|LCbcH+ z>v_sIo+70%VS^wVni@g^HE0bDIHh|dnkiwXw|kfj*4i4P$ZVGfEU!vz;ADeen#%{P zGK|%#^52dQqRER!Bu*b9k8osdRXns5pRd1RS_Km~!I@rL|dv`=*4gYa|N??lCv zRIPAH$T;h$^lybRpaq6A-a!tj?Ibb=_gs6xrAce)F!Mo zSep#-j%qnsB3SJL+NB=UHa)V{IRKD$cMZa8@97SV>g^MHy}JyvIQD#h)Bx6(OF=IWmEI8y|A=5*(PGI?OopFebQGc-RWO{-nH$qM|EQ}Rv>u&{>J{Hc1-h0tMDF{ zkt57&5rtXZAE`P~95|+siWv@BMkAbxxy}g=n-&c68>$%MIO zNSjRZ7-c-89IF8iKLO_nz*vfM8^|$`4gQedHOy`Hz~@sm&V4TO+s?m(p)Cn>c!|jf z(CQU{2cvV_j&GF_6bOQfh_Iiw+|}Ky&hc%<^bjnUsi0;;Go&DbbMx1yN=Pd2dfjx! z!X%W6EltNGdOGj#$!apY#qGm>F)P}lwM=PKz3K&ebn(!DQQ%$VOOMJK_2C)fA=BKz zPev>Z_8m;8D=R}isp;q|&&^GZT{WgFf5I{u`FRoOT@JFU_`1h>g=bP&8$7|0iS=sN z!v1Ssv{%4^`t!LvZn~RipA^qsNa-u-*ScK)=G(-saDQ@;zH)=WK+;1-dBt>>;F^I6nafpK7bILR%~*{e#;< z&`6`GA{iXoi)0qRdEb(!wWso1(mWq^>(C80)38vK*-||p(~-que0(DM&^PqXjz61Q z=DW?eW%wCGt5`S{C0Hu5RA)a4l^Ym%44R7;)IvWO5uY%QQ_?4^nM zL_?h9@8#WH<#2?dw0b{CZ6R6qF~ApFFl{BDvTt*@*+fbI8jpld)4R8bZp7mikYIqU zxaqR)EtDM`QL$R$>Skr$mN|zAD@zrr>sGHp!Zt}|S;zezN9F@n(OPdsj}77Qj4uEa zd*9t6k);WCoKk4KE3jTrSTt_RorwpIlE}jJWl+2Z^eH(SOwFf~zD+BMFXgv3 zbXXKhYI}X9s~q#82~zMd$Y%V@Stn`xX5&wd;tjTMppBZg1Q(RV#)1vhMNSXiSUam7 zrW&kG2Dxq_wIEATriDMOPNNY{leyv{pu#$teNs&JG2FjxJ)br4I!%XhIH2v3M zhW?P<^AhyIvv-2EXp2T~v22;X6^id;qU#)I6L?9cei{0)W9afPe6I_!7bU=D>L|TU z3k2Csm2HBqY!u_;Vo^y6uPlqB)-Z)5>{W=ESF}Ob-w*==CJNr2Ns|K3qEcqOO+PiZ zm~iLHrwV51oK8mRcAZ**g%!sswQ%1wX1kV&EAUOCH+oV~Ckck%5;rL^tFaKV9Hi!C z)3UxK-7LDg+GQ}@%D7=zucDSbuCYp(AuX8jSCpoMzHgmUhAd)|#dWmeK-*zeZn$o( z^|r^yqIZlk=46t#X{@a#?efEN*^b4kanEG2)uLPTCl8ZSivJn`5z662A3jPvbv42- zI1(kzI5cM~e?2ohuYFu)a37>J9<6azBYt3wkThK!-M9PoOTH3_{Y~oANQix1jxV zOJ+ZEtlRw7G6ZUw!TR^{ckMZy{{v}s-<|_q7N5oL3-RwB|09>ZI!%nnQdhG>R6ZfH z9MzV$7TQmzPJ>ogfx3F}5tg%5eLc>deH7d6bvX^1#`B?Ue;K}dND#Onn1An4eLIT5F_&WdI6Z$2YC2{7Wrf-f zI&vhp{exkP^zfgY39;(%a@|mr(Ut21%d=rMy(XOE`$~Qh-89Rz^|BqVd8XPpU2UUA zy!yBm!>YK4+r3=dwD?4cS0dpOokSzsbd&+!)ii7E9&nMEY(kSBHN_R6yyh|$q#qDt zyrctJJz~oRi#Pt&>atE-?1&#!yxM5001^SbEs}Pe987uonNefSrm@%*38&4kPosW; zgpnkbtYjNHw?>^?@6R^CQA7%8mr3SEc&;^|nymG{I-?A4gjuwS)%`SgGupQ6;3wY31ZmPH2=vIM0HPT(p)V{IJqkfoDny(~*W!~!mu71p^!a0tX3eVZ zSmuHrjX{IY-a(@9=iWkJIDep4Z;M6fdgsUP;4;_aQKTJrrEl;Nq7x$ru$K8XqVu_W zjM35p7E^(cwl_rN>OBetfQKVco85rlM<@!D;rB7-UX+Rca+O zj{!CX&11mJkdU&7g6;k#CXt1C1Y&*&U#PEEprA4(~atQ{5aUx#QN5J&;e(c7P@l+&v}u@*hAK`Fxb3Gtx7X)w$J8 zRnS|;zvPhb8G-LUg03-JW3}wE>JthaLGQK?#UB`9@Pska{L6W*uYqU{ytZzS&#~%* z!)T=*6%fz74b7q-B;=kxfkCW}kzI@zKYWHu&y9tdAh@$V$FK&8Ab)ms^$D)f`ie$P zES!8a4X1d7lJLl-Lg(5&Y}%t`j~f)DbuEfrA!(&~C9F@-?Q#^bzJ6hcF#4>icm19F z50{FUryU(B@^$HNInk)WZ{=a^>vp#b>ZgB&*nd_iLd!)=Tu}|6#9o=6O`C|6czf{U zhH+3!hM%4;(Sau%YOk9FH_X6IGbj(FMB$PZlZQRmOG_%KOj`UHh@ZqF zv)ipi898fhEan^3UftZpl7MF<`0^}uxYp!N~H2@o|vwdeCHWqfa7H+CTU~jwm)8qMgbRn%x(#L3SW%UTO zCFBEnH(8d=ak<&5$r$qclOGF zM5s^}XqpW4S5(m{jsxgSK94@+mcBhJP^FdBLnA`yx*d@Ob9=Jq3FOkQ8_u}VV=cN( zdxv&|v2FxTPKr85@WYwcr6e6073g?MIfv5(CmPIi(BLx3dL9yCzy{Mj^0Q;klt z){#La^SnS(uxEu5&K5J&9FNPn0SP_18}Vr%OAIEWozIO*9HvsM#bc{V18A;_#aY!j zU+ikB49PQK#Hl$JOj-{T7-j(_-_zFTM16{AGE zgNL-Y{bN{)VEedl!ME!z@Cm}TQw*BLfJKZLTj;`LTw>J>NHL|m5#O`Wv~(ijI-|V` zR~=us$>-Nf|J$^y53K8(&Fg;(bS zdlM^uMn46p+MXIT?WxbTCAHt#F9-%ezxPN7)|Pf5*|6jKJbK#(P-3Z+ZIU&k z0RrdXNWa^jopld?nR)yu==;3A{&LXJ+he76b#1f2U$!?#N58?poZOtg8ltY3HEXF) zsh*^vhdPnY-slMmzQgCo;p1hwyvCn#TDe}{2vW08Z@;>EY_My;{Jf*5)34kZ&!kOd zH&s)a^veIMw88Wwc9XS1Z^hlMF+GbGtz+5Rky+}Qb|yw!m+HeqZL0$Jdr&@)DY5Tz zD%H9^U3Xfa+@kPwv%@4Q{oX6rlEp3w<*!cl*Y;s<<7)JJM;$^z20~%&Pci-AoaE(7 z4=5m&2a9BERy8QC09^Iy=RaHSSAjrLuIKDUiPZ(uz7cu-aPA~)%xjus?0Sza$I9#$`C*^Gcr20Jq zK4={`a1k>AaT#;1y!5_+)cJW`_k{I7GtH5$Lx2qVLqWkh*JxT=u*El6DdHI7m~ikS z-yv4;&Ge-{in+k%P86#5+D4;YdcyW6p2V7g9Lf&P_6oG>s|rp_cIq+nF2MQk{g0v+pTw|^9>u8x%?gQx)d=Y{&o_@~*v|bFI2j<>`Vw4N`)tVg_qleO#VJe+poF%T` zT!xpAcPim}P=IkDKT`IstuCk0S)BtBwQB&fRVfDSQ7;`ITwdPX{B`cgL11|4uBPbg z&#MpiF{yg*KXk9oQd!AZTg#BCrqv?nD_reZThmfL9Z|ER-D?NuFT@pajbF-D&Kt*c zboHQH*CFZG%p5 zC3Ps*9LrDX+Ykx=!|TV9p$sc0rJ@^tJz3zzL4a>484VK8QM5 zb@1q6g_3@jM@o>tKp`tm<9LDDNSNOZyEFLsJqY=~+<&$b zjs7H_^W=eHrdETDwuKa`NxFn5vtQ3CT0$np(m&17pg@YZzTL$c5mvS+%GI)?Y`Lto zqA(n5>nTJa7DrMU#BWf)v$xyk?~VFw>=JH5_I5);wzGGQig}B09k&gLlYXFmJ+t4UUHrNsAVb#umfrf z2s^ngiTU*}>gJvj7?03Om5v_imY$-e;{MAZ3Fxk%EcQ3aL`RQN3h7hK0Y}Zk6NwN7 ziv)v+M8l`qJ4T#4nfpkDR-zg$N=6rzH{WTKBKzC~O1HEvv~ktmqTw+43BzjUf-OVz zYnE)>tM;4m5$X!$^e)154?4R`6B5*cf{hCnV>awj*#n^84(Oc^89p-3xyGV6fLU zlXGtOe09%1D?)QCe;>A$e?Iv0#y9N@ad0Qtn$})JKMWEr65}{QV4Z#|;uf>f=ec2o z-Wz;YMI}=fHPi%%7X+Xmh&}~Teo+e`{)*fR+EDnxuOA3%S4NNlP4;rpGhHGbBmp(h zQ1X;#R)*|^Qn>VZ{?XL8ui_0W`-fdo7QYr9A3jQ3MisqSRy8$j0!XlpTgRYy+jMNT zOi9EzlarcoJ*%AXXhL9@2~?7nnuC)MAWyiZ1;^*C9-Gi{xB7olkCVte5s^58bJe% zRF;D2&Qc7=fVv&>K*EGf{biJ>Q%-3lR>L_>VLc-?)v^&bKaLkN^9)^Ost@^X$m`SKvKk62;g8z9GBzFG< z8@DKnQ~xf!qW#QL*mhWje-jYTc*7oO5r+XW#%g-ZWCW)Wl_BVQ@Wvo%=SER#_g~5D zW$qVt;!#n>of zOsJk6|K8d!q-7Jw3x{D=c{KW33X_u5`WWfrG2^tVLaEO5pUGchAid)(71gy@fzq}R zo4i57xPILCt8Vfml;X`2N2Uj5@yM`UysrPQ?oiKh4RFbY3FX5DnT%D3a zO1`Jzb>YD3IH$eJeY!PY*n<$TTt+Ws$C=~kCC4f4g}#4pN0O{~7>)cfdavm zs$BY)y5a(QWZ zk1r)UV636ML#J1HwNNv4CXmuGeG`K(l7H2@qk?swtb(|rF&!L1Kg+=^_EFMLy)H{v z)Ta0&Z%@9Q-$p3smi6<>_OOI62)e%O-r6O>-#PW>qDUH!dT!vKk43VvYf=)d>nFGL!6-7k!xZPCqQz)>cf1C#Z z({+!x10`PRG$|Bra>K#vZ0M7=Qq-ZmTtOu9IRJM-wXS^+wx{YGg z#9fAUC(Z5LAP_?lL1CRpgdIqnQ-i1Jp)>3$a_s^I1XdJAtlg=)LNiOHjBm7klI+t6 zpH5U|df`Svy{+9)=w=($4pZ1l9bTN`l-C;3G;oKnlqDfBGs)aEVkxx93&KupUJup~ z{nbOhI|Csk24Vs8j#4HLH<0FfXM^iRI^m8lF5zJlB$I1FiQ^h>e?xk4-l zrLlr8e2Kp!7raTAQI`G{i*^*61B1Y-cq%sf*|Sru-|{0HJePtaJ+VLld)T5N>J|>9 zSuXE+GkGt8&`gtRVV^A^@|8BN;!3VNT6IjGiOeZ!)CQJ{^jtMBxb4XX41RQwRyl|{ z$FoeW-MFjxV}GD2=S80$_YbQ)^f#r|*Yf^6h9lHe;8XSr6lu{qJW276sym&0=ZcHM zirQ%Ho4}}<8yrm}zrPA>c~7+G<1AkJ59a~wJ%NyPcl=~D^8%!%y<5EYnT>S%j+-{1 z1bI!^zO6J3`jf8VJtFz+1x=x}btb?Z0`u~fyFNM{e9v2Tr32yWiZcahhBk2WD-MZ= zbDxIF*V*VK@)Vq@VP9JonjGwubg!6E%Zu7|%}cBI$bk0m8dQ)UVj(e{q87zQc|Q6P zSErYeW>34Pc6*xO9l?#TMn1px}gwOiX@)uQT~9^wJG|5a{h^ap&@dx za|2)uBUlAk=tqaH%$aaiv-8EbfrvAlSa{NbTWuh)NG15wurVvO2Dzc|MG+oz^Zl{B z;H$R5%PyO}KJsQ|_2}((ET4Z{#Pk7*Zo}?q9q9l02HZ?wB|r_{(L**2ZyFNuBAyRr zXq2C$cRImxH(J2VvfXvE1t%S4w1BTu1HqGA2Prtr*p^C0;n~AyZJVqHmeaOu7H!%z z$;y%qK9yf{NSEpT*Am4eZApdP872>G;!EDi!lk0dlwGVGIdc?N2V&mDP!dw_`go{Ts!Tf(z0%LR+w5g zKY>qe*zj`_atl-N@ETc)%4Q}5OlnrY^ircq6T>HyZ^{ir`boVLMtg0;I8aJerP)iM z_U>X+4a19VqbtrHUe!NUdg{3Ko&NdWqIrTn364ETDlWdL;!$=X`1~WDn+g+Qqxr7F z$urR5mja&vI?v3tr8+LNK3R+$)Gy+Ni=KeuUPPw}P!L&!8g_+3=O`@9U43Lmzj@68 zTGh|zFI1%cqqbPsw16GzP6Ir0NeTe9{r_+<&L$3w`~2gUwY3^Mzi4zyq@m~y4j zt&gj(`R`FR)BHO)!2j@kb;W7IZ!xdewM1WkYVjjiLFXK^v?}rb4b4}VVcoP!dS)tv zv%rPI4yILdhwhRduRqj!kd1m|%VfzI6&Rg#UJevq#*&sQmS@~s)@P7L7Tp_WUKf`& zP}H}FRBQ-eAw}%7*Kt;L(ZnontG1thD0Dt&4Gok&^Boji)wY9LwelRI$Wg9ZWZT!> zUx}~BdT}3|=iYRbSd2usr_j>xykV3Wt}Ch7VbGIWJ6yhHq*jt;koa3KqUoR|b!^s( zq2XR3&R9VMEsx)x;>!JeGU`pOk0T`KSle zpLzwvSLOE~beBU#>P(?Gd91Jqe^ESfl-CIxnbB;{%urXE2|L30yg>MLRxHPg7|#kJ zDfyQF2x)fVy)Mm*h9T1W4Tap(mxT&xKVu+7h3(m%tF0I4w}zJ;%y>i*0MmoO7ES~k zTDPuscaL2NrR0hf1Om9%e$dG*D1zuRv%CHF|5TMxOI7gC!42v>4cfQzmU`CBg{i0( zS`A?+?Qid!(JYex-j^xgSUxwZ*zkJ+XR!J*$cPeFVVXA&#xSRzV^lGc z%?;z+?52=dh+JH*1rG85V9NzSvfFw!F(N6&VhYAd+yz*>3XKaJXt5LRbHHETk`KfO z*c(?PRrJ`)LrAyd7Jw*e2KFWn%|=ra#$!wB9b}ex4ExJL-kqdIc_gk+lCtD#nbqc< zjY9S=V6;xqp)y_LX)P*alloX>k}3D4y{oo?w%woV9`R;h_p9__qB`&x+7XLEdQ5~* zQqnH(I&QVFlmsY5U<_|%5V=*=b%SlQL(Y-8%uIHh$9XteI}&K!#k44U%JDpt&Y+1O z^gS2Pjt;mlt35`siX34Ot*ixvSuUxajG&+%k$H-%vp}5qpT|>GOeRi7lDEm^EaR4r zq8Q(nN=U#z`nnaI7veWbZ-oxeOd?m{XNecB8)D9mOiYU28x$(<1^DAaxVqd^^rq1t zffU zU~{;U!R5pzi5wKnrwZyn>eA(Z}&HIEH( z$%-Ba!l5{Tp{Pg2Up(_gMA$xpU;?<|xi9m+hZ}~n+Y=z*Y>yYhA`aEh*A-%Bpo6Zz zYMFr5LNQ!S*P4#RHRs-&SXu7hu|>47QfcWs#Ptzr`j74}vlNHNCN9h(0N{fjdJVbZDCXtMq(7I>$kQJDX@?*)dRj{K1vdb|j zH;={)xk>)?EgmJ(`Y)h+-(mO%Cy~pg_MvtiwK&DCe4fH|J!4;ZHcu~0c~RsRH&c1- z7FNYFKetU|pt5bBpiH4j8KlTWdr)m0v3QrVZDo~VX|zt)*-odun&P!!!{0-fwX@h( zoBR!t%M{itb_kz<1{$9REiS-wloD8Z0Q2Gu5!!E|74fCFfDD%c+ zQ?WH%Fz%7dloD{zH3de%%TPz|30qQ@)kXs$Z4B_4#R(H&3(da#u+(?^IK>g5@Ol4l zI>2Vi98dbwuCq=f(q8bm`0@qmhf()#xvPI7QWm8kX3*Ko_DIy36An$~6E)s=^w9N*h&W=);VI&Wh_t zp(&|HWI!$tGKVz{wqYv+r?hBj_YNo-4K*oJdi1^PMpTlngXg> zc#U|Z*e<%#5xt)suTS)H1F^zEig!f)f)xFu`0rAUnh8#-dM?JVLKauyq15;NXNZw1LIX=fGvL_)iB_U+8p?-}B4#r<&gOGm-v7ex% zA3YvD_YsI6Of$xEvc44>CKh7x-Xu>p&=FA~O)3{6WkRLGY7^>!jjK}&VZbU199}ve z19xfx`mT5I@p&`50(?-4^G3es73Rr%&C&wrf;n>j>I6+OvUfH*yLh)dx5J)!wySEG zCR%DLXn|8`23fuyx}^`}cTj|3N{2==?EJZgYpZUzrgK_ZS}k2EiaEQ!Hnlyb;Z+UA zP`LGOn>U>MxqH5N=5TX1X?+ILCiK@<=hfk?K^KQ{3SH2wqOW=U(i9lgx+tebz|`tp zr|BQr>;4073VU4o>U!_*9S5{yf`|M3%76LhEMi_#bOV!*lznoqf1$wI?ROFq)o2^s z2%5}qcco6)Jfo`wavr(F6C>7hv4K`;J z_ugufPwTe3;^l8XYJHbt;8^2s=}6FE*hP0A0?*9#pifh@XkmVgQ0&t ze%~>09VLDcea?EQ@4I$%CS@O`ak0}ux8;{{;1_8iA%+^iaCG6(9_aH70BU0#PNMr$ zHx}z_s_^5NA7eBB&K0h#o``!Uf~r(yGtC%@cv%<=~!ipm)i2-{n<`)w7cl;on zpx5<-W-A$w;IqUh4wB45glmyBpWA5JHV;dbOm5d8L|esI;;}=km_5GD)U~6SJ$tDj z9qMR0uW?N0SWpaovtkI=94))JTDAM2uAv%i=pM3WEU4K%6{_Z}WCdiS@KRv%UP?f} zV0bNovDg=;Vv}_!O!rYZtxPK?yE6}B^*iED{7si0a}&oBWYpCLhFa?+(4yYpa5zvE z0hSgL7BF~c&$5IvQ*uIk8an}}nxVj8kl(5bh*Cz!kyb0VIN@)?RR0TdVgJBhjGqRo zW~xjDq^Zc#VC7zl|Gp9i6CI7V6DQl1lZSzgAC|Jp%njAD^>D;H=?DS~#}xIET4Bbz zvDO|3#YWHPD<(^+O*Kya9E|erGvUqOl4>WV8dq*BGx!hUL#oEp91a>(1)rf}os!zK z)XghB^apOm8v`7R5&5F0?ewVOCZlK&CaXsMSuRw~%W3(ezoF%0SJXYo$a;e5Yego8 zEHv8wof*E|sBeaskzVobnkc5Cy4}T#G{Nj^irf2kEZ0cF8y3Yq#}s(<(NezNOLhYn z3$A&tBMy4GX?WDe4_U`l@?Z){m)k>Ca#9g)QUk1q+UV}u7Xask{Tz9YLr^V)1?Qd_p(=HW)Wjvb)$)@ z5fNk5QVo-(Ly~s`Xhl)uyL_LAoPS^-vrvmPwdJNu=;Af1i$AUy(~@pGBpcIh<1s#U zDh^+Ud`Rg~6WDh0_;D3-s})4m0(Rolloo)=<@<`pCQHjSXQ56FmL6HtmMquFEEns<+I3Tnbw}9Wy*6=~}XSLQwMbN4%f7cc8*lMXU&L+5u8&zX8Q|g;o%jd41E^ zRf?Lbb~& z{5eVJFQ`ex&w+gM9DOktfbq0QXjzo8dJ}HFqjnBbZ=BN9F_IGuCwbuU-cVN#R_=Rg8K$;PKnLl2fsxSC-a2aA>_*l0y zU9oQz{1euk%0rgEsQDC_UZYYg<%tLm84Q!fOmR9uXGrd&w#@bP~T z3~Wmu*UaUr&3L=RURDCcae{1Fss<>uQCgMmp$w|7K;GM|f=;Ou70Uygx1zk3wD*=V zP1u9Pmo*TQ|DD^?x0jMM(z`qYb}@(Mn=Dd(%F{%V0wkt3-$U3Q~O;^Yyat$v5;vIDqP(uR!`As(mq#Nj}5kSuz&C0Tm^g*p%fBf$GP z=BH!hHPwzFb7=a66}-O34w*o5-UG#Xd6xV##)ne7`HFFA(CY>1^f#NaPn@(f?a-I# zmd8co!CsO}qLDem(@?iq)zz%Eyf`(w!NVvh>B?p-h)R||r`RKDE+!kXlbkXtUj3Nd zMqSjprdwZMQ*#@G7*B(DoKlWuAg8|j+?XdND)tjq$>)y_bo+Z>4_jW_M?(nJ=WN>K zG4z_eXYhPd<|Zi$iwsMbemwZemw9Dc>{rk#odLQ1IGz|R647W_tz^2}GPp$Qnc{0`!gwhIKjxX_{v%}r083;*g$=ra zmu$wglOrrQel;#(eUbT-+_;G6+9Ml%(x4Bq*HH;~r4~HkSnB2z>XPn;)J4M@9Hx_) zGG(J(x@Fjqk|S3E;aGX$hv090ucophQ_*5mg9WB%F5&An>c^$W7}8WS0RY^rE!@#x zP~HRspDQFY06rvtQWQLRs*fJwzL_O9JO!|*tK33)A!%Rr^9Q0FWdo~gT7eoY2V0Kv zW-CrUgP4z*UDffO_;Y)@8U&$(8PuU~`ql8?dKC#L}WrdWU5=k+z_g{tcEYnZj8U%>; zpnTV0bN*p%ufytX0+qehmEl9{8s_?Nl5n9$1M+61ir75=bo9 zP2|n%gWt}tcDM!$kkKDD$(ztpFF9V**C%i+m2Z}Ak;eqLS(0A|zEj%6}%1n!TFli-V-6*s(! zZaa#a6D@i}q_X4Vbk5}sQms#$pVAdCS(M4bdGlm#+>wM&=6 zvDd8+vm|U$!Eh2IZ%)woUQo_kK-eKVI*8xT(fR8}rjG zl9hNv%+0F#d(h8}ehT9=mLTt6m@Yy%(+C&YFCt4ap<))c>j3AAjL7ri z;uPi6(Son7QlFU;={n)2$ZK|rHw5R_CEf+c{%!#gL$ABNgQL6f21$zh8b$#^m%25H zEmWLCB4-2n)=yy+)4}09deoIbuR30T6X?Q$SaS7w`}VLb@3cU4WOk|GBdDl{;J3MS z^P@vWR_5&-V1;Anh1L+0qjqq3cX~+C z@YUF;!CWfCLFM+8qPQs)iZy_2;a&ca1hk#AZv>P zbj1CyyAaC7qhs-QdHI4q@>{x6>*_BAY^}VW@qHXbnk+{$PFMoVkJT#kZY}F3O~tJd zMWuYY#umz#y?Z!D@U6<)s&EM|`1y|yFSlq2M;vtMJggHdIjgMMX;Qm;^&&zT(m=|A z<|+bVAsoL5#uBSWS0@}&N5`(KyjCl4BcaA1CA|g~ytWmSb4XIX=O82J_Okk%S(Qi+ze0mvX|(!`hB?lkciG$$P=F1Wi%5ZHS~(amdZ9A z?$i~2oAZ`m_B-U`Ip8C{GQh|x<8IlU4SxURsnPK(FMP*_6)1*^3qSKFm60(5ZULM^ zsu`Jl>O~JjsWAy9BWEe|gusAG7hzZvMWa5Z?s#(jH{Zq5{HCaF;LmubBIZi?5a4mz z2IX2gcINuix&-V66pdseVMd~aChgIR9Uq`Q=#&@-nFaVGaPP~%Egg_BYGolbt24Op zFp!&;2s8l)Wc_ANl_e`SAgE0XlYk&KnOgK=AXJ9tKEt8o$z#|KN1@95h;#NHPQNfd z(1dmP3d(q9usBRuxCaPX8U;8+dpEC5yTKnD37B0nuU&$*M;uDkA(Qyx z2Isnyes}$5(0_#B)oKc&wFP`)Jm;n$;H@3*b||#EjgV^F%Cq>zrhAP0ii*xV`*aHk zLBJUk`y1Lh`1w5ifwIBQU}CvO9jj#X+Nr574)~vxW~y8q4}KK6H2oAYg|IuBzD~gU zc^;zXg3$U}D%{lY^Z<#@gQ&{_gCayu1J5zG^U45$ z#+Vw7kXJOhx@aO{SWiJt^lIrjExiG#srW~HPt^@nE+KfbpgWXb0P%wb#P`W}%qVdlvGXis?G$cy=<}sYsQ^tb9bSK=m~*mfFUCy{cRmAp2jVtUsJ@hE(I1|(KkRM*Jub&VUA<0&JtVklAZ{S%)C&%u{fve zWX{f|2|pp_dz_YfgGf&*v!mgM*FLf-IA(`BS+*U~f;b!;SR>hs@UPqcvDGqFT`iK; z1+g%Q=E@vRhn|hbwevz{6N?KAX=_I<%(}RRHu;-`rK2u~i4ur^3a-~5EMgUg$a*;D zw1%+(IhTrkkDPT5k%bu}(w_=oyp#?=ZG-~K%1Q>n#A-IIW8cm6 zykpcw5RPyUpw^2)84xo$h9U?BHWu%_lZ6SMab5dU!?WAee3*nr^KUAHvU+V%S)GWM z?1-Nt{$#P3w0e0&`fr36u5RPBk#JN6#)zY)gLU?@eHOKu7oMJp{m;Nq$rT*c$m5j| z9JnP2%%0>i&W>vXt|;q`+pfWLCq_qG-wdWf8R)dk2o>?tM#j`VOJLQyZyU!Thzo~l z3aqe_;u7$A1|GI|?&K2FVw+G<^_b)GyFaNOdPbwlV(^WGC#yA=9DIR|=wRvx5jhho zhDm4W%2|W{C>EaHQLE$K!kB90lru1b&1@%SeqKf3qnW?o%LgmcZ3_s zaB)mpJZK5%x*xzaeJ0j_KHJ1z^J%v(#r8w5v{%OZu4x}F!xM*+RqM}wDb8$Pacj!c zRIqpXoc1vmCf7UrGYEAE{~|5V1nZZx25d+GeEvUK;R$%MsdF(GOLDU!H?fN z0=Qx%ExE0EdmvU}WQxn8Iy_~R?f&^z{dt}?4w$9&;2KIov~tdTr%+&r&#)({P-v(2 zz=y87n zY^%=z#{2;oO05JLBST!l*zP(Z$2?=z_yi+d~NXhg})#>91f1gbyTff zP&!)8fagAP6@dG%1BO@{Acsp-81SOiXTyM;J|wolW|bsinRm6H#n_4Jz|DkZ^kN=5 zop`-5nqp7Md-+BVetXK6e1J|UFcIdIZlZV&vTie30Nv^KNP*peLQi7ADbUasU+e`; zhc4>tQELWz%f(mhE8mjd_m0soNJ>l;b-}aM4Yc+93SJLB&I;gN10N3j@!nN73Z` z>;T?6Es9Psfpke)6rf_S z;N?Sp!93cYs2ZA%GYMS+MO=EU5=u5jynYQC7TvZxSqDW{ahiKbIJzFqUAZb8-AKi( zcbC^4fY?sli!)9;ekAbh84o+_=ZeO?BdnK6Bp2`gc3~9&t&e2z5 z$Jk1(j#IyII%zRwIoS{_$-~IJaqlHP9U_Ztz>2rGq0Va0{%TS7SIAjlC#s|9%tiI+ zwBE!PbHpvhRQquB-ak0=ImC8Tx&aTZ6+YyMfs|r2$ad>*3vZbvc5|A$Sf^XU?7rg8 zi8RnarQE@n!xNJ{aQI%pbd45{w(~8`GnTbONMX2>cJl6u?z08j4sn289&WZ&jPr3c zm7eww^}rC(auKNK!=aHL_40(jx8|wc1(2|`OAW8<_AlQguC8kxi8H=|S^+geHBp~rzWAv|5TTES;@R~tfJV~ot`Syl z;LY3$GC||h4HFaR?fj&?icWI~t8L{(6=@j@mftTAw{mupR%UY-2`|$X>b@%`|Bb%V z^XVKKDuwKn{S!`A^61?5a1ZG(J$zPkm8~KMg zEvd_no}|V5?S4CP=F`nOKe|J@`P%(vfTU}rW{BF4>+BMs)6F)$Yw=b{_3Q&U&&yFP zC*8PS8~2ZP;x%E!8HpeYon6n3y&tJ7|GUNB#7&uyX+a0p5vu6`Jye)mtm1J=)}~&& zp`*fAhKH`2x>E0l3esCg8L*b5ZPAX4+j}^~?dl6vy4ndRait zm>(+@S8@L%AE^-bBf*Y=dN2~tnjZkTbc_|J^Mo7yXeZ@-t;#~F$}bd~gRgV*j-&7< ziZHkx{oG6VAL*PUBG9E8l*>N(7Jd$fvk}jiTNQ)uM-p9wh=k0zOuQO;s@J0q;(#&# zF`&OA-v@x~yn}}=e0{vudd=+z*$Lex_^Gh5?vUt zEb?qUW1$QV?0;vuV!l|;Ytmjl1OKi#k;twWWp`lS?#%yl^78opa)BEO{uhI_DL>cb z-WgH{PXH(s8$)sl`89(ea4zZ(0s?v#)-R7kj#xt)t{l}wV1`{Gse@;($bt}KZ9N@% zW>Tu?t$=f)CPM+9grTnqr;vsp*DPx~nlMicN?QSDXU96RB8>FeN~@apQt6m354W1m z;TD-KyjPwjvp1=8QTYT39mHU73cosace7wbu?i&mgF+6v`}QTvd5tzmsZ=8s)OEgXQ~`m07(}?dAl^J(|l>X(?Z#UnZ>FIAthm- zj1^1JXw6@D$rv)<>Tc%kPuz=?K&G0iM5SEPU^!Nju*9K%{OPM@8}Yk_of#7BHw#jf z85D;UV-NhYXNUefWKINRaqmsU;?$IA+#5gp7xno^c#|3b-k@qNTIdTzEJ|;?Jb428 ztyH0?J%1L3nqpMtGo}JZQ;2F)bWY!w>t1TGLPyCYz58$yNz}#ZxVEdCncB*N`+X#U zQcJ4KJF?N)n%96-O+40MvhiQNNRtzRZV6l45j6GB9@@c~bzNRBDI+mQirJ#i(W=63 zF1B{`F0g-|Nh+L=<+rPu2#w{G2=l^TD20IBvs+UL+&=TVHWLn59FJkmFtw0L29V{QjaSx$^dzO!_JNi7vF={W(y-zG}Z^9;^*nqb?lAh^xpjpp$Oo?PDDP0wuXB$#2f6H|XmhyUKsgtdDHGkFsf*)i ze9yAuq!*C~&DU(k`nUE2D5_lKbM%_ng~|xJl|kF%2oB={_bJgbI*T|vVj{4sc_xf6 zzmJyw-K*{GNC|+~(u$J!J%? zXxBkg$i}o2jnK`?;b7e#cH;U0Z& z1zSE`ES}GONPCU|m(QwZ6EXczSfVWMc5HeZo8Bhtei1OGH0cAsuN#}PYEEkFQchA! z$(XW!D$2*FkRL0y1S>qVRH`bj`$IY%fKYU0CY?R~Q_Rj_q_E?`$lQE~A$wR?lfPfY zez?12^}_y2lxm#pQi>oV>3c>qSesIA=00=65^Xb!WARy{o$h@9M~Qz*&WXhjTdaFH z4R66eOVuof`*+;vwP4i9_R+qbnXGp~Ewu!WUo%?$Le88uI+2Q*NNiB4FtP=2m2Kez z`!)B?;}!G%z`L?*63D4m$(e9phft*FI~S|vOI%)jGdsw$N1w&ut!Z=7?EFCP(JK6@ zDb#JH+^dhPKlr|&IPEZ+b+)A`y+UqQuN7|63w8hNgKpkVGgE8(0aq)xwb?C(bOJ@B zEh7$$5V#}peJz!~XM&@(Rk;I`MkaNqioE?YB_O{OeNwOStXiZXEiN7#j}R>)bEn`- zK!PvjnI|_WX_dX5@lAny8}jtj@*x)={e*M2^GJv05s5=@yz8)m>pK$LTakd{(_WW$#YLAb?%iMH+&sWD9 z!Ne;*W4ZIQa!Peruf1!!eZiKMqdAz-E!?=DVag6|K?355mctygu3C{W^HOQu`wuzp&_Lp zXNND9GDPSyhU!uZy{6Y2>Ss%d!jW= z&_@zEpz}p7i#(<%e;0c%y8SA@GKi9?br|97r58-Q=Yf-scCz*K zH)N#jeL&S+14{J(F7AOnZWEVi*<_EwlxqVBS+NoiX3~{|zZsv4EHqKvd$l8<%BsY^ zCi;W{IjiP(O70fMJJlO|WCL_yLtzZ2+4Tx9G+I@Kj{+(D3PQm^T!6KJhyO0@`5SclJ;HlT6ON4&DyQmESWHC?wV_WXam{wkDg`?hcZ(!unC=7 zQogb5A^v=3Q?-2n^_ z6qvt`4g&%fgzW#)fbN|M0b}K%kEd^uzb=x3(ZNqfdW=%HqNQ?dCKb6}K2p`hCWwqk zV06v!p#J5Ov|8pz2J_S}CI4Hnd1turQg9Xf|DNeX1uSuX+q2l6ES@rga zFP2D2;JZod%3(VCfM81{PA0JWN5(EBSDvsP`|a+nOJ!D1+bHkp;GC>y?}Iq#>UUy> zusok+q&F3}BxtH%Zfwr5cEhi)D*ymFwg#_X0Rd=K$Ip+t0blE-Wc(27rB(c1FVjqe z#ny|S&Z7@~-PG%ArmBu1XTPo=| z3P-+>;41*@OySR5sDzSLl&uTjhpq_42i})vCNP&En1+uiD_7D{wkX#2sbqI?zjDw< zS_1y-{*Ef2L4>FW&ibVEYv? zvtkD}Oefos7W(aSKttZRli-e2Ub^8~(WMKJ9}5T8R*oKI#_uK*4up=+RH&AzVY!`y zAuVo&YYO{%?U%`=34t!m2Y$%?-JZr#oMJs$#%6p(AcwRKu-K&wFol$2_s}*(kRF5k z(<>G|zhE|ey>3`kA0|kafY7-o8(GA2WNI#V;WS)rNn_JtR&eo=0{{$gRqmhge`R2B z(Eo1+h86=8GvjZqi2qysXR`2L!NUB%3)cVI{=35ZU)t|~1>65=X8S+Q?EllO17l)q z{2!%*fr*3RxA*^--NDAp_WxjaT&mgFZL-6D^Y#ehjSNK_b*f8yc%gENi4!kjCXZq*SvyOu~7B87t-~0 z<>Kt&>`f~BoP5D`x3S&V_kOc4d@(QiiY}^SNf@^U1 z;I6?TxVw9BcXx;2?hcnzuU_5vao*R|s_HeXR!#r)Opgls1`aaQ{!hDX*t~wxuolf3 z}{`u%? z;YB4RFdEVRWlF=Wogp}4_|o{5CyM9RVzzqpR)$$W&f_~zR7JZRV#-!;)TG4m8-g9A zAX)X^iJ|<^Edcc!eyRMG{Nv7wtT#f*n;!Hnj`XXE^86XPy0h-M=Cv%x6_@CTZ7GB$ zIaIMILL+eq6bO{d!hKH32r)lI6ooZF)`$A->y@@fbfAKT2HaAX#0Hf)JR)Ty7J-D; zcnhj$i}nq{xzL?$hF8>GC8I|j0Tgf`86dV0d0G$e8=_xlYp`}de3xcGr@!FRKWJkF z&$;hw+4&-;>W_|ysZ2B`N=Y!LT8S{yTDw3eG&`e?`%wjC9mZo+3~9H{{tM@+1zTiY zC^DH?*?OQ4EOT}y(~s_OA$%;-)$9OGjCUBFHA1}?Sq-VTR&yn`Fj+#B;2ZafQ@XN( z3&zTTrk?ju#I}Bl*+qihUeU4gd~o1-!p|*$EmvqNZV8GZq(Pg%;q9n{ zEKn&Y>h-Ov72lmAc@~x()nqLRaQ(>r&`p5yA(Lhu*EKxM4b-6_NR)KF7j%xg^uwr} za;Fk0DG_j1P(LAJsviwrhP^tK+yYl|#bICHp}`r>)50_X;e8>KP=?YTiPziq@yeqhH^UvMGi)YP1Fy40Hu zn@cS%HLmDCI(e4p5>I6aE@( zSy~%FI5o#3L_WxAgh!zj?D#i6&4m3vsskW*}-LBLTzBIZ^pasgeGm#=M-AL_IRSqCAvvxY24y3OywMd zyd2tw5_krz)9-@v>>hW@XQ^0@;x-baA#yF6oZ6+aa(HWIoXf?upISAA%f5$qs;GZ| zuB`r=U7(8eKK?}CI+76F>#2B^!3x1bmvGX?d*s~cQR}&zdVB}#-3JLJc!hM06S?s@hPD7VLppYy2b1UtV&F0KlgUwT7iwGZJG>_OJud?1tLi5m^W>^$D zKFe^=U_!RHm{88?*Y1jl%#A5}E1G0*H&D?*1)EpVyVg*U#Bai9v+9%?JPF+$Ko0@m z7;Qo)@N9sI;Qf4V323QvN4!jAIu*#vFxRE=;ch1U4;pKs)RG* zmvCpw)u!HrEj$VdLjc**;zU2E8**47kBTQ^AjX#&l}NHx2F-WT<*BrWNjEkcaJQVy z<7ZV2B=E|^V=5YHDpWRL3;-fHY6Zh#BS3PRNtNuwIR=tQVRAv5CUb{M%E}GJo5|{; zdLGFF0}5v_nH+SgA87S}lW|!bbDsEK1^~Q<4nRfGqR*OEmAJvfSJ*-c0k6+?^WPMA z7!w$h1M_I68CFDf_M0%K8LSb@f8_faT!xSc?_Uao2&bgkqgwIIo&5QDmNg9Eb*h~l ztN9fG8Zi|3sb#7DBs$encEt~*hI|wiZsQW79WhSWpGt7+8)u*2_WOGyz_us3gZ12y z{nW{~OF^h|e%PR@*Y_m<*ANcrkI*9Df!Bcfu>OdSe@|*DxI$WbG$TQNRU!@R zML12ttWlan!GNO9Jrb7lZ-iTEUQSnny_%#($4cB$K7X$+Ea7jV%GHp;d42n8T>T_S zdDIm1+H78y;%eTfrphkcn&e-7NCV~AD3*ro9BS%1;52<@^w1Lw5SrZ?f?WeViDv6F zSw@%0HU2G>^b}#)>SgX(sgMx{6cLMdI}?XtoB(W9v9s`h^Q@!PztUI!;#pNv4O2-r<$fbjGR_P@&Pw=vmAd|XE}BzN(#60p9?4Y*l*8^r^E5G9ATaKzjkwK;_8d?bQn|V<$fB6yRnUb zDv;;m8*9i8`#)mcZ5tK&m${2rR_B~5j_C4#c1X3ZG_4T+P%qquEI>(8@p|>k_%X=e zZ~9jGh@R2-O)dATz9)-IBh&fML?V+y`K8CRVZ__WFs&`iaL2k%1pdAai&lC#6*kXE zF{!+)D}vk&MCv!cBhx~;dCIqE@~yH`(rB{f?LQe4`SJ2*p!4*hd~8$p)H=jmnIes` z?YS@zZ{q$@1;52PnN(dRnL^#MaWnmUmH`@psTFTDt^(`VEhwy`V9iYLjCuL*xcEOH zn+qw1^Y=RCk7}I@_Npr(qWCm46u5LX>^H@Ac?}vX9k_6Bfk8+qzft9AL8(aX3u6mo z%~OoEEfY>-`)cc3!@Z}L9WwiF@bN9QZ2ZjH7GjPAkeuTKYO31|#SY0Gr37!QxO93X z{H6m~=e2K15z^lwlr46`quh`~MZaSPmXwNgCmHm$XFsrF0SD$Oo3+8_A$J5W@HehE z`1r+$C4^#+@kI*Vo|QpMDibifKJ89+zjj}Oc7MKf5Ul;_QGvNeq|0e+^hXK{ zs(XsonJ8Wjl39aN>`ST9vGVZj=i@0)XPsy!4z7M49(;G><3L-5-ZO{W3k7h^&L4`$ z_Y=6DE#$`U$*`FzvQ@Hwr=cQ6XVVqp=!1$Io>uwVkMb7Cu1WNr7AElykKHD8-nAo{ z4~AqH8gGU(x|ysld@oS%=lL$1NvzamI>g)j>9WB+fRQo&E0(+&@HB0RY`AuLbO|~v zOfUYmnz@N?mmi_<}pFd#TxI$)lzIzsB&9XJYy&PGw9M_Zt3W5cx=h zzjWOB?w}}~wp+xlf-_J84LrY1K@5KJ2xYM#|9FkRFSW2C=FNS0!{sRmR0|6tgn;hi zUUgusbnZW?mEkQ1M)oHX$mVL~E=<2a-=3U5L4;B;47MOZ5zp$)zCCl+&{lHx4w)-g z!$dZ8Q3_+4OG$o_&0g=kyu!}%oGf%{&m}Z#fkt7-L-E~fQUA^(X|X7*Sb6C$pijc| z>D~x;r?}MemkBnl%3Rw?BzF^6=l8XhzJYz-VcRS7(yPQ~Y97bfv3Q1MoAUk<)gb<& z39hrB`o=K2$G^C*_TBM2WuNBj$HTVfm+H8^gtjn6ZlM`Oc}A7}=!zV7*=Mt1Ue(NV zs^8r3DY{%D7Eo5+i_Cwm)%qQ(eY}7lbRV`mKGcp|S|5&TNp|wZ?IymIlZs~ao%+9x ztj^G-QWgy_!r=1?-f4GwBjAmhQ(|LNly1{GgozA2e6zyEsA>>U?_b)ZiJi`dTb6tD zx${j$EDg6`EUeM8O}%kgQMxB8>2Jh?@2FrivCUpNo@Etca|l8O5--tJA*cOKjQ+-; z=A&bmHMV!N82>;pmVW{NO`voRe>SlS70tUu`WHzVvs!u8b2H8e=7s{iDc%qG2JTN| z_x0$P(#j8-`3u6M@DQ(T*=Nqm{h3~?g+eN^oroY|oTb(Iu zNhh^?x%y-FQ$zXzik0FgZNIe$=fDRDwBt%8MrtiK#mZ^AC&U;*kJsA<{jm3!c1&H~ zLl0i~I71@5s`j<$VEE0Ma-lu;ecFd{>D}8pU*XbDsKaw@BnUjWHTN|R? zU0E7F(j059^x|{R+W)T0(MOdWUAvwOw!5X5dX#CY}i$QdkA}hite2CgYVj=ridtuJqMj73RA3%@4=nJx!zWgtGZ*4PMwzEUt)Gqpi#UPBGS z>qU233Bv&FHxCe}pOvp-n zLkp%n8LUuL!v-=9RKRDTUf;EQy(QwxMMvA`>doypj~5}P>l*pN7Uq=7xhhdnzxvh> zU}dYc`V);Ygl*;qr$sfmoK?t zDA=$H-Wky_->crPZ!l>tunb7*RG9zUQ+Df1R(zx?bSKPnF=-9ZBl zqr=Z&4D9tvA_m>}D#GkuUlwf}w7RMD$4eA3c2!%;A!j48xqDxZ(#x0mPbHXxcYbrx zyo)+^_97||mGERA>gc7PC)!a?l`vbbXHk!^fuVMX1)<=EdN0Sg56#dYLJcxauL;&~ z=MJpAJwXSKI}R0gDQiHD+=d<`cqx!+vzR-elzaACkzo+Y7Voj`_Nq3vJH!(&`o|h43qy$yL+)4-*u1sQSW{) zfxTRVxQwW=VO;f>J3_naRj$@9bLX+{Od%@8GFt~-9qQ-Hmpw@odZQFtS_4?h#XOYm zLF1w+kH0T9+gNH!$o+150zw}LlNGZvn% zGaHkgeUNoX+c!cD7Be;kw)pIJo0HMIrMkDv_RKwNJefkJyP7ekgZ2Yo_-Vp0vWOB#rp^$u6J@th*G3$ zrXgmX+yvVfVQ}?Kj$Td{f$E6lZMYKs|YAkH7m<_ZWi3}yslL~MT#(S$}~JC!vb!DnwE z!|t!k^?84Z592vPu;qiM-hU65Px>JJ2$!-1jzm@vFzind{v=?~G<~*Fj;dGxs=neL z;lxQ9n=VbAKagKECVq(J8IZ9hJFy{1Xd+RTKhx;AyTq;%1*A*l!77pNKUUheI}c75 zdlcyn#?ZVn%EtQ&Lms_F5T^X-%l_nXG2vQ_5y)W>A`rT zlXkCtOP#qRiii6Au7r;AGA(?aXI?ENv{GM5>^1`;XqK2q^~9P}#7=-zui_t1q&$%o zS=d3{;8o>pBp;Y24xS%Z9agH*majHE{jhVq&9ms2?Z8uSAJ=Q< z&O6r_^Wq3fX!ZC|%*8kM2>M01WVA~p5E%J!3Zz3{F}D7?H8CiboK!8)B;V><1l8So zGQB8mrXLIM%4&-qT*yaUC{BzjN9hSU*3yMN5p&@g_f)ZF9l=8*0HPOJWv7$*%DENY zDfP!hFj%QD%ujRccrh>x@L={QJuomV$Y4N8goRoOuzqe1XfV0!?ifQ7rxDamO=Gg& z9E2qvBn5Szqp#biuw+nvE{BI@2Giu@P>da*V@faY;+6D+X-0e0s@f zCNT~V-@U$J1r=@v68NU@8=Pz%^cTg?EL?s1tbD<&R}%n6pmNOn;)7G?i?DLxgxO69 z^7avVdZ+6eP=z3%FcGe#v&B>~e8Hg7jO z`-?z}nc-t&i(@|9RH5peA&#;Hx88#{{v;Mfg4w}o&|u1!WdlK$5gB?U*cpr2;Fdn@Jm6G8l54Od$)D0b&8q&S;&vqqr?==gk7zpu8LB@QGkzkp4Wv9|^o} z_ek|Ry007&)iwg6rS;AcHOlO9_uJ*f`ZO{XG!_G;4eLGN5P3~^Fa#etW1*ka4hMnQ z$=@bEWN{v+t~q+EXD)klL#&=JBxmp*(zu>O6Kg0&w%Lw037SAq$!X_b4O!dO&%IGh z0%^j`=6d-lvS@b&zPn^AvfJPPtcV~Hs8Aq&dA{IRbV&Y#n|Nz~6;Q|C#$R{iy=k|@ z43v(v*lA0L+;d1u|FaI7ZyqS(tUQ7iM8;Pd)TQIWP5>FE+jt3;*UFdvEHfD9vN*Uh zsNEOXUpYc`qPs%BZN`AVz4P{zz0Gwv;T8=v&~B9Uf^SkiDU9ioa6Nu1F#)k<-(BrP zN|3s-=XMFegC6Rv?nHGUdr3DZyYZ%~(P{Pnv2vF)v{zT)$2^OL55CnfM!-|DSCTb{ zI2TOmR^WKR1m(I(EycEYDxo5D2{k1Q-KeH(BJwNj2)Nqsw$XeYQ^9|=Ja!;Z5DW1( z>Zx85w_)kxaOCV#%kV}FLz{ALE3=9i;DA%`J}R{{bVovqsPXSjY!j^tEBK5NBm722 zupwtGupxK#xFnT{;H>*k?{G`&vJI13JO|y$pZq6bRzL4@DxjDFCukSw&G=1=#ZL*v z6H3Koa|KkGS{KtkepNJ~{0C@nm=G9tanrVQUaF35;|nn=5%U|1$wB3R0u97u z&y{S}>tw1V&tHmdY(H_)MT<$nNHar|N2t*owO_DcuLnMF2c zJ*&(HaVy~)?p>DO9Y1H9=LnyobzTC~iS`&uNlJ$=mjV#syR6hep&Zb8_I zovJP{KXu-0u4smiigJfCb5VrylWGZIKl>a#L>fWRL2e-_Dl(mC?vv4|-HE=7i_Ug-XV+4; zOI+)vG+mi_4CSfExvU8G*X+eh1c z+{hcc4)EWniGodlbiK@=%7J)=%(Ehm^ZI7YD`wQKIp6=?*jpqM@NRBvVGKh=7z*Ax z;P0eUMFtO7 z`xYN-UN8>)4v7SFrsLc>UGXoOU?m!r%qx-KbHK&CIiFXN$>d zvXOB$y|V9qrY%3H2>4I8cg-YG=ZfdQb9zQ%(+%ZjcU`Xd~a32+Vp#-dPMht zCEHk6sy*RjZk+b1EhHR-gc9WOf7f;YBhUW-wO6o(gQF9Gg9j*QVq@lH4q#{F0V)8v zfNJh`CO}0)OI0W9|DCuu-#AU!v(&ITL8 zJlyju14ouF3j^>x;{NSkX2d)Cm?K0f2O{i+c2lYWL>T^H(L{EY==XQW0(w%#BVaqK zexB%vYhsBU!vU?&HeSY6MdD&^p^sh2(K_?kQp!w?+zJ`#%{`UugkK;RJ zjeAJB;&OEayIH&m5xoC+v7+W%R(~vpX_qJn{},isset:e=>void 0!==e,array:e=>null!=e?Array.from(e):[],reIgnoreElement:/^(script|style)$/i,rePrefixed:/^dmx-/i,reExpression:/\{\{(.+?)\}\}/,reExpressionReplace:/\{\{(.+?)\}\}/g,reToggleAttribute:/^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i,reDashAlpha:/-([a-z])/g,reUppercase:/[A-Z]/g,__components:Object.create(null),__attributes:{before:Object.create(null),mounted:Object.create(null)},__formatters:{boolean:Object.create(null),global:Object.create(null),string:Object.create(null),number:Object.create(null),object:Object.create(null),array:Object.create(null),any:Object.create(null)},__adapters:Object.create(null),__actions:Object.create(null),__startup:new Set},window.Element&&!("closest"in Element.prototype)&&(Element.prototype.closest=function(e){let t,s=(this.document||this.ownerDocument).querySelectorAll(e),n=this;do{for(t=s.length;--t>=0&&s.item(t)!==n;);}while(t<0&&(n=n.parentElement));return n}),window.NodeList&&!("forEach"in NodeList.prototype)&&(NodeList.prototype.forEach=Array.prototype.forEach),"function"!=typeof window.queueMicrotask&&(window.queueMicrotask=function(e){Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}),window.Node&&!("isConnected"in Node.prototype)&&Object.defineProperty(Node.prototype,"isConnected",{get:function(){return document.contains(this)}}),window.Element&&!("toggleAttribute"in Element.prototype)&&(Element.prototype.toggleAttribute=function(e,t){this.hasAttribute(e)?!0!==t&&this.removeAttribute(e):!1!==t&&this.setAttribute(e,"")}),function(){var e=Object.prototype.toString,t=Object.prototype.hasOwnProperty,s=/\w*$/,n=/^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/,r=function(e,t){return e===t||e!=e&&t!=t},i=function(e,t){for(var s=e.length;s--;)if(r(e[s][0],t))return s;return-1},a=function(e,t){return("string"==(n=typeof(s=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==s:null===s)?e["string"==typeof t?"string":"hash"]:e.map;var s,n},o=function(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t-1},set:function(e,t){var s=this.__data__,n=i(s,e);return n<0?(++this.size,s.push([e,t])):s[n][1]=t,this}};var h=function(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t{const s=function(){e.constructor&&e.constructor.apply(this,arguments)};return t&&t.prototype&&(s.prototype=Object.create(t.prototype)),Object.assign(s.prototype,e),s.prototype.constructor=s,s},dmx.ready=e=>{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(()=>{e()}),{once:!0}):e()},dmx.Config=e=>{Object.assign(dmx.config,e)},dmx.Component=(e,t)=>{if(t){const s=t.extends?dmx.Component(t.extends):dmx.BaseComponent;"function"!=typeof t.initialData&&(t.initialData=Object.assign({},s.prototype.initialData,t.initialData)),t.attributes=Object.assign({},s.prototype.attributes,t.attributes),t.methods=Object.assign({},s.prototype.methods,t.methods),t.events=Object.assign({},s.prototype.events,t.events),t.hasOwnProperty("constructor")||(t.constructor=function(e,t){s.call(this,e,t)}),t.type=e;const n=dmx.createClass(t,s);n.extends=t.extends,dmx.__components[e]=n}return dmx.__components[e]},dmx.Attribute=(e,t,s)=>{dmx.__attributes[t][e]=s},dmx.Formatter=(e,t,s)=>{dmx.__formatters[e][t]=s},dmx.Formatters=(e,t)=>{for(const s in t)dmx.Formatter(e,s,t[s])},dmx.Adapter=(e,t,s)=>(s&&(dmx.__adapters[e][t]=s),dmx.__adapters[e][t]),dmx.Action=(e,t)=>{dmx.__actions[e]=t},dmx.Actions=e=>{for(const t in e)dmx.Action(t,e[t])},dmx.Startup=e=>{dmx.__startup.add(e)},dmx.debounce=(e,t)=>{let s;return function(){const n=()=>{e.apply(this,arguments)};t?(clearTimeout(s),s=setTimeout(n,t)):(cancelAnimationFrame(s),s=requestAnimationFrame(n))}},dmx.throttle=(e,t)=>{let s,n=!1;return function(){if(s=Array.from(arguments),!n){const r=()=>{n=!1,s&&e.apply(this,s)};e.apply(this,s),s=void 0,n=!0,t?setTimeout(db,t):requestAnimationFrame(r)}}},dmx.keyCodes={bs:8,tab:9,enter:13,esc:27,space:32,left:37,up:38,right:39,down:40,delete:46,backspace:8,pause:19,capslock:20,escape:27,pageup:33,pagedown:34,end:35,home:36,arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,insert:45,numlock:144,scrolllock:145,semicolon:186,equal:187,comma:188,minus:189,period:190,slash:191,backquote:192,bracketleft:219,backslash:220,bracketright:221,quote:222,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,numpadmultiply:106,numpadadd:107,numpadsubstract:109,numpaddivide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,keya:[65,97],keyb:[66,98],keyc:[67,99],keyd:[68,100],keye:[69,101],keyf:[70,102],keyg:[71,103],keyh:[72,104],keyi:[73,105],keyj:[74,106],keyk:[75,107],keyl:[76,108],keym:[77,109],keyn:[78,110],keyo:[79,111],keyp:[80,112],keyq:[81,113],keyr:[82,114],keys:[83,115],keyt:[84,116],keyu:[85,117],keyv:[86,118],keyw:[87,119],keyx:[88,120],keyy:[89,121],keyz:[90,122]},dmx.eventListener=function(e,t,s,n){let r,i;const a=function(e){if((!n.self||e.target===e.currentTarget)&&(!n.ctrl||e.ctrlKey)&&(!n.alt||e.altKey)&&(!n.shift||e.shiftKey)&&(!n.meta||e.metaKey)&&(!(e.originalEvent||e).nsp||Object.keys(n).includes((e.originalEvent||e).nsp))){if((e.originalEvent||e)instanceof MouseEvent){if(null!=n.button&&e.button!=(parseInt(n.button,10)||0))return;if(n.button0&&0!=e.button)return;if(n.button1&&1!=e.button)return;if(n.button2&&2!=e.button)return;if(n.button3&&3!=e.button)return;if(n.button4&&4!=e.button)return}if((e.originalEvent||e)instanceof KeyboardEvent){var t=[];Object.keys(n).forEach((function(e){var s=parseInt(e,10);s?t.push(s):dmx.keyCodes[e]&&t.push(dmx.keyCodes[e])}));for(var a=0;a({identifier:e.identifier,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY});e.$data.altKey=e.altKey,e.$data.ctrlKey=e.ctrlKey,e.$data.metaKey=e.metaKey,e.$data.shiftKey=e.shiftKey,e.$data.touches=Array.from(e.touches).map(t),e.$data.changedTouches=Array.from(e.changedTouches).map(t),e.$data.targetTouches=Array.from(e.targetTouches).map(t),e.$data.rotation=e.rotation,e.$data.scale=e.scale}if(e instanceof KeyboardEvent&&(e.$data.altKey=e.altKey,e.$data.ctrlKey=e.ctrlKey,e.$data.metaKey=e.metaKey,e.$data.shiftKey=e.shiftKey,e.$data.location=e.location,e.$data.repeat=e.repeat,e.$data.code=e.code,e.$data.key=e.key),n.debounce)clearTimeout(r),r=setTimeout((()=>{s.apply(this,arguments)}),parseInt(n.debounce,10)||0);else{if(!n.throttle)return s.apply(this,arguments);i||(i=!0,s.apply(this,arguments),setTimeout((()=>{i=!1}),parseInt(n.throttle,10)||0))}}};return n=n||{},window.Dom7&&1===e.nodeType?(Dom7(e)[n.once?"once":"on"](t.replace(/-/g,"."),a,!!n.capture),()=>Dom7(e).off(t.replace(/-/g,"."),a,!!n.capture)):window.jQuery&&!n.capture?(jQuery(e)[n.once?"one":"on"](t.replace(/-/g,"."),a),()=>jQuery(e).off(t.replace(/-/g,"."),a)):(e.addEventListener(t.replace(/-/g,"."),a,{capture:!!n.capture,once:!!n.once,passive:!!n.passive}),()=>e.removeEventListener(t.replace(/-/g,"."),a,!!n.capture))},dmx.fileUtils={fileReader:(e,t)=>new Promise(((s,n)=>{const r=new FileReader;r.onload=()=>s(r.result),r.onerror=()=>n(r.error),r[t](e)})),blobToArrayBuffer:function(e){return dmx.fileUtils.fileReader(e,"readAsArrayBuffer")},blobToBinaryString:function(e){return dmx.fileUtils.fileReader(e,"readAsBinaryString")},blobToDataURL:function(e){return dmx.fileUtils.fileReader(e,"readAsDataURL")},blobToBase64String:function(e){return dmx.fileUtils.fileReader(e,"readAsDataURL").then((e=>e.substring(e.indexOf(",")+1)))},arrayBufferToBlob:function(e,t){return Promise.resolve(new Blob([e],{type:t}))},binaryStringToBlob:function(e,t){const s=Uint8Array.from(e,(e=>e.charCodeAt(0)));return Promise.resolve(new Blob([s],{type:t}))},dataURLToBlob:function(e){const{data:t,type:s}=dmx.fileUtils.parseDataURL(e);return dmx.fileUtils.base64StringToBlob(t,s)},base64StringToBlob:function(e,t){const s=window.atob(e);return dmx.fileUtils.binaryStringToBlob(s,t)},parseDataURL:function(e){const t=e.match(/^data:(.*?)(;base64)?,(.*)$/);return{mediaType:t[1],base64:!!t[2],data:t[3],type:t[1].split(";")[0]}},parseMediaType:function(e){const t=e.match(/^([^/]+)\/([^+;]+)(?:\+([^;]+))?(?:;(.*))?$/);return{type:t[1],subtype:t[2],suffix:t[3],parameters:t[4]?t[4].split(";").reduce(((e,t)=>{const[s,n]=t.split("=");return e[s]=n,e}),{}):{}}}};{const e=function(e){const t=history[e];return function(){const s=t.apply(this,arguments),n=new Event(e.toLowerCase());return n.arguments=arguments,window.dispatchEvent(n),s}};history.pushState=e("pushState"),history.replaceState=e("replaceState")}window.onpopstate=function(e){e.state&&e.state.title&&(document.title=e.state.title)},document.documentElement.style.visibility="hidden",dmx.ready((()=>{Promise.all(dmx.__startup).then((()=>{if(dmx.app)throw Error("App already running!");history.replaceState({title:document.title},"");const e=document.querySelector(':root[dmx-app], [dmx-app], :root[is="dmx-app"], [is="dmx-app"]');if(!e)throw Error("App root not found!");const t=dmx.Component("app");dmx.app=new t(e,dmx.global),document.documentElement.style.visibility=""})).catch((e=>{console.error(e),document.documentElement.style.visibility=""}))})),dmx.extend=function(){var e={},t=!1,s=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],s++);for(var r=function(s){for(var n in s)"__proto__"!=n&&Object.prototype.hasOwnProperty.call(s,n)&&(t&&"[object Object]"===Object.prototype.toString.call(s[n])?e[n]=dmx.extend(!0,e[n],s[n]):null!=s[n]&&(e[n]=s[n]))};se.dirty=!0)),e.checkValidity()},dmx.validateReset=function(e){},(()=>{const e=[];window.addEventListener("message",(t=>{if(t.source===window&&"dmxNextTick"===t.data&&e.length)for(t.stopPropagation();e.length;){const t=e.shift();t.fn.call(t.context)}}),!0),dmx.nextTick=(t,s)=>{e.push({fn:t,context:s}),window.postMessage("dmxNextTick","*")}})(),dmx.requestUpdate=function(){console.warn("dmx.requestUpdate is deprecated.")},"app:"==document.location.protocol&&dmx.Startup(new Promise((e=>document.addEventListener("deviceready",e)))),(()=>{ +window.dmx={version:"2.0.19",versions:{},config:{mapping:{form:"form","button, input[type=button], input[type=submit], input[type=reset]":"button","input[type=radio]":"radio","input[type=checkbox]":"checkbox","input[type=file][multiple]":"input-file-multiple","input[type=file]":"input-file",input:"input",textarea:"textarea","select[multiple]":"select-multiple",select:"select",".checkbox-group":"checkbox-group",".radio-group":"radio-group"}},noop:()=>{},isset:e=>void 0!==e,array:e=>null!=e?Array.from(e):[],reIgnoreElement:/^(script|style)$/i,rePrefixed:/^dmx-/i,reExpression:/\{\{(.+?)\}\}/,reExpressionReplace:/\{\{(.+?)\}\}/g,reToggleAttribute:/^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i,reDashAlpha:/-([a-z])/g,reUppercase:/[A-Z]/g,__components:Object.create(null),__attributes:{before:Object.create(null),mounted:Object.create(null)},__formatters:{boolean:Object.create(null),global:Object.create(null),string:Object.create(null),number:Object.create(null),object:Object.create(null),array:Object.create(null),any:Object.create(null)},__adapters:Object.create(null),__actions:Object.create(null),__startup:new Set},window.Element&&!("closest"in Element.prototype)&&(Element.prototype.closest=function(e){let t,s=(this.document||this.ownerDocument).querySelectorAll(e),n=this;do{for(t=s.length;--t>=0&&s.item(t)!==n;);}while(t<0&&(n=n.parentElement));return n}),window.NodeList&&!("forEach"in NodeList.prototype)&&(NodeList.prototype.forEach=Array.prototype.forEach),"function"!=typeof window.queueMicrotask&&(window.queueMicrotask=function(e){Promise.resolve().then(e).catch((e=>setTimeout((()=>{throw e}))))}),window.Node&&!("isConnected"in Node.prototype)&&Object.defineProperty(Node.prototype,"isConnected",{get:function(){return document.contains(this)}}),window.Element&&!("toggleAttribute"in Element.prototype)&&(Element.prototype.toggleAttribute=function(e,t){this.hasAttribute(e)?!0!==t&&this.removeAttribute(e):!1!==t&&this.setAttribute(e,"")}),function(){var e=Object.prototype.toString,t=Object.prototype.hasOwnProperty,s=/\w*$/,n=/^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/,r=function(e,t){return e===t||e!=e&&t!=t},i=function(e,t){for(var s=e.length;s--;)if(r(e[s][0],t))return s;return-1},a=function(e,t){return("string"==(n=typeof(s=t))||"number"==n||"symbol"==n||"boolean"==n?"__proto__"!==s:null===s)?e["string"==typeof t?"string":"hash"]:e.map;var s,n},o=function(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t-1},set:function(e,t){var s=this.__data__,n=i(s,e);return n<0?(++this.size,s.push([e,t])):s[n][1]=t,this}};var h=function(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t{const s=function(){e.constructor&&e.constructor.apply(this,arguments)};return t&&t.prototype&&(s.prototype=Object.create(t.prototype)),Object.assign(s.prototype,e),s.prototype.constructor=s,s},dmx.ready=e=>{"loading"===document.readyState?document.addEventListener("DOMContentLoaded",(()=>{e()}),{once:!0}):e()},dmx.Config=e=>{Object.assign(dmx.config,e)},dmx.Component=(e,t)=>{if(t){const s=t.extends?dmx.Component(t.extends):dmx.BaseComponent;"function"!=typeof t.initialData&&(t.initialData=Object.assign({},s.prototype.initialData,t.initialData)),t.attributes=Object.assign({},s.prototype.attributes,t.attributes),t.methods=Object.assign({},s.prototype.methods,t.methods),t.events=Object.assign({},s.prototype.events,t.events),t.hasOwnProperty("constructor")||(t.constructor=function(e,t){s.call(this,e,t)}),t.type=e;const n=dmx.createClass(t,s);n.extends=t.extends,dmx.__components[e]=n}return dmx.__components[e]},dmx.Attribute=(e,t,s)=>{dmx.__attributes[t][e]=s},dmx.Formatter=(e,t,s)=>{dmx.__formatters[e][t]=s},dmx.Formatters=(e,t)=>{for(const s in t)dmx.Formatter(e,s,t[s])},dmx.Adapter=(e,t,s)=>(s&&(dmx.__adapters[e][t]=s),dmx.__adapters[e][t]),dmx.Action=(e,t)=>{dmx.__actions[e]=t},dmx.Actions=e=>{for(const t in e)dmx.Action(t,e[t])},dmx.Startup=e=>{dmx.__startup.add(e)},dmx.debounce=(e,t)=>{let s;return function(){const n=()=>{e.apply(this,arguments)};t?(clearTimeout(s),s=setTimeout(n,t)):(cancelAnimationFrame(s),s=requestAnimationFrame(n))}},dmx.throttle=(e,t)=>{let s,n=!1;return function(){if(s=Array.from(arguments),!n){const r=()=>{n=!1,s&&e.apply(this,s)};e.apply(this,s),s=void 0,n=!0,t?setTimeout(db,t):requestAnimationFrame(r)}}},dmx.keyCodes={bs:8,tab:9,enter:13,esc:27,space:32,left:37,up:38,right:39,down:40,delete:46,backspace:8,pause:19,capslock:20,escape:27,pageup:33,pagedown:34,end:35,home:36,arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,insert:45,numlock:144,scrolllock:145,semicolon:186,equal:187,comma:188,minus:189,period:190,slash:191,backquote:192,bracketleft:219,backslash:220,bracketright:221,quote:222,numpad0:96,numpad1:97,numpad2:98,numpad3:99,numpad4:100,numpad5:101,numpad6:102,numpad7:103,numpad8:104,numpad9:105,numpadmultiply:106,numpadadd:107,numpadsubstract:109,numpaddivide:111,f1:112,f2:113,f3:114,f4:115,f5:116,f6:117,f7:118,f8:119,f9:120,f10:121,f11:122,f12:123,digit0:48,digit1:49,digit2:50,digit3:51,digit4:52,digit5:53,digit6:54,digit7:55,digit8:56,digit9:57,keya:[65,97],keyb:[66,98],keyc:[67,99],keyd:[68,100],keye:[69,101],keyf:[70,102],keyg:[71,103],keyh:[72,104],keyi:[73,105],keyj:[74,106],keyk:[75,107],keyl:[76,108],keym:[77,109],keyn:[78,110],keyo:[79,111],keyp:[80,112],keyq:[81,113],keyr:[82,114],keys:[83,115],keyt:[84,116],keyu:[85,117],keyv:[86,118],keyw:[87,119],keyx:[88,120],keyy:[89,121],keyz:[90,122]},dmx.eventListener=function(e,t,s,n){let r,i;const a=function(e){if((!n.self||e.target===e.currentTarget)&&(!n.ctrl||e.ctrlKey)&&(!n.alt||e.altKey)&&(!n.shift||e.shiftKey)&&(!n.meta||e.metaKey)&&(!(e.originalEvent||e).nsp||Object.keys(n).includes((e.originalEvent||e).nsp))){if((e.originalEvent||e)instanceof MouseEvent){if(null!=n.button&&e.button!=(parseInt(n.button,10)||0))return;if(n.button0&&0!=e.button)return;if(n.button1&&1!=e.button)return;if(n.button2&&2!=e.button)return;if(n.button3&&3!=e.button)return;if(n.button4&&4!=e.button)return}if((e.originalEvent||e)instanceof KeyboardEvent){var t=[];Object.keys(n).forEach((function(e){var s=parseInt(e,10);s?t.push(s):dmx.keyCodes[e]&&t.push(dmx.keyCodes[e])}));for(var a=0;a({identifier:e.identifier,screenX:e.screenX,screenY:e.screenY,clientX:e.clientX,clientY:e.clientY,pageX:e.pageX,pageY:e.pageY});e.$data.altKey=e.altKey,e.$data.ctrlKey=e.ctrlKey,e.$data.metaKey=e.metaKey,e.$data.shiftKey=e.shiftKey,e.$data.touches=Array.from(e.touches).map(t),e.$data.changedTouches=Array.from(e.changedTouches).map(t),e.$data.targetTouches=Array.from(e.targetTouches).map(t),e.$data.rotation=e.rotation,e.$data.scale=e.scale}if(e instanceof KeyboardEvent&&(e.$data.altKey=e.altKey,e.$data.ctrlKey=e.ctrlKey,e.$data.metaKey=e.metaKey,e.$data.shiftKey=e.shiftKey,e.$data.location=e.location,e.$data.repeat=e.repeat,e.$data.code=e.code,e.$data.key=e.key),n.debounce)clearTimeout(r),r=setTimeout((()=>{s.apply(this,arguments)}),parseInt(n.debounce,10)||0);else{if(!n.throttle)return s.apply(this,arguments);i||(i=!0,s.apply(this,arguments),setTimeout((()=>{i=!1}),parseInt(n.throttle,10)||0))}}};return n=n||{},window.Dom7&&1===e.nodeType?(Dom7(e)[n.once?"once":"on"](t.replace(/-/g,"."),a,!!n.capture),()=>Dom7(e).off(t.replace(/-/g,"."),a,!!n.capture)):window.jQuery&&!n.capture?(jQuery(e)[n.once?"one":"on"](t.replace(/-/g,"."),a),()=>jQuery(e).off(t.replace(/-/g,"."),a)):(e.addEventListener(t.replace(/-/g,"."),a,{capture:!!n.capture,once:!!n.once,passive:!!n.passive}),()=>e.removeEventListener(t.replace(/-/g,"."),a,!!n.capture))},dmx.fileUtils={fileReader:(e,t)=>new Promise(((s,n)=>{const r=new FileReader;r.onload=()=>s(r.result),r.onerror=()=>n(r.error),r[t](e)})),blobToArrayBuffer:function(e){return dmx.fileUtils.fileReader(e,"readAsArrayBuffer")},blobToBinaryString:function(e){return dmx.fileUtils.fileReader(e,"readAsBinaryString")},blobToDataURL:function(e){return dmx.fileUtils.fileReader(e,"readAsDataURL")},blobToBase64String:function(e){return dmx.fileUtils.fileReader(e,"readAsDataURL").then((e=>e.substring(e.indexOf(",")+1)))},arrayBufferToBlob:function(e,t){return Promise.resolve(new Blob([e],{type:t}))},binaryStringToBlob:function(e,t){const s=Uint8Array.from(e,(e=>e.charCodeAt(0)));return Promise.resolve(new Blob([s],{type:t}))},dataURLToBlob:function(e){const{data:t,type:s}=dmx.fileUtils.parseDataURL(e);return dmx.fileUtils.base64StringToBlob(t,s)},base64StringToBlob:function(e,t){const s=window.atob(e);return dmx.fileUtils.binaryStringToBlob(s,t)},parseDataURL:function(e){const t=e.match(/^data:(.*?)(;base64)?,(.*)$/);return{mediaType:t[1],base64:!!t[2],data:t[3],type:t[1].split(";")[0]}},parseMediaType:function(e){const t=e.match(/^([^/]+)\/([^+;]+)(?:\+([^;]+))?(?:;(.*))?$/);return{type:t[1],subtype:t[2],suffix:t[3],parameters:t[4]?t[4].split(";").reduce(((e,t)=>{const[s,n]=t.split("=");return e[s]=n,e}),{}):{}}}};{const e=function(e){const t=history[e];return function(){const s=t.apply(this,arguments),n=new Event(e.toLowerCase());return n.arguments=arguments,window.dispatchEvent(n),s}};history.pushState=e("pushState"),history.replaceState=e("replaceState")}window.onpopstate=function(e){e.state&&e.state.title&&(document.title=e.state.title)},document.documentElement.style.visibility="hidden",dmx.ready((()=>{Promise.all(dmx.__startup).then((()=>{if(dmx.app)throw Error("App already running!");history.replaceState({title:document.title},"");const e=document.querySelector(':root[dmx-app], [dmx-app], :root[is="dmx-app"], [is="dmx-app"]');if(!e)throw Error("App root not found!");const t=dmx.Component("app");dmx.app=new t(e,dmx.global),document.documentElement.style.visibility=""})).catch((e=>{console.error(e),document.documentElement.style.visibility=""}))})),dmx.extend=function(){var e={},t=!1,s=0,n=arguments.length;"[object Boolean]"===Object.prototype.toString.call(arguments[0])&&(t=arguments[0],s++);for(var r=function(s){for(var n in s)"__proto__"!=n&&Object.prototype.hasOwnProperty.call(s,n)&&(t&&"[object Object]"===Object.prototype.toString.call(s[n])?e[n]=dmx.extend(!0,e[n],s[n]):null!=s[n]&&(e[n]=s[n]))};se.dirty=!0)),e.checkValidity()},dmx.validateReset=function(e){},(()=>{const e=[];window.addEventListener("message",(t=>{if(t.source===window&&"dmxNextTick"===t.data&&e.length)for(t.stopPropagation();e.length;){const t=e.shift();t.fn.call(t.context)}}),!0),dmx.nextTick=(t,s)=>{e.push({fn:t,context:s}),window.postMessage("dmxNextTick","*")}})(),dmx.requestUpdate=function(){console.warn("dmx.requestUpdate is deprecated.")},"app:"==document.location.protocol&&dmx.Startup(new Promise((e=>document.addEventListener("deviceready",e)))),(()=>{ /*! (c) Andrea Giammarchi */ -const{is:e}=Object;let t;dmx.batch=e=>{const s=t;t=s||[];try{if(e(),!s)for(const{value:e}of t);}finally{t=s}};class s{constructor(e){this._=e}toJSON(){return this.value}toString(){return String(this.value)}valueOf(){return this.value}}let n;dmx.Signal=s;class r extends s{s;constructor(e,t,s,n){super(e),this.f=n,this.$=!0,this.r=new Set,this.s=new p(t,s)}peek(){return this.s.peek()}get value(){if(this.$){const e=n;n=this;try{this.s.value=this._(this.s._)}finally{this.$=!1,n=e}}return this.s.value}}const i={async:!1,equals:!0};let a;dmx.computed=(e,t,s=i)=>new r(e,t,s,!1);const o=[],d=()=>{},h=({s:e})=>{"function"==typeof e._&&(e._=e._())};class l extends r{constructor(e,t,s){super(e,t,s,!0),this.e=o}run(){return this.$=!0,this.value,this}stop(){this._=d;for(const e of this.r)e.c.delete(this);this.r.clear(),this.s.c.clear()}}dmx.FX=l;class c extends l{constructor(e,t,s){super(e,t,s),this.i=0,this.a=!!s.async,this.m=!0,this.e=[]}get value(){this.a?this.async():this.sync()}async(){this.m&&(this.m=!1,queueMicrotask((()=>{this.m=!0,this.sync()})))}sync(){const e=a;(a=this).i=0,h(this),super.value,a=e}stop(){super.stop(),h(this);for(const e of this.e.splice(0))e.stop()}}dmx.Effect=c;dmx.effect=(e,t,s=i)=>{let n;if(a){const{i:r,e:i}=a,o=r===i.length;(o||i[r]._!==e)&&(o||i[r].stop(),i[r]=new c(e,t,s).run()),n=i[r],a.i++}else n=new c(e,t,s).run();return()=>{n.stop()}};const u=()=>!1;class p extends s{constructor(t,{equals:s}){super(t),this.c=new Set,this.s=!0===s?e:s||u}peek(){return this._}get value(){return n&&(this.c.add(n),n.r.add(this)),this._}set value(e){const s=this._;if(!this.s(this._=e,s)&&this.c.size){const e=[],s=[this];for(const t of s)for(const n of t.c)if(!n.$&&n.r.has(t))if(n.r.clear(),n.$=!0,n.f){e.push(n);const t=[n];for(const e of t)for(const s of e.e)s.r.clear(),s.$=!0,t.push(s)}else s.push(n.s);for(const s of e)t?t.push(s):s.value}}}dmx.signal=(e,t=i)=>new p(e,t)})(),dmx.signalProxy=function(e={}){const t=new Map,s=(e,t)=>dmx.equal(e,t);return new Proxy(e,{has:(e,t)=>!0,get(e,n,r){const i=Reflect.get(e,n,r);return"function"==typeof i||"string"!=typeof n||n.startsWith("_")?i:(t.has(n)||t.set(n,dmx.signal(i,{equals:s})),t.get(n).value)},set(e,s,n,r){const i=Reflect.set(e,s,n,r);return i&&t.has(s)&&(t.get(s).value=n),i},deleteProperty(e,s){const n=Reflect.deleteProperty(e,s);return n&&t.has(s)&&(t.get(s).value=void 0),n}})},(()=>{class e{constructor(e={},t=null){"object"!=typeof e&&(e={$value:e}),this.data=dmx.signalProxy(),Object.assign(this.data,e),this.parent=t,this.seed=Math.random()}get(e){return void 0!==this.data[e]?this.data[e]:this.parent?"parent"==e?this.parent.data:this.parent.get(e):void 0}set(e,t){"object"==typeof e?dmx.batch((()=>{for(var t in e)e.hasOwnProperty(t)&&this.set(t,e[t])})):this.data[e]=t}del(e){delete this.data[e]}}dmx.global=new e,dmx.DataScope=function(t,s){return new e(t,s||dmx.global)}})(),function(){var e=function(t){if(!(this instanceof e))return new e(t);if(t instanceof e)return t;if(!t)return this;var s=t.length;if(t.nodeType)this[0]=t,this.length=1;else{if("string"==typeof t)return e(document.querySelectorAll(t));if(s)for(var n=0;n0?a[e.substr(0,s)]=e.substr(s+1):a[e]=!0}}));var o=r.indexOf(":");o>0&&(i=r.substr(o+1),r=r.substr(0,o)),t.push({name:r,fullName:n.name,value:n.value,argument:i,modifiers:a})}}return t},remove:function(e){Array.isArray(e)?e.forEach((function(e){dmx.dom.remove(e)})):e.remove()},replace:function(e,t){e.parentNode&&e.parentNode.replaceChild(t,e)}}}(),dmx._CACHE=new Map,dmx._OPERATORS=new Map([["{","L_CURLY"],["}","R_CURLY"],["[","L_BRACKET"],["]","R_BRACKET"],["(","L_PAREN"],[")","R_PAREN"],[".","PERIOD"],[",","COMMA"],[";","SEMI"],[":","COLON"],["?","QUESTION"],["-","ADDICTIVE"],["+","ADDICTIVE"],["*","MULTIPLICATIVE"],["/","MULTIPLICATIVE"],["%","MULTIPLICATIVE"],["===","EQUALITY"],["!==","EQUALITY"],["==","EQUALITY"],["!=","EQUALITY"],["<","RELATIONAL"],[">","RELATIONAL"],["<=","RELATIONAL"],[">=","RELATIONAL"],["in","RELATIONAL"],["&&","LOGICAL_AND"],["||","LOGICAL_OR"],["!","LOGICAL_NOT"],["&","BITWISE_AND"],["|","BITWISE_OR"],["^","BITWISE_XOR"],["~","BITWISE_NOT"],["<<","BITWISE_SHIFT"],[">>","BITWISE_SHIFT"],[">>>","BITWISE_SHIFT"]]),dmx._ESCAPE_CHARS=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["'","'"],["`","`"],['"','"']]),dmx._EXPRESSIONS=new Map([["**",(e,t)=>Math.pow(e(),t())],["??",(e,t)=>null==(e=e())?t():e],["in",(e,t)=>e()in t()],["?",(e,t,s)=>e()?t():s()],["+",(e,t)=>(e=e(),t=t(),null==e?t:null==t?e:e+t)],["-",(e,t)=>e()-t()],["*",(e,t)=>e()*t()],["/",(e,t)=>e()/t()],["%",(e,t)=>e()%t()],["===",(e,t)=>e()===t()],["!==",(e,t)=>e()!==t()],["==",(e,t)=>e()==t()],["!=",(e,t)=>e()!=t()],["<",(e,t)=>e()",(e,t)=>e()>t()],["<=",(e,t)=>e()<=t()],[">=",(e,t)=>e()>=t()],["&&",(e,t)=>e()&&t()],["||",(e,t)=>e()||t()],["&",(e,t)=>e()&t()],["|",(e,t)=>e()|t()],["^",(e,t)=>e()^t()],["<<",(e,t)=>e()<>",(e,t)=>e()>>t()],[">>>",(e,t)=>e()>>>t()],["~",e=>~e()],["!",e=>!e()]]),dmx._RESERVED=new Map([["this",e=>()=>e.data],["true",()=>()=>!0],["false",()=>()=>!1],["null",()=>()=>null],["undefined",()=>()=>{}],["_",()=>()=>({__dmxScope__:!0})]]),dmx._SUPPORTED_TYPES=new Map([["Boolean","boolean"],["Null","null"],["Undefined","undefined"],["Number","number"],["BigInt","number"],["Decimal","number"],["String","string"],["Date","date"],["RegExp","regexp"],["Blob","blob"],["File","file"],["FileList","filelist"],["ArrayBuffer","arraybuffer"],["ImageBitmap","imagebitmap"],["ImageData","imagedata"],["Array","array"],["Object","object"],["Map","map"],["Set","set"],["DataView","array"],["Int8Array","array"],["Uint8Array","array"],["Uint8ClampedArray","array"],["Int16Array","array"],["Uint16Array","array"],["Int32Array","array"],["Uint32Array","array"],["Float32Array","array"],["Float64Array","array"],["BigInt64Array","array"],["BigUint64Array","array"]]),dmx.getType=function(e){return dmx._SUPPORTED_TYPES.get(Object.prototype.toString.call(e).slice(8,-1))},dmx.lexer=function(e){if(dmx._CACHE.has(e))return dmx._CACHE.get(e);let t,s,n,r,i,a,o=[],d=0,h=!0;for(;d1?e.slice(d,d+t):e[d]}function c(t=1){return d+t="0"&&e<="9"}function f(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e||"$"===e}function g(e){return f(e)||m(e)}function y(e){return" "==e||"\r"==e||"\t"==e||"\n"==e||"\v"==e||" "==e}function _(e){return"-"==e||"+"==e||m(e)}function v(t){let s=!1,n="";for(d++;d{const n=dmx.parse(s,t);return null==n?"":n}));e=e.slice(2,-2)}if(!e)return;let s,n,r;try{s=Array.from(dmx.lexer(e)),r=function(){const e=[];for(;;)if(s.length>0&&!(a("R_PAREN")||a("R_BRACKET")||a("R_CURLY")||a("COMMA")||a("SEMI"))&&e.push(l()),!o("COMMA")&&!o("SEMI"))return(1==e.length?e[0]:t)();function t(){let t;for(let s=0;s0){const t=s[0];if(!e||t.name==e)return t}return!1}function o(e){const t=a(e);return!!t&&(s.shift(),t)}function d(t){if(!o(t))throw new Error(`Expected ${t} at index ${s[0].index} in expression: ${e}`)}function h(e){const s=Array.prototype.slice.call(arguments,1);return()=>dmx._EXPRESSIONS.has(e)?dmx._EXPRESSIONS.get(e).apply(t,s):e}function l(){return function(){const e=function(){let e=c();for(;o("LOGICAL_OR");){e=h("||",e,c())}return e}();if(o("QUESTION")){const t=l();d("COLON");return h("?",e,t,l())}return e}()}function c(){let e=u();for(;o("LOGICAL_AND");){e=h("&&",e,u())}return e}function u(){let e=p();for(;o("BITWISE_OR");){e=h("|",e,p())}return e}function p(){let e=m();for(;o("BITWISE_XOR");){e=h("^",e,m())}return e}function m(){let e=f();for(;o("BITWISE_AND");){e=h("&",e,f())}return e}function f(){let e,t=g();if(e=o("EQUALITY")){const s=f();t=h(e.value,t,s)}return t}function g(){let e,t=y();if(e=o("RELATIONAL")){const s=g();t=h(e.value,t,s)}return t}function y(){let e,t=function(){let e,t=_();for(;e=o("ADDICTIVE");){const s=_();t=h(e.value,t,s)}return t}();if(e=o("BITWISE_SHIFT")){const s=y();t=h(e.value,t,s)}return t}function _(){let e,t=v();for(;e=o("MULTIPLICATIVE");){const s=v();t=h(e.value,t,s)}return t}function v(){let e;return(e=o("ADDICTIVE"))?"+"==e.value?x():h(e.value,(()=>0),x()):(e=o("LOGICAL_NOT"))||(e=o("BITWISE_NOT"))?h(e.value,v()):x()}function x(){let s,r;if(o("L_PAREN"))s=l(),d("R_PAREN");else if(o("L_CURLY")){const e={};if("R_CURLY"!=i().name)do{const t=o().value;d("COLON"),e[t]=l()()}while(o("COMMA"));s=h(e),d("R_CURLY")}else if(o("L_BRACKET")){const e=[];if("R_BRACKET"!=i().name)do{e.push(l()())}while(o("COMMA"));s=h(e),d("R_BRACKET")}else if(o("PERIOD"))s=a()?E(h(t.data)):h(t.data);else{const n=o();if(!1===n)throw new Error(`Unexpected end of expression: ${e}`);s="IDENT"==n.name?dmx._RESERVED.has(n.value)?dmx._RESERVED.get(n.value)(t):()=>t.get(n.value):"METHOD"==n.name?h(dmx.__formatters.global[n.value]||(()=>{console.warn(`Method "${n.value}" not found in expression: ${e}`)})):()=>n.value}for(;r=o("L_PAREN")||o("L_BRACKET")||o("PERIOD");)if("("==r.value)s=b(s,n);else if("["==r.value)n=s,s=w(s);else{if("."!=r.value)throw new Error(`Unexpected token "${r.value}" at index ${r.index} in expression: ${e}`);n=s,s=E(s)}return n=null,s}function b(s,n){const r=[];if("R_PAREN"!=i().name)do{r.push(l())}while(o("COMMA"));return d("R_PAREN"),()=>{let i=[];n&&i.push(n());for(let e of r)i.push(e());try{return(s()||dmx.noop).apply(t,i)}catch(t){return void console.warn(`Error calling method ${s().name} in expression: ${e}`,t)}}}function w(e){const s=l();return d("R_BRACKET"),()=>{const n=e(),r=s();if("object"==typeof n&&null!=n)return n.__dmxScope__?t.get(r):"map"==dmx.getType(n)?n.get(r):n[r]}}function E(s){const n=o();return()=>{const r=s(),i=dmx.getType(r);if("METHOD"==n.name){const t="__"+n.value;return"map"==i&&"function"==typeof r.get(t)?r.get(t).bind(r):"object"==i&&"function"==typeof r[t]?r[t]:dmx.__formatters[i]&&dmx.__formatters[i][n.value]?dmx.__formatters[i][n.value]:dmx.__formatters.any&&dmx.__formatters.any[n.value]?dmx.__formatters.any[n.value]:()=>{null!=r&&console.warn(`Method "${n.value}" not found in expression: ${e}`)}}return r&&r.__dmxScope__?t.get(n.value):"map"==i?r.get(n.value):r&&"object"==typeof r&&n.value in r?r[n.value]:void 0}}},dmx.BaseComponent=dmx.createClass({constructor:function(e,t){this.$node=e,this.parent=t,this.children=[],this.listeners={},this.__disposables=[],this.__childDisposables=[],this.updatedProps=new Map,this.updateRequested=!1,this.isInitialized=!1,this.isDestroyed=!1,this.props=new Proxy({},{set:(e,t,s,n)=>{const r=Reflect.get(e,t,n),i=Reflect.set(e,t,s,n);return i&&this.isInitialized&&(this.attributes[t]&&this.attributes[t].alwaysUpdate||!dmx.equal(r,s))&&this.requestUpdate(t,r),i}}),this.data=dmx.signalProxy(),this.seed=Math.random(),this.name=e.getAttribute("id")||e.getAttribute("name")||this.type&&this.type.toLowerCase().replace(/^dmx-/,"")||"",this.name=this.name.replace(/[^\w]/g,"");try{this.$initialData(),this.$parseAttributes(e),this.init(e),!1!==this.render&&this.render(e),this.$node&&(this.$customAttributes("mounted",this.$node),this.$node.dmxComponent=this,this.$node.dmxRendered=!0),this.isInitialized=!0}catch(e){console.error(e)}},tag:null,initialData:{},attributes:{},methods:{},events:{destroy:Event},render:function(e){this.$node&&this.$parse()},parse:function(e){return dmx.parse(e,this)},find:function(e){if(this.name==e)return this;for(var t=0;t{if(t==this.$node){if("bind"==s.name&&this.attributes[(n=s.argument,n.replace(/-./g,(e=>e[1].toUpperCase())))])return;if("on"==s.name&&this.events[s.argument])return}var n;if(dmx.__attributes[e][s.name]){this.__inChild=t!=this.$node;const n=dmx.__attributes[e][s.name].call(this,t,s);n&&this[this.__inChild?"__childDisposables":"__disposables"].push(n)}})),this.__inChild=null},$parseTextNode(e){if(3===e.nodeType&&dmx.reExpression.test(e.nodeValue)){const t=e.nodeValue.replace(dmx.reExpressionReplace,((e,t)=>`##split##${t}##split##`)).split("##split##"),s=document.createDocumentFragment();t.forEach(((e,t)=>{const n=document.createTextNode(e);s.appendChild(n),t%2&&this.$watch(e,(e=>{n.nodeValue=e}))})),e.parentNode.replaceChild(s,e)}},$parse:function(e){if(e=e||this.$node)return 3===e.nodeType?this.$parseTextNode(e):void(1===e.nodeType&&(dmx.config.mapping&&Object.keys(dmx.config.mapping).forEach((t=>{dmx.array(e.querySelectorAll(t)).forEach((e=>{e.hasAttribute("is")||e.setAttribute("is","dmx-"+dmx.config.mapping[t])}))})),dmx.dom.walk(e,(function(e){if(e!=this.$node){if(1===e.nodeType){var t=e.tagName.toLowerCase(),s=dmx.dom.getAttributes(e);if(e.hasAttribute("is")&&(t=e.getAttribute("is")),dmx.reIgnoreElement.test(t))return!1;if(this.$customAttributes("before",e,s),-1!==s.findIndex((e=>"repeat"===e.name)))return!1;if(dmx.rePrefixed.test(t))return(t=t.replace(/^dmx-/i,""))in dmx.__components?(e.isComponent=!0,e.dmxRendered?window.__WAPPLER__&&e.dmxComponent&&e.dmxComponent.$parse&&(dmx.reIgnoreElement.test(e.tagName)||e.dmxComponent.$parse()):this.$createChild(t,e),!1):void console.warn("Unknown component found! "+t);this.$customAttributes("mounted",e,s)}3===e.nodeType&&this.$parseTextNode(e)}}),this)))},$update:function(e){console.warn("Component.$update is deprecated.")},$parseAttributes:function(e){for(const t in this.attributes){const s=this.attributes[t],n=t.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase()));let r=dmx.clone(s.default);if(e.hasAttribute(n)){if(s.type===Boolean)r="false"!==e.getAttribute(n);else{if(r=e.getAttribute(n),s.type===Number&&r&&isFinite(Number(r))&&(r=Number(r)),s.type===Object||s.type===Array)try{r=JSON.parse(r)}catch(e){console.warn("Invalid attribute value, expected a JSON string got "+r)}s.enum&&!s.enum.includes(r)&&(r=dmx.clone(s.default)),s.validate&&!s.validate(r)&&(r=dmx.clone(s.default))}this.props[t]=r}if(e.hasAttribute("dmx-bind:"+n)){const r=e.getAttribute("dmx-bind:"+n);this.$watch(r,(e=>{void 0===e?e=dmx.clone(s.default):s.type===Boolean?e=!!e:(null!=e&&(s.type===Number&&("string"==typeof e?e=e&&isFinite(Number(e))?Number(e):dmx.clone(s.default):"number"==typeof e&&isFinite(Number(e))||(e=dmx.clone(s.default))),s.type===String&&(e=String(e)),s.type===Object&&"object"!=typeof e&&(e=dmx.clone(s.default)),s.type===Array&&(e=Array.from(e))),s.enum&&!s.enum.includes(e)&&(e=dmx.clone(s.default)),s.validate&&!s.validate(e)&&(e=dmx.clone(s.default))),this.props[t]=e}))}else this.props[t]=r}for(const t in this.events)e.hasAttribute("on"+t)&&this.__disposables.push(dmx.eventListener(this,t,Function("event",e.getAttribute("on"+t)),{}));dmx.dom.getAttributes(e).forEach((e=>{"on"==e.name&&this.events[e.argument]&&this.__disposables.push(dmx.eventListener(this,e.argument,(t=>(t.originalEvent&&(t=t.originalEvent),dmx.parse(e.value,dmx.DataScope({$event:t.$data,$originalEvent:t},this)))),e.modifiers))}))},requestUpdate:function(e,t){this.performUpdate&&(this.updatedProps.has(e)||this.updatedProps.set(e,t),this.updateRequested||dmx.nextTick((()=>{this.isDestroyed||(this.updateRequested=!1,this.performUpdate(this.updatedProps),this.updatedProps.clear())})),this.updateRequested=!0)},$initialData:function(){Object.assign(this.data,{$type:this.type},"function"==typeof this.initialData?this.initialData():this.initialData),Object.keys(this.methods).forEach((function(e){var t=this;this.data["__"+e]=function(){return t.methods[e].apply(t,Array.prototype.slice.call(arguments,1))}}),this)},$addBinding:function(e,t){this.$watch(e,t)},$watch:function(e,t){const s=this.__inChild?"__childDisposables":"__disposables";this[s]||(this[s]=[]);let n=!0;this[s].push(dmx.effect((()=>{if(n)t.call(this,this.parse(e)),n=!1;else{const s=this.parse(e);queueMicrotask((()=>t.call(this,s)))}})))},$destroy:function(){this.dispatchEvent("destroy"),this.beforeDestroy(),this.destroy(),this.isDestroyed=!0,this.parent&&this.parent.$removeChild&&this.parent.$removeChild(this),this.$destroyChildren(),this.__disposables.forEach((e=>e())),this.__disposables=[],this.$node&&(this.$node.dmxComponent=null,this.$node=null),this.parent=null,this.data={},this.destroyed()},$destroyChildren:function(){Array.from(this.children).forEach((e=>{e.$destroy()})),this.children=[],this.__childDisposables.forEach((e=>e())),this.__childDisposables=[]},get:function(e,t){return void 0!==this.data[e]?this.data[e]:this.parent&&!0!==t?"parent"==e?this.parent.data:this.parent.get(e):void 0},add:function(e,t){this.data[e]?Array.isArray(this.data[e])?this.data[e].push(t):this.data[e]=[this.data[e],t]:this.set(e,t)},set:function(e,t){"object"==typeof e?dmx.batch((()=>{for(var t in e)e.hasOwnProperty(t)&&this.set(t,e[t])})):this.data[e]=t},del:function(e){delete this.data[e]}}),function(){dmx.pathToRegexp=d,dmx.pathToRegexp.parse=s,dmx.pathToRegexp.compile=function(e,t){return n(s(e,t))},dmx.pathToRegexp.tokensToFunction=n,dmx.pathToRegexp.tokensToRegExp=o;var e="/",t=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function s(s,n){for(var a,o=[],d=0,h=0,l="",c=n&&n.delimiter||e,u=n&&n.whitelist||void 0,p=!1;null!==(a=t.exec(s));){var m=a[0],f=a[1],g=a.index;if(l+=s.slice(h,g),h=g+m.length,f)l+=f[1],p=!0;else{var y="",_=a[2],v=a[3],x=a[4],b=a[5];if(!p&&l.length){var w=l.length-1,E=l[w];(!u||u.indexOf(E)>-1)&&(y=E,l=l.slice(0,w))}l&&(o.push(l),l="",p=!1);var $="+"===b||"*"===b,k="?"===b||"*"===b,A=v||x,C=y||c;o.push({name:_||d++,prefix:y,delimiter:C,optional:k,repeat:$,pattern:A?i(A):"[^"+r(C===c?C:C+c)+"]+?"})}}return(l||h0&&"\n"!==t[n];n--,r++);for(;n>0;n--)"\n"===t[n]&&i++;throw new Error(e+" at line "+i+","+r+" >>>"+t.substr(s-r,20)+" ...")}function o(){return n=t.charAt(s),s++,n}function d(e){return t.charAt(s+e)}function h(e){for(var t="",s=n;o();){if(n===s)return o(),e&&"'"===s&&"'"===n&&0===t.length?(o(),l()):t;if("\\"===n)if(o(),"u"===n){for(var i=0,d=0;d<4;d++){o();var h,c=n.charCodeAt(0);n>="0"&&n<="9"?h=c-48:n>="a"&&n<="f"?h=c-97+10:n>="A"&&n<="F"?h=c-65+10:a("Bad \\u char "+n),i=16*i+h}t+=String.fromCharCode(i)}else{if("string"!=typeof r[n])break;t+=r[n]}else"\n"===n||"\r"===n?a("Bad string containing newline"):t+=n}a("Bad string")}function l(){for(var e="",t=0,s=0;;){var r=d(-s-5);if(!r||"\n"===r)break;s++}function i(){for(var e=s;n&&n<=" "&&"\n"!==n&&e-- >0;)o()}for(;n&&n<=" "&&"\n"!==n;)o();for("\n"===n&&(o(),i());;){if(n){if("'"===n){if(t++,o(),3===t)return"\n"===e.slice(-1)&&(e=e.slice(0,-1)),e;continue}for(;t>0;)e+="'",t--}else a("Bad multiline string");"\n"===n?(e+="\n",o(),i()):("\r"!==n&&(e+=n),o())}}function c(){if('"'===n||"'"===n)return h(!1);for(var e="",t=s,r=-1;;){if(":"===n)return e?r>=0&&r!==e.length&&(s=t+r,a("Found whitespace in your key name (use quotes to include)")):a("Found ':' but no key name (for an empty key name use quotes)"),e;n<=" "?n?r<0&&(r=e.length):a("Found EOF while looking for a key name (check your syntax)"):i(n)?a("Found '"+n+"' where a key name was expected (check your syntax or use quotes if the key name includes {}[],: or whitespace)"):e+=n,o()}}function u(){for(;n;){for(;n&&n<=" ";)o();if("#"===n||"/"===n&&"/"===d(0))for(;n&&"\n"!==n;)o();else{if("/"!==n||"*"!==d(0))break;for(o(),o();n&&("*"!==n||"/"!==d(0));)o();n&&(o(),o())}}}function p(e,t){var s,n,r="",i=0,a=!0,o=0;function d(){return n=e.charAt(o),o++,n}for(d(),"-"===n&&(r="-",d());n>="0"&&n<="9";)a&&("0"==n?i++:a=!1),r+=n,d();if(a&&i--,"."===n)for(r+=".";d()&&n>="0"&&n<="9";)r+=n;if("e"===n||"E"===n)for(r+=n,d(),"-"!==n&&"+"!==n||(r+=n,d());n>="0"&&n<="9";)r+=n,d();for(;n&&n<=" ";)d();return t&&(","!==n&&"}"!==n&&"]"!==n&&"#"!==n&&("/"!==n||"/"!==e[o]&&"*"!==e[o])||(n=0)),s=+r,n||i||!isFinite(s)?void 0:s}function m(e){function t(e,s){var n,r,i,a;switch(typeof e){case"string":e.indexOf(s)>=0&&(a=e);break;case"object":if("[object Array]"===Object.prototype.toString.apply(e))for(n=0,i=e.length;n "+n+"\n (unquoted strings contain everything up to the next line!)":""}return s("}")||s("]")}function f(){var e=[];try{if(o(),u(),"]"===n)return o(),e;for(;n;){if(e.push(y()),u(),","===n&&(o(),u()),"]"===n)return o(),e;u()}a("End of input while parsing an array (missing ']')")}catch(t){throw t.hint=t.hint||m(e),t}}function g(e){var t="",s={};try{if(e||o(),u(),"}"===n&&!e)return o(),s;for(;n;){if(t=c(),u(),":"!==n&&a("Expected ':' instead of '"+n+"'"),o(),s[t]=y(),u(),","===n&&(o(),u()),"}"===n&&!e)return o(),s;u()}if(e)return s;a("End of input while parsing an object (missing '}')")}catch(e){throw e.hint=e.hint||m(s),e}}function y(){switch(u(),n){case"{":return g();case"[":return f();case"'":case'"':return h(!0);default:return function(){var e=n;for(i(n)&&a("Found a punctuator character '"+n+"' when expecting a quoteless string (check your syntax)");;){o();var t="\r"===n||"\n"===n||""===n;if(t||","===n||"}"===n||"]"===n||"#"===n||"/"===n&&("/"===d(0)||"*"===d(0))){var s=e[0];switch(s){case"f":if("false"===e.trim())return!1;break;case"n":if("null"===e.trim())return null;break;case"t":if("true"===e.trim())return!0;break;default:if("-"===s||s>="0"&&s<="9"){var r=p(e);if(void 0!==r)return r}}if(t)return e.trim()}e+=n}}()}}function _(e){return u(),n&&a("Syntax error, found trailing characters"),e}if("string"!=typeof e)throw new Error("source is not a string");return t=e,s=0,n=" ",function(){switch(u(),n){case"{":return _(g());case"[":return _(f());default:return _(y())}}()}),dmx.Flow=dmx.createClass({constructor:function(e){if(!(this instanceof dmx.Flow))return new dmx.Flow(e);window.Promise||console.warn("Promises are not supported, flows can not be used"),this._execStep=this._execStep.bind(this),this.scope=new dmx.DataScope({},e),this.output={}},run:function(e){return this.output={},this._exec(e.exec||e).then((()=>(dmx.debug&&console.debug("finished",this.output),this.output)))},_each:function(e,t){return Promise.resolve(e).then((e=>(e=Array.isArray(e)?e:[e]).reduce(((s,n,r)=>s.then((()=>t(n,r,e.length).then((t=>{t&&(e[r]=t)}))))),Promise.resolve()).then((()=>e))))},_exec:function(e){if(e.steps){var t=this._each(e.steps,this._execStep);return e.catch&&t.catch((t=>this._each(e.catch,self._execStep))),t}return this._each(e,this._execStep)},_execStep:function(e){for(let t in e){if(e.hasOwnProperty(t)&&dmx.__actions[t]){const s=dmx.__actions[t].bind(this),n=e[t],r=t+Date.now();return dmx.debug&&(console.debug("exec action",t,n),console.time(r)),n.disabled?Promise.resolve():Promise.resolve(s(n)).then((e=>{dmx.debug&&(console.debug("finished exec action",t,n),console.timeEnd(r)),n.name&&(dmx.debug&&console.debug("set data",n.name,e),this.scope.set(n.name,e),n.output&&(dmx.debug&&console.debug("set output",n.name,e),this.output[n.name]=e))}))}throw new Error("Action "+t+" was not found.")}},parse:function(e){if(null==e)return e;if("object"==typeof(e=e.valueOf())){var t=e.slice?[]:{};for(var s in e)e.hasOwnProperty(s)&&(t[s]=this.parse(e[s],this.scope));return t}return"string"==typeof e&&-1!=e.indexOf("{{")?dmx.parse(e,this.scope):e}}),dmx.Flow.run=function(e,t){return new dmx.Flow(t).run(e)},dmx.Component("app",{initialData:{query:{}},events:{ready:Event,load:Event},init(){this.dispatchLoad=this.dispatchEvent.bind(this,"load"),this._parseQuery=this._parseQuery.bind(this),window.addEventListener("load",this.dispatchLoad,{once:!0}),window.addEventListener("load",this._parseQuery),window.addEventListener("popstate",this._parseQuery),window.addEventListener("pushstate",this._parseQuery),window.addEventListener("replacestate",this._parseQuery),this._parseQuery(),queueMicrotask((()=>this.dispatchEvent("ready")))},destroy(){window.removeEventListener("load",this.dispatchLoad),window.removeEventListener("load",this._parseQuery),window.removeEventListener("popstate",this._parseQuery),window.removeEventListener("pushstate",this._parseQuery),window.removeEventListener("replacestate",this._parseQuery)},_parseQuery(){let e="";window.location.search?e=window.location.search.slice(1):window.location.hash.indexOf("?")&&(e=window.location.hash.slice(window.location.hash.indexOf("?")+1),e.indexOf("#")>0&&(e=e.slice(0,e.indexOf("#"))));let t=e.split("&").reduce((function(e,t){var s=t.replace(/\+/g," ").split("=");return s[0]&&(e[decodeURIComponent(s[0])]=decodeURIComponent(s[1]||"")),e}),{}),s=document.querySelector('meta[name="ac:base"]'),n=document.querySelector('meta[name="ac:route"]');if(n&&n.content){let e=[],r=n.content;s&&s.content&&(r=s.content.replace(/\/$/,"")+r);let i=dmx.pathToRegexp(r,e,{end:!1}).exec(decodeURI(window.location.pathname));i&&e.forEach((function(e,s){t[e.name]=i[s+1]}))}this.set("query",t)}}),dmx.Component("form",{attributes:{novalidate:{type:Boolean,default:!1}},methods:{submit(e){this._submit(e)},reset(){this._reset()},validate(){this._validate()}},events:{invalid:Event,submit:Event},init(e){this._submitHandler=this._submitHandler.bind(this),this._resetHandler=this._resetHandler.bind(this),e.noValidate=!0,e.addEventListener("submit",this._submitHandler),e.addEventListener("reset",this._resetHandler)},destroy(){this.$node.removeEventListener("submit",this._submitHandler),this.$node.removeEventListener("reset",this._resetHandler)},_submitHandler(e){e.preventDefault(),this._submit()},_resetHandler(e){dmx.validateReset&&dmx.validateReset(this.$node),window.grecaptcha&&this.$node.querySelector(".g-recaptcha")&&grecaptcha.reset()},_submit(e){if(e)return this._formSubmit();this.props.novalidate||this._validate()?this.dispatchEvent("submit",{cancelable:!0})&&this._formSubmit():(this.dispatchEvent("invalid"),this._focusFirstInvalid())},_reset(){this._formReset()},_validate(){return dmx.validate?dmx.validate(this.$node):(Array.from(this.$node.elements).forEach((e=>e.dirty=!0)),this.$node.checkValidity())},_formSubmit(){HTMLFormElement.prototype.submit.call(this.$node)},_formReset(){HTMLFormElement.prototype.reset.call(this.$node)},_focusFirstInvalid(){const e=Array.from(this.$node.elements).find((e=>!e.validity.valid));e&&e.focus()},_parseJsonForm(){const e={};for(const n of this.$node.elements)if(n.name&&!n.disabled){const r=t(n.name.replace(/\[\]$/,""));let i=e;for(const e of r){const t=n.type;"number"==t?n.value&&(i=s(i,e,i[e.key],+n.value)):"radio"==t||"checkbox"==t?n.getAttribute("value")?n.checked&&(i=s(i,e,i[e.key],n.value)):i=s(i,e,i[e.key],n.checked):i=s(i,e,i[e.key],"select-multiple"==t?Array.from(n.selectedOptions).map((e=>e.value)):n.value)}}return e;function t(e){const t=[],s=e,n=/^\[([^\]]*)\]/,r=/^\d+$/;if(!(e=e.replace(/^([^\[]+)/,((e,s)=>(t.push({type:"object",key:s}),"")))))return t[0].last=!0,t;for(;e;){if(!n.test(e))return{type:"object",key:s,last:!0};e=e.replace(n,((e,s)=>(s?r.test(s)?t.push({type:"array",key:+s}):t.push({type:"object",key:s}):t[t.length-1].append=!0,"")))}for(let e=0,s=t.length;ethis.dispatchEvent("updated")))},_focus(){this.$node.focus()},_disable(e){this.$node.disabled=e,this.set("disabled",this.$node.disabled)},_validate(){dmx.validate(this.$node),this.$node.dirty&&this.set({invalid:!this.$node.validity.valid,validationMessage:this.$node.validationMessage})},_inputHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.$node&&this.data.value!==this.$node.value&&(this.set("value",this.$node.value),e&&this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.$node&&this.data.value!==this.$node.value&&(this.set("value",this.$node.value),e&&this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))},_invalidHandler(e){this.set({invalid:!this.$node.validity.valid,validationMessage:this.$node.validationMessage})},_resetHandler(e){this.$node&&(this.$node.dirty=!1,this.set({invalid:!1,validationMessage:""}),this._changeHandler(e))},_focusHandler(e){this.set("focused",!0)},_blurHandler(e){this.set("focused",!1)}}),dmx.Component("textarea",{extends:"form-element",init(e){if(!this.props.value){const e=this.$node.value;this.props.value=e.includes("{{")?this.parse(e):e}dmx.Component("form-element").prototype.init.call(this,e)}}),dmx.Component("input",{extends:"form-element"}),dmx.Component("input-file",{extends:"form-element",attributes:{imageMaxWidth:{type:Number,default:null},imageMaxHeight:{type:Number,default:null},imageType:{type:String,default:null,enum:["png","jpeg","webp"]},imageQuality:{type:Number,default:null}},initialData:{file:null},_imageTypes:{png:"image/png",jpeg:"image/jpeg",webp:"image/webp","image/png":"image/png","image/jpeg":"image/jpeg","image/webp":"image/webp"},_imageExtensions:{"image/png":"png","image/jpeg":"jpg","image/webp":"webp"},_setValue(e){console.warn("Can not set value of a file input!")},_changeHandler(e){dmx.Component("form-element").prototype._changeHandler.call(this,e),this._updateData(),this.$node.files.length&&(this.props.imageMaxWidth||this.props.imageMaxHeight||this.props.imageType)&&this._resizeImage()},_resizeImage(){const e=this.$node.files[0];if(e&&e.type.startsWith("image/")){const t=URL.createObjectURL(e),s=new Image;s.src=t,s.onerror=()=>URL.revokeObjectURL(t),s.onload=()=>{URL.revokeObjectURL(t);const{imageMaxWidth:n,imageMaxHeight:r,imageType:i,imageQuality:a}=this.props;let o=s.width,d=s.height,h=o/d,l=!1;n&&o>n&&(o=n,d=~~(o/h),l=!0),r&&d>r&&(d=r,o=~~(d*h),l=!0);const c=i?this._imageTypes[i]:e.type;if(c!==e.type||l){const t=document.createElement("canvas"),n=t.getContext("2d");t.width=o,t.height=d,n.drawImage(s,0,0,o,d),t.toBlob((t=>{if(null==t)return console.error("Could not resize image!");const s=new DataTransfer,n=e.name.replace(/\.\w+$/,"."+this._imageExtensions[t.type]),r=new File([t],n,{type:t.type});s.items.add(r),this.$node.files=s.files,this._updateData()}),c,a?a/100:void 0)}}}},_updateData(){let e=null;if(this.$node.files.length){const t=this,s=this.$node.files[0];e={date:(s.lastModified?new Date(s.lastModified):s.lastModifiedDate).toISOString(),name:s.name,size:s.size,type:s.type,get dataUrl(){return s._dataUrl||dmx.fileUtils.blobToDataURL(s).then((n=>{s._dataUrl=n,t.set("file",Object.assign({},e,{dataUrl:n}))})).catch((e=>{console.error(e)})),null}}}this.set("file",e)}}),dmx.Component("input-file-multiple",{extends:"form-element",attributes:{imageMaxWidth:{type:Number,default:null},imageMaxHeight:{type:Number,default:null},imageType:{type:String,default:null,enum:["png","jpeg","webp"]},imageQuality:{type:Number,default:null}},initialData:{files:[]},_imageTypes:{png:"image/png",jpeg:"image/jpeg",webp:"image/webp","image/png":"image/png","image/jpeg":"image/jpeg","image/webp":"image/webp"},_imageExtensions:{"image/png":"png","image/jpeg":"jpg","image/webp":"webp"},_setValue(e){console.warn("Can not set value of a file input!")},_changeHandler(e){dmx.Component("form-element").prototype._changeHandler.call(this,e),this._updateData(),this.$node.files.length&&(this.props.imageMaxWidth||this.props.imageMaxHeight||this.props.imageType)&&this._resizeImages()},_resizeImages(){const e=Array.from(this.$node.files);Promise.all(e.map((e=>new Promise((t=>{if(!e.type.startsWith("image/"))return void t(e);const s=URL.createObjectURL(e),n=new Image;n.src=s,n.onerror=()=>URL.revokeObjectURL(s),n.onload=()=>{URL.revokeObjectURL(s);const{imageMaxWidth:r,imageMaxHeight:i,imageType:a,imageQuality:o}=this.props;let d=n.width,h=n.height,l=d/h,c=!1;r&&d>r&&(d=r,h=~~(d/l),c=!0),i&&h>i&&(h=i,d=~~(h*l),c=!0);const u=a?this._imageTypes[a]:e.type;if(u!==e.type||c){const s=document.createElement("canvas"),r=s.getContext("2d");s.width=d,s.height=h,r.drawImage(n,0,0,d,h),s.toBlob((s=>{if(null==s)return console.error("Could not resize image!");const n=e.name.replace(/\.\w+$/,"."+this._imageExtensions[s.type]),r=new File([s],n,{type:s.type});t(r)}),u,o?o/100:void 0)}else t(e)}}))))).then((e=>{const t=new DataTransfer;for(let s of e)t.items.add(s);this.$node.files=t.files,this._updateData()}))},_updateData(){let e=[];if(this.$node.files.length){const t=this;e=Array.from(this.$node.files).map(((s,n)=>({date:(s.lastModified?new Date(s.lastModified):s.lastModifiedDate).toISOString(),name:s.name,size:s.size,type:s.type,get dataUrl(){return s._dataUrl||(loading=!0,dmx.fileUtils.blobToDataURL(s).then((r=>{s._dataUrl=r,e=dmx.clone(e),e[n].dataUrl=r,t.set("files",e)})).catch((e=>{console.error(e)}))),null}})))}this.set("files",e)}}),dmx.Component("button",{extends:"form-element",attributes:{type:{type:String,default:"button",enum:["button","reset","submit"]}},init(e){dmx.Component("form-element").prototype.init.call(this,e),e.type=this.props.type}}),dmx.Component("radio",{extends:"form-element",initialData:{checked:!1},attributes:{checked:{type:Boolean,default:!1,alwaysUpdate:!0}},methods:{select(e,t){this._select(e),t&&dmx.nextTick((()=>{this.dispatchEvent("changed"),this.dispatchEvent(this.$node.checked?"checked":"unchecked")}))}},events:{checked:Event,unchecked:Event},init(e){dmx.Component("form-element").prototype.init.call(this,e),e.type="radio",e.checked=this.props.checked,e.defaultChecked=this.props.checked,this.props.checked&&this.set("checked",!0)},performUpdate(e){dmx.Component("form-element").prototype.performUpdate.call(this,e),e.has("checked")&&this.$node.checked!=this.props.checked&&(this.$node.defaultChecked=this.props.checked,this.$node.checked=this.props.checked,this.set("checked",this.props.checked),this.$node.dispatchEvent(new Event("radio",{bubbles:!0})),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_select(e){this.$node.checked=!1!==e,this.set("checked",this.$node.checked),dmx.nextTick((()=>this.dispatchEvent("updated")))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{if(this.$node&&(this.set("checked",this.$node.checked),this.dispatchEvent("changed"),this.dispatchEvent(this.$node.checked?"checked":"unchecked"),dmx.nextTick((()=>this.dispatchEvent("updated"))),this.$node.checked&&this.$node.form))for(const e of this.$node.form.elements)e!=this.$node&&"radio"==e.type&&e.name==this.$node.name&&e.dispatchEvent(new Event("change",{bubbles:!0}))}))}}),dmx.Component("radio-group",{initialData:{value:null},attributes:{value:{type:String,default:null,alwaysUpdate:!0}},methods:{setValue(e){this._setValue(e)}},events:{updated:Event},init(e){this._changeHandler=this._changeHandler.bind(this),e.addEventListener("change",this._changeHandler),e.addEventListener("radio",this._changeHandler)},render(e){this.$parse(),this._setValue(this.props.value,!0),this._mutationObserver=new MutationObserver((e=>{let t=this.props.value;null==t&&(t=""),t=t.toString();for(let s of e){"attributes"==s.type&&"value"==s.attributeName&&"INPUT"===s.target.tagName&&"radio"===s.target.type&&(s.target.checked=s.target.value==t,s.target.defaultChecked=s.target.checked,requestAnimationFrame((()=>{this._updateValue()})));for(let e of s.addedNodes)e.nodeType===Node.ELEMENT_NODE&&requestAnimationFrame((()=>{"INPUT"===e.tagName&&"radio"===e.type?(e.checked=e.value==t,e.defaultChecked=e.checked):e.querySelectorAll("input[type=radio]").forEach((s=>{s.checked=e.value==t,s.defaultChecked=s.checked})),requestAnimationFrame((()=>{this._updateValue()}))}))}})),this._mutationObserver.observe(e,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["value"]})},destroy(){this._mutationObserver.disconnect(),this.$node.removeEventListener("change",this._changeHandler),this.$node.removeEventListener("radio",this._changeHandler)},performUpdate(e){e.has("value")&&this._setValue(this.props.value,!0)},_setValue(e,t){null!=e&&(e=e.toString(),this._radios().forEach((s=>{s.checked=s.value==e,t&&(s.defaultChecked=s.checked)})),this._updateValue())},_updateValue(){const e=this._radios().filter((e=>!e.disabled&&e.checked)).map((e=>e.value));dmx.equal(this.data.value,e[0])||(this.set("value",e[0]||null),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_radios(){return Array.from(this.$node.querySelectorAll("input[type=radio]"))},_changeHandler(e){this._updateValue()}}),dmx.Component("checkbox",{extends:"form-element",initialData:{checked:!1},attributes:{checked:{type:Boolean,default:!1,alwaysUpdate:!0}},methods:{select(e,t){this._select(e),t&&dmx.nextTick((()=>{this.dispatchEvent("changed"),this.dispatchEvent(this.$node.checked?"checked":"unchecked")}))}},events:{checked:Event,unchecked:Event},init(e){dmx.Component("form-element").prototype.init.call(this,e),e.type="checkbox",e.checked=this.props.checked,e.defaultChecked=this.props.checked,this.props.checked&&this.set("checked",!0)},performUpdate(e){dmx.Component("form-element").prototype.performUpdate.call(this,e),e.has("checked")&&this.$node.checked!=this.props.checked&&(this.$node.defaultChecked=this.props.checked,this.$node.checked=this.props.checked,this.set("checked",this.props.checked),this.$node.dispatchEvent(new Event("checkbox",{bubbles:!0})),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_select(e){this.$node.checked=!1!==e,this.set("checked",this.$node.checked),dmx.nextTick((()=>this.dispatchEvent("updated")))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.$node&&(this.set("checked",this.$node.checked),this.dispatchEvent("changed"),"reset"!=e.type&&this.dispatchEvent(this.$node.checked?"checked":"unchecked"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))}}),dmx.Component("checkbox-group",{initialData:{value:[]},attributes:{value:{type:Array,default:[],alwaysUpdate:!0}},methods:{setValue(e){this._setValue(e)}},events:{updated:Event},init(e){this._changeHandler=this._changeHandler.bind(this),e.addEventListener("change",this._changeHandler),e.addEventListener("checkbox",this._changeHandler)},render(e){this.$parse(),this._setValue(this.props.value,!0),this._mutationObserver=new MutationObserver((e=>{let t=this.props.value;null==t&&(t=[]),Array.isArray(t)||(t=[t]),t=t.map((e=>e.toString()));for(let s of e)for(let e of s.addedNodes)e.nodeType===Node.ELEMENT_NODE&&requestAnimationFrame((()=>{"INPUT"===e.tagName&&"checkbox"===e.type?(e.checked=t.includes(e.value),e.defaultChecked=e.checked):e.querySelectorAll("input[type=checkbox]").forEach((e=>{e.checked=t.includes(e.value),e.defaultChecked=e.checked})),requestAnimationFrame((()=>{this._updateValue()}))}))})),this._mutationObserver.observe(e,{subtree:!0,childList:!0})},destroy(){this._mutationObserver.disconnect(),this.$node.removeEventListener("change",this._changeHandler),this.$node.removeEventListener("checkbox",this._changeHandler)},performUpdate(e){e.has("value")&&this._setValue(this.props.value,!0)},_setValue(e,t){null==e&&(e=[]),Array.isArray(e)||(e=[e]),e=e.map((e=>e.toString())),this._checkboxes().forEach((s=>{s.checked=e.includes(s.value),t&&(s.defaultChecked=s.checked)})),this._updateValue()},_updateValue(){const e=this._checkboxes().filter((e=>!e.disabled&&e.checked)).map((e=>e.value));dmx.equal(this.data.value,e)||(this.set("value",e),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_checkboxes(){return Array.from(this.$node.querySelectorAll("input[type=checkbox]"))},_changeHandler(e){this._updateValue()}}),dmx.Component("select",{extends:"form-element",initialData:{selectedIndex:-1,selectedValue:"",selectedText:""},attributes:{options:{type:[Array,Object,Number],default:null},optiontext:{type:String,default:"$value"},optionvalue:{type:String,default:"$value"}},methods:{setSelectedIndex(e){this.$node.selectedIndex=e,this._updateValue()}},init(e){this._options=[],this.props.value||(this.props.value=this.$node.value,this._updateValue()),this._mutationObserver=new MutationObserver((e=>{this._updatingOptions||this._updateValue()})),this._mutationObserver.observe(this.$node,{subtree:!0,childList:!0}),dmx.Component("form-element").prototype.init.call(this,e)},render(e){this.$parse(),this._renderOptions();let t=this.props.value;null==t&&(t=""),Array.from(this.$node.options).forEach((e=>{e.toggleAttribute("selected",e.value==t),e.selected=e.value==t,e.defaultSelected=e.selected})),this._updateValue()},destroy(){this._mutationObserver.disconnect(),dmx.Component("form-element").prototype.destroy.call(this)},performUpdate(e){dmx.Component("form-element").prototype.performUpdate.call(this,e),(e.has("options")||e.has("optiontext")||e.has("optionvalue"))&&this._renderOptions()},_setValue(e,t){if(null==e&&(e=""),e=e.toString(),t)Array.from(this.$node.options).forEach((t=>{t.toggleAttribute("selected",t.value==e),t.defaultSelected=t.selected}));else{const t=Array.from(this.$node.options).findIndex((t=>t.value==e));this.$node.selectedIndex=t}this._updateValue(),dmx.nextTick((()=>this.dispatchEvent("updated")))},_updateValue(){const e=this.$node.selectedIndex,t=this.$node.options[e]||{value:"",text:""};this.set({selectedIndex:e,selectedValue:t.value,selectedText:t.text,value:t.value})},_renderOptions(){this._options.forEach((e=>e.remove())),this._options=[],this.props.options&&(this._updatingOptions=!0,dmx.repeatItems(this.props.options).forEach((e=>{const t=document.createElement("option");t.value=dmx.parse(this.props.optionvalue,dmx.DataScope(e,this)),t.textContent=dmx.parse(this.props.optiontext,dmx.DataScope(e,this)),t.value==this.props.value&&(t.selected=!0),t.defaultSelected=t.selected,this.$node.append(t),this._options.push(t)})),this._updatingOptions=!1),this._updateValue()},_inputHandler(e){},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.data.selectedIndex!==this.$node.selectedIndex&&(this._updateValue(),this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))}}),dmx.Component("select-multiple",{extends:"select",initialData:{value:[]},attributes:{value:{type:Array,default:null,alwaysUpdate:!0}},performUpdate(e){dmx.Component("select").prototype.performUpdate.call(this,e),e.has("value")&&this._setValue(this.props.value,!0)},_setValue(e,t){null==e&&(e=""),Array.isArray(e)||(e=[e]),e=e.map((e=>e.toString())),Array.from(this.$node.options).forEach((s=>{const n=e.includes(s.value);t?(s.toggleAttribute("selected",n),s.defaultSelected=s.selected):s.selected=n})),this._updateValue(),dmx.nextTick((()=>this.dispatchEvent("updated")))},_getValue(){return Array.from(this.$node.selectedOptions).map((e=>e.value))},_updateValue(){const e=this._getValue();dmx.batch((()=>{dmx.Component("select").prototype._updateValue.call(this),this.set("value",e)}))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.data.selectedIndex===this.$node.selectedIndex&&dmx.equal(this.data.value,this._getValue())||(this._updateValue(),this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))}}),dmx.Component("value",{initialData:{value:null},attributes:{value:{default:null}},methods:{setValue(e){this.data.value!==e&&(this.set("value",e),dmx.nextTick((()=>this.dispatchEvent("updated"))))}},events:{updated:Event},render:!1,init(e){this.set("value",this.props.value)},performUpdate(e){e.has("value")&&(this.set("value",this.props.value),dmx.nextTick((()=>this.dispatchEvent("updated"))))}}),dmx.Component("repeat",{initialData:{items:[]},attributes:{repeat:{type:[Array,Object,Number],default:null},key:{type:String,default:""},rerender:{type:Boolean,default:!1}},events:{update:Event,updated:Event},render:!1,init(e){for(this.prevItems=[],this.childKeys=new Map,this.$template=document.createDocumentFragment();this.$node.hasChildNodes();)this.$template.appendChild(this.$node.firstChild);this.props.repeat&&this.performUpdate(new Map([["repeat",void 0]]))},performUpdate(e){if(e.has("key")&&(this._rerender=!0),e.has("repeat")){this.dispatchEvent("update"),(this.props.rerender||this._rerender)&&(this._rerender=!1,this._clear());var t=dmx.Component("repeat-item"),s=dmx.clone(this.props.repeat),n=dmx.repeatItems(s);if(n.length){if(!this.props.rerender&&this.props.key&&n[0].hasOwnProperty(this.props.key)&&this.prevItems.length){var r,i,a=this.props.key,o=this.prevItems,d=this._clone(n),h=0,l=0,c=o.length-1,u=d.length-1;e:for(;;){for(;o[h][a]===d[l][a];)if(this.childKeys.get(d[l][a]).set(d[l]),l++,++h>c||l>u)break e;for(;o[c][a]===d[u][a];)if(this.childKeys.get(d[u][a]).set(d[u]),u--,h>--c||l>u)break e;if(o[c][a]!==d[l][a]){if(o[h][a]!==d[u][a])break;if(i=u+1,this.childKeys.get(d[u][a]).set(d[u]),this._moveChild(d[u][a],d[i]&&d[i][a]),u--,++h>c||l>u)break}else if(this.childKeys.get(d[l][a]).set(d[l]),this._moveChild(d[l][a],o[h][a]),l++,h>--c||l>u)break}if(h>c)for(i=u+1;l<=u;)this._insertChild(d[l++],d[i]&&d[i][a]);else if(l>u)for(;h<=c;)this._removeChild(o[h++][a]);else{var p=c-h+1,m=u-l+1,f=o,g=new Array(m).fill(-1),y=!1,_=0,v=0;if(m<=4||p*m<=16){for(w=h;w<=c;w++)if(vr?y=!0:_=r,this.childKeys.get(d[r][a]).set(d[r]),v++,f[w]=null;break}}else{var x={};for(w=l;w<=u;w++)x[d[w][a]]=w;for(w=h;w<=c;w++)vr?y=!0:_=r,this.childKeys.get(d[r][a]).set(d[r]),v++,f[w]=null)}if(p===o.length&&0===v)for(this._clear();l0;)null!==f[h]&&(this._removeChild(o[h][a]),w--),h++;if(y){var b=this._lis(g);for(r=b.length-1,w=m-1;w>=0;w--)-1===g[w]?(i=(_=w+l)+1,this._insertChild(d[_],d[i]&&d[i][a])):r<0||w!==b[r]?(i=(_=w+l)+1,this._moveChild(d[_][a],d[i]&&d[i][a])):r--}else if(v!==m)for(w=m-1;w>=0;w--)-1===g[w]&&(i=(_=w+l)+1,this._insertChild(d[_],d[i]&&d[i][a]))}}}else if(this.children.length>n.length&&this.children.splice(n.length).forEach((e=>{e.$destroy()})),this.children.length&&this.children.forEach(((e,t)=>{for(const s in e.data)n[t][s]||delete e.data[s];e.set(n[t])})),n.length>this.children.length){const e=document.createDocumentFragment(),s=new Set;for(var w=this.children.length;w{e.appendChild(t),s.add(E)})),this.children.push(E)}this.$node.appendChild(e);for(const e of s)e.$nodes.forEach((t=>{e.$parse(t)}))}}else this._clear();if(this.props.key){this.prevItems=this._clone(n);for(let e of this.children)this.childKeys.set(e.data[this.props.key],e)}this.set("items",this.children.map((e=>e.data))),dmx.nextTick((()=>this.dispatchEvent("updated")))}},_lis(e){var t,s,n=e.slice(0),r=[];r.push(0);for(var i=0,a=e.length;i0&&(n[i]=r[t-1]),r[t]=i)}}for(s=r[(t=r.length)-1];t-- >0;)r[t]=s,s=n[s];return r},_clear(){this.prevItems=[],this.childKeys.clear(),this.$node.innerHTML="",this.children.splice(0).forEach((e=>{e.$destroy()}))},_insertChild(e,t){var s=new(dmx.Component("repeat-item"))(this.$template.cloneNode(!0),this,e);s.$nodes.forEach((e=>{t?this.childKeys.has(t)?this.$node.insertBefore(e,this.childKeys.get(t).$nodes[0]):console.warn("(insert) can not insert node before key "+t+"!"):this.$node.appendChild(e),s.$parse(e)})),this.childKeys.set(e[this.props.key],s),this.children.push(s)},_moveChild(e,t){var s=this.childKeys.get(e);s?this.childKeys.has(t)?s.$nodes.forEach((e=>{this.$node.insertBefore(e,this.childKeys.get(t).$nodes[0])})):s.$nodes.forEach((e=>{this.$node.appendChild(e)})):console.warn("(move) child with key "+e+" not found!")},_removeChild(e){var t=this.childKeys.get(e);t?(t.$destroy(),this.children.splice(this.children.indexOf(t),1),this.childKeys.delete(e)):console.warn("(remove) child with key "+e+" not found!")},_clone:e=>dmx.clone(e)}),dmx.Component("repeat-item",{constructor:function(e,t,s,n){this.parent=t,this.children=[],this.listeners={},this.props={},this.__disposables=[],this.__childDisposables=[],this.updatedProps=new Map,this.updateRequested=!1,this.isInitialized=!0,this.isDestroyed=!1,this.data=dmx.signalProxy(s),this.seed=t.seed,this.name=n||"repeatItem",this.$nodes=[];for(var r=0;r{t&&s&&["param","header"].includes(e)&&this.$watch(s,(s=>{this.props[e+"s"]=Object.assign({},this.props[e+"s"],{[t]:s})})),t&&s&&"data"==e&&this.$watch(s,(e=>{this.props.data=Object.assign({},this.props.data,{[t]:e})}))}))},_abort(){this._xhr&&this._xhr.abort()},_resetData(e){const t={status:0,headers:{},state:{executing:!1,uploading:!1,processing:!1,downloading:!1},uploadProgress:{position:0,total:0,percent:0},downloadProgress:{position:0,total:0,percent:0},lastError:{status:0,message:"",response:null}};e&&(t.data=null),this.set(t)},_fetch(e){this._abort(),e=dmx.extend(!0,this.props,e||{});let t=Object.keys(e.params).filter((t=>null!=e.params[t])).map((t=>{let s=e.params[t];return"string"==typeof s&&s.startsWith("{{")&&(s=this.parse(s)),encodeURIComponent(t)+"="+encodeURIComponent(s)})).join("&");if(this._resetData(),this.dispatchEvent("start"),this._url=e.url,t&&(this._url+=(this._url.includes("?")?"&":"?")+t),window.WebviewProxy&&(this._url=window.WebviewProxy.convertProxyUrl(this._url)),this.props.cache){const t=this.parse(`${this.props.cache}.data["${this._url}"]`);if(t){if(!(Date.now()-t.created>=1e3*e.ttl))return this.set({headers:t.headers||{},paging:t.paging||{},links:t.links||{},data:t.data}),this.dispatchEvent("success"),void this.dispatchEvent("done");this.parse(`${this.props.cache}.remove("${this._url}")`)}}this.set("state",{executing:!0,uploading:!1,processing:!1,downloading:!1});let s=null,n=this.props.method.toUpperCase();"GET"!==n&&("text"===this.props.dataType?s=this.props.data.toString():"json"===this.props.dataType?s=JSON.stringify(this.props.data):"POST"===n?(s=new FormData,Object.keys(this.props.data).forEach((e=>{let t=this.props.data[e];Array.isArray(t)?(/\[\]$/.text(t)||(e+="[]"),t.forEach((t=>s.append(e,t)))):s.set(e,t)}))):s=this.props.data.toString()),this._xhr.open(n,this._url),this._xhr.timeout=1e3*e.timeout,"json"!==this.props.dataType&&"text"!==this.props.dataType||this._xhr.setRequestHeader("Content-Type","application/"+this.props.dataType);for(const e in this.props.headers)this._xhr.setRequestHeader(e,this.props.headers[e]);if(this._xhr.setRequestHeader("accept","application/json"),this.props.credentials&&(this._xhr.withCredentials=!0),this.serverconnect&&"GET"!==n){const e=document.querySelector('meta[name="csrf-token"]');e&&this._xhr.setRequestHeader("X-CSRF-Token",e.content)}try{this._xhr.send(s)}catch(e){this._done(e)}},_done(e){if(this._resetData(),e)return this.set("lastError",{status:0,message:e.message,response:null}),this.dispatchEvent("error"),void this.dispatchEvent("done");let t=this._xhr.responseText;try{t=JSON.parse(t)}catch(e){if(this._xhr.status<400)return this.set("lastError",{status:0,message:"Response was not valid JSON",response:t}),this.dispatchEvent("error"),void this.dispatchEvent("done")}if(this._parseHeaders(),this._xhr.status<400)return this.set({status:this._xhr.status,data:t}),this.dispatchEvent("success"),this.dispatchEvent("done"),void(this.props.cache&&this.parse(`${this.props.cache}.set("${this._url}", { headers: headers, paging: paging, links: links, data: data, created: ${Date.now()} })`));this.set({status:this._xhr.status,lastError:{status:this._xhr.status,message:this._xhr.statusText,response:t}}),this.dispatchEvent(this._statusEvents[this._xhr.status]||"error"),this.dispatchEvent("done")},_parseHeaders(){try{const e=this._xhr.getAllResponseHeaders().trim().split(/[\r\n]+/);this.set("headers",e.reduce(((e,t)=>{const s=t.split(": "),n=s.shift(),r=s.join(": ");return e[n]=r,e}),{}))}catch(e){return void console.warn("Error parsing response headers",e)}this._parseLinkHeaders()},_parseLinkHeaders(){try{const e=Object.keys(this.data.headers).find((e=>"link"===e.toLowerCase()));e&&this.set("links",this.data.headers[e].split(/,\s*{try{const t=e.match(/]*)>(.*)/),s=new URL(t[1]),n=t[2].split(";"),r=s.search.slice(1).split("&").reduce(((e,t)=>{const s=t.split("=");return s[0]&&(e[decodeURIComponent[s[0]]]=decodeURIComponent(s[1]||"")),e}),{});let i=n.slice(1).reduce(((e,t)=>{const s=t.match(/\s*(.+)\s*=\s*"?([^"]+)"?/);return s&&(e[s[1]]=s[2]),e}),{});return i=Object.assign({},r,i),i.url=s.toString(),i}catch(e){return console.warn("Error parsing link header part",e),null}}))).filter((e=>e&&e.rel)).reduce(((e,t)=>(t.rel.split(/\s+/).forEach((s=>e[s]=Object.assign(t,{rel:s}))),e)),{})}catch(e){return void console.warn("Error parsing link header",e)}this._parsePaging()},_parsePaging(){try{const e={page:1,pages:1,items:0,has:{first:!1,prev:!1,next:!1,last:!1}},{first:t,prev:s,next:n,last:r}=this.data.links;if(s||n){r&&r.page?e.pages=+r.page:s&&s.page&&(e.pages=+s.page+1);const i=Object.keys(this.data.headers).find((e=>"x-total"===(e=e.toLowerCase())||"x-count"===e||"x-total-count"===e));i&&(e.items=+this.data.headers[i]),s&&s.page?e.page=+s.page+1:n&&n.page&&(e.page=+n.page-1),e.has={first:!!t,prev:!!s,next:!!n,last:!!r}}this.set("paging",e)}catch(e){console.warn("Error parsing paging",e)}},_loadHandler(e){this._done()},_abortHandler(e){this._resetData(),this.dispatchEvent("abort"),this.dispatchEvent("done")},_errorHandler(e){this._done(Error("Failed to execute"))},_timeoutHandler(e){this._done(Error("Execution timeout"))},_progressHandler(e,t){t.loaded=t.loaded||t.position;const s=t.lengthComputable?Math.ceil(100*t.loaded/t.total):0;this.set({state:{executing:!0,uploading:"upload"===e&&s<100,processing:"upload"===e&&100===s,downloading:"download"===e},[e+"Progress"]:{position:t.loaded,total:t.total,percent:s}}),this.dispatchEvent(e,{lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total})}}),dmx.Component("serverconnect",{extends:"fetch",attributes:{sockets:{type:Boolean,default:!1}},init(e){this.serverconnect=!0,this.props.sockets&&dmx.Socket&&(this._refresh=this._refresh.bind(this),this._event=this.props.url.replace(/^(.*?)api\//,""),this._socket=dmx.Socket("/api"),this._socket.on(this._event,this._refresh)),dmx.Component("fetch").prototype.init.call(this,e)},destroy(){this._socket&&this._socket.off(this._event,this._refresh),dmx.Component("fetch").prototype.destroy.call(this)},_fetch(e){this._socket&&this._socket.connected?this._refresh(e&&e.params):dmx.Component("fetch").prototype._fetch.call(this,e)},_refresh(e){e=dmx.extend(!0,{},this.props.params,e||{}),this.dispatchEvent("start"),this.set("state",{executing:!0,uploading:!1,processing:!0,downloading:!1}),this._socket.emit(this._event,e,(e=>{this.set({status:e.status,data:e.data,state:{executing:!1,uploading:!1,processing:!1,downloading:!1}}),this.dispatchEvent(this._statusEvents[e.status]||"error"),this.dispatchEvent("done")}))}}),dmx.Component("serverconnect-form",{extends:"form",initialData:{status:0,data:null,headers:{},state:{executing:!1,uploading:!1,processing:!1,downloading:!1},uploadProgress:{position:0,total:0,percent:0},downloadProgress:{position:0,total:0,percent:0},lastError:{status:0,message:"",response:null}},attributes:{timeout:{type:Number,default:0},autosubmit:{type:Boolean,default:!1},params:{type:Object,default:{}},headers:{type:Object,default:{}},postData:{type:String,default:"form"},credentials:{type:Boolean,default:!1}},methods:{abort(){this._abort()},reset(e){this._reset(),e&&(this._abort(),this._resetData(!0))}},events:{start:Event,done:Event,error:Event,unauthorized:Event,forbidden:Event,abort:Event,success:Event,upload:ProgressEvent,download:ProgressEvent},init(e){dmx.Component("form").prototype.init.call(this,e),this._loadHandler=this._loadHandler.bind(this),this._abortHandler=this._abortHandler.bind(this),this._errorHandler=this._errorHandler.bind(this),this._timeoutHandler=this._timeoutHandler.bind(this),this._downloadProgressHandler=this._progressHandler.bind(this,"download"),this._uploadProgressHandler=this._progressHandler.bind(this,"upload"),this._xhr=new XMLHttpRequest,this._xhr.addEventListener("load",this._loadHandler),this._xhr.addEventListener("abort",this._abortHandler),this._xhr.addEventListener("error",this._errorHandler),this._xhr.addEventListener("timeout",this._timeoutHandler),this._xhr.addEventListener("progress",this._downloadProgressHandler),this._xhr.upload.addEventListener("progress",this._uploadProgressHandler),this._extendNode(e),this.props.autosubmit&&dmx.nextTick((()=>this._submit()))},destroy(){dmx.Component("form").prototype.destroy.call(this),this._xhr.removeEventListener("load",this._loadHandler),this._xhr.removeEventListener("abort",this._abortHandler),this._xhr.removeEventListener("error",this._errorHandler),this._xhr.removeEventListener("timeout",this._timeoutHandler),this._xhr.removeEventListener("progress",this._downloadProgressHandler),this._xhr.upload.removeEventListener("progress",this._uploadProgressHandler),this._xhr=null},$parseAttributes(e){dmx.BaseComponent.prototype.$parseAttributes.call(this,e),dmx.dom.getAttributes(e).forEach((({name:e,argument:t,value:s})=>{t&&s&&["param","header"].includes(e)&&this.$watch(s,(s=>{this.props[e+"s"]=Object.assign({},this.props[e+"s"],{[t]:s})}))}))},_extendNode(e){e.dmxExtraData={},e.dmxExtraElements=[]},_abort(){this._xhr.abort()},_resetData(e){const t={status:0,headers:{},state:{executing:!1,uploading:!1,processing:!1,downloading:!1},uploadProgress:{position:0,total:0,percent:0},downloadProgress:{position:0,total:0,percent:0},lastError:{status:0,message:"",response:null}};e&&(t.data=null),this.set(t)},_formSubmit(){this._send()},_send(){this._abort();const e=this.$node.method.toUpperCase(),t=this.$node.action;let s=null,n=Object.keys(this.props.params).filter((e=>null!=this.props.params[e])).map((e=>{let t=this.props.params[e];return"string"==typeof t&&t.startsWith("{{")&&(t=this.parse(t)),encodeURIComponent(e)+"="+encodeURIComponent(t)})).join("&");if("GET"===e)n.length&&(n+="&"),n+=Array.from(this.$node.elements).filter((e=>!e.disabled&&("radio"!==e.type&&"checkbox"!==e.type||e.checked))).map((e=>encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))).join("&");else if("json"===this.props.postData)s=this._parseJsonForm(),this.$node.dmxExtraData&&Object.assign(s,this.$node.dmxExtraData),s=JSON.stringify(s);else if(s=new FormData(this.$node),this.$node.dmxExtraData)for(let e in this.$node.dmxExtraData){let t=this.$node.dmxExtraData[e];Array.isArray(t)?(/\[\]$/.test(e)||(e+="[]"),t.forEach((t=>s.append(e,t)))):s.set(e,t)}this._resetData(),this.dispatchEvent("start"),this.set("state",{executing:!0,uploading:!1,processing:!1,downloading:!1});let r=t;n&&(r+=(r.includes("?")?"&":"?")+n),window.WebviewProxy&&(r=window.WebviewProxy.convertProxyUrl(r)),this._xhr.open(e,r),this._xhr.timeout=1e3*this.props.timeout,"json"===this.props.postData&&this._xhr.setRequestHeader("Content-Type","application/json");for(const e in this.props.headers)this._xhr.setRequestHeader(e,this.props.headers[e]);this._xhr.setRequestHeader("accept","application/json"),this.props.credentials&&(this._xhr.withCredentials=!0);const i=document.querySelector('meta[name="csrf-token"]');i&&this._xhr.setRequestHeader("X-CSRF-Token",i.content);try{this._xhr.send(s)}catch(e){this._done(e)}},_done(e){if(this._resetData(),e)return this.set("lastError",{status:0,message:e.message,response:null}),this.dispatchEvent("error"),void this.dispatchEvent("done");let t=this._xhr.responseText;try{t=JSON.parse(t)}catch(e){if(this._xhr.status<400)return this.set("lastError",{status:0,message:"Response was not valid JSON",response:t}),this.dispatchEvent("error"),void this.dispatchEvent("done")}try{const e=this._xhr.getAllResponseHeaders().trim().split(/[\r\n]+/);this.set("headers",e.reduce(((e,t)=>{const s=t.split(": "),n=s.shift(),r=s.join(": ");return e[n]=r,e}),{}))}catch(e){console.warn("Error parsing response headers",e)}if(dmx.validateReset&&dmx.validateReset(this.$node),window.grecaptcha&&this.$node.querySelector(".g-recaptcha")&&grecaptcha.reset(),this._xhr.status<400)return this.set({status:this._xhr.status,data:t}),this.dispatchEvent("success"),void this.dispatchEvent("done");if(this.set({status:this._xhr.status,lastError:{status:this._xhr.status,message:this._xhr.statusText,response:t}}),400===this._xhr.status)if(this.dispatchEvent("invalid"),t.form&&dmx.validate.setMessage)for(const e in t.form){const s=this.$node.querySelector(`[name="${e}"]`);if(s){const n=t.form[e];dmx.validate.setMessage(s,n)}}else dmx.debug&&console.warn("400 error, no form errors in response.",t);else 401===this._xhr.status?this.dispatchEvent("unauthorized"):403===this._xhr.status?this.dispatchEvent("forbidden"):this.dispatchEvent("error");this.dispatchEvent("done")},_loadHandler(e){this._done()},_abortHandler(e){this._resetData(),this.dispatchEvent("abort"),this.dispatchEvent("done")},_errorHandler(e){this._done(Error("Failed to execute"))},_timeoutHandler(e){this._done(Error("Execution timeout"))},_progressHandler(e,t){t.loaded=t.loaded||t.position;const s=t.lengthComputable?Math.ceil(100*t.loaded/t.total):0;this.set({state:{executing:!0,uploading:"upload"===e&&s<100,processing:"upload"===e&&100===s,downloading:"download"===e},[e+"Progress"]:{position:t.loaded,total:t.total,percent:s}}),this.dispatchEvent(e,{lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total})}}),dmx.Component("if",{attributes:{condition:{type:Boolean,default:!1}},events:{show:Event,hide:Event},init(e){for(this._shown=!1,this._template=document.createDocumentFragment();e.firstChild;)this._template.appendChild(e.firstChild)},render(e){this.props.condition&&this._show()},performUpdate(e){this.props.condition?this._show():this._hide()},destroy(){this._template=null},_show(){if(this._shown)return;const e=this._template.cloneNode(!0);this.$node.appendChild(e),this.$parse(),this.dispatchEvent("show"),this._shown=!0},_hide(){this._shown&&(this.effects&&(this.effects.forEach((e=>e())),this.effects=null),Array.from(this.$node.childNodes).forEach((e=>{const t=new Event("remove",{cancelable:!0});e.dispatchEvent(t)&&e.remove()})),this.$destroyChildren(),this.dispatchEvent("hide"),this._shown=!1)}}),dmx.Component("datetime",{initialData:{datetime:null},attributes:{interval:{type:String,default:"seconds",enum:["seconds","minutes","hours","days"]},utc:{type:Boolean,default:!1}},init(){this._tick=this._tick.bind(this),this._tick()},destroy(){this._timeout&&clearTimeout(this._timeout),this._animationFrame&&cancelAnimationFrame(this._animationFrame)},_tick(){switch(this.set("datetime",this._datetime()),this.props.interval){case"seconds":return this._timeout=setTimeout(this._tick,1e3);case"minutes":return this._timeout=setTimeout(this._tick,6e4);case"hours":return this._timeout=setTimeout(this._tick,36e5);case"days":return this._timeout=setTimeout(this._tick,864e5);default:return this._animationFrame=requestAnimationFrame(this._tick)}},_datetime(){const e=new Date,t=(e,t)=>("0000"+e).slice(-t),s=this.props.utc,n=s?e.getUTCFullYear():e.getFullYear(),r=(s?e.getUTCMonth():e.getMonth())+1,i=s?e.getUTCDate():e.getDate(),a=s?e.getUTCHours():e.getHours(),o=s?e.getUTCMinutes():e.getMinutes(),d=s?e.getUTCSeconds():e.getSeconds(),h=t(n,4)+"-"+t(r,2)+"-"+t(i,2),l=s?"Z":"";switch(this.props.interval){case"days":return h+"T00:00:00"+l;case"hours":return h+"T"+t(a,2)+":00:00"+l;case"minutes":return h+"T"+t(a,2)+":"+t(o,2)+":00"+l}return h+"T"+t(a,2)+":"+t(o,2)+":"+t(d,2)+l}}),dmx.Component("api-action",{extends:"fetch"}),dmx.Component("api-form",{extends:"serverconnect-form"}),dmx.Component("array",{initialData:{items:[],count:0},attributes:{items:{type:Array,default:[]}},events:{updated:Event},methods:{add(e){this._splice(this._count(),0,e)},addUniq(e){-1==this._indexOf(e)&&this._splice(this._count(),0,e)},insert(e,t){this._splice(e,0,t)},insertBefore(e,t){const s=this._indexOf(e);-1!=s&&this._splice(s,0,t)},insertAfter(e,t){const s=this._indexOf(e);-1!=s&&this._splice(s+1,0,t)},replace(e,t){const s=this._indexOf(e);-1!=s&&this._splice(s,1,t)},replaceAt(e,t){this._splice(e,1,t)},remove(e){const t=this._indexOf(e);-1!=t&&this._splice(t,1)},removeAt(e){this._splice(e,1)},reverse(){this._reverse()},sort(){this._sort()},empty(){this._updateData([])}},render:!1,init(){const e=dmx.array(this.props.items);this.set({items:e,count:e.length})},performUpdate(e){e.has("items")&&this._updateData(dmx.array(this.props.items))},_count(){return this.data.items.length},_indexOf(e){return this.data.items.indexOf(e)},_splice(e,t,s){const n=dmx.clone(this.data.items);void 0!==s?n.splice(e,t,s):n.splice(e,t),this._updateData(n)},_reverse(){const e=dmx.clone(this.data.items);e.reverse(),this._updateData(e)},_sort(){const e=dmx.clone(this.data.items);e.sort(),this._updateData(e)},_updateData(e){dmx.equal(this.data.items,e)||(this.set({items:e,count:e.length}),dmx.nextTick((()=>this.dispatchEvent("updated"))))}}),dmx.Component("group",{}),dmx.Component("flow",{initialData:{data:null,running:!1,lastError:null},attributes:{src:{type:String,default:null},preload:{type:Boolean,default:!1},autorun:{type:Boolean,default:!1},params:{type:Object,default:{}}},methods:{run(e,t){return this._run(e,t)},runSub(e){return this._runSub(e)}},events:{start:Event,done:Event,error:Event},render:!1,init(e){if(this.props.src)(this.props.preload||this.props.autorun)&&this._load(this.props.src,this.props.autorun).catch(console.error);else try{this._flow=this._parse(e.textContent),this.props.autorun&&this._run()}catch(e){console.error(e)}},destroy(){this._destroyed=!0},$parseAttributes(e){dmx.BaseComponent.prototype.$parseAttributes.call(this,e),dmx.dom.getAttributes(e).forEach((({name:e,argument:t,value:s})=>{t&&s&&"param"==e&&this.$watch(s,(e=>{this.props.params=Object.assign({},this.props.params,{[t]:e})}))}))},_load(e,t){return fetch(e).then((e=>{if(!e.ok||e.status>=400)throw Error(`Could not load flow ${this.name}, status ${e.status} ${e.statusText}`);return e.text()})).then((e=>{this._flow=this._parse(e),t&&this._run()}))},_parse:e=>(window.Hjson?Hjson:JSON).parse(e),_runSub(e){if(!this._flow){if(this.props.src)return this._load(this.props.src).then((()=>{this._runFlow(e)}));throw Error("No flow")}return this._runFlow(e)},_run(e,t){return this._flow?this.data.running?void console.info(`Can't run flow ${this.name} when a previous run didn't finish.`):(this.set({running:!0,lastError:null}),this.dispatchEvent("start"),dmx.debug&&(console.debug(`Running flow ${this.name} with params`,e),console.time(`Flow ${this.name}`)),this._runFlow(e).then((e=>(dmx.debug&&(console.debug(`Flow ${this.name} finished`,e),console.timeEnd(`Flow ${this.name}`)),this.set({running:!1,data:e}),this.dispatchEvent("done"),e))).catch((e=>{if(this.set({running:!1,lastError:e&&e.message}),this.dispatchEvent("error"),t)throw e}))):this.props.src?this._load(this.props.src).then((()=>{this._run(e,t)})).catch(console.error):void console.warn(`Flow ${this.name} is missing.`)},_runFlow(e){return dmx.Flow.run(this._flow,dmx.DataScope({$param:Object.assign({},this.props.params,e)},this))}}),dmx.Component("toggle",{initialData:{checked:!1},attributes:{checked:{type:Boolean,default:!1}},methods:{check(){this.props.checked=!0},uncheck(){this.props.checked=!1},toggle(){this.props.checked=!this.data.checked}},events:{updated:Event},render:!1,init(e){this.set("checked",this.props.checked)},performUpdate(e){e.has("checked")&&(this.set("checked",this.props.checked),dmx.nextTick((()=>this.dispatchEvent("updated"))))}}),dmx.Component("form-data",{attributes:{name:{type:String,default:"data"},data:{type:[Array,Object],default:null}},init(e){this._formdataHandler=this._formdataHandler.bind(this),this._form=e.closest("form"),this._form&&this._form.addEventListener("formdata",this._formdataHandler)},destroy(){this._form&&this._form.removeEventListener("formdata",this._formdataHandler)},_formdataHandler(e){const t=e.formData,s=this.props.data;this._appendData(t,s,this.props.name)},_appendData(e,t,s=""){if(Array.isArray(t))t.forEach(((t,n)=>{this._appendData(e,t,`${s}[${n}]`)}));else if("object"==typeof t)for(const n in t)this._appendData(e,t[n],`${s}[${n}]`);else e.append(s,t)}}),dmx.Attribute("bind","mounted",(function(e,t){const s=t.argument,n=dmx.reToggleAttribute.test(s);this.$watch(t.value,(t=>{if(n)e.toggleAttribute(s,!!t);else{if("style"===s&&"object"==typeof t)return Object.assign(e.style,t);if(null==t)return e.removeAttribute(s);e.setAttribute(s,t),"src"===s&&("VIDEO"===e.nodeName||"AUDIO"===e.nodeName?e.load():"SOURCE"===e.nodeName&&e.parentNode&&e.parentNode.load())}}))})),dmx.Attribute("on","mounted",(function(e,t){return e.dmxOn||(e.dmxOn={component:this}),e.dmxOn[t.argument]=!0,dmx.eventListener(e,t.argument,(function(s){s.originalEvent&&(s=s.originalEvent);return dmx.parse(t.value,dmx.DataScope({$event:s.$data,$originalEvent:s},e.dmxOn.component))}),t.modifiers)})),dmx.Attribute("repeat","before",(function(e,t){const s=document.createComment("Repeat Attribute"),n=document.createDocumentFragment(),r=dmx.Component("repeat-item");e.parentNode.replaceChild(s,e),e.removeAttribute(t.fullName),n.append(e);let i=[];this.$watch(t.value,(e=>{const a=dmx.repeatItems(e);if(a.length>1e4&&(console.warn("More than 10000 repeat items, we limit the result!"),a.length=1e4),t.modifiers.fast){if(i.length>a.length&&i.splice(a.length).forEach((e=>e.$destroy())),i.length&&i.forEach(((e,t)=>e.set(a[t]))),a.length>i.length){const e=document.createDocumentFragment(),o=new Set;a.slice(i.length).forEach((t=>{const s=new r(n.cloneNode(!0),this,t);e.appendChild(s.$nodes[0]),o.add(s),i.push(s),this.$addChild(s)})),s.parentNode.insertBefore(e,s);for(const e of o)e.$parse(e.$nodes[0]);t.argument&&this.set(t.argument,a)}}else{const e=document.createDocumentFragment(),o=new Set;i.splice(0).forEach((e=>e.$destroy()));for(const t of a){const s=new r(n.cloneNode(!0),this,t);e.append(s.$nodes[0]),o.add(s),i.push(s),this.$addChild(s)}s.parentNode.insertBefore(e,s);for(const e of o)e.$parse(e.$nodes[0]);t.argument&&this.set(t.argument,a)}}))})),dmx.Attribute("class","mounted",(function(e,t){e.dmxClass||(e.dmxClass={component:this}),this.$watch(t.value,(s=>{e.dmxClass[t.argument]=s,e.classList[s?"add":"remove"](t.argument)}))})),dmx.Attribute("hide","mounted",(function(e,t){e.dmxHide||(e.dmxHide={component:this,initial:{display:e.style.getPropertyValue("display"),priority:e.style.getPropertyPriority("display")},hide:null},this.$watch(t.value,(t=>{e.dmxHide.hide=t;const{initial:s}=e.dmxHide,n=t?"none":s.display,r=t?"important":s.priority;e.style.setProperty("display",n,r)})))})),dmx.Attribute("show","mounted",(function(e,t){e.dmxShow||(e.dmxShow={component:this,initial:{display:e.style.getPropertyValue("display"),priority:e.style.getPropertyPriority("display")},show:null},this.$watch(t.value,(t=>{e.dmxShow.show=t;const{initial:s}=e.dmxShow,n=t?s.display:"none",r=t?s.priority:"important";e.style.setProperty("display",n,r)})))})),dmx.Attribute("html","mounted",(function(e,t){e.dmxHtml||(e.dmxHtml={component:this},this.$watch(t.value,(t=>{e.innerHTML=null!=t?String(t):""})))})),dmx.Attribute("text","mounted",(function(e,t){e.dmxText||(e.dmxText={component:this},this.$watch(t.value,(t=>{e.innerText=null!=t?String(t):""})))})),dmx.Attribute("style","mounted",(function(e,t){e.dmxStyle||(e.dmxStyle={component:this});const s=t.modifiers.important?"important":"";this.$watch(t.value,(n=>{e.dmxStyle[t.argument]=n,null!=n&&e.style.setProperty(t.argument,n,s)}))})),dmx.Formatters("global",{json:function(e){return JSON.stringify(e)},log:function(e){return console.log(e),e},run:function(e,t){var s=dmx.DataScope({$param:t},this);dmx.Flow.run(e,s)}}),dmx.Actions({subflow(e){const t=this.parse(e.flow),s=this.parse(e.param);return this.parse(t+".runSub("+JSON.stringify(s)+")")},comment(e){dmx.debug&&console.debug(e.message)},wait(e){const t=this.parse(e.delay);if("number"!=typeof t)throw new Error("wait: Invalid delay");return new Promise((e=>{setTimeout(e,t)}))},now:e=>(new Date).toISOString(),random(e){let t=this.parse(e.lower),s=this.parse(e.upper),n=!!this.parse(e.floating);"number"==typeof t&&isFinite(t)||(t=0),"number"==typeof s&&isFinite(s)||(s=1);let r=t+Math.random()*(s-t);return n||Math.floor(t)!=t||Math.floor(s)!=s||(r=Math.round(r)),r},confirm(e){const t=this.parse(e.message);if("string"!=typeof t)throw new Error("confirm: Invalid message");const s=confirm(t);if(s){if(e.then)return this._exec(e.then).then((()=>s))}else if(e.else)return this._exec(e.else).then((()=>s));return s},prompt(e){const t=this.parse(e.message);if("string"!=typeof t)throw new Error("prompt: Invalid message");return prompt(t)},alert(e){const t=this.parse(e.message);if("string"!=typeof t)throw new Error("alert: Invalid message");return alert(t)},repeat(e){let t=dmx.clone(this.parse(e.repeat));if(!t)return;if("boolean"==typeof t)t=t?[0]:[];else if("string"==typeof t)t=t.split(/\s*,\s*/);else if("number"==typeof t){for(var s=[],n=0;n(this.scope=new dmx.DataScope(Object.assign({$value:t,$index:s,$name:s,$key:s,$number:s+1,$oddeven:s%2},t),r),this.output={},Array.isArray(e.outputFields)&&t instanceof Object&&e.outputFields.forEach((e=>{this.output[e]=t[e]})),this._exec(e.exec).then((()=>{var e=this.output;return this.scope=r,this.output=i,e})))))},condition(e){const t=!!this.parse(e.if);if(t){if(e.then)return this._exec(e.then).then((()=>t))}else if(e.else)return this._exec(e.else).then((()=>t));return t},conditions(e){if(Array.isArray(e.conditions))for(let t=0;t{var e=this.output;return self.output=t,e}))}return this._exec(e.exec)},while(e){const t=()=>new Promise((s=>{if(!this.parse(e.condition))return s();this._exec(e.exec).then(t).then(s)}));return t()},switch(e){const t=this.parse(e.expression);for(let s=0;sthis._exec(e.catch)))},run(e){if(!e.action)throw new Error("run: missing action");return this.parse(e.action)},runJS(e){if(!e.function)throw new Error("runJS: missing function");const t=this.parse(e.function),s=this.parse(e.args);return window[t].apply(null,s)},assign(e){return this.parse(e.value)},setGlobal(e){const t=this.parse(e.key),s=this.parse(e.value);if("string"!=typeof t)throw new Error("setGlobal: key must be a string");return dmx.global.set(t,s),s},setSession(e){const t=this.parse(e.key),s=this.parse(e.value);if("string"!=typeof t)throw new Error("setSession: key must be a string");return sessionStorage.setItem(t,JSON.stringify(s)),s},getSession(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("getSession: key must be a string");return JSON.parse(sessionStorage.getItem(t))},removeSession(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("removeSession: key must be a string");return sessionStorage.removeItem(t),!0},setStorage(e){const t=this.parse(e.key),s=this.parse(e.value);if("string"!=typeof t)throw new Error("setStorage: key must be a string");return localStorage.setItem(t,JSON.stringify(s)),s},getStorage(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("getStorage: key must be a string");const s=localStorage.getItem(t);return null==s?null:JSON.parse(s)},removeStorage(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("removeStorage: key must be a string");return localStorage.removeItem(t),!0},fetch(e){let t=this.parse(e.url),s=this.parse(e.method),n=this.parse(e.timeout),r=this.parse(e.dataType),i=this.parse(e.data),a=this.parse(e.params),o=this.parse(e.headers),d=this.parse(e.credentials),h=null;if("string"!=typeof t)throw new Error("fetch: invalid url "+t);if(["GET","POST","PUT","DELETE"].includes(s)||(s="GET"),["auto","json","text"].includes(r)||(r="auto"),"number"!=typeof n&&(n=0),o||(o={}),"object"==typeof a)for(var l in a)a.hasOwnProperty(l)&&null!=a[l]&&(t+=(-1!=t.indexOf("?")?"&":"?")+decodeURIComponent(l)+"="+decodeURIComponent(a[l]));if("GET"!=s)if("text"==r)o["Content-Type"]||(o["Content-Type"]="application/text"),h=i.toString();else if("json"==r)o["Content-Type"]||(o["Content-Type"]="application/json"),h=JSON.stringify(i);else if("POST"==s){if(h=new FormData,"object"==typeof i&&!Array.isArray(i))for(var c in i)if(i.hasOwnProperty(c)){var u=i[c];if(Array.isArray(u))for(var p in/\[\]$/.test(c)||(c+="[]"),u)u.hasOwnProperty(p)&&h.append(c,u[p]);else h.set(c,u)}}else i&&(o["Content-Type"]||(o["Content-Type"]="application/text"),h=i.toString());return new Promise(((e,r)=>{var i=new XMLHttpRequest;for(var a in i.onerror=r,i.onabort=r,i.ontimeout=r,i.onload=function(){var t=i.responseText,s=i.getAllResponseHeaders().trim().split(/[\r\n]+/).reduce((function(e,t){var s=t.split(": "),n=s.shift(),r=s.join(": ");return e[n.toLowerCase()]=r,e}),{});/^application\/json/.test(s["content-type"])&&(t=JSON.parse(t)),e({status:i.status,headers:s,data:t})},i.open(s,t),i.timeout=1e3*n,o)o.hasOwnProperty(a)&&i.setRequestHeader(a,o[a]);d&&(i.withCredentials=!0),i.send(h)}))}}),dmx.__actions.setValue=dmx.__actions.assign,dmx.__actions.api=dmx.__actions.fetch,dmx.__actions["api.send"]=dmx.__actions.fetch,dmx.__actions.serverConnect=dmx.__actions.fetch,dmx.Actions({"collections.addColumns":function(e){var t=this.parse(e.collection),s=e.add,n=!!this.parse(e.overwrite);if(!t.length)return[];for(var r=[],i=0,a=t.length;i{const s=t;t=s||[];try{if(e(),!s)for(const{value:e}of t);}finally{t=s}};class s{constructor(e){this._=e}toJSON(){return this.value}toString(){return String(this.value)}valueOf(){return this.value}}let n;dmx.Signal=s;class r extends s{s;constructor(e,t,s,n){super(e),this.f=n,this.$=!0,this.r=new Set,this.s=new p(t,s)}peek(){return this.s.peek()}get value(){if(this.$){const e=n;n=this;try{this.s.value=this._(this.s._)}finally{this.$=!1,n=e}}return this.s.value}}const i={async:!1,equals:!0};let a;dmx.computed=(e,t,s=i)=>new r(e,t,s,!1);const o=[],d=()=>{},h=({s:e})=>{"function"==typeof e._&&(e._=e._())};class l extends r{constructor(e,t,s){super(e,t,s,!0),this.e=o}run(){return this.$=!0,this.value,this}stop(){this._=d;for(const e of this.r)e.c.delete(this);this.r.clear(),this.s.c.clear()}}dmx.FX=l;class c extends l{constructor(e,t,s){super(e,t,s),this.i=0,this.a=!!s.async,this.m=!0,this.e=[]}get value(){this.a?this.async():this.sync()}async(){this.m&&(this.m=!1,queueMicrotask((()=>{this.m=!0,this.sync()})))}sync(){const e=a;(a=this).i=0,h(this),super.value,a=e}stop(){super.stop(),h(this);for(const e of this.e.splice(0))e.stop()}}dmx.Effect=c;dmx.effect=(e,t,s=i)=>{let n;if(a){const{i:r,e:i}=a,o=r===i.length;(o||i[r]._!==e)&&(o||i[r].stop(),i[r]=new c(e,t,s).run()),n=i[r],a.i++}else n=new c(e,t,s).run();return()=>{n.stop()}};const u=()=>!1;class p extends s{constructor(t,{equals:s}){super(t),this.c=new Set,this.s=!0===s?e:s||u}peek(){return this._}get value(){return n&&(this.c.add(n),n.r.add(this)),this._}set value(e){const s=this._;if(!this.s(this._=e,s)&&this.c.size){const e=[],s=[this];for(const t of s)for(const n of t.c)if(!n.$&&n.r.has(t))if(n.r.clear(),n.$=!0,n.f){e.push(n);const t=[n];for(const e of t)for(const s of e.e)s.r.clear(),s.$=!0,t.push(s)}else s.push(n.s);for(const s of e)t?t.push(s):s.value}}}dmx.signal=(e,t=i)=>new p(e,t)})(),dmx.signalProxy=function(e={}){const t=new Map,s=(e,t)=>dmx.equal(e,t);return new Proxy(e,{has:(e,t)=>!0,get(e,n,r){const i=Reflect.get(e,n,r);return"function"==typeof i||"string"!=typeof n||n.startsWith("_")?i:(t.has(n)||t.set(n,dmx.signal(i,{equals:s})),t.get(n).value)},set(e,s,n,r){const i=Reflect.set(e,s,n,r);return i&&t.has(s)&&(t.get(s).value=n),i},deleteProperty(e,s){const n=Reflect.deleteProperty(e,s);return n&&t.has(s)&&(t.get(s).value=void 0),n}})},(()=>{class e{constructor(e={},t=null){"object"!=typeof e&&(e={$value:e}),this.data=dmx.signalProxy(),Object.assign(this.data,e),this.parent=t,this.seed=Math.random()}get(e){return void 0!==this.data[e]?this.data[e]:this.parent?"parent"==e?this.parent.data:this.parent.get(e):void 0}set(e,t){"object"==typeof e?dmx.batch((()=>{for(var t in e)e.hasOwnProperty(t)&&this.set(t,e[t])})):this.data[e]=t}del(e){delete this.data[e]}}dmx.global=new e,dmx.DataScope=function(t,s){return new e(t,s||dmx.global)}})(),function(){var e=function(t){if(!(this instanceof e))return new e(t);if(t instanceof e)return t;if(!t)return this;var s=t.length;if(t.nodeType)this[0]=t,this.length=1;else{if("string"==typeof t)return e(document.querySelectorAll(t));if(s)for(var n=0;n0?a[e.substr(0,s)]=e.substr(s+1):a[e]=!0}}));var o=r.indexOf(":");o>0&&(i=r.substr(o+1),r=r.substr(0,o)),t.push({name:r,fullName:n.name,value:n.value,argument:i,modifiers:a})}}return t},remove:function(e){Array.isArray(e)?e.forEach((function(e){dmx.dom.remove(e)})):e.remove()},replace:function(e,t){e.parentNode&&e.parentNode.replaceChild(t,e)}}}(),dmx._CACHE=new Map,dmx._OPERATORS=new Map([["{","L_CURLY"],["}","R_CURLY"],["[","L_BRACKET"],["]","R_BRACKET"],["(","L_PAREN"],[")","R_PAREN"],[".","PERIOD"],[",","COMMA"],[";","SEMI"],[":","COLON"],["?","QUESTION"],["-","ADDICTIVE"],["+","ADDICTIVE"],["*","MULTIPLICATIVE"],["/","MULTIPLICATIVE"],["%","MULTIPLICATIVE"],["===","EQUALITY"],["!==","EQUALITY"],["==","EQUALITY"],["!=","EQUALITY"],["<","RELATIONAL"],[">","RELATIONAL"],["<=","RELATIONAL"],[">=","RELATIONAL"],["in","RELATIONAL"],["&&","LOGICAL_AND"],["||","LOGICAL_OR"],["!","LOGICAL_NOT"],["&","BITWISE_AND"],["|","BITWISE_OR"],["^","BITWISE_XOR"],["~","BITWISE_NOT"],["<<","BITWISE_SHIFT"],[">>","BITWISE_SHIFT"],[">>>","BITWISE_SHIFT"]]),dmx._ESCAPE_CHARS=new Map([["n","\n"],["r","\r"],["t","\t"],["b","\b"],["f","\f"],["v","\v"],["0","\0"],["'","'"],["`","`"],['"','"']]),dmx._EXPRESSIONS=new Map([["**",(e,t)=>Math.pow(e(),t())],["??",(e,t)=>null==(e=e())?t():e],["in",(e,t)=>e()in t()],["?",(e,t,s)=>e()?t():s()],["+",(e,t)=>(e=e(),t=t(),null==e?t:null==t?e:e+t)],["-",(e,t)=>e()-t()],["*",(e,t)=>e()*t()],["/",(e,t)=>e()/t()],["%",(e,t)=>e()%t()],["===",(e,t)=>e()===t()],["!==",(e,t)=>e()!==t()],["==",(e,t)=>e()==t()],["!=",(e,t)=>e()!=t()],["<",(e,t)=>e()",(e,t)=>e()>t()],["<=",(e,t)=>e()<=t()],[">=",(e,t)=>e()>=t()],["&&",(e,t)=>e()&&t()],["||",(e,t)=>e()||t()],["&",(e,t)=>e()&t()],["|",(e,t)=>e()|t()],["^",(e,t)=>e()^t()],["<<",(e,t)=>e()<>",(e,t)=>e()>>t()],[">>>",(e,t)=>e()>>>t()],["~",e=>~e()],["!",e=>!e()]]),dmx._RESERVED=new Map([["this",e=>()=>e.data],["true",()=>()=>!0],["false",()=>()=>!1],["null",()=>()=>null],["undefined",()=>()=>{}],["_",()=>()=>({__dmxScope__:!0})]]),dmx._SUPPORTED_TYPES=new Map([["Boolean","boolean"],["Null","null"],["Undefined","undefined"],["Number","number"],["BigInt","number"],["Decimal","number"],["String","string"],["Date","date"],["RegExp","regexp"],["Blob","blob"],["File","file"],["FileList","filelist"],["ArrayBuffer","arraybuffer"],["ImageBitmap","imagebitmap"],["ImageData","imagedata"],["Array","array"],["Object","object"],["Map","map"],["Set","set"],["DataView","array"],["Int8Array","array"],["Uint8Array","array"],["Uint8ClampedArray","array"],["Int16Array","array"],["Uint16Array","array"],["Int32Array","array"],["Uint32Array","array"],["Float32Array","array"],["Float64Array","array"],["BigInt64Array","array"],["BigUint64Array","array"]]),dmx.getType=function(e){return dmx._SUPPORTED_TYPES.get(Object.prototype.toString.call(e).slice(8,-1))},dmx.lexer=function(e){if(dmx._CACHE.has(e))return dmx._CACHE.get(e);let t,s,n,r,i,a,o=[],d=0,h=!0;for(;d1?e.slice(d,d+t):e[d]}function c(t=1){return d+t="0"&&e<="9"}function f(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e||"$"===e}function g(e){return f(e)||m(e)}function y(e){return" "==e||"\r"==e||"\t"==e||"\n"==e||"\v"==e||" "==e}function v(e){return"-"==e||"+"==e||m(e)}function _(t){let s=!1,n="";for(d++;d{const n=dmx.parse(s,t);return null==n?"":n}));e=e.slice(2,-2)}if(!e)return;let s,n,r;try{s=Array.from(dmx.lexer(e)),r=function(){const e=[];for(;;)if(s.length>0&&!(a("R_PAREN")||a("R_BRACKET")||a("R_CURLY")||a("COMMA")||a("SEMI"))&&e.push(l()),!o("COMMA")&&!o("SEMI"))return(1==e.length?e[0]:t)();function t(){let t;for(let s=0;s0){const t=s[0];if(!e||t.name==e)return t}return!1}function o(e){const t=a(e);return!!t&&(s.shift(),t)}function d(t){if(!o(t))throw new Error(`Expected ${t} at index ${s[0].index} in expression: ${e}`)}function h(e){const s=Array.prototype.slice.call(arguments,1);return()=>dmx._EXPRESSIONS.has(e)?dmx._EXPRESSIONS.get(e).apply(t,s):e}function l(){return function(){const e=function(){let e=c();for(;o("LOGICAL_OR");){e=h("||",e,c())}return e}();if(o("QUESTION")){const t=l();d("COLON");return h("?",e,t,l())}return e}()}function c(){let e=u();for(;o("LOGICAL_AND");){e=h("&&",e,u())}return e}function u(){let e=p();for(;o("BITWISE_OR");){e=h("|",e,p())}return e}function p(){let e=m();for(;o("BITWISE_XOR");){e=h("^",e,m())}return e}function m(){let e=f();for(;o("BITWISE_AND");){e=h("&",e,f())}return e}function f(){let e,t=g();if(e=o("EQUALITY")){const s=f();t=h(e.value,t,s)}return t}function g(){let e,t=y();if(e=o("RELATIONAL")){const s=g();t=h(e.value,t,s)}return t}function y(){let e,t=function(){let e,t=v();for(;e=o("ADDICTIVE");){const s=v();t=h(e.value,t,s)}return t}();if(e=o("BITWISE_SHIFT")){const s=y();t=h(e.value,t,s)}return t}function v(){let e,t=_();for(;e=o("MULTIPLICATIVE");){const s=_();t=h(e.value,t,s)}return t}function _(){let e;return(e=o("ADDICTIVE"))?"+"==e.value?x():h(e.value,(()=>0),x()):(e=o("LOGICAL_NOT"))||(e=o("BITWISE_NOT"))?h(e.value,_()):x()}function x(){let s,r;if(o("L_PAREN"))s=l(),d("R_PAREN");else if(o("L_CURLY")){const e={};if("R_CURLY"!=i().name)do{const t=o().value;d("COLON"),e[t]=l()()}while(o("COMMA"));s=h(e),d("R_CURLY")}else if(o("L_BRACKET")){const e=[];if("R_BRACKET"!=i().name)do{e.push(l()())}while(o("COMMA"));s=h(e),d("R_BRACKET")}else if(o("PERIOD"))s=a()?E(h(t.data)):h(t.data);else{const n=o();if(!1===n)throw new Error(`Unexpected end of expression: ${e}`);s="IDENT"==n.name?dmx._RESERVED.has(n.value)?dmx._RESERVED.get(n.value)(t):()=>t.get(n.value):"METHOD"==n.name?h(dmx.__formatters.global[n.value]||(()=>{console.warn(`Method "${n.value}" not found in expression: ${e}`)})):()=>n.value}for(;r=o("L_PAREN")||o("L_BRACKET")||o("PERIOD");)if("("==r.value)s=b(s,n);else if("["==r.value)n=s,s=w(s);else{if("."!=r.value)throw new Error(`Unexpected token "${r.value}" at index ${r.index} in expression: ${e}`);n=s,s=E(s)}return n=null,s}function b(s,n){const r=[];if("R_PAREN"!=i().name)do{r.push(l())}while(o("COMMA"));return d("R_PAREN"),()=>{let i=[];n&&i.push(n());for(let e of r)i.push(e());try{return(s()||dmx.noop).apply(t,i)}catch(t){return void console.warn(`Error calling method ${s().name} in expression: ${e}`,t)}}}function w(e){const s=l();return d("R_BRACKET"),()=>{const n=e(),r=s();if("object"==typeof n&&null!=n)return n.__dmxScope__?t.get(r):"map"==dmx.getType(n)?n.get(r):n[r]}}function E(s){const n=o();return()=>{const r=s(),i=dmx.getType(r);if("METHOD"==n.name){const t="__"+n.value;return"map"==i&&"function"==typeof r.get(t)?r.get(t).bind(r):"object"==i&&"function"==typeof r[t]?r[t]:dmx.__formatters[i]&&dmx.__formatters[i][n.value]?dmx.__formatters[i][n.value]:dmx.__formatters.any&&dmx.__formatters.any[n.value]?dmx.__formatters.any[n.value]:()=>{null!=r&&console.warn(`Method "${n.value}" not found in expression: ${e}`)}}return r&&r.__dmxScope__?t.get(n.value):"map"==i?r.get(n.value):r&&"object"==typeof r&&n.value in r?r[n.value]:void 0}}},dmx.BaseComponent=dmx.createClass({constructor:function(e,t){this.$node=e,this.parent=t,this.children=[],this.listeners={},this.__disposables=[],this.__childDisposables=[],this.updatedProps=new Map,this.updateRequested=!1,this.isInitialized=!1,this.isDestroyed=!1,this.props=new Proxy({},{set:(e,t,s,n)=>{const r=Reflect.get(e,t,n),i=Reflect.set(e,t,s,n);return i&&this.isInitialized&&(this.attributes[t]&&this.attributes[t].alwaysUpdate||!dmx.equal(r,s))&&this.requestUpdate(t,r),i}}),this.data=dmx.signalProxy(),this.seed=Math.random(),this.name=e.getAttribute("id")||e.getAttribute("name")||this.type&&this.type.toLowerCase().replace(/^dmx-/,"")||"",this.name=this.name.replace(/[^\w]/g,"");try{this.$initialData(),this.$parseAttributes(e),this.init(e),!1!==this.render&&this.render(e),this.$node&&(this.$customAttributes("mounted",this.$node),this.$node.dmxComponent=this,this.$node.dmxRendered=!0),this.isInitialized=!0}catch(e){console.error(e)}},tag:null,initialData:{},attributes:{},methods:{},events:{destroy:Event},render:function(e){this.$node&&this.$parse()},parse:function(e){return dmx.parse(e,this)},find:function(e){if(this.name==e)return this;for(var t=0;t{if(t==this.$node){if("bind"==s.name&&this.attributes[(n=s.argument,n.replace(/-./g,(e=>e[1].toUpperCase())))])return;if("on"==s.name&&this.events[s.argument])return}var n;if(dmx.__attributes[e][s.name]){this.__inChild=t!=this.$node;const n=dmx.__attributes[e][s.name].call(this,t,s);n&&this[this.__inChild?"__childDisposables":"__disposables"].push(n)}})),this.__inChild=null},$parseTextNode(e){if(3===e.nodeType&&dmx.reExpression.test(e.nodeValue)){const t=e.nodeValue.replace(dmx.reExpressionReplace,((e,t)=>`##split##${t}##split##`)).split("##split##"),s=document.createDocumentFragment();t.forEach(((e,t)=>{const n=document.createTextNode(e);s.appendChild(n),t%2&&this.$watch(e,(e=>{n.nodeValue=e}))})),e.parentNode.replaceChild(s,e)}},$parse:function(e){if(e=e||this.$node)return 3===e.nodeType?this.$parseTextNode(e):void(1===e.nodeType&&(dmx.config.mapping&&Object.keys(dmx.config.mapping).forEach((t=>{dmx.array(e.querySelectorAll(t)).forEach((e=>{e.hasAttribute("is")||e.setAttribute("is","dmx-"+dmx.config.mapping[t])}))})),dmx.dom.walk(e,(function(e){if(e!=this.$node){if(1===e.nodeType){var t=e.tagName.toLowerCase(),s=dmx.dom.getAttributes(e);if(e.hasAttribute("is")&&(t=e.getAttribute("is")),dmx.reIgnoreElement.test(t))return!1;if(this.$customAttributes("before",e,s),-1!==s.findIndex((e=>"repeat"===e.name)))return!1;if(dmx.rePrefixed.test(t))return(t=t.replace(/^dmx-/i,""))in dmx.__components?(e.isComponent=!0,e.dmxRendered?window.__WAPPLER__&&e.dmxComponent&&e.dmxComponent.$parse&&(dmx.reIgnoreElement.test(e.tagName)||e.dmxComponent.$parse()):this.$createChild(t,e),!1):void console.warn("Unknown component found! "+t);this.$customAttributes("mounted",e,s)}3===e.nodeType&&this.$parseTextNode(e)}}),this)))},$update:function(e){console.warn("Component.$update is deprecated.")},$parseAttributes:function(e){for(const t in this.attributes){const s=this.attributes[t],n=t.replace(/[A-Z]/g,(e=>"-"+e.toLowerCase()));let r=dmx.clone(s.default);if(e.hasAttribute(n)){if(s.type===Boolean)r="false"!==e.getAttribute(n);else{if(r=e.getAttribute(n),s.type===Number&&r&&isFinite(Number(r))&&(r=Number(r)),s.type===Object||s.type===Array)try{r=JSON.parse(r)}catch(e){console.warn("Invalid attribute value, expected a JSON string got "+r)}s.enum&&!s.enum.includes(r)&&(r=dmx.clone(s.default)),s.validate&&!s.validate(r)&&(r=dmx.clone(s.default))}this.props[t]=r}if(e.hasAttribute("dmx-bind:"+n)){const r=e.getAttribute("dmx-bind:"+n);this.$watch(r,(e=>{void 0===e?e=dmx.clone(s.default):s.type===Boolean?e=!!e:(null!=e&&(s.type===Number&&("string"==typeof e?e=e&&isFinite(Number(e))?Number(e):dmx.clone(s.default):"number"==typeof e&&isFinite(Number(e))||(e=dmx.clone(s.default))),s.type===String&&(e=String(e)),s.type===Object&&"object"!=typeof e&&(e=dmx.clone(s.default)),s.type===Array&&(e=Array.from(e))),s.enum&&!s.enum.includes(e)&&(e=dmx.clone(s.default)),s.validate&&!s.validate(e)&&(e=dmx.clone(s.default))),this.props[t]=e}))}else this.props[t]=r}for(const t in this.events)e.hasAttribute("on"+t)&&this.__disposables.push(dmx.eventListener(this,t,Function("event",e.getAttribute("on"+t)),{}));dmx.dom.getAttributes(e).forEach((e=>{"on"==e.name&&this.events[e.argument]&&this.__disposables.push(dmx.eventListener(this,e.argument,(t=>(t.originalEvent&&(t=t.originalEvent),dmx.parse(e.value,dmx.DataScope({$event:t.$data,$originalEvent:t},this)))),e.modifiers))}))},requestUpdate:function(e,t){this.performUpdate&&(this.updatedProps.has(e)||this.updatedProps.set(e,t),this.updateRequested||dmx.nextTick((()=>{this.isDestroyed||(this.updateRequested=!1,this.performUpdate(this.updatedProps),this.updatedProps.clear())})),this.updateRequested=!0)},$initialData:function(){Object.assign(this.data,{$type:this.type},"function"==typeof this.initialData?this.initialData():this.initialData),Object.keys(this.methods).forEach((function(e){var t=this;this.data["__"+e]=function(){return t.methods[e].apply(t,Array.prototype.slice.call(arguments,1))}}),this)},$addBinding:function(e,t){this.$watch(e,t)},$watch:function(e,t){const s=this.__inChild?"__childDisposables":"__disposables";this[s]||(this[s]=[]);let n=!0;this[s].push(dmx.effect((()=>{if(n)t.call(this,this.parse(e)),n=!1;else{const s=this.parse(e);queueMicrotask((()=>t.call(this,s)))}})))},$destroy:function(){this.dispatchEvent("destroy"),this.beforeDestroy(),this.destroy(),this.isDestroyed=!0,this.parent&&this.parent.$removeChild&&this.parent.$removeChild(this),this.$destroyChildren(),this.__disposables.forEach((e=>e())),this.__disposables=[],this.$node&&(this.$node.dmxComponent=null,this.$node=null),this.parent=null,this.data={},this.destroyed()},$destroyChildren:function(){Array.from(this.children).forEach((e=>{e.$destroy()})),this.children=[],this.__childDisposables.forEach((e=>e())),this.__childDisposables=[]},get:function(e,t){return void 0!==this.data[e]?this.data[e]:this.parent&&!0!==t?"parent"==e?this.parent.data:this.parent.get(e):void 0},add:function(e,t){this.data[e]?Array.isArray(this.data[e])?this.data[e].push(t):this.data[e]=[this.data[e],t]:this.set(e,t)},set:function(e,t){"object"==typeof e?dmx.batch((()=>{for(var t in e)e.hasOwnProperty(t)&&this.set(t,e[t])})):this.data[e]=t},del:function(e){delete this.data[e]}}),function(){dmx.pathToRegexp=d,dmx.pathToRegexp.parse=s,dmx.pathToRegexp.compile=function(e,t){return n(s(e,t))},dmx.pathToRegexp.tokensToFunction=n,dmx.pathToRegexp.tokensToRegExp=o;var e="/",t=new RegExp(["(\\\\.)","(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?"].join("|"),"g");function s(s,n){for(var a,o=[],d=0,h=0,l="",c=n&&n.delimiter||e,u=n&&n.whitelist||void 0,p=!1;null!==(a=t.exec(s));){var m=a[0],f=a[1],g=a.index;if(l+=s.slice(h,g),h=g+m.length,f)l+=f[1],p=!0;else{var y="",v=a[2],_=a[3],x=a[4],b=a[5];if(!p&&l.length){var w=l.length-1,E=l[w];(!u||u.indexOf(E)>-1)&&(y=E,l=l.slice(0,w))}l&&(o.push(l),l="",p=!1);var $="+"===b||"*"===b,k="?"===b||"*"===b,A=_||x,C=y||c;o.push({name:v||d++,prefix:y,delimiter:C,optional:k,repeat:$,pattern:A?i(A):"[^"+r(C===c?C:C+c)+"]+?"})}}return(l||h0&&"\n"!==t[n];n--,r++);for(;n>0;n--)"\n"===t[n]&&i++;throw new Error(e+" at line "+i+","+r+" >>>"+t.substr(s-r,20)+" ...")}function o(){return n=t.charAt(s),s++,n}function d(e){return t.charAt(s+e)}function h(e){for(var t="",s=n;o();){if(n===s)return o(),e&&"'"===s&&"'"===n&&0===t.length?(o(),l()):t;if("\\"===n)if(o(),"u"===n){for(var i=0,d=0;d<4;d++){o();var h,c=n.charCodeAt(0);n>="0"&&n<="9"?h=c-48:n>="a"&&n<="f"?h=c-97+10:n>="A"&&n<="F"?h=c-65+10:a("Bad \\u char "+n),i=16*i+h}t+=String.fromCharCode(i)}else{if("string"!=typeof r[n])break;t+=r[n]}else"\n"===n||"\r"===n?a("Bad string containing newline"):t+=n}a("Bad string")}function l(){for(var e="",t=0,s=0;;){var r=d(-s-5);if(!r||"\n"===r)break;s++}function i(){for(var e=s;n&&n<=" "&&"\n"!==n&&e-- >0;)o()}for(;n&&n<=" "&&"\n"!==n;)o();for("\n"===n&&(o(),i());;){if(n){if("'"===n){if(t++,o(),3===t)return"\n"===e.slice(-1)&&(e=e.slice(0,-1)),e;continue}for(;t>0;)e+="'",t--}else a("Bad multiline string");"\n"===n?(e+="\n",o(),i()):("\r"!==n&&(e+=n),o())}}function c(){if('"'===n||"'"===n)return h(!1);for(var e="",t=s,r=-1;;){if(":"===n)return e?r>=0&&r!==e.length&&(s=t+r,a("Found whitespace in your key name (use quotes to include)")):a("Found ':' but no key name (for an empty key name use quotes)"),e;n<=" "?n?r<0&&(r=e.length):a("Found EOF while looking for a key name (check your syntax)"):i(n)?a("Found '"+n+"' where a key name was expected (check your syntax or use quotes if the key name includes {}[],: or whitespace)"):e+=n,o()}}function u(){for(;n;){for(;n&&n<=" ";)o();if("#"===n||"/"===n&&"/"===d(0))for(;n&&"\n"!==n;)o();else{if("/"!==n||"*"!==d(0))break;for(o(),o();n&&("*"!==n||"/"!==d(0));)o();n&&(o(),o())}}}function p(e,t){var s,n,r="",i=0,a=!0,o=0;function d(){return n=e.charAt(o),o++,n}for(d(),"-"===n&&(r="-",d());n>="0"&&n<="9";)a&&("0"==n?i++:a=!1),r+=n,d();if(a&&i--,"."===n)for(r+=".";d()&&n>="0"&&n<="9";)r+=n;if("e"===n||"E"===n)for(r+=n,d(),"-"!==n&&"+"!==n||(r+=n,d());n>="0"&&n<="9";)r+=n,d();for(;n&&n<=" ";)d();return t&&(","!==n&&"}"!==n&&"]"!==n&&"#"!==n&&("/"!==n||"/"!==e[o]&&"*"!==e[o])||(n=0)),s=+r,n||i||!isFinite(s)?void 0:s}function m(e){function t(e,s){var n,r,i,a;switch(typeof e){case"string":e.indexOf(s)>=0&&(a=e);break;case"object":if("[object Array]"===Object.prototype.toString.apply(e))for(n=0,i=e.length;n "+n+"\n (unquoted strings contain everything up to the next line!)":""}return s("}")||s("]")}function f(){var e=[];try{if(o(),u(),"]"===n)return o(),e;for(;n;){if(e.push(y()),u(),","===n&&(o(),u()),"]"===n)return o(),e;u()}a("End of input while parsing an array (missing ']')")}catch(t){throw t.hint=t.hint||m(e),t}}function g(e){var t="",s={};try{if(e||o(),u(),"}"===n&&!e)return o(),s;for(;n;){if(t=c(),u(),":"!==n&&a("Expected ':' instead of '"+n+"'"),o(),s[t]=y(),u(),","===n&&(o(),u()),"}"===n&&!e)return o(),s;u()}if(e)return s;a("End of input while parsing an object (missing '}')")}catch(e){throw e.hint=e.hint||m(s),e}}function y(){switch(u(),n){case"{":return g();case"[":return f();case"'":case'"':return h(!0);default:return function(){var e=n;for(i(n)&&a("Found a punctuator character '"+n+"' when expecting a quoteless string (check your syntax)");;){o();var t="\r"===n||"\n"===n||""===n;if(t||","===n||"}"===n||"]"===n||"#"===n||"/"===n&&("/"===d(0)||"*"===d(0))){var s=e[0];switch(s){case"f":if("false"===e.trim())return!1;break;case"n":if("null"===e.trim())return null;break;case"t":if("true"===e.trim())return!0;break;default:if("-"===s||s>="0"&&s<="9"){var r=p(e);if(void 0!==r)return r}}if(t)return e.trim()}e+=n}}()}}function v(e){return u(),n&&a("Syntax error, found trailing characters"),e}if("string"!=typeof e)throw new Error("source is not a string");return t=e,s=0,n=" ",function(){switch(u(),n){case"{":return v(g());case"[":return v(f());default:return v(y())}}()}),dmx.Flow=dmx.createClass({constructor:function(e){if(!(this instanceof dmx.Flow))return new dmx.Flow(e);window.Promise||console.warn("Promises are not supported, flows can not be used"),this._execStep=this._execStep.bind(this),this.scope=new dmx.DataScope({},e),this.output={}},run:function(e){return this.output={},this._exec(e.exec||e).then((()=>(dmx.debug&&console.debug("finished",this.output),this.output)))},_each:function(e,t){return Promise.resolve(e).then((e=>(e=Array.isArray(e)?e:[e]).reduce(((s,n,r)=>s.then((()=>t(n,r,e.length).then((t=>{t&&(e[r]=t)}))))),Promise.resolve()).then((()=>e))))},_exec:function(e){if(e.steps){var t=this._each(e.steps,this._execStep);return e.catch&&t.catch((t=>this._each(e.catch,self._execStep))),t}return this._each(e,this._execStep)},_execStep:function(e){for(let t in e){if(e.hasOwnProperty(t)&&dmx.__actions[t]){const s=dmx.__actions[t].bind(this),n=e[t],r=t+Date.now();return dmx.debug&&(console.debug("exec action",t,n),console.time(r)),n.disabled?Promise.resolve():Promise.resolve(s(n)).then((e=>{dmx.debug&&(console.debug("finished exec action",t,n),console.timeEnd(r)),n.name&&(dmx.debug&&console.debug("set data",n.name,e),this.scope.set(n.name,e),n.output&&(dmx.debug&&console.debug("set output",n.name,e),this.output[n.name]=e))}))}throw new Error("Action "+t+" was not found.")}},parse:function(e){if(null==e)return e;if("object"==typeof(e=e.valueOf())){var t=e.slice?[]:{};for(var s in e)e.hasOwnProperty(s)&&(t[s]=this.parse(e[s],this.scope));return t}return"string"==typeof e&&-1!=e.indexOf("{{")?dmx.parse(e,this.scope):e}}),dmx.Flow.run=function(e,t){return new dmx.Flow(t).run(e)},dmx.Component("app",{initialData:{query:{}},events:{ready:Event,load:Event},init(){this.dispatchLoad=this.dispatchEvent.bind(this,"load"),this._parseQuery=this._parseQuery.bind(this),window.addEventListener("load",this.dispatchLoad,{once:!0}),window.addEventListener("load",this._parseQuery),window.addEventListener("popstate",this._parseQuery),window.addEventListener("pushstate",this._parseQuery),window.addEventListener("replacestate",this._parseQuery),this._parseQuery(),queueMicrotask((()=>this.dispatchEvent("ready")))},destroy(){window.removeEventListener("load",this.dispatchLoad),window.removeEventListener("load",this._parseQuery),window.removeEventListener("popstate",this._parseQuery),window.removeEventListener("pushstate",this._parseQuery),window.removeEventListener("replacestate",this._parseQuery)},_parseQuery(){let e="";window.location.search?e=window.location.search.slice(1):window.location.hash.indexOf("?")&&(e=window.location.hash.slice(window.location.hash.indexOf("?")+1),e.indexOf("#")>0&&(e=e.slice(0,e.indexOf("#"))));let t=e.split("&").reduce((function(e,t){var s=t.replace(/\+/g," ").split("=");return s[0]&&(e[decodeURIComponent(s[0])]=decodeURIComponent(s[1]||"")),e}),{}),s=document.querySelector('meta[name="ac:base"]'),n=document.querySelector('meta[name="ac:route"]');if(n&&n.content){let e=[],r=n.content;s&&s.content&&(r=s.content.replace(/\/$/,"")+r);let i=dmx.pathToRegexp(r,e,{end:!1}).exec(decodeURI(window.location.pathname));i&&e.forEach((function(e,s){t[e.name]=i[s+1]}))}this.set("query",t)}}),dmx.Component("form",{attributes:{novalidate:{type:Boolean,default:!1}},methods:{submit(e){this._submit(e)},reset(){this._reset()},validate(){this._validate()}},events:{invalid:Event,submit:Event},init(e){this._submitHandler=this._submitHandler.bind(this),this._resetHandler=this._resetHandler.bind(this),e.noValidate=!0,e.addEventListener("submit",this._submitHandler),e.addEventListener("reset",this._resetHandler)},destroy(){this.$node.removeEventListener("submit",this._submitHandler),this.$node.removeEventListener("reset",this._resetHandler)},_submitHandler(e){e.preventDefault(),this._submit()},_resetHandler(e){dmx.validateReset&&dmx.validateReset(this.$node),window.grecaptcha&&this.$node.querySelector(".g-recaptcha")&&grecaptcha.reset()},_submit(e){if(e)return this._formSubmit();this.props.novalidate||this._validate()?this.dispatchEvent("submit",{cancelable:!0})&&this._formSubmit():(this.dispatchEvent("invalid"),this._focusFirstInvalid())},_reset(){this._formReset()},_validate(){return dmx.validate?dmx.validate(this.$node):(Array.from(this.$node.elements).forEach((e=>e.dirty=!0)),this.$node.checkValidity())},_formSubmit(){HTMLFormElement.prototype.submit.call(this.$node)},_formReset(){HTMLFormElement.prototype.reset.call(this.$node)},_focusFirstInvalid(){const e=Array.from(this.$node.elements).find((e=>!e.validity.valid));e&&e.focus()},_parseJsonForm(){const e={};for(const n of this.$node.elements)if(n.name&&!n.disabled){const r=t(n.name.replace(/\[\]$/,""));let i=e;for(const e of r){const t=n.type;"number"==t?n.value&&(i=s(i,e,i[e.key],+n.value)):"radio"==t||"checkbox"==t?n.getAttribute("value")?n.checked&&(i=s(i,e,i[e.key],n.value)):i=s(i,e,i[e.key],n.checked):i=s(i,e,i[e.key],"select-multiple"==t?Array.from(n.selectedOptions).map((e=>e.value)):n.value)}}return e;function t(e){const t=[],s=e,n=/^\[([^\]]*)\]/,r=/^\d+$/;if(!(e=e.replace(/^([^\[]+)/,((e,s)=>(t.push({type:"object",key:s}),"")))))return t[0].last=!0,t;for(;e;){if(!n.test(e))return{type:"object",key:s,last:!0};e=e.replace(n,((e,s)=>(s?r.test(s)?t.push({type:"array",key:+s}):t.push({type:"object",key:s}):t[t.length-1].append=!0,"")))}for(let e=0,s=t.length;ethis.dispatchEvent("updated")))},_focus(){this.$node.focus()},_disable(e){this.$node.disabled=e,this.set("disabled",this.$node.disabled)},_validate(){dmx.validate(this.$node),this.$node.dirty&&this.set({invalid:!this.$node.validity.valid,validationMessage:this.$node.validationMessage})},_inputHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.$node&&this.data.value!==this.$node.value&&(this.set("value",this.$node.value),e&&this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.$node&&this.data.value!==this.$node.value&&(this.set("value",this.$node.value),e&&this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))},_invalidHandler(e){this.set({invalid:!this.$node.validity.valid,validationMessage:this.$node.validationMessage})},_resetHandler(e){this.$node&&(this.$node.dirty=!1,this.set({invalid:!1,validationMessage:""}),this._changeHandler(e))},_focusHandler(e){this.set("focused",!0)},_blurHandler(e){this.set("focused",!1)}}),dmx.Component("textarea",{extends:"form-element",init(e){if(!this.props.value){const e=this.$node.value;this.props.value=e.includes("{{")?this.parse(e):e}dmx.Component("form-element").prototype.init.call(this,e)}}),dmx.Component("input",{extends:"form-element"}),dmx.Component("input-file",{extends:"form-element",attributes:{imageMaxWidth:{type:Number,default:null},imageMaxHeight:{type:Number,default:null},imageType:{type:String,default:null,enum:["png","jpeg","webp"]},imageQuality:{type:Number,default:null}},initialData:{file:null},_imageTypes:{png:"image/png",jpeg:"image/jpeg",webp:"image/webp","image/png":"image/png","image/jpeg":"image/jpeg","image/webp":"image/webp"},_imageExtensions:{"image/png":"png","image/jpeg":"jpg","image/webp":"webp"},_setValue(e){console.warn("Can not set value of a file input!")},_changeHandler(e){dmx.Component("form-element").prototype._changeHandler.call(this,e),this._updateData(),this.$node.files.length&&(this.props.imageMaxWidth||this.props.imageMaxHeight||this.props.imageType)&&this._resizeImage()},_resizeImage(){const e=this.$node.files[0];if(e&&e.type.startsWith("image/")){const t=URL.createObjectURL(e),s=new Image;s.src=t,s.onerror=()=>URL.revokeObjectURL(t),s.onload=()=>{URL.revokeObjectURL(t);const{imageMaxWidth:n,imageMaxHeight:r,imageType:i,imageQuality:a}=this.props;let o=s.width,d=s.height,h=o/d,l=!1;n&&o>n&&(o=n,d=~~(o/h),l=!0),r&&d>r&&(d=r,o=~~(d*h),l=!0);const c=i?this._imageTypes[i]:e.type;if(c!==e.type||l){const t=document.createElement("canvas"),n=t.getContext("2d");t.width=o,t.height=d,n.drawImage(s,0,0,o,d),t.toBlob((t=>{if(null==t)return console.error("Could not resize image!");const s=new DataTransfer,n=e.name.replace(/\.\w+$/,"."+this._imageExtensions[t.type]),r=new File([t],n,{type:t.type});s.items.add(r),this.$node.files=s.files,this._updateData()}),c,a?a/100:void 0)}}}},_updateData(){let e=null;if(this.$node.files.length){const t=this,s=this.$node.files[0];e={date:(s.lastModified?new Date(s.lastModified):s.lastModifiedDate).toISOString(),name:s.name,size:s.size,type:s.type,get dataUrl(){return s._dataUrl||dmx.fileUtils.blobToDataURL(s).then((n=>{s._dataUrl=n,t.set("file",Object.assign({},e,{dataUrl:n}))})).catch((e=>{console.error(e)})),null}}}this.set("file",e)}}),dmx.Component("input-file-multiple",{extends:"form-element",attributes:{imageMaxWidth:{type:Number,default:null},imageMaxHeight:{type:Number,default:null},imageType:{type:String,default:null,enum:["png","jpeg","webp"]},imageQuality:{type:Number,default:null}},initialData:{files:[]},_imageTypes:{png:"image/png",jpeg:"image/jpeg",webp:"image/webp","image/png":"image/png","image/jpeg":"image/jpeg","image/webp":"image/webp"},_imageExtensions:{"image/png":"png","image/jpeg":"jpg","image/webp":"webp"},_setValue(e){console.warn("Can not set value of a file input!")},_changeHandler(e){dmx.Component("form-element").prototype._changeHandler.call(this,e),this._updateData(),this.$node.files.length&&(this.props.imageMaxWidth||this.props.imageMaxHeight||this.props.imageType)&&this._resizeImages()},_resizeImages(){const e=Array.from(this.$node.files);Promise.all(e.map((e=>new Promise((t=>{if(!e.type.startsWith("image/"))return void t(e);const s=URL.createObjectURL(e),n=new Image;n.src=s,n.onerror=()=>URL.revokeObjectURL(s),n.onload=()=>{URL.revokeObjectURL(s);const{imageMaxWidth:r,imageMaxHeight:i,imageType:a,imageQuality:o}=this.props;let d=n.width,h=n.height,l=d/h,c=!1;r&&d>r&&(d=r,h=~~(d/l),c=!0),i&&h>i&&(h=i,d=~~(h*l),c=!0);const u=a?this._imageTypes[a]:e.type;if(u!==e.type||c){const s=document.createElement("canvas"),r=s.getContext("2d");s.width=d,s.height=h,r.drawImage(n,0,0,d,h),s.toBlob((s=>{if(null==s)return console.error("Could not resize image!");const n=e.name.replace(/\.\w+$/,"."+this._imageExtensions[s.type]),r=new File([s],n,{type:s.type});t(r)}),u,o?o/100:void 0)}else t(e)}}))))).then((e=>{const t=new DataTransfer;for(let s of e)t.items.add(s);this.$node.files=t.files,this._updateData()}))},_updateData(){let e=[];if(this.$node.files.length){const t=this;e=Array.from(this.$node.files).map(((s,n)=>({date:(s.lastModified?new Date(s.lastModified):s.lastModifiedDate).toISOString(),name:s.name,size:s.size,type:s.type,get dataUrl(){return s._dataUrl||(loading=!0,dmx.fileUtils.blobToDataURL(s).then((r=>{s._dataUrl=r,e=dmx.clone(e),e[n].dataUrl=r,t.set("files",e)})).catch((e=>{console.error(e)}))),null}})))}this.set("files",e)}}),dmx.Component("button",{extends:"form-element",attributes:{type:{type:String,default:"button",enum:["button","reset","submit"]}},init(e){dmx.Component("form-element").prototype.init.call(this,e),e.type=this.props.type}}),dmx.Component("radio",{extends:"form-element",initialData:{checked:!1},attributes:{checked:{type:Boolean,default:!1,alwaysUpdate:!0}},methods:{select(e,t){this._select(e),t&&dmx.nextTick((()=>{this.dispatchEvent("changed"),this.dispatchEvent(this.$node.checked?"checked":"unchecked")}))}},events:{checked:Event,unchecked:Event},init(e){dmx.Component("form-element").prototype.init.call(this,e),e.type="radio",e.checked=this.props.checked,e.defaultChecked=this.props.checked,this.props.checked&&this.set("checked",!0)},performUpdate(e){dmx.Component("form-element").prototype.performUpdate.call(this,e),e.has("checked")&&this.$node.checked!=this.props.checked&&(this.$node.defaultChecked=this.props.checked,this.$node.checked=this.props.checked,this.set("checked",this.props.checked),this.$node.dispatchEvent(new Event("radio",{bubbles:!0})),dmx.nextTick((()=>this.dispatchEvent("updated")))),e.has("value")&&(this.$node.value=this.props.value,this.$node.dispatchEvent(new Event("change",{bubbles:!0})))},_select(e){this.$node.checked=!1!==e,this.set("checked",this.$node.checked),dmx.nextTick((()=>this.dispatchEvent("updated")))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{if(this.$node&&(this.set("checked",this.$node.checked),this.dispatchEvent("changed"),this.dispatchEvent(this.$node.checked?"checked":"unchecked"),dmx.nextTick((()=>this.dispatchEvent("updated"))),this.$node.checked)){const e=document.querySelectorAll(`input[type=radio][name="${this.$node.name}"]`);for(const t of e)t!=this.$node&&t.form==this.$node.form&&"radio"==t.type&&t.name==this.$node.name&&t.dispatchEvent(new Event("change",{bubbles:!0}))}}))}}),dmx.Component("radio-group",{initialData:{value:null},attributes:{value:{type:String,default:null,alwaysUpdate:!0}},methods:{setValue(e){this._setValue(e)}},events:{updated:Event},init(e){this._changeHandler=this._changeHandler.bind(this),e.addEventListener("change",this._changeHandler),e.addEventListener("radio",this._changeHandler)},render(e){this.$parse(),this._setValue(this.props.value,!0),this._mutationObserver=new MutationObserver((e=>{let t=this.props.value;null==t&&(t=""),t=t.toString();for(let s of e){"attributes"==s.type&&"value"==s.attributeName&&"INPUT"===s.target.tagName&&"radio"===s.target.type&&(s.target.checked=s.target.value==t,s.target.defaultChecked=s.target.checked,s.target.dispatchEvent(new Event("change",{bubbles:!0})),requestAnimationFrame((()=>{this._updateValue()})));for(let e of s.addedNodes)e.nodeType===Node.ELEMENT_NODE&&requestAnimationFrame((()=>{"INPUT"===e.tagName&&"radio"===e.type?(e.checked=e.value==t,e.defaultChecked=e.checked):e.querySelectorAll("input[type=radio]").forEach((s=>{s.checked=e.value==t,s.defaultChecked=s.checked})),requestAnimationFrame((()=>{this._updateValue()}))}))}})),this._mutationObserver.observe(e,{subtree:!0,childList:!0,attributes:!0,attributeFilter:["value"]})},destroy(){this._mutationObserver.disconnect(),this.$node.removeEventListener("change",this._changeHandler),this.$node.removeEventListener("radio",this._changeHandler)},performUpdate(e){e.has("value")&&this._setValue(this.props.value,!0)},_setValue(e,t){null!=e&&(e=e.toString(),this._radios().forEach((s=>{s.checked=s.value==e,t&&(s.defaultChecked=s.checked),s.dispatchEvent(new Event("change",{bubbles:!0}))})),this._updateValue())},_updateValue(){const e=this._radios().filter((e=>!e.disabled&&e.checked)).map((e=>e.value));dmx.equal(this.data.value,e[0])||(this.set("value",e[0]||null),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_radios(){return Array.from(this.$node.querySelectorAll("input[type=radio]"))},_changeHandler(e){this._updateValue()}}),dmx.Component("checkbox",{extends:"form-element",initialData:{checked:!1},attributes:{checked:{type:Boolean,default:!1,alwaysUpdate:!0}},methods:{select(e,t){this._select(e),t&&dmx.nextTick((()=>{this.dispatchEvent("changed"),this.dispatchEvent(this.$node.checked?"checked":"unchecked")}))}},events:{checked:Event,unchecked:Event},init(e){dmx.Component("form-element").prototype.init.call(this,e),e.type="checkbox",e.checked=this.props.checked,e.defaultChecked=this.props.checked,this.props.checked&&this.set("checked",!0)},performUpdate(e){dmx.Component("form-element").prototype.performUpdate.call(this,e),e.has("checked")&&this.$node.checked!=this.props.checked&&(this.$node.defaultChecked=this.props.checked,this.$node.checked=this.props.checked,this.set("checked",this.props.checked),this.$node.dispatchEvent(new Event("checkbox",{bubbles:!0})),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_select(e){this.$node.checked=!1!==e,this.set("checked",this.$node.checked),dmx.nextTick((()=>this.dispatchEvent("updated")))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.$node&&(this.set("checked",this.$node.checked),this.dispatchEvent("changed"),"reset"!=e.type&&this.dispatchEvent(this.$node.checked?"checked":"unchecked"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))}}),dmx.Component("checkbox-group",{initialData:{value:[]},attributes:{value:{type:Array,default:[],alwaysUpdate:!0}},methods:{setValue(e){this._setValue(e)}},events:{updated:Event},init(e){this._changeHandler=this._changeHandler.bind(this),e.addEventListener("change",this._changeHandler),e.addEventListener("checkbox",this._changeHandler)},render(e){this.$parse(),this._setValue(this.props.value,!0),this._mutationObserver=new MutationObserver((e=>{let t=this.props.value;null==t&&(t=[]),Array.isArray(t)||(t=[t]),t=t.map((e=>e.toString()));for(let s of e)for(let e of s.addedNodes)e.nodeType===Node.ELEMENT_NODE&&requestAnimationFrame((()=>{"INPUT"===e.tagName&&"checkbox"===e.type?(e.checked=t.includes(e.value),e.defaultChecked=e.checked):e.querySelectorAll("input[type=checkbox]").forEach((e=>{e.checked=t.includes(e.value),e.defaultChecked=e.checked})),requestAnimationFrame((()=>{this._updateValue()}))}))})),this._mutationObserver.observe(e,{subtree:!0,childList:!0})},destroy(){this._mutationObserver.disconnect(),this.$node.removeEventListener("change",this._changeHandler),this.$node.removeEventListener("checkbox",this._changeHandler)},performUpdate(e){e.has("value")&&this._setValue(this.props.value,!0)},_setValue(e,t){null==e&&(e=[]),Array.isArray(e)||(e=[e]),e=e.map((e=>e.toString())),this._checkboxes().forEach((s=>{s.checked=e.includes(s.value),t&&(s.defaultChecked=s.checked)})),this._updateValue()},_updateValue(){const e=this._checkboxes().filter((e=>!e.disabled&&e.checked)).map((e=>e.value));dmx.equal(this.data.value,e)||(this.set("value",e),dmx.nextTick((()=>this.dispatchEvent("updated"))))},_checkboxes(){return Array.from(this.$node.querySelectorAll("input[type=checkbox]"))},_changeHandler(e){this._updateValue()}}),dmx.Component("select",{extends:"form-element",initialData:{selectedIndex:-1,selectedValue:"",selectedText:""},attributes:{options:{type:[Array,Object,Number],default:null},optiontext:{type:String,default:"$value"},optionvalue:{type:String,default:"$value"}},methods:{setSelectedIndex(e){this.$node.selectedIndex=e,this._updateValue()}},init(e){this._options=[],this.props.value||(this.props.value=this.$node.value,this._updateValue()),this._mutationObserver=new MutationObserver((e=>{this._updatingOptions||this._updateValue()})),this._mutationObserver.observe(this.$node,{subtree:!0,childList:!0}),dmx.Component("form-element").prototype.init.call(this,e)},render(e){this.$parse(),this._renderOptions();let t=this.props.value;null==t&&(t=""),Array.from(this.$node.options).forEach((e=>{e.toggleAttribute("selected",e.value==t),e.selected=e.value==t,e.defaultSelected=e.selected})),this._updateValue()},destroy(){this._mutationObserver.disconnect(),dmx.Component("form-element").prototype.destroy.call(this)},performUpdate(e){dmx.Component("form-element").prototype.performUpdate.call(this,e),(e.has("options")||e.has("optiontext")||e.has("optionvalue"))&&this._renderOptions()},_setValue(e,t){if(null==e&&(e=""),e=e.toString(),t)Array.from(this.$node.options).forEach((t=>{t.toggleAttribute("selected",t.value==e),t.defaultSelected=t.selected}));else{const t=Array.from(this.$node.options).findIndex((t=>t.value==e));this.$node.selectedIndex=t}this._updateValue(),dmx.nextTick((()=>this.dispatchEvent("updated")))},_updateValue(){const e=this.$node.selectedIndex,t=this.$node.options[e]||{value:"",text:""};this.set({selectedIndex:e,selectedValue:t.value,selectedText:t.text,value:t.value})},_renderOptions(){this._options.forEach((e=>e.remove())),this._options=[],this.props.options&&(this._updatingOptions=!0,dmx.repeatItems(this.props.options).forEach((e=>{const t=document.createElement("option");t.value=dmx.parse(this.props.optionvalue,dmx.DataScope(e,this)),t.textContent=dmx.parse(this.props.optiontext,dmx.DataScope(e,this)),t.value==this.props.value&&(t.selected=!0),t.defaultSelected=t.selected,this.$node.append(t),this._options.push(t)})),this._updatingOptions=!1),this._updateValue()},_inputHandler(e){},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.data.selectedIndex!==this.$node.selectedIndex&&(this._updateValue(),this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))}}),dmx.Component("select-multiple",{extends:"select",initialData:{value:[]},attributes:{value:{type:Array,default:null,alwaysUpdate:!0}},performUpdate(e){dmx.Component("select").prototype.performUpdate.call(this,e),e.has("value")&&this._setValue(this.props.value,!0)},_setValue(e,t){null==e&&(e=""),Array.isArray(e)||(e=[e]),e=e.map((e=>e.toString())),Array.from(this.$node.options).forEach((s=>{const n=e.includes(s.value);t?(s.toggleAttribute("selected",n),s.defaultSelected=s.selected):s.selected=n})),this._updateValue(),dmx.nextTick((()=>this.dispatchEvent("updated")))},_getValue(){return Array.from(this.$node.selectedOptions).map((e=>e.value))},_updateValue(){const e=this._getValue();dmx.batch((()=>{dmx.Component("select").prototype._updateValue.call(this),this.set("value",e)}))},_changeHandler(e){this.$node.dirty&&this._validate(),dmx.nextTick((()=>{this.data.selectedIndex===this.$node.selectedIndex&&dmx.equal(this.data.value,this._getValue())||(this._updateValue(),this.dispatchEvent("changed"),dmx.nextTick((()=>this.dispatchEvent("updated"))))}))}}),dmx.Component("value",{initialData:{value:null},attributes:{value:{default:null}},methods:{setValue(e){this.data.value!==e&&(this.set("value",e),dmx.nextTick((()=>this.dispatchEvent("updated"))))}},events:{updated:Event},render:!1,init(e){this.set("value",this.props.value)},performUpdate(e){e.has("value")&&(this.set("value",this.props.value),dmx.nextTick((()=>this.dispatchEvent("updated"))))}}),dmx.Component("repeat",{initialData:{items:[]},attributes:{repeat:{type:[Array,Object,Number],default:null},key:{type:String,default:""},rerender:{type:Boolean,default:!1}},events:{update:Event,updated:Event},render:!1,init(e){for(this.prevItems=[],this.childKeys=new Map,this.$template=document.createDocumentFragment();this.$node.hasChildNodes();)this.$template.appendChild(this.$node.firstChild);this.props.repeat&&this.performUpdate(new Map([["repeat",void 0]]))},performUpdate(e){if(e.has("key")&&(this._rerender=!0),e.has("repeat")){this.dispatchEvent("update"),(this.props.rerender||this._rerender)&&(this._rerender=!1,this._clear());var t=dmx.Component("repeat-item"),s=dmx.clone(this.props.repeat),n=dmx.repeatItems(s);if(n.length){if(!this.props.rerender&&this.props.key&&n[0].hasOwnProperty(this.props.key)&&this.prevItems.length){var r,i,a=this.props.key,o=this.prevItems,d=this._clone(n),h=0,l=0,c=o.length-1,u=d.length-1;e:for(;;){for(;o[h][a]===d[l][a];)if(this.childKeys.get(d[l][a]).set(d[l]),l++,++h>c||l>u)break e;for(;o[c][a]===d[u][a];)if(this.childKeys.get(d[u][a]).set(d[u]),u--,h>--c||l>u)break e;if(o[c][a]!==d[l][a]){if(o[h][a]!==d[u][a])break;if(i=u+1,this.childKeys.get(d[u][a]).set(d[u]),this._moveChild(d[u][a],d[i]&&d[i][a]),u--,++h>c||l>u)break}else if(this.childKeys.get(d[l][a]).set(d[l]),this._moveChild(d[l][a],o[h][a]),l++,h>--c||l>u)break}if(h>c)for(i=u+1;l<=u;)this._insertChild(d[l++],d[i]&&d[i][a]);else if(l>u)for(;h<=c;)this._removeChild(o[h++][a]);else{var p=c-h+1,m=u-l+1,f=o,g=new Array(m).fill(-1),y=!1,v=0,_=0;if(m<=4||p*m<=16){for(w=h;w<=c;w++)if(_r?y=!0:v=r,this.childKeys.get(d[r][a]).set(d[r]),_++,f[w]=null;break}}else{var x={};for(w=l;w<=u;w++)x[d[w][a]]=w;for(w=h;w<=c;w++)_r?y=!0:v=r,this.childKeys.get(d[r][a]).set(d[r]),_++,f[w]=null)}if(p===o.length&&0===_)for(this._clear();l0;)null!==f[h]&&(this._removeChild(o[h][a]),w--),h++;if(y){var b=this._lis(g);for(r=b.length-1,w=m-1;w>=0;w--)-1===g[w]?(i=(v=w+l)+1,this._insertChild(d[v],d[i]&&d[i][a])):r<0||w!==b[r]?(i=(v=w+l)+1,this._moveChild(d[v][a],d[i]&&d[i][a])):r--}else if(_!==m)for(w=m-1;w>=0;w--)-1===g[w]&&(i=(v=w+l)+1,this._insertChild(d[v],d[i]&&d[i][a]))}}}else if(this.children.length>n.length&&this.children.splice(n.length).forEach((e=>{e.$destroy()})),this.children.length&&this.children.forEach(((e,t)=>{for(const s in e.data)n[t][s]||delete e.data[s];e.set(n[t])})),n.length>this.children.length){const e=document.createDocumentFragment(),s=new Set;for(var w=this.children.length;w{e.appendChild(t),s.add(E)})),this.children.push(E)}this.$node.appendChild(e);for(const e of s)e.$nodes.forEach((t=>{e.$parse(t)}))}}else this._clear();if(this.props.key){this.prevItems=this._clone(n);for(let e of this.children)this.childKeys.set(e.data[this.props.key],e)}this.set("items",this.children.map((e=>e.data))),dmx.nextTick((()=>this.dispatchEvent("updated")))}},_lis(e){var t,s,n=e.slice(0),r=[];r.push(0);for(var i=0,a=e.length;i0&&(n[i]=r[t-1]),r[t]=i)}}for(s=r[(t=r.length)-1];t-- >0;)r[t]=s,s=n[s];return r},_clear(){this.prevItems=[],this.childKeys.clear(),this.$node.innerHTML="",this.children.splice(0).forEach((e=>{e.$destroy()}))},_insertChild(e,t){var s=new(dmx.Component("repeat-item"))(this.$template.cloneNode(!0),this,e);s.$nodes.forEach((e=>{t?this.childKeys.has(t)?this.$node.insertBefore(e,this.childKeys.get(t).$nodes[0]):console.warn("(insert) can not insert node before key "+t+"!"):this.$node.appendChild(e),s.$parse(e)})),this.childKeys.set(e[this.props.key],s),this.children.push(s)},_moveChild(e,t){var s=this.childKeys.get(e);s?this.childKeys.has(t)?s.$nodes.forEach((e=>{this.$node.insertBefore(e,this.childKeys.get(t).$nodes[0])})):s.$nodes.forEach((e=>{this.$node.appendChild(e)})):console.warn("(move) child with key "+e+" not found!")},_removeChild(e){var t=this.childKeys.get(e);t?(t.$destroy(),this.children.splice(this.children.indexOf(t),1),this.childKeys.delete(e)):console.warn("(remove) child with key "+e+" not found!")},_clone:e=>dmx.clone(e)}),dmx.Component("repeat-item",{constructor:function(e,t,s,n){this.parent=t,this.children=[],this.listeners={},this.props={},this.__disposables=[],this.__childDisposables=[],this.updatedProps=new Map,this.updateRequested=!1,this.isInitialized=!0,this.isDestroyed=!1,this.data=dmx.signalProxy(s),this.seed=t.seed,this.name=n||"repeatItem",this.$nodes=[];for(var r=0;r{t&&s&&["param","header"].includes(e)&&this.$watch(s,(s=>{this.props[e+"s"]=Object.assign({},this.props[e+"s"],{[t]:s})})),t&&s&&"data"==e&&this.$watch(s,(e=>{this.props.data=Object.assign({},this.props.data,{[t]:e})}))}))},_abort(){this._xhr&&this._xhr.abort()},_resetData(e){const t={status:0,headers:{},state:{executing:!1,uploading:!1,processing:!1,downloading:!1},uploadProgress:{position:0,total:0,percent:0},downloadProgress:{position:0,total:0,percent:0},lastError:{status:0,message:"",response:null}};e&&(t.data=null),this.set(t)},_fetch(e){this._abort(),e=dmx.extend(!0,this.props,e||{});let t=Object.keys(e.params).filter((t=>null!=e.params[t])).map((t=>{let s=e.params[t];return"string"==typeof s&&s.startsWith("{{")&&(s=this.parse(s)),encodeURIComponent(t)+"="+encodeURIComponent(s)})).join("&");if(this._resetData(),this.dispatchEvent("start"),this._url=e.url,t&&(this._url+=(this._url.includes("?")?"&":"?")+t),window.WebviewProxy&&(this._url=window.WebviewProxy.convertProxyUrl(this._url)),this.props.cache){const t=this.parse(`${this.props.cache}.data["${this._url}"]`);if(t){if(!(Date.now()-t.created>=1e3*e.ttl))return this.set({headers:t.headers||{},paging:t.paging||{},links:t.links||{},data:t.data}),this.dispatchEvent("success"),void this.dispatchEvent("done");this.parse(`${this.props.cache}.remove("${this._url}")`)}}this.set("state",{executing:!0,uploading:!1,processing:!1,downloading:!1});let s=null,n=this.props.method.toUpperCase();"GET"!==n&&("text"===this.props.dataType?s=this.props.data.toString():"json"===this.props.dataType?s=JSON.stringify(this.props.data):"POST"===n?(s=new FormData,Object.keys(this.props.data).forEach((e=>{let t=this.props.data[e];Array.isArray(t)?(/\[\]$/.text(t)||(e+="[]"),t.forEach((t=>s.append(e,t)))):s.set(e,t)}))):s=this.props.data.toString()),this._xhr.open(n,this._url),this._xhr.timeout=1e3*e.timeout,"json"!==this.props.dataType&&"text"!==this.props.dataType||this._xhr.setRequestHeader("Content-Type","application/"+this.props.dataType);for(const e in this.props.headers)this._xhr.setRequestHeader(e,this.props.headers[e]);if(this._xhr.setRequestHeader("accept","application/json"),this.props.credentials&&(this._xhr.withCredentials=!0),this.serverconnect&&"GET"!==n){const e=document.querySelector('meta[name="csrf-token"]');e&&this._xhr.setRequestHeader("X-CSRF-Token",e.content)}try{this._xhr.send(s)}catch(e){this._done(e)}},_done(e){if(this._resetData(),e)return this.set("lastError",{status:0,message:e.message,response:null}),this.dispatchEvent("error"),void this.dispatchEvent("done");let t=this._xhr.responseText;try{t=JSON.parse(t)}catch(e){if(this._xhr.status<400)return this.set("lastError",{status:0,message:"Response was not valid JSON",response:t}),this.dispatchEvent("error"),void this.dispatchEvent("done")}if(this._parseHeaders(),this._xhr.status<400)return this.set({status:this._xhr.status,data:t}),this.dispatchEvent("success"),this.dispatchEvent("done"),void(this.props.cache&&this.parse(`${this.props.cache}.set("${this._url}", { headers: headers, paging: paging, links: links, data: data, created: ${Date.now()} })`));this.set({status:this._xhr.status,lastError:{status:this._xhr.status,message:this._xhr.statusText,response:t}}),this.dispatchEvent(this._statusEvents[this._xhr.status]||"error"),this.dispatchEvent("done")},_parseHeaders(){try{const e=this._xhr.getAllResponseHeaders().trim().split(/[\r\n]+/);this.set("headers",e.reduce(((e,t)=>{const s=t.split(": "),n=s.shift(),r=s.join(": ");return e[n]=r,e}),{}))}catch(e){return void console.warn("Error parsing response headers",e)}this._parseLinkHeaders()},_parseLinkHeaders(){try{const e=Object.keys(this.data.headers).find((e=>"link"===e.toLowerCase()));e&&this.set("links",this.data.headers[e].split(/,\s*{try{const t=e.match(/]*)>(.*)/),s=new URL(t[1]),n=t[2].split(";"),r=s.search.slice(1).split("&").reduce(((e,t)=>{const s=t.split("=");return s[0]&&(e[decodeURIComponent[s[0]]]=decodeURIComponent(s[1]||"")),e}),{});let i=n.slice(1).reduce(((e,t)=>{const s=t.match(/\s*(.+)\s*=\s*"?([^"]+)"?/);return s&&(e[s[1]]=s[2]),e}),{});return i=Object.assign({},r,i),i.url=s.toString(),i}catch(e){return console.warn("Error parsing link header part",e),null}}))).filter((e=>e&&e.rel)).reduce(((e,t)=>(t.rel.split(/\s+/).forEach((s=>e[s]=Object.assign(t,{rel:s}))),e)),{})}catch(e){return void console.warn("Error parsing link header",e)}this._parsePaging()},_parsePaging(){try{const e={page:1,pages:1,items:0,has:{first:!1,prev:!1,next:!1,last:!1}},{first:t,prev:s,next:n,last:r}=this.data.links;if(s||n){r&&r.page?e.pages=+r.page:s&&s.page&&(e.pages=+s.page+1);const i=Object.keys(this.data.headers).find((e=>"x-total"===(e=e.toLowerCase())||"x-count"===e||"x-total-count"===e));i&&(e.items=+this.data.headers[i]),s&&s.page?e.page=+s.page+1:n&&n.page&&(e.page=+n.page-1),e.has={first:!!t,prev:!!s,next:!!n,last:!!r}}this.set("paging",e)}catch(e){console.warn("Error parsing paging",e)}},_loadHandler(e){this._done()},_abortHandler(e){this._resetData(),this.dispatchEvent("abort"),this.dispatchEvent("done")},_errorHandler(e){this._done(Error("Failed to execute"))},_timeoutHandler(e){this._done(Error("Execution timeout"))},_progressHandler(e,t){t.loaded=t.loaded||t.position;const s=t.lengthComputable?Math.ceil(100*t.loaded/t.total):0;this.set({state:{executing:!0,uploading:"upload"===e&&s<100,processing:"upload"===e&&100===s,downloading:"download"===e},[e+"Progress"]:{position:t.loaded,total:t.total,percent:s}}),this.dispatchEvent(e,{lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total})}}),dmx.Component("serverconnect",{extends:"fetch",attributes:{sockets:{type:Boolean,default:!1}},init(e){this.serverconnect=!0,this.props.sockets&&dmx.Socket&&(this._refresh=this._refresh.bind(this),this._event=this.props.url.replace(/^(.*?)api\//,""),this._socket=dmx.Socket("/api"),this._socket.on(this._event,this._refresh)),dmx.Component("fetch").prototype.init.call(this,e)},destroy(){this._socket&&this._socket.off(this._event,this._refresh),dmx.Component("fetch").prototype.destroy.call(this)},_fetch(e){this._socket&&this._socket.connected?this._refresh(e&&e.params):dmx.Component("fetch").prototype._fetch.call(this,e)},_refresh(e){e=dmx.extend(!0,{},this.props.params,e||{}),this.dispatchEvent("start"),this.set("state",{executing:!0,uploading:!1,processing:!0,downloading:!1}),this._socket.emit(this._event,e,(e=>{this.set({status:e.status,data:e.data,state:{executing:!1,uploading:!1,processing:!1,downloading:!1}}),this.dispatchEvent(this._statusEvents[e.status]||"error"),this.dispatchEvent("done")}))}}),dmx.Component("serverconnect-form",{extends:"form",initialData:{status:0,data:null,headers:{},state:{executing:!1,uploading:!1,processing:!1,downloading:!1},uploadProgress:{position:0,total:0,percent:0},downloadProgress:{position:0,total:0,percent:0},lastError:{status:0,message:"",response:null}},attributes:{timeout:{type:Number,default:0},autosubmit:{type:Boolean,default:!1},params:{type:Object,default:{}},headers:{type:Object,default:{}},postData:{type:String,default:"form"},credentials:{type:Boolean,default:!1}},methods:{abort(){this._abort()},reset(e){this._reset(),e&&(this._abort(),this._resetData(!0))}},events:{start:Event,done:Event,error:Event,unauthorized:Event,forbidden:Event,abort:Event,success:Event,upload:ProgressEvent,download:ProgressEvent},init(e){dmx.Component("form").prototype.init.call(this,e),this._loadHandler=this._loadHandler.bind(this),this._abortHandler=this._abortHandler.bind(this),this._errorHandler=this._errorHandler.bind(this),this._timeoutHandler=this._timeoutHandler.bind(this),this._downloadProgressHandler=this._progressHandler.bind(this,"download"),this._uploadProgressHandler=this._progressHandler.bind(this,"upload"),this._xhr=new XMLHttpRequest,this._xhr.addEventListener("load",this._loadHandler),this._xhr.addEventListener("abort",this._abortHandler),this._xhr.addEventListener("error",this._errorHandler),this._xhr.addEventListener("timeout",this._timeoutHandler),this._xhr.addEventListener("progress",this._downloadProgressHandler),this._xhr.upload.addEventListener("progress",this._uploadProgressHandler),this._extendNode(e),this.props.autosubmit&&dmx.nextTick((()=>this._submit()))},destroy(){dmx.Component("form").prototype.destroy.call(this),this._xhr.removeEventListener("load",this._loadHandler),this._xhr.removeEventListener("abort",this._abortHandler),this._xhr.removeEventListener("error",this._errorHandler),this._xhr.removeEventListener("timeout",this._timeoutHandler),this._xhr.removeEventListener("progress",this._downloadProgressHandler),this._xhr.upload.removeEventListener("progress",this._uploadProgressHandler),this._xhr=null},$parseAttributes(e){dmx.BaseComponent.prototype.$parseAttributes.call(this,e),dmx.dom.getAttributes(e).forEach((({name:e,argument:t,value:s})=>{t&&s&&["param","header"].includes(e)&&this.$watch(s,(s=>{this.props[e+"s"]=Object.assign({},this.props[e+"s"],{[t]:s})}))}))},_extendNode(e){e.dmxExtraData={},e.dmxExtraElements=[]},_abort(){this._xhr.abort()},_resetData(e){const t={status:0,headers:{},state:{executing:!1,uploading:!1,processing:!1,downloading:!1},uploadProgress:{position:0,total:0,percent:0},downloadProgress:{position:0,total:0,percent:0},lastError:{status:0,message:"",response:null}};e&&(t.data=null),this.set(t)},_formSubmit(){this._send()},_send(){this._abort();const e=this.$node.method.toUpperCase(),t=this.$node.action;let s=null,n=Object.keys(this.props.params).filter((e=>null!=this.props.params[e])).map((e=>{let t=this.props.params[e];return"string"==typeof t&&t.startsWith("{{")&&(t=this.parse(t)),encodeURIComponent(e)+"="+encodeURIComponent(t)})).join("&");if("GET"===e)n.length&&(n+="&"),n+=Array.from(this.$node.elements).filter((e=>!e.disabled&&("radio"!==e.type&&"checkbox"!==e.type||e.checked))).map((e=>encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))).join("&");else if("json"===this.props.postData)s=this._parseJsonForm(),this.$node.dmxExtraData&&Object.assign(s,this.$node.dmxExtraData),s=JSON.stringify(s);else if(s=new FormData(this.$node),this.$node.dmxExtraData)for(let e in this.$node.dmxExtraData){let t=this.$node.dmxExtraData[e];Array.isArray(t)?(/\[\]$/.test(e)||(e+="[]"),t.forEach((t=>s.append(e,t)))):s.set(e,t)}this._resetData(),this.dispatchEvent("start"),this.set("state",{executing:!0,uploading:!1,processing:!1,downloading:!1});let r=t;n&&(r+=(r.includes("?")?"&":"?")+n),window.WebviewProxy&&(r=window.WebviewProxy.convertProxyUrl(r)),this._xhr.open(e,r),this._xhr.timeout=1e3*this.props.timeout,"json"===this.props.postData&&this._xhr.setRequestHeader("Content-Type","application/json");for(const e in this.props.headers)this._xhr.setRequestHeader(e,this.props.headers[e]);this._xhr.setRequestHeader("accept","application/json"),this.props.credentials&&(this._xhr.withCredentials=!0);const i=document.querySelector('meta[name="csrf-token"]');i&&this._xhr.setRequestHeader("X-CSRF-Token",i.content);try{this._xhr.send(s)}catch(e){this._done(e)}},_done(e){if(this._resetData(),e)return this.set("lastError",{status:0,message:e.message,response:null}),this.dispatchEvent("error"),void this.dispatchEvent("done");let t=this._xhr.responseText;try{t=JSON.parse(t)}catch(e){if(this._xhr.status<400)return this.set("lastError",{status:0,message:"Response was not valid JSON",response:t}),this.dispatchEvent("error"),void this.dispatchEvent("done")}try{const e=this._xhr.getAllResponseHeaders().trim().split(/[\r\n]+/);this.set("headers",e.reduce(((e,t)=>{const s=t.split(": "),n=s.shift(),r=s.join(": ");return e[n]=r,e}),{}))}catch(e){console.warn("Error parsing response headers",e)}if(dmx.validateReset&&dmx.validateReset(this.$node),window.grecaptcha&&this.$node.querySelector(".g-recaptcha")&&grecaptcha.reset(),this._xhr.status<400)return this.set({status:this._xhr.status,data:t}),this.dispatchEvent("success"),void this.dispatchEvent("done");if(this.set({status:this._xhr.status,lastError:{status:this._xhr.status,message:this._xhr.statusText,response:t}}),400===this._xhr.status)if(this.dispatchEvent("invalid"),t.form&&dmx.validate.setMessage)for(const e in t.form){const s=this.$node.querySelector(`[name="${e}"]`);if(s){const n=t.form[e];dmx.validate.setMessage(s,n)}}else dmx.debug&&console.warn("400 error, no form errors in response.",t);else 401===this._xhr.status?this.dispatchEvent("unauthorized"):403===this._xhr.status?this.dispatchEvent("forbidden"):this.dispatchEvent("error");this.dispatchEvent("done")},_loadHandler(e){this._done()},_abortHandler(e){this._resetData(),this.dispatchEvent("abort"),this.dispatchEvent("done")},_errorHandler(e){this._done(Error("Failed to execute"))},_timeoutHandler(e){this._done(Error("Execution timeout"))},_progressHandler(e,t){t.loaded=t.loaded||t.position;const s=t.lengthComputable?Math.ceil(100*t.loaded/t.total):0;this.set({state:{executing:!0,uploading:"upload"===e&&s<100,processing:"upload"===e&&100===s,downloading:"download"===e},[e+"Progress"]:{position:t.loaded,total:t.total,percent:s}}),this.dispatchEvent(e,{lengthComputable:t.lengthComputable,loaded:t.loaded,total:t.total})}}),dmx.Component("if",{attributes:{condition:{type:Boolean,default:!1}},events:{show:Event,hide:Event},init(e){for(this._shown=!1,this._template=document.createDocumentFragment();e.firstChild;)this._template.appendChild(e.firstChild)},render(e){this.props.condition&&this._show()},performUpdate(e){this.props.condition?this._show():this._hide()},destroy(){this._template=null},_show(){if(this._shown)return;const e=this._template.cloneNode(!0);this.$node.appendChild(e),this.$parse(),this.dispatchEvent("show"),this._shown=!0},_hide(){this._shown&&(this.effects&&(this.effects.forEach((e=>e())),this.effects=null),Array.from(this.$node.childNodes).forEach((e=>{const t=new Event("remove",{cancelable:!0});e.dispatchEvent(t)&&e.remove()})),this.$destroyChildren(),this.dispatchEvent("hide"),this._shown=!1)}}),dmx.Component("datetime",{initialData:{datetime:null},attributes:{interval:{type:String,default:"seconds",enum:["seconds","minutes","hours","days"]},utc:{type:Boolean,default:!1}},init(){this._tick=this._tick.bind(this),this._tick()},destroy(){this._timeout&&clearTimeout(this._timeout),this._animationFrame&&cancelAnimationFrame(this._animationFrame)},_tick(){switch(this.set("datetime",this._datetime()),this.props.interval){case"seconds":return this._timeout=setTimeout(this._tick,1e3);case"minutes":return this._timeout=setTimeout(this._tick,6e4);case"hours":return this._timeout=setTimeout(this._tick,36e5);case"days":return this._timeout=setTimeout(this._tick,864e5);default:return this._animationFrame=requestAnimationFrame(this._tick)}},_datetime(){const e=new Date,t=(e,t)=>("0000"+e).slice(-t),s=this.props.utc,n=s?e.getUTCFullYear():e.getFullYear(),r=(s?e.getUTCMonth():e.getMonth())+1,i=s?e.getUTCDate():e.getDate(),a=s?e.getUTCHours():e.getHours(),o=s?e.getUTCMinutes():e.getMinutes(),d=s?e.getUTCSeconds():e.getSeconds(),h=t(n,4)+"-"+t(r,2)+"-"+t(i,2),l=s?"Z":"";switch(this.props.interval){case"days":return h+"T00:00:00"+l;case"hours":return h+"T"+t(a,2)+":00:00"+l;case"minutes":return h+"T"+t(a,2)+":"+t(o,2)+":00"+l}return h+"T"+t(a,2)+":"+t(o,2)+":"+t(d,2)+l}}),dmx.Component("api-action",{extends:"fetch"}),dmx.Component("api-form",{extends:"serverconnect-form"}),dmx.Component("array",{initialData:{items:[],count:0},attributes:{items:{type:Array,default:[]}},events:{updated:Event},methods:{add(e){this._splice(this._count(),0,e)},addUniq(e){-1==this._indexOf(e)&&this._splice(this._count(),0,e)},insert(e,t){this._splice(e,0,t)},insertBefore(e,t){const s=this._indexOf(e);-1!=s&&this._splice(s,0,t)},insertAfter(e,t){const s=this._indexOf(e);-1!=s&&this._splice(s+1,0,t)},replace(e,t){const s=this._indexOf(e);-1!=s&&this._splice(s,1,t)},replaceAt(e,t){this._splice(e,1,t)},remove(e){const t=this._indexOf(e);-1!=t&&this._splice(t,1)},removeAt(e){this._splice(e,1)},reverse(){this._reverse()},sort(){this._sort()},empty(){this._updateData([])}},render:!1,init(){const e=dmx.array(this.props.items);this.set({items:e,count:e.length})},performUpdate(e){e.has("items")&&this._updateData(dmx.array(this.props.items))},_count(){return this.data.items.length},_indexOf(e){return this.data.items.indexOf(e)},_splice(e,t,s){const n=dmx.clone(this.data.items);void 0!==s?n.splice(e,t,s):n.splice(e,t),this._updateData(n)},_reverse(){const e=dmx.clone(this.data.items);e.reverse(),this._updateData(e)},_sort(){const e=dmx.clone(this.data.items);e.sort(),this._updateData(e)},_updateData(e){dmx.equal(this.data.items,e)||(this.set({items:e,count:e.length}),dmx.nextTick((()=>this.dispatchEvent("updated"))))}}),dmx.Component("group",{}),dmx.Component("flow",{initialData:{data:null,running:!1,lastError:null},attributes:{src:{type:String,default:null},preload:{type:Boolean,default:!1},autorun:{type:Boolean,default:!1},params:{type:Object,default:{}}},methods:{run(e,t){return this._run(e,t)},runSub(e){return this._runSub(e)}},events:{start:Event,done:Event,error:Event},render:!1,init(e){if(this.props.src)(this.props.preload||this.props.autorun)&&this._load(this.props.src,this.props.autorun).catch(console.error);else try{this._flow=this._parse(e.textContent),this.props.autorun&&this._run()}catch(e){console.error(e)}},destroy(){this._destroyed=!0},$parseAttributes(e){dmx.BaseComponent.prototype.$parseAttributes.call(this,e),dmx.dom.getAttributes(e).forEach((({name:e,argument:t,value:s})=>{t&&s&&"param"==e&&this.$watch(s,(e=>{this.props.params=Object.assign({},this.props.params,{[t]:e})}))}))},_load(e,t){return fetch(e).then((e=>{if(!e.ok||e.status>=400)throw Error(`Could not load flow ${this.name}, status ${e.status} ${e.statusText}`);return e.text()})).then((e=>{this._flow=this._parse(e),t&&this._run()}))},_parse:e=>(window.Hjson?Hjson:JSON).parse(e),_runSub(e){if(!this._flow){if(this.props.src)return this._load(this.props.src).then((()=>{this._runFlow(e)}));throw Error("No flow")}return this._runFlow(e)},_run(e,t){return this._flow?this.data.running?void console.info(`Can't run flow ${this.name} when a previous run didn't finish.`):(this.set({running:!0,lastError:null}),this.dispatchEvent("start"),dmx.debug&&(console.debug(`Running flow ${this.name} with params`,e),console.time(`Flow ${this.name}`)),this._runFlow(e).then((e=>(dmx.debug&&(console.debug(`Flow ${this.name} finished`,e),console.timeEnd(`Flow ${this.name}`)),this.set({running:!1,data:e}),this.dispatchEvent("done"),e))).catch((e=>{if(this.set({running:!1,lastError:e&&e.message}),this.dispatchEvent("error"),t)throw e}))):this.props.src?this._load(this.props.src).then((()=>{this._run(e,t)})).catch(console.error):void console.warn(`Flow ${this.name} is missing.`)},_runFlow(e){return dmx.Flow.run(this._flow,dmx.DataScope({$param:Object.assign({},this.props.params,e)},this))}}),dmx.Component("toggle",{initialData:{checked:!1},attributes:{checked:{type:Boolean,default:!1}},methods:{check(){this.props.checked=!0},uncheck(){this.props.checked=!1},toggle(){this.props.checked=!this.data.checked}},events:{updated:Event},render:!1,init(e){this.set("checked",this.props.checked)},performUpdate(e){e.has("checked")&&(this.set("checked",this.props.checked),dmx.nextTick((()=>this.dispatchEvent("updated"))))}}),dmx.Component("form-data",{attributes:{name:{type:String,default:"data"},data:{type:[Array,Object],default:null}},init(e){this._formdataHandler=this._formdataHandler.bind(this),this._form=e.closest("form"),this._form&&this._form.addEventListener("formdata",this._formdataHandler)},destroy(){this._form&&this._form.removeEventListener("formdata",this._formdataHandler)},_formdataHandler(e){const t=e.formData,s=this.props.data;this._appendData(t,s,this.props.name)},_appendData(e,t,s=""){if(Array.isArray(t))t.forEach(((t,n)=>{this._appendData(e,t,`${s}[${n}]`)}));else if("object"==typeof t)for(const n in t)this._appendData(e,t[n],`${s}[${n}]`);else e.append(s,t)}}),dmx.Attribute("bind","mounted",(function(e,t){const s=t.argument,n=dmx.reToggleAttribute.test(s);this.$watch(t.value,(t=>{if(n)e.toggleAttribute(s,!!t);else{if("style"===s&&"object"==typeof t)return Object.assign(e.style,t);if(null==t)return e.removeAttribute(s);e.setAttribute(s,t),"src"===s&&("VIDEO"===e.nodeName||"AUDIO"===e.nodeName?e.load():"SOURCE"===e.nodeName&&e.parentNode&&e.parentNode.load())}}))})),dmx.Attribute("on","mounted",(function(e,t){return e.dmxOn||(e.dmxOn={component:this}),e.dmxOn[t.argument]=!0,dmx.eventListener(e,t.argument,(function(s){s.originalEvent&&(s=s.originalEvent);return dmx.parse(t.value,dmx.DataScope({$event:s.$data,$originalEvent:s},e.dmxOn.component))}),t.modifiers)})),dmx.Attribute("repeat","before",(function(e,t){const s=document.createComment("Repeat Attribute"),n=document.createDocumentFragment(),r=dmx.Component("repeat-item");e.parentNode.replaceChild(s,e),e.removeAttribute(t.fullName),n.append(e);let i=[];this.$watch(t.value,(e=>{const a=dmx.repeatItems(e);if(a.length>1e4&&(console.warn("More than 10000 repeat items, we limit the result!"),a.length=1e4),t.modifiers.fast){if(i.length>a.length&&i.splice(a.length).forEach((e=>e.$destroy())),i.length&&i.forEach(((e,t)=>e.set(a[t]))),a.length>i.length){const e=document.createDocumentFragment(),o=new Set;a.slice(i.length).forEach((t=>{const s=new r(n.cloneNode(!0),this,t);e.appendChild(s.$nodes[0]),o.add(s),i.push(s),this.$addChild(s)})),s.parentNode.insertBefore(e,s);for(const e of o)e.$parse(e.$nodes[0]);t.argument&&this.set(t.argument,a)}}else{const e=document.createDocumentFragment(),o=new Set;i.splice(0).forEach((e=>e.$destroy()));for(const t of a){const s=new r(n.cloneNode(!0),this,t);e.append(s.$nodes[0]),o.add(s),i.push(s),this.$addChild(s)}s.parentNode.insertBefore(e,s);for(const e of o)e.$parse(e.$nodes[0]);t.argument&&this.set(t.argument,a)}}))})),dmx.Attribute("class","mounted",(function(e,t){e.dmxClass||(e.dmxClass={component:this}),this.$watch(t.value,(s=>{e.dmxClass[t.argument]=s,e.classList[s?"add":"remove"](t.argument)}))})),dmx.Attribute("hide","mounted",(function(e,t){e.dmxHide||(e.dmxHide={component:this,initial:{display:e.style.getPropertyValue("display"),priority:e.style.getPropertyPriority("display")},hide:null},this.$watch(t.value,(t=>{e.dmxHide.hide=t;const{initial:s}=e.dmxHide,n=t?"none":s.display,r=t?"important":s.priority;e.style.setProperty("display",n,r)})))})),dmx.Attribute("show","mounted",(function(e,t){e.dmxShow||(e.dmxShow={component:this,initial:{display:e.style.getPropertyValue("display"),priority:e.style.getPropertyPriority("display")},show:null},this.$watch(t.value,(t=>{e.dmxShow.show=t;const{initial:s}=e.dmxShow,n=t?s.display:"none",r=t?s.priority:"important";e.style.setProperty("display",n,r)})))})),dmx.Attribute("html","mounted",(function(e,t){e.dmxHtml||(e.dmxHtml={component:this},this.$watch(t.value,(t=>{e.innerHTML=null!=t?String(t):""})))})),dmx.Attribute("text","mounted",(function(e,t){e.dmxText||(e.dmxText={component:this},this.$watch(t.value,(t=>{e.innerText=null!=t?String(t):""})))})),dmx.Attribute("style","mounted",(function(e,t){e.dmxStyle||(e.dmxStyle={component:this});const s=t.modifiers.important?"important":"";this.$watch(t.value,(n=>{e.dmxStyle[t.argument]=n,null!=n&&e.style.setProperty(t.argument,n,s)}))})),dmx.Formatters("global",{json:function(e){return JSON.stringify(e)},log:function(e){return console.log(e),e},run:function(e,t){var s=dmx.DataScope({$param:t},this);dmx.Flow.run(e,s)}}),dmx.Actions({subflow(e){const t=this.parse(e.flow),s=this.parse(e.param);return this.parse(t+".runSub("+JSON.stringify(s)+")")},comment(e){dmx.debug&&console.debug(e.message)},wait(e){const t=this.parse(e.delay);if("number"!=typeof t)throw new Error("wait: Invalid delay");return new Promise((e=>{setTimeout(e,t)}))},now:e=>(new Date).toISOString(),random(e){let t=this.parse(e.lower),s=this.parse(e.upper),n=!!this.parse(e.floating);"number"==typeof t&&isFinite(t)||(t=0),"number"==typeof s&&isFinite(s)||(s=1);let r=t+Math.random()*(s-t);return n||Math.floor(t)!=t||Math.floor(s)!=s||(r=Math.round(r)),r},confirm(e){const t=this.parse(e.message);if("string"!=typeof t)throw new Error("confirm: Invalid message");const s=confirm(t);if(s){if(e.then)return this._exec(e.then).then((()=>s))}else if(e.else)return this._exec(e.else).then((()=>s));return s},prompt(e){const t=this.parse(e.message);if("string"!=typeof t)throw new Error("prompt: Invalid message");return prompt(t)},alert(e){const t=this.parse(e.message);if("string"!=typeof t)throw new Error("alert: Invalid message");return alert(t)},repeat(e){let t=dmx.clone(this.parse(e.repeat));if(!t)return;if("boolean"==typeof t)t=t?[0]:[];else if("string"==typeof t)t=t.split(/\s*,\s*/);else if("number"==typeof t){for(var s=[],n=0;n(this.scope=new dmx.DataScope(Object.assign({$value:t,$index:s,$name:s,$key:s,$number:s+1,$oddeven:s%2},t),r),this.output={},Array.isArray(e.outputFields)&&t instanceof Object&&e.outputFields.forEach((e=>{this.output[e]=t[e]})),this._exec(e.exec).then((()=>{var e=this.output;return this.scope=r,this.output=i,e})))))},condition(e){const t=!!this.parse(e.if);if(t){if(e.then)return this._exec(e.then).then((()=>t))}else if(e.else)return this._exec(e.else).then((()=>t));return t},conditions(e){if(Array.isArray(e.conditions))for(let t=0;t{var e=this.output;return self.output=t,e}))}return this._exec(e.exec)},while(e){const t=()=>new Promise((s=>{if(!this.parse(e.condition))return s();this._exec(e.exec).then(t).then(s)}));return t()},switch(e){const t=this.parse(e.expression);for(let s=0;sthis._exec(e.catch)))},run(e){if(!e.action)throw new Error("run: missing action");return this.parse(e.action)},runJS(e){if(!e.function)throw new Error("runJS: missing function");const t=this.parse(e.function),s=this.parse(e.args);return window[t].apply(null,s)},assign(e){return this.parse(e.value)},setGlobal(e){const t=this.parse(e.key),s=this.parse(e.value);if("string"!=typeof t)throw new Error("setGlobal: key must be a string");return dmx.global.set(t,s),s},setSession(e){const t=this.parse(e.key),s=this.parse(e.value);if("string"!=typeof t)throw new Error("setSession: key must be a string");return sessionStorage.setItem(t,JSON.stringify(s)),s},getSession(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("getSession: key must be a string");return JSON.parse(sessionStorage.getItem(t))},removeSession(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("removeSession: key must be a string");return sessionStorage.removeItem(t),!0},setStorage(e){const t=this.parse(e.key),s=this.parse(e.value);if("string"!=typeof t)throw new Error("setStorage: key must be a string");return localStorage.setItem(t,JSON.stringify(s)),s},getStorage(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("getStorage: key must be a string");const s=localStorage.getItem(t);return null==s?null:JSON.parse(s)},removeStorage(e){const t=this.parse(e.key);if("string"!=typeof t)throw new Error("removeStorage: key must be a string");return localStorage.removeItem(t),!0},fetch(e){let t=this.parse(e.url),s=this.parse(e.method),n=this.parse(e.timeout),r=this.parse(e.dataType),i=this.parse(e.data),a=this.parse(e.params),o=this.parse(e.headers),d=this.parse(e.credentials),h=null;if("string"!=typeof t)throw new Error("fetch: invalid url "+t);if(["GET","POST","PUT","DELETE"].includes(s)||(s="GET"),["auto","json","text"].includes(r)||(r="auto"),"number"!=typeof n&&(n=0),o||(o={}),"object"==typeof a)for(var l in a)a.hasOwnProperty(l)&&null!=a[l]&&(t+=(-1!=t.indexOf("?")?"&":"?")+decodeURIComponent(l)+"="+decodeURIComponent(a[l]));if("GET"!=s)if("text"==r)o["Content-Type"]||(o["Content-Type"]="application/text"),h=i.toString();else if("json"==r)o["Content-Type"]||(o["Content-Type"]="application/json"),h=JSON.stringify(i);else if("POST"==s){if(h=new FormData,"object"==typeof i&&!Array.isArray(i))for(var c in i)if(i.hasOwnProperty(c)){var u=i[c];if(Array.isArray(u))for(var p in/\[\]$/.test(c)||(c+="[]"),u)u.hasOwnProperty(p)&&h.append(c,u[p]);else h.set(c,u)}}else i&&(o["Content-Type"]||(o["Content-Type"]="application/text"),h=i.toString());return new Promise(((e,r)=>{var i=new XMLHttpRequest;for(var a in i.onerror=r,i.onabort=r,i.ontimeout=r,i.onload=function(){var t=i.responseText,s=i.getAllResponseHeaders().trim().split(/[\r\n]+/).reduce((function(e,t){var s=t.split(": "),n=s.shift(),r=s.join(": ");return e[n.toLowerCase()]=r,e}),{});/^application\/json/.test(s["content-type"])&&(t=JSON.parse(t)),e({status:i.status,headers:s,data:t})},i.open(s,t),i.timeout=1e3*n,o)o.hasOwnProperty(a)&&i.setRequestHeader(a,o[a]);d&&(i.withCredentials=!0),i.send(h)}))}}),dmx.__actions.setValue=dmx.__actions.assign,dmx.__actions.api=dmx.__actions.fetch,dmx.__actions["api.send"]=dmx.__actions.fetch,dmx.__actions.serverConnect=dmx.__actions.fetch,dmx.Actions({"collections.addColumns":function(e){var t=this.parse(e.collection),s=e.add,n=!!this.parse(e.overwrite);if(!t.length)return[];for(var r=[],i=0,a=t.length;i {},\r\n isset: (v) => v !== undefined,\r\n array: (a) => a != null ? Array.from(a) : [],\r\n\r\n // Global Regexp\r\n reIgnoreElement: /^(script|style)$/i,\r\n rePrefixed: /^dmx-/i,\r\n reExpression: /\\{\\{(.+?)\\}\\}/,\r\n reExpressionReplace: /\\{\\{(.+?)\\}\\}/g,\r\n reToggleAttribute: /^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i,\r\n reDashAlpha: /-([a-z])/g,\r\n reUppercase: /[A-Z]/g,\r\n \r\n // Internal collections for registering components etc.\r\n __components: Object.create(null),\r\n __attributes: {\r\n before: Object.create(null),\r\n mounted: Object.create(null),\r\n },\r\n __formatters: {\r\n boolean: Object.create(null),\r\n global: Object.create(null),\r\n string: Object.create(null),\r\n number: Object.create(null),\r\n object: Object.create(null),\r\n array: Object.create(null),\r\n any: Object.create(null),\r\n },\r\n __adapters: Object.create(null),\r\n __actions: Object.create(null),\r\n __startup: new Set(),\r\n};\r\n","// Polyfills for older browsers\r\n// IE is not supported\r\n\r\n// https://caniuse.com/element-closest\r\nif (window.Element && !('closest' in Element.prototype)) {\r\n Element.prototype.closest = function (s) {\r\n let matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i,\r\n el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) {};\r\n } while ((i < 0) && (el = el.parentElement));\r\n return el;\r\n };\r\n}\r\n\r\n// https://caniuse.com/mdn-api_nodelist_foreach\r\nif (window.NodeList && !('forEach' in NodeList.prototype)) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n}\r\n\r\n// https://caniuse.com/mdn-api_queuemicrotask\r\nif (typeof window.queueMicrotask !== 'function') {\r\n window.queueMicrotask = function (callback) {\r\n Promise.resolve().then(callback).catch(e => setTimeout(() => { throw e }));\r\n }\r\n}\r\n\r\n// https://caniuse.com/mdn-api_node_isconnected\r\nif (window.Node && !('isConnected' in Node.prototype)) {\r\n Object.defineProperty(Node.prototype, 'isConnected', {\r\n get: function () { return document.contains(this) }\r\n });\r\n}\r\n\r\n// https://caniuse.com/mdn-api_element_toggleattribute\r\nif (window.Element && !('toggleAttribute' in Element.prototype)) {\r\n Element.prototype.toggleAttribute = function (name, force) {\r\n if (this.hasAttribute(name)) {\r\n if (force !== true) this.removeAttribute(name);\r\n } else {\r\n if (force !== false) this.setAttribute(name, '');\r\n }\r\n }\r\n}","(function() {\r\n\r\n // unsupported types: ImageBitmap\r\n\r\n var LARGE_ARRAY_SIZE = 200;\r\n\r\n var toString = Object.prototype.toString;\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reFlags = /\\w*$/;\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var assocIndexOf = function(array, key) {\r\n var length = array.length;\r\n while (length--) {\r\n if (eq(array[length][0], key)) {\r\n return length;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n var isKeyable = function(value) {\r\n var type = typeof value;\r\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\r\n ? (value !== '__proto__')\r\n : (value === null);\r\n };\r\n\r\n var getMapData = function(data, key) {\r\n return isKeyable(key)\r\n ? data[typeof key == 'string' ? 'string' : 'hash']\r\n : data.map;\r\n };\r\n\r\n var Hash = function(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n Hash.prototype = {\r\n clear: function() {\r\n this.__data__ = Object.create(null);\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var result = this.has(key) && delete this.__data__[key];\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n var result = this.__data__[key];\r\n return result === HASH_UNDEFINED ? undefined : result;\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__[key] !== undefined;\r\n },\r\n\r\n set: function(key, value) {\r\n this.size += this.has(key) ? 0 : 1;\r\n this.__data__[key] = value === undefined ? HASH_UNDEFINED : value;\r\n return this;\r\n }\r\n }\r\n\r\n var ListCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n ListCache.prototype = {\r\n clear: function() {\r\n this.__data__ = [];\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n return false;\r\n }\r\n var lastIndex = data.length - 1;\r\n if (index == lastIndex) {\r\n data.pop();\r\n } else {\r\n data.splice(index, 1);\r\n }\r\n --this.size;\r\n return true;\r\n },\r\n\r\n get: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n return index < 0 ? undefined : data[index][1];\r\n },\r\n\r\n has: function(key) {\r\n return assocIndexOf(this.__data__, key) > -1;\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n ++this.size;\r\n data.push([key, value]);\r\n } else {\r\n data[index][1] = value;\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n var MapCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n MapCache.prototype = {\r\n clear: function() {\r\n this.size = 0;\r\n this.__data__ = {\r\n 'hash': new Hash(),\r\n 'map': new Map(),\r\n 'string': new Hash()\r\n };\r\n },\r\n\r\n delete: function(key) {\r\n var result = getMapData(this.__data__, key)['delete'](key);\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return getMapData(this.__data__, key).get(key);\r\n },\r\n\r\n has: function(key) {\r\n return getMapData(this.__data__, key).has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = getMapData(this.__data__, key);\r\n var size = data.size;\r\n data.set(key, value);\r\n this.size += data.size == size ? 0 : 1;\r\n return this;\r\n }\r\n };\r\n\r\n var Stack = function(entries) {\r\n var data = this.__data__ = new ListCache(entries);\r\n this.size = data.size;\r\n };\r\n\r\n Stack.prototype = {\r\n clear: function() {\r\n this.__data__ = new ListCache();\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var result = data['delete'](key);\r\n this.size = data.size;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return this.__data__.get(key);\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__.has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n if (data instanceof ListCache) {\r\n var pairs = data.__data__;\r\n if (pairs.length < LARGE_ARRAY_SIZE - 1) {\r\n pairs.push([key, value]);\r\n this.size = ++data.size;\r\n return this;\r\n }\r\n data = this.__data__ = new MapCache(pairs);\r\n }\r\n data.set(key, value);\r\n this.size = data.size;\r\n return this;\r\n }\r\n };\r\n\r\n var arrayEach = function(array, iteratee) {\r\n var index = -1;\r\n var length = array.length;\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isArray = function(value) {\r\n return Array.isArray(value);\r\n };\r\n\r\n var isObject = function(value) {\r\n return value != null && typeof value == 'object'\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var assignValue = function(object, key, value) {\r\n // Prototype polution protection\r\n if (key == '__proto__') return;\r\n\r\n var objValue = object[key];\r\n\r\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value))) {\r\n //if (value !== 0 || (1 / value) === (1 / objValue)) {\r\n object[key] = value;\r\n //}\r\n } else if (value === undefined && !(key in object)) {\r\n object[key] = value;\r\n }\r\n };\r\n\r\n var cloneArrayBuffer = function(arrayBuffer) {\r\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n };\r\n\r\n var cloneDataView = function(dataView) {\r\n var buffer = cloneArrayBuffer(dataView.buffer);\r\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\r\n };\r\n\r\n var cloneTypedArray = function(typedArray) {\r\n var buffer = cloneArrayBuffer(typedArray.buffer);\r\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\r\n };\r\n\r\n var cloneRegExp = function(regexp) {\r\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\r\n result.lastIndex = regexp.lastIndex;\r\n return result;\r\n };\r\n\r\n var cloneImageData = function(imageData) {\r\n var data = cloneTypedArray(imageData.data);\r\n return new imageData.constructor(data, imageData.width, imageData.height);\r\n }\r\n\r\n var initArray = function(array) {\r\n return new array.constructor(array.length);\r\n };\r\n\r\n var initType = function(object, type) {\r\n var Ctor = object.constructor;\r\n\r\n switch (type) {\r\n case 'ArrayBuffer':\r\n return cloneArrayBuffer();\r\n \r\n case 'Boolean':\r\n case 'Date':\r\n return new Ctor(+object);\r\n\r\n case 'DataView':\r\n return cloneDataView(object);\r\n\r\n case 'Float32Array':\r\n case 'Float64Array':\r\n case 'Int8Array':\r\n case 'Int16Array':\r\n case 'Int32Array':\r\n case 'Uint8Array':\r\n case 'Uint8ClampedArray':\r\n case 'Uint16Array':\r\n case 'Uint32Array':\r\n return cloneTypedArray(object);\r\n\r\n case 'Map':\r\n case 'Set':\r\n return new Ctor();\r\n\r\n case 'Number':\r\n case 'String':\r\n return new Ctor(object);\r\n\r\n case 'RegExp':\r\n return cloneRegExp(object);\r\n\r\n case 'ImageData':\r\n return cloneImageData(object);\r\n }\r\n };\r\n\r\n var clone = function(value, key, object, stack) {\r\n var result;\r\n\r\n if (!isObject(value)) {\r\n return value;\r\n }\r\n \r\n var type = getType(value);\r\n\r\n if (isArray(value)) {\r\n result = initArray(value);\r\n } else {\r\n if (type == 'Object') {\r\n result = {};\r\n } else {\r\n result = initType(value, type);\r\n }\r\n } \r\n \r\n stack = stack || new Stack();\r\n\r\n var stacked = stack.get(value);\r\n if (stacked) {\r\n return stacked;\r\n }\r\n stack.set(value, result);\r\n\r\n if (type == 'Map') {\r\n value.forEach(function(subValue, key) {\r\n result.set(key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (type == 'Set') {\r\n value.forEach(function(subValue) {\r\n result.add(clone(subValue, subValue, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (isTypedArray(value)) {\r\n return result;\r\n }\r\n\r\n var props = isArray(value) ? undefined : Object.keys(Object(value));\r\n arrayEach(props || value, function(subValue, key) {\r\n if (props) {\r\n key = subValue;\r\n subValue = value[key];\r\n }\r\n assignValue(result, key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n };\r\n\r\n dmx.clone = clone;\r\n\r\n})();","(function() {\r\n\r\n // TODO: ImageData compare\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isObject = function(value) {\r\n return typeof value === 'object' && value !== null;\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var mapToArray = function(map) {\r\n var index = -1;\r\n var result = new Array(map.size);\r\n map.forEach(function(value, key) {\r\n result[++index] = [key, value];\r\n });\r\n return result;\r\n };\r\n\r\n var setToArray = function(set) {\r\n var index = -1;\r\n var result = new Array(set.size);\r\n set.forEach(function(value) {\r\n result[++index] = value;\r\n });\r\n return result;\r\n }\r\n\r\n var equalByType = function(object, other, type) {\r\n switch (type) {\r\n case 'DataView':\r\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\r\n return false;\r\n }\r\n object = object.buffer;\r\n other = other.buffer;\r\n\r\n case 'ArrayBuffer':\r\n if (object.byteLength != other.byteLength || !equal(new Uint8Array(object), new Uint8Array(other))) {\r\n return false;\r\n }\r\n return true;\r\n\r\n case 'Boolean':\r\n case 'Date':\r\n case 'Number':\r\n return eq(+object, +other);\r\n\r\n case 'RegExp':\r\n case 'String':\r\n return object == String(other);\r\n\r\n case 'Map':\r\n case 'Set':\r\n if (object.size != other.size) return false;\r\n return equalArrays(Array.from(object), Array.from(other));\r\n }\r\n };\r\n\r\n var equalArrays = function(array, other) {\r\n var arrLength = array.length;\r\n var othLength = other.length;\r\n\r\n if (arrLength != othLength) {\r\n return false;\r\n }\r\n\r\n var index = -1;\r\n\r\n while (++index < arrLength) {\r\n var arrValue = array[index];\r\n var othValue = other[index];\r\n\r\n if (!(arrValue === othValue || equal(arrValue, othValue))) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n var equalObjects = function(object, other) {\r\n var objProps = Object.keys(object);\r\n var objLength = objProps.length;\r\n var othProps = Object.keys(other);\r\n var othLength = othProps.length;\r\n\r\n if (objLength != othLength) {\r\n return false;\r\n }\r\n\r\n var key, index = objLength;\r\n \r\n while (index--) {\r\n key = objProps[index];\r\n if (!hasOwnProperty.call(other, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n var result = true;\r\n\r\n while (++index < objLength) {\r\n key = objProps[index];\r\n var objValue = object[key];\r\n var othValue = other[key];\r\n\r\n if (!(objValue === othValue || equal(objValue, othValue))) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n\r\n if (result) {\r\n var objCtor = object.constructor;\r\n var othCtor = other.constructor;\r\n\r\n if (objCtor != othCtor &&\r\n ('constructor' in object && 'constructor' in other) &&\r\n !(typeof objCtor === 'function' && objCtor instanceof objCtor &&\r\n typeof othCtor === 'function' && othCtor instanceof othCtor)) {\r\n result = false;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var equalDeep = function(object, other) {\r\n var objIsArr = Array.isArray(object);\r\n var othIsArr = Array.isArray(other);\r\n var objType = objIsArr ? 'Array' : getType(object);\r\n var othType = othIsArr ? 'Array' : getType(other);\r\n var objIsObj = objType == 'Object';\r\n var othIsObj = othType == 'Object';\r\n var isSameType = objType == othType;\r\n\r\n if (isSameType && !objIsObj) {\r\n return (objIsArr || isTypedArray(object))\r\n ? equalArrays(object, other)\r\n : equalByType(object, other, objType);\r\n }\r\n\r\n if (!isSameType) {\r\n return false;\r\n }\r\n\r\n return equalObjects(object, other);\r\n };\r\n\r\n var equal = function(value, other) {\r\n if (value === other) {\r\n return true;\r\n }\r\n if (value == null || other == null || (!isObject(value) && !isObject(other))) {\r\n return value !== value && other !== other;\r\n }\r\n return equalDeep(value, other);\r\n };\r\n\r\n dmx.equal = equal;\r\n\r\n})();","// Create Class\r\ndmx.createClass = (proto, parent) => {\r\n const Cls = function () {\r\n if (proto.constructor) {\r\n proto.constructor.apply(this, arguments);\r\n }\r\n };\r\n\r\n if (parent && parent.prototype) {\r\n Cls.prototype = Object.create(parent.prototype);\r\n }\r\n\r\n Object.assign(Cls.prototype, proto);\r\n\r\n Cls.prototype.constructor = Cls;\r\n\r\n return Cls;\r\n};\r\n\r\ndmx.ready = (fn) => {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', () => { fn() }, { once: true });\r\n } else {\r\n fn();\r\n }\r\n};\r\n\r\n// Config\r\ndmx.Config = (config) => {\r\n Object.assign(dmx.config, config)\r\n};\r\n\r\n// Create/get component\r\ndmx.Component = (name, proto) => {\r\n if (proto) {\r\n const parentComponent = proto.extends ? dmx.Component(proto.extends) : dmx.BaseComponent;\r\n \r\n if (typeof proto.initialData != 'function') {\r\n proto.initialData = Object.assign({}, parentComponent.prototype.initialData, proto.initialData);\r\n }\r\n proto.attributes = Object.assign({}, parentComponent.prototype.attributes, proto.attributes);\r\n proto.methods = Object.assign({}, parentComponent.prototype.methods, proto.methods);\r\n proto.events = Object.assign({}, parentComponent.prototype.events, proto.events);\r\n\r\n if (!proto.hasOwnProperty('constructor')) {\r\n proto.constructor = function(node, parent) {\r\n parentComponent.call(this, node, parent);\r\n }\r\n }\r\n\r\n proto.type = name;\r\n\r\n const Component = dmx.createClass(proto, parentComponent);\r\n Component.extends = proto.extends;\r\n\r\n dmx.__components[name] = Component;\r\n }\r\n\r\n return dmx.__components[name];\r\n};\r\n\r\n// Create attribute\r\ndmx.Attribute = (name, hook, fn) => {\r\n dmx.__attributes[hook][name] = fn;\r\n};\r\n\r\n// Create/get formatter(s)\r\ndmx.Formatter = (type, name, fn) => {\r\n dmx.__formatters[type][name] = fn;\r\n}\r\ndmx.Formatters = (type, formatters) => {\r\n for (const name in formatters) {\r\n dmx.Formatter(type, name, formatters[name]);\r\n }\r\n};\r\n\r\n// Create/get adapter\r\ndmx.Adapter = (type, name, fn) => {\r\n if (fn) dmx.__adapters[type][name] = fn;\r\n return dmx.__adapters[type][name];\r\n};\r\n\r\n// Create action(s)\r\ndmx.Action = (name, action) => {\r\n dmx.__actions[name] = action;\r\n};\r\ndmx.Actions = (actions) => {\r\n for (const name in actions) {\r\n dmx.Action(name, actions[name]);\r\n }\r\n};\r\n\r\n// Startup\r\ndmx.Startup = (promise) => {\r\n dmx.__startup.add(promise)\r\n};","dmx.debounce = (fn, delay) => {\r\n let handle;\r\n\r\n return function () {\r\n const cb = () => {\r\n fn.apply(this, arguments);\r\n };\r\n\r\n if (delay) {\r\n clearTimeout(handle);\r\n handle = setTimeout(cb, delay);\r\n } else {\r\n cancelAnimationFrame(handle);\r\n handle = requestAnimationFrame(cb);\r\n }\r\n };\r\n};\r\n\r\ndmx.throttle = (fn, delay) => {\r\n let throttle = false, args;\r\n\r\n return function () {\r\n args = Array.from(arguments);\r\n\r\n if (!throttle) {\r\n const cb = () => {\r\n throttle = false;\r\n if (args) fn.apply(this, args);\r\n };\r\n\r\n fn.apply(this, args);\r\n\r\n args = undefined;\r\n throttle = true;\r\n\r\n if (delay) {\r\n setTimeout(db, delay);\r\n } else {\r\n requestAnimationFrame(cb);\r\n }\r\n }\r\n };\r\n};\r\n\r\ndmx.keyCodes = {\r\n 'bs': 8,\r\n 'tab': 9,\r\n 'enter': 13,\r\n 'esc': 27,\r\n 'space': 32,\r\n 'left': 37,\r\n 'up': 38,\r\n 'right': 39,\r\n 'down': 40,\r\n 'delete': 46,\r\n\r\n 'backspace': 8,\r\n 'pause': 19,\r\n 'capslock': 20,\r\n 'escape': 27,\r\n 'pageup': 33,\r\n 'pagedown': 34,\r\n 'end': 35,\r\n 'home': 36,\r\n 'arrowleft': 37,\r\n 'arrowup': 38,\r\n 'arrowright': 39,\r\n 'arrowdown': 40,\r\n 'insert': 45,\r\n 'numlock': 144,\r\n 'scrolllock': 145,\r\n 'semicolon': 186,\r\n 'equal': 187,\r\n 'comma': 188,\r\n 'minus': 189,\r\n 'period': 190,\r\n 'slash': 191,\r\n 'backquote': 192,\r\n 'bracketleft': 219,\r\n 'backslash': 220,\r\n 'bracketright': 221,\r\n 'quote': 222,\r\n\r\n 'numpad0': 96,\r\n 'numpad1': 97,\r\n 'numpad2': 98,\r\n 'numpad3': 99,\r\n 'numpad4': 100,\r\n 'numpad5': 101,\r\n 'numpad6': 102,\r\n 'numpad7': 103,\r\n 'numpad8': 104,\r\n 'numpad9': 105,\r\n 'numpadmultiply': 106,\r\n 'numpadadd': 107,\r\n 'numpadsubstract': 109,\r\n 'numpaddivide': 111,\r\n\r\n 'f1': 112,\r\n 'f2': 113,\r\n 'f3': 114,\r\n 'f4': 115,\r\n 'f5': 116,\r\n 'f6': 117,\r\n 'f7': 118,\r\n 'f8': 119,\r\n 'f9': 120,\r\n 'f10': 121,\r\n 'f11': 122,\r\n 'f12': 123,\r\n\r\n 'digit0': 48,\r\n 'digit1': 49,\r\n 'digit2': 50,\r\n 'digit3': 51,\r\n 'digit4': 52,\r\n 'digit5': 53,\r\n 'digit6': 54,\r\n 'digit7': 55,\r\n 'digit8': 56,\r\n 'digit9': 57,\r\n\r\n 'keya': [65, 97],\r\n 'keyb': [66, 98],\r\n 'keyc': [67, 99],\r\n 'keyd': [68, 100],\r\n 'keye': [69, 101],\r\n 'keyf': [70, 102],\r\n 'keyg': [71, 103],\r\n 'keyh': [72, 104],\r\n 'keyi': [73, 105],\r\n 'keyj': [74, 106],\r\n 'keyk': [75, 107],\r\n 'keyl': [76, 108],\r\n 'keym': [77, 109],\r\n 'keyn': [78, 110],\r\n 'keyo': [79, 111],\r\n 'keyp': [80, 112],\r\n 'keyq': [81, 113],\r\n 'keyr': [82, 114],\r\n 'keys': [83, 115],\r\n 'keyt': [84, 116],\r\n 'keyu': [85, 117],\r\n 'keyv': [86, 118],\r\n 'keyw': [87, 119],\r\n 'keyx': [88, 120],\r\n 'keyy': [89, 121],\r\n 'keyz': [90, 122]\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n let timeout, throttle;\r\n \r\n const listener = function(event) {\r\n if (modifiers.self && event.target !== event.currentTarget) return;\r\n if (modifiers.ctrl && !event.ctrlKey) return;\r\n if (modifiers.alt && !event.altKey) return;\r\n if (modifiers.shift && !event.shiftKey) return;\r\n if (modifiers.meta && !event.metaKey) return;\r\n\r\n if ((event.originalEvent || event).nsp && !Object.keys(modifiers).includes((event.originalEvent || event).nsp)) {\r\n return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof MouseEvent) {\r\n if (modifiers.button != null && event.button != (parseInt(modifiers.button, 10) || 0)) return;\r\n if (modifiers.button0 && event.button != 0) return;\r\n if (modifiers.button1 && event.button != 1) return;\r\n if (modifiers.button2 && event.button != 2) return;\r\n if (modifiers.button3 && event.button != 3) return;\r\n if (modifiers.button4 && event.button != 4) return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof KeyboardEvent) {\r\n var keys = [];\r\n\r\n Object.keys(modifiers).forEach(function(key) {\r\n var keyVal = parseInt(key, 10);\r\n\r\n if (keyVal) {\r\n keys.push(keyVal);\r\n } else if (dmx.keyCodes[key]) {\r\n keys.push(dmx.keyCodes[key]);\r\n }\r\n });\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n if (Array.isArray(keys[i])) {\r\n if (!keys[i].includes(event.which)) return;\r\n } else if (event.which !== keys[i]) return;\r\n }\r\n }\r\n\r\n if (modifiers.stop) event.stopPropagation();\r\n if (modifiers.prevent) event.preventDefault();\r\n \r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n if (!event.$data) event.$data = {};\r\n\r\n if (event instanceof MouseEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.pageX = event.pageX;\r\n event.$data.pageY = event.pageY;\r\n event.$data.x = event.x || event.clientX;\r\n event.$data.y = event.y || event.clientY;\r\n event.$data.button = event.button;\r\n }\r\n\r\n if (event instanceof WheelEvent) {\r\n event.$data.deltaX = event.deltaX;\r\n event.$data.deltaY = event.deltaY;\r\n event.$data.deltaZ = event.deltaZ;\r\n event.$data.deltaMode = event.deltaMode;\r\n }\r\n\r\n if (window.PointerEvent && event instanceof PointerEvent) {\r\n event.$data.pointerId = event.pointerId;\r\n event.$data.width = event.width;\r\n event.$data.height = event.height;\r\n event.$data.pressure = event.pressure;\r\n event.$data.tangentialPressure = event.tangentialPressure;\r\n event.$data.tiltX = event.tiltX;\r\n event.$data.tiltY = event.tiltY;\r\n event.$data.twist = event.twist;\r\n event.$data.pointerType = event.pointerType;\r\n event.$data.isPrimary = event.isPrimary;\r\n }\r\n\r\n if (window.TouchEvent && event instanceof TouchEvent) {\r\n const touchMap = touch => ({\r\n identifier: touch.identifier,\r\n screenX: touch.screenX,\r\n screenY: touch.screenY,\r\n clientX: touch.clientX,\r\n clientY: touch.clientY,\r\n pageX: touch.pageX,\r\n pageY: touch.pageY\r\n });\r\n\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.touches = Array.from(event.touches).map(touchMap);\r\n event.$data.changedTouches = Array.from(event.changedTouches).map(touchMap);\r\n event.$data.targetTouches = Array.from(event.targetTouches).map(touchMap);\r\n event.$data.rotation = event.rotation;\r\n event.$data.scale = event.scale;\r\n }\r\n\r\n if (event instanceof KeyboardEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.location = event.location;\r\n event.$data.repeat = event.repeat;\r\n event.$data.code = event.code;\r\n event.$data.key = event.key;\r\n }\r\n\r\n if (modifiers.debounce) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n handler.apply(this, arguments);\r\n }, parseInt(modifiers.debounce, 10) || 0);\r\n } else if (modifiers.throttle) {\r\n if (!throttle) {\r\n throttle = true;\r\n handler.apply(this, arguments);\r\n setTimeout(() => {\r\n throttle = false\r\n }, parseInt(modifiers.throttle, 10) || 0);\r\n }\r\n } else {\r\n return handler.apply(this, arguments);\r\n }\r\n };\r\n\r\n modifiers = modifiers || {};\r\n\r\n if (window.Dom7 && target.nodeType === 1) {\r\n Dom7(target)[modifiers.once ? 'once' : 'on'](eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n return () => Dom7(target).off(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n } else if (window.jQuery && !modifiers.capture) {\r\n jQuery(target)[modifiers.once ? 'one' : 'on'](eventType.replace(/-/g, '.'), listener);\r\n return () => jQuery(target).off(eventType.replace(/-/g, '.'), listener);\r\n } else {\r\n target.addEventListener(eventType.replace(/-/g, '.'), listener, {\r\n capture: !!modifiers.capture,\r\n once: !!modifiers.once,\r\n passive: !!modifiers.passive\r\n });\r\n return () => target.removeEventListener(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n }\r\n};\r\n","dmx.fileUtils = {\r\n\r\n fileReader (file, readAs) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = () => reject(reader.error);\r\n reader[readAs](file);\r\n });\r\n },\r\n\r\n blobToArrayBuffer: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsArrayBuffer');\r\n },\r\n \r\n blobToBinaryString: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsBinaryString');\r\n },\r\n\r\n blobToDataURL: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL');\r\n },\r\n \r\n blobToBase64String: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL').then(dataURL =>\r\n dataURL.substring(dataURL.indexOf(',') + 1)\r\n );\r\n },\r\n\r\n arrayBufferToBlob: function(arrayBuffer, type) {\r\n return Promise.resolve(new Blob([arrayBuffer], { type }));\r\n },\r\n\r\n binaryStringToBlob: function(binary, type) {\r\n const bytes = Uint8Array.from(binary, c => c.charCodeAt(0));\r\n return Promise.resolve(new Blob([bytes], { type }));\r\n }, \r\n \r\n dataURLToBlob: function(dataURL) {\r\n const { data, type } = dmx.fileUtils.parseDataURL(dataURL);\r\n return dmx.fileUtils.base64StringToBlob(data, type);\r\n },\r\n\r\n base64StringToBlob: function(base64String, type) {\r\n const binary = window.atob(base64String);\r\n return dmx.fileUtils.binaryStringToBlob(binary, type);\r\n },\r\n\r\n parseDataURL: function(dataURL) {\r\n const match = dataURL.match(/^data:(.*?)(;base64)?,(.*)$/);\r\n return {\r\n mediaType: match[1],\r\n base64: !!match[2],\r\n data: match[3],\r\n type: match[1].split(';')[0],\r\n };\r\n },\r\n\r\n parseMediaType: function(mediaType) {\r\n const match = mediaType.match(/^([^/]+)\\/([^+;]+)(?:\\+([^;]+))?(?:;(.*))?$/);\r\n return {\r\n type: match[1],\r\n subtype: match[2],\r\n suffix: match[3],\r\n parameters: match[4] ? match[4].split(';').reduce((obj, param) => {\r\n const [key, value] = param.split('=');\r\n obj[key] = value;\r\n return obj;\r\n }, {}) : {},\r\n };\r\n },\r\n\r\n};\r\n\r\n\r\n","// Trigger event on pushState and replaceState\r\n// https://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used/25673911#25673911\r\n{\r\n const _wr = function(type) {\r\n const orig = history[type];\r\n\r\n return function() {\r\n const rv = orig.apply(this, arguments);\r\n const e = new Event(type.toLowerCase());\r\n e.arguments = arguments;\r\n window.dispatchEvent(e);\r\n return rv;\r\n };\r\n };\r\n\r\n history.pushState = _wr('pushState');\r\n history.replaceState = _wr('replaceState');\r\n}\r\n\r\nwindow.onpopstate = function(e) {\r\n if (e.state && e.state.title) {\r\n document.title = e.state.title;\r\n }\r\n};\r\n\r\ndocument.documentElement.style.visibility = 'hidden';\r\n\r\ndmx.ready(() => {\r\n // First execute all startup scripts that are registered\r\n const startup = Promise.all(dmx.__startup);\r\n\r\n // Now we can start App Connect\r\n startup.then(() => {\r\n if (dmx.app) {\r\n throw Error('App already running!');\r\n }\r\n\r\n history.replaceState({ title: document.title }, '');\r\n\r\n const root = document.querySelector(':root[dmx-app], [dmx-app], :root[is=\"dmx-app\"], [is=\"dmx-app\"]');\r\n\r\n if (!root) {\r\n throw Error('App root not found!');\r\n }\r\n\r\n const App = dmx.Component('app');\r\n\r\n dmx.app = new App(root, dmx.global);\r\n\r\n document.documentElement.style.visibility = '';\r\n }).catch((err) => {\r\n // Something went wrong, log error and show page\r\n console.error(err);\r\n document.documentElement.style.visibility = '';\r\n })\r\n});\r\n\r\ndmx.extend = function () {\r\n // Variables\r\n var extended = {};\r\n var deep = false;\r\n var i = 0;\r\n var length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n var merge = function (obj) {\r\n for ( var prop in obj ) {\r\n // Prototype polution protection\r\n if (prop == '__proto__') continue;\r\n\r\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\r\n // If deep merge and property is an object, merge properties\r\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\r\n extended[prop] = dmx.extend( true, extended[prop], obj[prop] );\r\n } else {\r\n if (obj[prop] != null) {\r\n extended[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for ( ; i < length; i++ ) {\r\n var obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return extended;\r\n};\r\n\r\ndmx.parseDate = function(obj) {\r\n if (typeof obj == 'string') {\r\n var d, struct, offset = 0, n = [1,4,5,6,7,10,11];\r\n\r\n if (obj.toLowerCase() == 'now') {\r\n return new Date();\r\n }\r\n\r\n if ((struct = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/.exec(obj))) {\r\n for (var i = 0, k; (k = n[i]); ++i) {\r\n struct[k] = +struct[k] || 0;\r\n }\r\n\r\n struct[2] = (+struct[2] || 1) - 1;\r\n struct[3] = +struct[3] || 1;\r\n\r\n if (struct[8] === undefined) {\r\n return new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);\r\n } else {\r\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\r\n offset = struct[10] * 60 + struct[11];\r\n if (struct[9] === '+') offset = 0 - offset;\r\n }\r\n\r\n return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + offset, struct[6], struct[7]));\r\n }\r\n } else if ((struct = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?$/.exec(obj))) {\r\n var d = new Date();\r\n if (struct[5] === 'Z') {\r\n d.setUTCHours(+struct[1] || 0);\r\n d.setUTCMinutes(+struct[2] || 0);\r\n d.setUTCSeconds(+struct[3] || 0);\r\n d.setUTCMilliseconds(+struct[4] || 0);\r\n } else {\r\n d.setHours(+struct[1] || 0);\r\n d.setMinutes(+struct[2] || 0);\r\n d.setSeconds(+struct[3] || 0);\r\n d.setMilliseconds(+struct[4] || 0);\r\n }\r\n return d;\r\n }\r\n\r\n return new Date(obj);\r\n } else if (typeof obj == 'number') {\r\n return new Date(obj * 1000);\r\n } else {\r\n return new Date('');\r\n }\r\n};\r\n\r\ndmx.hashCode = function(o) {\r\n if (o == null) return 0;\r\n var str = JSON.stringify(o);\r\n var i, hash = 0;\r\n for (i = 0; i < str.length; i++) {\r\n hash = ((hash << 5) - hash) + str.charCodeAt(i);\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n};\r\n\r\ndmx.randomizer = function(seed) {\r\n seed = +seed || 0;\r\n return function() {\r\n seed = (seed * 9301 + 49297) % 233280;\r\n return seed / 233280;\r\n };\r\n};\r\n\r\ndmx.repeatItems = function(repeat) {\r\n const items = [];\r\n\r\n if (repeat) {\r\n if (typeof repeat == 'object') {\r\n if (Array.isArray(repeat)) {\r\n for (let i = 0, l = repeat.length; i < l; i++) {\r\n const item = dmx.clone(repeat[i]);\r\n items.push(Object.assign({}, item, {\r\n $key: i,\r\n $index: i,\r\n $value: item\r\n }));\r\n }\r\n } else {\r\n let i = 0;\r\n for (const key in repeat) {\r\n if (repeat.hasOwnProperty(key)) {\r\n const item = dmx.clone(repeat[key]);\r\n items.push(Object.assign({}, item, {\r\n $key: key,\r\n $index: i,\r\n $value: item\r\n }));\r\n i++;\r\n }\r\n }\r\n }\r\n } else if (typeof repeat == 'number') {\r\n for (let n = 0; n < repeat; n++) {\r\n items.push({\r\n $key: String(n),\r\n $index: n,\r\n $value: n + 1\r\n });\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n};\r\n\r\ndmx.escapeRegExp = function(val) {\r\n // https://github.com/benjamingr/RegExp.escape\r\n return val.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n};\r\n\r\ndmx.validate = function(node) {\r\n if (node.tagName == 'FORM') {\r\n Array.from(node.elements).forEach(node => node.dirty = true);\r\n }\r\n\r\n return node.checkValidity();\r\n};\r\n\r\ndmx.validateReset = function(node) {\r\n // reset validation?\r\n};\r\n\r\n(() => {\r\n const queue = [];\r\n\r\n window.addEventListener('message', event => {\r\n if (event.source === window && event.data === 'dmxNextTick' && queue.length) {\r\n event.stopPropagation();\r\n while (queue.length) {\r\n const task = queue.shift();\r\n task.fn.call(task.context);\r\n };\r\n }\r\n }, true);\r\n\r\n dmx.nextTick = (fn, context) => {\r\n queue.push({ fn, context });\r\n window.postMessage('dmxNextTick', '*');\r\n }\r\n})();\r\n\r\ndmx.requestUpdate = function() {\r\n console.warn('dmx.requestUpdate is deprecated.');\r\n};\r\n","// cordova init\r\n\r\nif (document.location.protocol == 'app:') { // cordova detection by checking protocol\r\n dmx.Startup(new Promise(resolve => document.addEventListener('deviceready', resolve)));\r\n}","(() => {\r\n /*! (c) Andrea Giammarchi */\r\n \r\n const {is} = Object;\r\n \r\n let batches;\r\n \r\n /**\r\n * Execute a callback that will not side-effect until its top-most batch is\r\n * completed.\r\n * @param {() => void} callback a function that batches changes to be notified\r\n * through signals.\r\n */\r\n const batch = callback => {\r\n const prev = batches;\r\n batches = prev || [];\r\n try {\r\n callback();\r\n if (!prev)\r\n for (const {value} of batches);\r\n }\r\n finally { batches = prev }\r\n };\r\n dmx.batch = batch;\r\n \r\n /**\r\n * A signal with a value property also exposed via toJSON, toString and valueOf.\r\n * When created via computed, the `value` property is **readonly**.\r\n * @template T\r\n */\r\n class Signal {\r\n constructor(value) {\r\n this._ = value;\r\n }\r\n \r\n /** @returns {T} */\r\n toJSON() { return this.value }\r\n \r\n /** @returns {string} */\r\n toString() { return String(this.value) }\r\n \r\n /** @returns {T} */\r\n valueOf() { return this.value }\r\n }\r\n dmx.Signal = Signal\r\n \r\n let computedSignal;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Computed extends Signal {\r\n /**\r\n * @private\r\n * @type{Reactive}\r\n */\r\n s\r\n /**\r\n * @param {(v: T) => T} _ \r\n * @param {T} v \r\n * @param {{ equals?: Equals }} o\r\n * @param {boolean} f \r\n */\r\n constructor(_, v, o, f) {\r\n super(_);\r\n this.f = f; // is effect?\r\n this.$ = true; // should update (\"value for money\")\r\n this.r = new Set; // related signals\r\n this.s = new Reactive(v, o); // signal\r\n }\r\n peek() { return this.s.peek() }\r\n get value() {\r\n if (this.$) {\r\n const prev = computedSignal;\r\n computedSignal = this;\r\n try { this.s.value = this._(this.s._) }\r\n finally {\r\n this.$ = false;\r\n computedSignal = prev;\r\n }\r\n }\r\n return this.s.value;\r\n }\r\n }\r\n \r\n const defaults = {async: false, equals: true};\r\n \r\n /**\r\n * Returns a read-only Signal that is invoked only when any of the internally\r\n * used signals, as in within the callback, is unknown or updated.\r\n * @type {(fn: (v: T) => R, value?: V, options?: { equals?: Equals }) => ComputedSignal}\r\n */\r\n const computed = (fn, value, options = defaults) =>\r\n new Computed(fn, value, options, false);\r\n dmx.computed = computed;\r\n \r\n let outerEffect;\r\n const empty = [];\r\n const noop = () => {};\r\n const dispose = ({s}) => {\r\n if (typeof s._ === 'function')\r\n s._ = s._();\r\n };\r\n \r\n class FX extends Computed {\r\n constructor(_, v, o) {\r\n super(_, v, o, true);\r\n this.e = empty;\r\n }\r\n run() {\r\n this.$ = true;\r\n this.value;\r\n return this;\r\n }\r\n stop() {\r\n this._ = noop;\r\n for (const s of this.r) {\r\n // remove computed from related signals\r\n s.c.delete(this);\r\n }\r\n this.r.clear();\r\n this.s.c.clear();\r\n }\r\n }\r\n dmx.FX = FX\r\n \r\n class Effect extends FX {\r\n constructor(_, v, o) {\r\n super(_, v, o);\r\n this.i = 0; // index\r\n this.a = !!o.async; // async\r\n this.m = true; // microtask\r\n this.e = []; // effects\r\n // \"I am effects\" ^_^;;\r\n }\r\n get value() {\r\n this.a ? this.async() : this.sync();\r\n }\r\n async() {\r\n if (this.m) {\r\n this.m = false;\r\n queueMicrotask(() => {\r\n this.m = true;\r\n this.sync();\r\n });\r\n }\r\n }\r\n sync() {\r\n const prev = outerEffect;\r\n (outerEffect = this).i = 0;\r\n dispose(this);\r\n super.value;\r\n outerEffect = prev;\r\n }\r\n stop() {\r\n super.stop();\r\n dispose(this);\r\n for (const effect of this.e.splice(0))\r\n effect.stop();\r\n }\r\n }\r\n dmx.Effect = Effect\r\n \r\n /**\r\n * Invokes a function when any of its internal signals or computed values change.\r\n * \r\n * Returns a dispose callback.\r\n * @template T\r\n * @type {(fn: (v: T) => T, value?: T, options?: { async?: boolean }) => () => void}\r\n */\r\n const effect = (callback, value, options = defaults) => {\r\n let unique;\r\n if (outerEffect) {\r\n const {i, e} = outerEffect;\r\n const isNew = i === e.length;\r\n // bottleneck:\r\n // there's literally no way to optimize this path *unless* the callback is\r\n // already a known one. however, latter case is not really common code so\r\n // the question is: should I optimize this more than this? 'cause I don't\r\n // think the amount of code needed to understand if a callback is *likely*\r\n // the same as before makes any sense + correctness would be trashed.\r\n if (isNew || e[i]._ !== callback) {\r\n if (!isNew) e[i].stop();\r\n e[i] = new Effect(callback, value, options).run();\r\n }\r\n unique = e[i];\r\n outerEffect.i++;\r\n }\r\n else\r\n unique = new Effect(callback, value, options).run();\r\n return () => { unique.stop() };\r\n };\r\n dmx.effect = effect;\r\n \r\n const skip = () => false;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Reactive extends Signal {\r\n constructor(_, {equals}) {\r\n super(_)\r\n this.c = new Set; // computeds\r\n this.s = equals === true ? is : (equals || skip); // (don't) skip updates\r\n }\r\n /**\r\n * Allows to get signal.value without subscribing to updates in an effect\r\n * @returns {T}\r\n */\r\n peek() { return this._ }\r\n /** @returns {T} */\r\n get value() {\r\n if (computedSignal) {\r\n this.c.add(computedSignal);\r\n computedSignal.r.add(this);\r\n }\r\n return this._;\r\n }\r\n set value(_) {\r\n const prev = this._;\r\n if (!this.s((this._ = _), prev)) {\r\n if (this.c.size) {\r\n const effects = [];\r\n const stack = [this];\r\n for (const signal of stack) {\r\n for (const computed of signal.c) {\r\n if (!computed.$ && computed.r.has(signal)) {\r\n computed.r.clear();\r\n computed.$ = true;\r\n if (computed.f) {\r\n effects.push(computed);\r\n const stack = [computed];\r\n for (const c of stack) {\r\n for (const effect of c.e) {\r\n effect.r.clear();\r\n effect.$ = true;\r\n stack.push(effect);\r\n }\r\n }\r\n }\r\n else\r\n stack.push(computed.s);\r\n }\r\n }\r\n }\r\n for (const effect of effects)\r\n batches ? batches.push(effect) : effect.value;\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Returns a writable Signal that side-effects whenever its value gets updated.\r\n * @template T\r\n * @type {(initialValue: T, options?: { equals?: Equals }) => ReactiveSignal}\r\n */\r\n const signal = (value, options = defaults) => new Reactive(value, options);\r\n dmx.signal = signal;\r\n \r\n /**\r\n * @template [T=any]\r\n * @typedef {boolean | ((prev: T, next: T) => boolean)} Equals\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '_'|'s'|'c'>} ReactiveSignal\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '$'|'s'|'f'|'r'|'_'>} ComputedSignal\r\n */\r\n })();","dmx.signalProxy = function (o = {}) {\r\n const signals = new Map();\r\n const equals = (a, b) => {\r\n return dmx.equal(a, b);\r\n };\r\n\r\n return new Proxy(o, {\r\n has (target, prop) {\r\n // when checking for a prop, always return true\r\n return true;\r\n },\r\n\r\n get (target, prop, receiver) {\r\n const value = Reflect.get(target, prop, receiver);\r\n\r\n if (typeof value == 'function' || typeof prop != 'string' || prop.startsWith('_')) {\r\n // ignore private props\r\n return value;\r\n }\r\n\r\n if (!signals.has(prop)) {\r\n signals.set(prop, dmx.signal(value, { equals }));\r\n }\r\n\r\n return signals.get(prop).value;\r\n },\r\n\r\n set (target, prop, value, receiver) {\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok) {\r\n if (signals.has(prop)) {\r\n signals.get(prop).value = value;\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n\r\n deleteProperty (target, prop) {\r\n const ok = Reflect.deleteProperty(target, prop);\r\n\r\n if (ok && signals.has(prop)) {\r\n signals.get(prop).value = undefined;\r\n }\r\n\r\n return ok;\r\n }\r\n });\r\n};","(() => {\r\n\r\n class Scope {\r\n\r\n constructor (initialData = {}, parent = null) {\r\n if (typeof initialData !== 'object') {\r\n initialData = { $value: initialData };\r\n }\r\n\r\n this.data = dmx.signalProxy();\r\n Object.assign(this.data, initialData);\r\n this.parent = parent;\r\n this.seed = Math.random();\r\n }\r\n\r\n get (name) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n set (name, value) {\r\n if (typeof name === 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n }\r\n\r\n del (name) {\r\n delete this.data[name];\r\n }\r\n\r\n }\r\n\r\n dmx.global = new Scope();\r\n dmx.DataScope = function (data, parent) {\r\n return new Scope(data, parent || dmx.global);\r\n };\r\n\r\n})();","(function() {\r\n\r\n var $ = function(selector) {\r\n if (!(this instanceof $)) {\r\n return new $(selector);\r\n }\r\n if (selector instanceof $) {\r\n return selector;\r\n }\r\n if (!selector) return this;\r\n var len = selector.length;\r\n if (selector.nodeType) {\r\n this[0] = selector;\r\n this.length = 1;\r\n } else if (typeof selector == 'string') {\r\n return $(document.querySelectorAll(selector));\r\n } else if (len) {\r\n for (var i = 0; i < len; i++) {\r\n if (selector[i] && selector[i].nodeType) {\r\n this[this.length] = selector[i];\r\n this.length++;\r\n }\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n $.prototype = {\r\n constructor: $,\r\n length: 0,\r\n\r\n addClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.add(className);\r\n }\r\n return this;\r\n },\r\n\r\n removeClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.remove(className);\r\n }\r\n return this;\r\n },\r\n\r\n toggleClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.toggle(className);\r\n }\r\n return this;\r\n },\r\n\r\n hasClass: function(className) {\r\n if (!this[0]) return false;\r\n return this[0].classList.contains(className);\r\n },\r\n\r\n attr: function(attrs, value) {\r\n if (arguments.length === 1 && typeof attrs === 'string') {\r\n return this[0] && this[0].getAttribute(attrs);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].setAttribute(attrs, value);\r\n } else {\r\n for (var attr in attrs) {\r\n if (attrs.hasOwnProperty(attr)) {\r\n this[i].setAttribute(attr, attrs[attr]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n removeAttr: function(attr) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].removeAttribute(attr);\r\n }\r\n return this;\r\n },\r\n\r\n prop: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && this[0][props];\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i][props] = value;\r\n } else {\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n this[i][prop] = props[prop];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n css: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && window.getComputedStyle(this[0], null).getPropertyValue(props);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].style.setProperty(props, value);\r\n } else {\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n this[i].style.setProperty(prop, props[prop]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n each: function(callback, context) {\r\n if (!callback) return this;\r\n for (var i = 0; i < this.length; i++) {\r\n if (callback.call(context || this[i], i, this[i]) === false) {\r\n return this;\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n append: function() {\r\n for (var i = 0; i < arguments.length; i++) {\r\n var children = $(arguments[i]);\r\n\r\n for (var j = 0; j < children.length; j++) {\r\n this[0].appendChild(children[j]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n appendTo: function(parent) {\r\n $(parent).append(this);\r\n return this;\r\n },\r\n\r\n detach: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n if (this[i].parentNode) {\r\n this[i].parentNode.removeChild(this[i]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n empty: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].innerHTML = '';\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n dmx.dom = {\r\n\r\n get: function(id) {\r\n return $(document.getElementById(id));\r\n },\r\n\r\n select: function(query) {\r\n return $(query);\r\n },\r\n\r\n create: function(tagName) {\r\n var elem = document.createElement(tagName);\r\n return $(elem);\r\n },\r\n\r\n contains: function(node) {\r\n return document.documentElement.contains(node);\r\n },\r\n\r\n walk: function(node, fn, context) {\r\n if (node) {\r\n if (fn.call(context, node) === false) {\r\n // stop going deeper when callback returns false\r\n return;\r\n } else if (node.hasChildNodes()) {\r\n for (const child of Array.from(node.childNodes)) {\r\n dmx.dom.walk(child, fn, context);\r\n }\r\n }\r\n }\r\n },\r\n\r\n getAttributes: function(node) {\r\n var attributes = [];\r\n\r\n if (node.nodeType == 1) {\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attribute = node.attributes[i];\r\n\r\n if (attribute && attribute.specified && dmx.rePrefixed.test(attribute.name)) {\r\n var name = attribute.name.substr(4);\r\n var argument = null;\r\n var modifiers = {};\r\n\r\n name.split('.').forEach(function(part, i) {\r\n if (i === 0) {\r\n name = part;\r\n } else {\r\n var pos = part.indexOf(':');\r\n if (pos > 0) {\r\n modifiers[part.substr(0, pos)] = part.substr(pos + 1);\r\n } else {\r\n modifiers[part] = true;\r\n }\r\n }\r\n });\r\n\r\n var pos = name.indexOf(':');\r\n if (pos > 0) {\r\n argument = name.substr(pos + 1);\r\n name = name.substr(0, pos);\r\n }\r\n\r\n attributes.push({\r\n name: name,\r\n fullName: attribute.name,\r\n value: attribute.value,\r\n argument: argument,\r\n modifiers: modifiers\r\n });\r\n }\r\n }\r\n }\r\n\r\n return attributes;\r\n },\r\n\r\n remove: function(node) {\r\n if (Array.isArray(node)) {\r\n node.forEach(function(node) {\r\n dmx.dom.remove(node);\r\n });\r\n } else {\r\n node.remove()\r\n }\r\n },\r\n\r\n replace: function(oldNode, newNode) {\r\n if (oldNode.parentNode) {\r\n oldNode.parentNode.replaceChild(newNode, oldNode);\r\n }\r\n }\r\n\r\n };\r\n\r\n})();\r\n","dmx._CACHE = new Map();\r\n\r\ndmx._OPERATORS = new Map([\r\n ['{', 'L_CURLY'],\r\n ['}', 'R_CURLY'],\r\n ['[', 'L_BRACKET'],\r\n [']', 'R_BRACKET'],\r\n ['(', 'L_PAREN'],\r\n [')', 'R_PAREN'],\r\n ['.', 'PERIOD'],\r\n [',', 'COMMA'],\r\n [';', 'SEMI'], // not used\r\n [':', 'COLON'],\r\n ['?', 'QUESTION'],\r\n // Arithmetic operators\r\n ['-', 'ADDICTIVE'],\r\n ['+', 'ADDICTIVE'],\r\n ['*', 'MULTIPLICATIVE'],\r\n ['/', 'MULTIPLICATIVE'],\r\n ['%', 'MULTIPLICATIVE'],\r\n // Comparison operators\r\n ['===', 'EQUALITY'],\r\n ['!==', 'EQUALITY'],\r\n ['==', 'EQUALITY'],\r\n ['!=', 'EQUALITY'],\r\n ['<', 'RELATIONAL'],\r\n ['>', 'RELATIONAL'],\r\n ['<=', 'RELATIONAL'],\r\n ['>=', 'RELATIONAL'],\r\n ['in', 'RELATIONAL'],\r\n // Logical operators\r\n ['&&', 'LOGICAL_AND'],\r\n ['||', 'LOGICAL_OR'],\r\n ['!', 'LOGICAL_NOT'],\r\n // Bitwise operators\r\n ['&', 'BITWISE_AND'],\r\n ['|', 'BITWISE_OR'],\r\n ['^', 'BITWISE_XOR'],\r\n ['~', 'BITWISE_NOT'],\r\n ['<<', 'BITWISE_SHIFT'],\r\n ['>>', 'BITWISE_SHIFT'],\r\n ['>>>', 'BITWISE_SHIFT'],\r\n]);\r\n\r\ndmx._ESCAPE_CHARS = new Map([\r\n ['n', '\\n'],\r\n ['r', '\\r'],\r\n ['t', '\\t'],\r\n ['b', '\\b'],\r\n ['f', '\\f'],\r\n ['v', '\\v'],\r\n ['0', '\\0'],\r\n [\"'\", \"'\"],\r\n ['`', '`'],\r\n ['\"', '\"'],\r\n]);\r\n\r\ndmx._EXPRESSIONS = new Map([\r\n ['**', (a, b) => Math.pow(a(), b())],\r\n ['??', (a, b) => (a = a(), a == null ? b() : a)],\r\n ['in', (a, b) => a() in b()],\r\n ['?', (a, b, c) => (a() ? b() : c())],\r\n ['+', (a, b) => (a = a(), b = b(), a == null ? b : b == null ? a : a + b)],\r\n ['-', (a, b) => a() - b()],\r\n ['*', (a, b) => a() * b()],\t\r\n ['/', (a, b) => a() / b()],\r\n ['%', (a, b) => a() % b()],\r\n ['===', (a, b) => a() === b()],\r\n ['!==', (a, b) => a() !== b()],\r\n ['==', (a, b) => a() == b()],\r\n ['!=', (a, b) => a() != b()],\r\n ['<', (a, b) => a() < b()],\r\n ['>', (a, b) => a() > b()],\r\n ['<=', (a, b) => a() <= b()],\r\n ['>=', (a, b) => a() >= b()],\r\n ['&&', (a, b) => a() && b()],\r\n ['||', (a, b) => a() || b()],\r\n ['&', (a, b) => a() & b()],\r\n ['|', (a, b) => a() | b()],\r\n ['^', (a, b) => a() ^ b()],\r\n ['<<', (a, b) => a() << b()],\r\n ['>>', (a, b) => a() >> b()],\r\n ['>>>', (a, b) => a() >>> b()],\r\n ['~', (a) => ~a()],\r\n ['!', (a) => !a()],\r\n]);\r\n\r\ndmx._RESERVED = new Map([\r\n ['this', (scope) => () => scope.data],\r\n ['true', () => () => true],\r\n ['false', () => () => false],\r\n ['null', () => () => null],\r\n ['undefined', () => () => undefined],\r\n ['_', () => () => ({ __dmxScope__: true })],\r\n]);\r\n\r\ndmx._SUPPORTED_TYPES = new Map([\r\n ['Boolean', 'boolean'],\r\n ['Null', 'null'],\r\n ['Undefined', 'undefined'],\r\n ['Number', 'number'],\r\n ['BigInt', 'number'],\r\n ['Decimal', 'number'], // requires Decimal.js\r\n ['String', 'string'],\r\n ['Date', 'date'],\r\n ['RegExp', 'regexp'],\r\n ['Blob', 'blob'],\r\n ['File', 'file'],\r\n ['FileList', 'filelist'],\r\n ['ArrayBuffer', 'arraybuffer'],\r\n ['ImageBitmap', 'imagebitmap'],\r\n ['ImageData', 'imagedata'],\r\n ['Array', 'array'],\r\n ['Object', 'object'],\r\n ['Map', 'map'],\r\n ['Set', 'set'],\r\n ['DataView', 'array'],\r\n ['Int8Array', 'array'],\r\n ['Uint8Array', 'array'],\r\n ['Uint8ClampedArray', 'array'],\r\n ['Int16Array', 'array'],\r\n ['Uint16Array', 'array'],\r\n ['Int32Array', 'array'],\r\n ['Uint32Array', 'array'],\r\n ['Float32Array', 'array'],\r\n ['Float64Array', 'array'],\r\n ['BigInt64Array', 'array'],\r\n ['BigUint64Array', 'array'],\r\n]);\r\n\r\ndmx.getType = function (obj) {\r\n return dmx._SUPPORTED_TYPES.get(Object.prototype.toString.call(obj).slice(8, -1));\r\n};\r\n\r\ndmx.lexer = function (expression) {\r\n if (dmx._CACHE.has(expression)) {\r\n return dmx._CACHE.get(expression);\r\n }\r\n\r\n let tokens = [], token, name, start, index = 0, op = true, ch, ch2, ch3;\r\n\r\n while (index < expression.length) {\r\n start = index;\r\n\r\n ch = read();\r\n\r\n if (isQuote(ch)) {\r\n name = 'STRING';\r\n token = readString(ch);\r\n op = false;\r\n } else if ((isDigid(ch) || (is('.') && peek() && isDigid(peek()))) && op) {\r\n name = 'NUMBER';\r\n token = readNumber();\r\n op = false;\r\n } else if (isAlpha(ch) && op) {\r\n name = 'IDENT';\r\n token = readIdent();\r\n if (is('(')) {\r\n name = 'METHOD';\r\n }\r\n op = false;\r\n } else if (is('/') && op && (token == '(' || token == ',' || token == '?' || token == ':') && testRegexp()) {\r\n name = 'REGEXP';\r\n token = readRegexp();\r\n op = false;\r\n } else if (isWhitespace(ch)) {\r\n index++;\r\n continue;\r\n } else if ((ch3 = read(3)) && dmx._OPERATORS.has(ch3)) {\r\n name = dmx._OPERATORS.get(ch3);\r\n token = ch3;\r\n op = true;\r\n index += 3;\r\n } else if ((ch2 = read(2)) && dmx._OPERATORS.has(ch2)) {\r\n name = dmx._OPERATORS.get(ch2);\r\n token = ch2;\r\n op = true;\r\n index += 2;\r\n } else if (dmx._OPERATORS.has(ch)) {\r\n name = dmx._OPERATORS.get(ch);\r\n token = ch;\r\n op = true;\r\n index++;\r\n } else {\r\n throw new Error(`Unexpected token \"${ch}\" at index ${index} in expression: ${expression}`);\r\n }\r\n\r\n tokens.push({ name, index: start, value: token });\r\n }\r\n\r\n dmx._CACHE.set(expression, tokens);\r\n\r\n return tokens;\r\n\r\n function read (n) {\r\n return n > 1 ? expression.slice(index, index + n) : expression[index];\r\n }\r\n\r\n function peek (n = 1) {\r\n return index + n < expression.length ? expression[index + n] : false;\r\n }\r\n\r\n function is (chars) {\r\n return chars.includes(ch);\r\n }\r\n\r\n function isQuote (ch) {\r\n return ch == '\"' || ch == \"'\" || ch == '`';\r\n }\r\n\r\n function isDigid (ch) {\r\n return ch >= '0' && ch <= '9';\r\n }\r\n\r\n function isAlpha (ch) {\r\n return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '_' || ch === '$';\r\n }\r\n\r\n function isAlphaNum (ch) {\r\n return isAlpha(ch) || isDigid(ch);\r\n }\r\n\r\n function isWhitespace (ch) {\r\n return ch == ' ' || ch == '\\r' || ch == '\\t' || ch == '\\n' || ch == '\\v' || ch == '\\u00A0';\r\n }\r\n\r\n function isExpOperator (ch) {\r\n return ch == '-' || ch == '+' || isDigid(ch);\r\n }\r\n\r\n function readString (quote) {\r\n let escape = false, result = '';\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n if (ch == 'u') {\r\n index++;\r\n const hex = read(4);\r\n if (!hex.match(/[\\da-f]{4}/i)) {\r\n throw new Error(`Invalid unicode escape [\\\\u${hex}] at index ${index} in expression: ${expression}`);\r\n }\r\n result += String.fromCharCode(parseInt(hex, 16));\r\n index += 4;\r\n } else {\r\n result += dmx._ESCAPE_CHARS.has(ch) ? dmx._ESCAPE_CHARS.get(ch) : ch;\r\n }\r\n\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == quote) {\r\n index++;\r\n if (quote == '`') {\r\n result = '{{' + result + '}}';\r\n }\r\n return result;\r\n } else {\r\n result += ch;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated string in expression: ${expression}`);\r\n }\r\n\r\n function readNumber () {\r\n let result = '', exponent = false;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (is('_') && peek() && isDigid(peek())) {\r\n index++;\r\n continue;\r\n }\r\n\r\n if ((is('.') && peek() && isDigid(peek())) || isDigid(ch)) {\r\n result += ch;\r\n } else {\r\n const next = peek();\r\n\r\n if (is('eE') && isExpOperator(next)) {\r\n result += 'e';\r\n exponent = true;\r\n } else if (isExpOperator(ch) && next && isDigid(next) && exponent) {\r\n result += ch;\r\n exponent = false;\r\n } else if (isExpOperator(ch) && (!next || !isDigid(next)) && exponent) {\r\n throw new Error(`Invalid exponent in expression: ${expression}`);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n index++;\r\n }\r\n\r\n if (read() == 'n') {\r\n index++;\r\n return BigInt(result);\r\n }\r\n\r\n if (read() == 'm') {\r\n index++;\r\n if (window.Decimal) {\r\n return new Decimal(result);\r\n } else {\r\n console.warn('Decimal number in expression but library not found');\r\n }\r\n }\r\n\r\n return +result;\r\n }\r\n\r\n function readIdent () {\r\n let result = '';\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (isAlphaNum(ch)) {\r\n result += ch;\r\n } else {\r\n break;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function readRegexp () {\r\n let result = '', modifiers = '', escape = false;\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == '/') {\r\n index++;\r\n\r\n while ('ign'.includes(ch = read())) {\r\n modifiers += ch;\r\n index++;\r\n }\r\n\r\n return new RegExp(result, modifiers);\r\n }\r\n\r\n result += ch;\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated regexp in expression: ${expression}`);\r\n }\r\n\r\n function testRegexp () {\r\n let i = index, ok = true;\r\n\r\n try {\r\n readRegexp();\r\n } catch (e) {\r\n ok = false;\r\n }\r\n\r\n index = i;\r\n ch = '/';\r\n\r\n return ok;\r\n }\r\n};\r\n\r\ndmx.parse = function (expression, scope = dmx.app) {\r\n expression = expression.trim();\r\n\r\n if (expression.includes('{{')) {\r\n if (expression.startsWith('{{') && expression.endsWith('}}') && !expression.slice(2).includes('{{')) {\r\n expression = expression.slice(2, -2);\r\n } else {\r\n return expression.replace(/{{(.+?)}}/g, (_, expression) => {\r\n const result = dmx.parse(expression, scope);\r\n return result == null ? '' : result;\r\n });\r\n }\r\n }\r\n\r\n if (!expression) return undefined;\r\n\r\n let tokens, context, result;\r\n\r\n try {\r\n tokens = Array.from(dmx.lexer(expression));\r\n result = doParse();\r\n } catch (e) {\r\n console.error('Error parsing expression:', expression, e);\r\n }\r\n\r\n return result;\r\n\r\n function read () {\r\n if (tokens.length === 0) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n return tokens[0];\r\n }\r\n\r\n function peek (e) {\r\n if (tokens.length > 0) {\r\n const token = tokens[0];\r\n\r\n if (!e || token.name == e) {\r\n return token;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function expect (e) {\r\n const token = peek(e);\r\n\r\n if (token) {\r\n tokens.shift();\r\n return token;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function consume (e) {\r\n if (!expect(e)) {\r\n throw new Error(`Expected ${e} at index ${tokens[0].index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n function fn (exp) {\r\n const args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return () => {\r\n if (dmx._EXPRESSIONS.has(exp)) {\r\n return dmx._EXPRESSIONS.get(exp).apply(scope, args);\r\n }\r\n\r\n return exp;\r\n };\r\n }\r\n\r\n function doParse () {\r\n const a = [];\r\n\r\n while (true) {\r\n if (tokens.length > 0 && !(peek('R_PAREN') || peek('R_BRACKET') || peek('R_CURLY') || peek('COMMA') || peek('SEMI'))) {\r\n a.push(parseExpression());\r\n }\r\n\r\n if (!(expect('COMMA') || expect('SEMI'))) {\r\n return (a.length == 1 ? a[0] : b)();\r\n }\r\n }\r\n\r\n function b () {\r\n let result;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const e = a[i];\r\n if (e) result = e();\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n function parseExpression () {\r\n return parseConditional();\r\n }\r\n\r\n function parseConditional () {\r\n const a = parseLogicalOr();\r\n\r\n if (expect('QUESTION')) {\r\n const b = parseExpression();\r\n consume('COLON');\r\n const c = parseExpression();\r\n\r\n return fn('?', a, b, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalOr () {\r\n let a = parseLogicalAnd();\r\n\r\n while (expect('LOGICAL_OR')) {\r\n const b = parseLogicalAnd();\r\n a = fn('||', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalAnd () {\r\n let a = parseBitwiseOr();\r\n\r\n while (expect('LOGICAL_AND')) {\r\n const b = parseBitwiseOr();\r\n a = fn('&&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseOr () {\r\n let a = parseBitwiseXor();\r\n\r\n while (expect('BITWISE_OR')) {\r\n const b = parseBitwiseXor();\r\n a = fn('|', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseXor () {\r\n let a = parseBitwiseAnd();\r\n\r\n while (expect('BITWISE_XOR')) {\r\n const b = parseBitwiseAnd();\r\n a = fn('^', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseAnd () {\r\n let a = parseEquality();\r\n\r\n while (expect('BITWISE_AND')) {\r\n const b = parseEquality();\r\n a = fn('&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseEquality () {\r\n let a = parseRelational(), b;\r\n\r\n if ((b = expect('EQUALITY'))) {\r\n const c = parseEquality();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseRelational () {\r\n let a = parseBitwiseShift(), b;\r\n\r\n if ((b = expect('RELATIONAL'))) {\r\n const c = parseRelational();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseShift () {\r\n let a = parseAddictive(), b;\r\n\r\n if ((b = expect('BITWISE_SHIFT'))) {\r\n const c = parseBitwiseShift();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseAddictive () {\r\n let a = parseMultiplicative(), b;\r\n\r\n while ((b = expect('ADDICTIVE'))) {\r\n const c = parseMultiplicative();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseMultiplicative () {\r\n let a = parseUnary(), b;\r\n\r\n while ((b = expect('MULTIPLICATIVE'))) {\r\n const c = parseUnary();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseUnary () {\r\n let a;\r\n\r\n if ((a = expect('ADDICTIVE'))) {\r\n if (a.value == '+') {\r\n return parsePrimary();\r\n } else {\r\n return fn(a.value, () => 0, parsePrimary());\r\n }\r\n } else if ((a = expect('LOGICAL_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else if ((a = expect('BITWISE_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else {\r\n return parsePrimary();\r\n }\r\n }\r\n\r\n function parsePrimary () {\r\n let result, next;\r\n\r\n if (expect('L_PAREN')) {\r\n result = parseExpression();\r\n consume('R_PAREN');\r\n } else if (expect('L_CURLY')) {\r\n const obj = {};\r\n\r\n if (read().name != 'R_CURLY') {\r\n do {\r\n const key = expect().value;\r\n consume('COLON');\r\n obj[key] = parseExpression()();\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(obj);\r\n\r\n consume('R_CURLY');\r\n } else if (expect('L_BRACKET')) {\r\n const arr = [];\r\n\r\n if (read().name != 'R_BRACKET') {\r\n do {\r\n arr.push(parseExpression()());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(arr);\r\n\r\n consume('R_BRACKET');\r\n } else if (expect('PERIOD')) {\r\n result = peek() ? parseMember(fn(scope.data)) : fn(scope.data);\r\n } else {\r\n const token = expect();\r\n\r\n if (token === false) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n if (token.name == 'IDENT') {\r\n result = dmx._RESERVED.has(token.value) ? dmx._RESERVED.get(token.value)(scope) : () => scope.get(token.value);\r\n } else if (token.name == 'METHOD') {\r\n result = fn(dmx.__formatters.global[token.value] || (() => {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n return undefined;\r\n })\r\n );\r\n } else {\r\n result = () => token.value;\r\n }\r\n }\r\n\r\n while ((next = expect('L_PAREN') || expect('L_BRACKET') || expect('PERIOD'))) {\r\n if (next.value == '(') {\r\n result = parseCall(result, context);\r\n } else if (next.value == '[') {\r\n context = result;\r\n result = parseIndex(result, context);\r\n } else if (next.value == '.') {\r\n context = result;\r\n result = parseMember(result, context);\r\n } else {\r\n throw new Error(`Unexpected token \"${next.value}\" at index ${next.index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n context = null;\r\n\r\n return result;\r\n }\r\n\r\n function parseCall (func, context) {\r\n const argsFn = [];\r\n\r\n if (read().name != 'R_PAREN') {\r\n do {\r\n argsFn.push(parseExpression());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n consume('R_PAREN');\r\n\r\n return () => {\r\n let args = [];\r\n\r\n if (context) {\r\n args.push(context());\r\n }\r\n\r\n for (let f of argsFn) {\r\n args.push(f());\r\n }\r\n\r\n try {\r\n return (func() || dmx.noop).apply(scope, args);\r\n } catch (e) {\r\n console.warn(`Error calling method ${func().name} in expression: ${expression}`, e);\r\n return undefined;\r\n }\r\n };\r\n }\r\n\r\n function parseIndex (object) {\r\n const indexFn = parseExpression();\r\n\r\n consume('R_BRACKET');\r\n\r\n return () => {\r\n const obj = object();\r\n const index = indexFn();\r\n\r\n if (typeof obj != 'object' || obj == null) {\r\n return undefined;\r\n }\r\n\r\n if (obj.__dmxScope__) {\r\n return scope.get(index);\r\n }\r\n\r\n if (dmx.getType(obj) == 'map') {\r\n return obj.get(index);\r\n }\r\n\r\n return obj[index];\r\n };\r\n }\r\n\r\n function parseMember (object) {\r\n const token = expect();\r\n\r\n return () => {\r\n const obj = object();\r\n const type = dmx.getType(obj);\r\n\r\n if (token.name == 'METHOD') {\r\n const method = '__' + token.value;\r\n\r\n if (type == 'map' && typeof obj.get(method) == 'function') {\r\n return obj.get(method).bind(obj);\r\n }\r\n\r\n if (type == 'object' && typeof obj[method] == 'function') {\r\n return obj[method];\r\n }\r\n\r\n if (dmx.__formatters[type] && dmx.__formatters[type][token.value]) {\r\n return dmx.__formatters[type][token.value];\r\n }\r\n\r\n if (dmx.__formatters['any'] && dmx.__formatters['any'][token.value]) {\r\n return dmx.__formatters['any'][token.value];\r\n }\r\n\r\n return () => {\r\n if (obj != null) {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n }\r\n return undefined;\r\n };\r\n }\r\n\r\n if (obj && obj.__dmxScope__) {\r\n return scope.get(token.value);\r\n }\r\n\r\n if (type == 'map') {\r\n return obj.get(token.value);\r\n }\r\n\r\n return obj && typeof obj == 'object' && token.value in obj ? obj[token.value] : undefined;\r\n };\r\n }\r\n};","dmx.BaseComponent = dmx.createClass({\r\n constructor: function (node, parent) {\r\n this.$node = node;\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n\r\n this.__disposables = [];\r\n this.__childDisposables = [];\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = false;\r\n this.isDestroyed = false;\r\n\r\n this.props = new Proxy(\r\n {},\r\n {\r\n set: (target, prop, value, receiver) => {\r\n const oldValue = Reflect.get(target, prop, receiver);\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok && this.isInitialized) {\r\n if ((this.attributes[prop] && this.attributes[prop].alwaysUpdate) || !dmx.equal(oldValue, value)) {\r\n this.requestUpdate(prop, oldValue);\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n }\r\n );\r\n\r\n this.data = dmx.signalProxy();\r\n this.seed = Math.random();\r\n\r\n this.name =\r\n node.getAttribute('id') ||\r\n node.getAttribute('name') ||\r\n (this.type && this.type.toLowerCase().replace(/^dmx-/, '')) ||\r\n '';\r\n this.name = this.name.replace(/[^\\w]/g, '');\r\n\r\n try {\r\n this.$initialData();\r\n this.$parseAttributes(node);\r\n this.init(node);\r\n if (this.render !== false) {\r\n this.render(node);\r\n }\r\n if (this.$node) {\r\n this.$customAttributes('mounted', this.$node);\r\n this.$node.dmxComponent = this;\r\n this.$node.dmxRendered = true;\r\n }\r\n this.isInitialized = true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n tag: null,\r\n initialData: {},\r\n attributes: {},\r\n methods: {},\r\n events: {\r\n destroy: Event,\r\n },\r\n\r\n render: function (node) {\r\n if (this.$node) {\r\n this.$parse();\r\n }\r\n },\r\n\r\n parse: function (expression) {\r\n return dmx.parse(expression, this);\r\n },\r\n\r\n // find component based on name inside children\r\n find: function (name) {\r\n if (this.name == name) return this;\r\n\r\n for (var i = 0; i < this.children.length; i++) {\r\n var found = this.children[i].find(name);\r\n if (found) return found;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n init: dmx.noop,\r\n\r\n beforeUpdate: dmx.noop,\r\n update: dmx.noop,\r\n updated: dmx.noop,\r\n\r\n beforeDestroy: dmx.noop,\r\n destroy: dmx.noop,\r\n destroyed: dmx.noop,\r\n\r\n addEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) {\r\n this.listeners[type] = new Set();\r\n }\r\n this.listeners[type].add(callback);\r\n },\r\n\r\n removeEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) return;\r\n this.listeners[type].delete(callback);\r\n },\r\n\r\n dispatchEvent: function (event, props, data, nsp) {\r\n if (this.isDestroyed) return;\r\n\r\n if (typeof event == 'string') {\r\n var ComponentEvent = this.events[event] || CustomEvent;\r\n event = new ComponentEvent(event, props);\r\n }\r\n\r\n if (!(event.type in this.listeners)) return true;\r\n\r\n event.nsp = nsp;\r\n event.target = this;\r\n event.$data = data || {};\r\n for (let listener of this.listeners[event.type]) {\r\n if (listener.call(this, event) === false) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n return !event.defaultPrevented;\r\n },\r\n\r\n $createChild: function (name, node) {\r\n var Component = dmx.__components[name];\r\n var component = new Component(node, this);\r\n this.$addChild(component, component.name);\r\n },\r\n\r\n $addChild: function (child, name) {\r\n this.children.push(child);\r\n if (name) {\r\n if (this.data[name] && dmx.debug) {\r\n console.warn('Duplicate name \"' + name + '\" found, component not added to scope.');\r\n //return;\r\n }\r\n this.set(name, child.data);\r\n }\r\n },\r\n\r\n $removeChild: function (child) {\r\n // remove from children collection\r\n if (this.children.includes(child)) {\r\n this.children.splice(this.children.indexOf(child), 1);\r\n }\r\n // remove from data\r\n if (child.name && this.data[child.name]) {\r\n this.del(child.name);\r\n }\r\n },\r\n\r\n $customAttributes: function (hook, node, attributes) {\r\n const toCamelCase = (s) => s.replace(/-./g, (x) => x[1].toUpperCase());\r\n if (!attributes) attributes = dmx.dom.getAttributes(node);\r\n\r\n attributes.forEach((attr) => {\r\n if (node == this.$node) {\r\n if (attr.name == 'bind' && this.attributes[toCamelCase(attr.argument)]) {\r\n return;\r\n }\r\n\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n return;\r\n }\r\n }\r\n\r\n if (dmx.__attributes[hook][attr.name]) {\r\n this.__inChild = node != this.$node;\r\n const dispose = dmx.__attributes[hook][attr.name].call(this, node, attr);\r\n if (dispose) {\r\n this[this.__inChild ? '__childDisposables' : '__disposables'].push(dispose);\r\n }\r\n }\r\n });\r\n\r\n this.__inChild = null;\r\n },\r\n\r\n $parseTextNode(node) {\r\n if (node.nodeType !== 3) return;\r\n\r\n if (dmx.reExpression.test(node.nodeValue)) {\r\n const parts = node.nodeValue\r\n .replace(dmx.reExpressionReplace, (_, expression) => {\r\n return `##split##${expression}##split##`;\r\n })\r\n .split('##split##');\r\n\r\n const fragment = document.createDocumentFragment();\r\n parts.forEach((part, i) => {\r\n const textNode = document.createTextNode(part);\r\n fragment.appendChild(textNode);\r\n\r\n if (i % 2) {\r\n this.$watch(part, (value) => {\r\n textNode.nodeValue = value;\r\n });\r\n }\r\n });\r\n\r\n node.parentNode.replaceChild(fragment, node);\r\n }\r\n },\r\n\r\n $parse: function (node) {\r\n node = node || this.$node;\r\n\r\n if (!node) return;\r\n\r\n if (node.nodeType === 3) {\r\n return this.$parseTextNode(node);\r\n }\r\n\r\n if (node.nodeType !== 1) return;\r\n\r\n if (dmx.config.mapping) {\r\n Object.keys(dmx.config.mapping).forEach((map) => {\r\n dmx.array(node.querySelectorAll(map)).forEach((node) => {\r\n if (!node.hasAttribute('is')) {\r\n node.setAttribute('is', 'dmx-' + dmx.config.mapping[map]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n dmx.dom.walk(\r\n node,\r\n function (node) {\r\n if (node == this.$node) {\r\n // skip current node\r\n return;\r\n }\r\n\r\n // Element Node\r\n if (node.nodeType === 1) {\r\n var tagName = node.tagName.toLowerCase();\r\n var attributes = dmx.dom.getAttributes(node);\r\n\r\n if (node.hasAttribute('is')) {\r\n tagName = node.getAttribute('is');\r\n }\r\n\r\n if (dmx.reIgnoreElement.test(tagName)) {\r\n // ignore element\r\n return false;\r\n }\r\n\r\n this.$customAttributes('before', node, attributes);\r\n var idx = attributes.findIndex((attr) => attr.name === 'repeat');\r\n if (idx !== -1) return false;\r\n\r\n if (dmx.rePrefixed.test(tagName)) {\r\n tagName = tagName.replace(/^dmx-/i, '');\r\n\r\n if (tagName in dmx.__components) {\r\n node.isComponent = true;\r\n if (!node.dmxRendered) {\r\n this.$createChild(tagName, node);\r\n } else if (window.__WAPPLER__) {\r\n // This breaks some components in design view\r\n // causes flows to trigger constantly\r\n // components ofter have there own parsing and this breaks it\r\n if (node.dmxComponent && node.dmxComponent.$parse) {\r\n // for now ignode specific for flows with script tag\r\n if (!dmx.reIgnoreElement.test(node.tagName)) {\r\n node.dmxComponent.$parse();\r\n }\r\n }\r\n }\r\n return false;\r\n } else {\r\n console.warn('Unknown component found! ' + tagName);\r\n return;\r\n }\r\n }\r\n\r\n this.$customAttributes('mounted', node, attributes);\r\n }\r\n\r\n // Text Node\r\n if (node.nodeType === 3) {\r\n this.$parseTextNode(node);\r\n }\r\n },\r\n this\r\n );\r\n },\r\n\r\n $update: function (idents) {\r\n console.warn('Component.$update is deprecated.');\r\n },\r\n\r\n $parseAttributes: function (node) {\r\n const toKebabCase = (s) => s.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase());\r\n\r\n for (const name in this.attributes) {\r\n const opts = this.attributes[name];\r\n const attrName = toKebabCase(name);\r\n\r\n let value = dmx.clone(opts.default);\r\n\r\n // static\r\n if (node.hasAttribute(attrName)) {\r\n if (opts.type === Boolean) {\r\n value = node.getAttribute(attrName) !== 'false';\r\n } else {\r\n value = node.getAttribute(attrName);\r\n\r\n if (opts.type === Number) {\r\n // Only set number is a valid number is given\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n }\r\n }\r\n\r\n if (opts.type === Object || opts.type === Array) {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (err) {\r\n console.warn('Invalid attribute value, expected a JSON string got ' + value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n //opts.default = value;\r\n }\r\n\r\n // dynamic\r\n if (node.hasAttribute('dmx-bind:' + attrName)) {\r\n const expression = node.getAttribute('dmx-bind:' + attrName);\r\n\r\n this.$watch(expression, (value) => {\r\n if (value === undefined) {\r\n value = dmx.clone(opts.default);\r\n } else if (opts.type === Boolean) {\r\n value = !!value;\r\n } else {\r\n if (value != null) {\r\n if (opts.type === Number) {\r\n if (typeof value === 'string') {\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n } else {\r\n value = dmx.clone(opts.default);\r\n }\r\n } else if (typeof value !== 'number' || !isFinite(Number(value))) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n if (opts.type === String) {\r\n value = String(value);\r\n }\r\n\r\n if (opts.type === Object && typeof value !== 'object') {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.type === Array) {\r\n value = Array.from(value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n });\r\n } else {\r\n this.props[name] = value;\r\n }\r\n }\r\n\r\n for (const event in this.events) {\r\n if (node.hasAttribute('on' + event)) {\r\n this.__disposables.push(dmx.eventListener(this, event, Function('event', node.getAttribute('on' + event)), {}));\r\n }\r\n }\r\n\r\n dmx.dom.getAttributes(node).forEach((attr) => {\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n this.__disposables.push(dmx.eventListener(\r\n this,\r\n attr.argument,\r\n (event) => {\r\n if (event.originalEvent) {\r\n event = event.originalEvent;\r\n }\r\n\r\n var returnValue = dmx.parse(\r\n attr.value,\r\n dmx.DataScope(\r\n {\r\n $event: event.$data,\r\n $originalEvent: event,\r\n },\r\n this\r\n )\r\n );\r\n\r\n return returnValue;\r\n },\r\n attr.modifiers\r\n ));\r\n }\r\n });\r\n },\r\n\r\n requestUpdate: function (prop, oldValue) {\r\n //console.log(`request Update ${this.name} (${prop}: ${oldValue} => ${this.prop})`);\r\n if (!this.performUpdate) return;\r\n\r\n if (!this.updatedProps.has(prop)) {\r\n this.updatedProps.set(prop, oldValue);\r\n }\r\n\r\n if (!this.updateRequested) {\r\n //console.log('queue Microtask', this.name, this.updateRequested);\r\n //queueMicrotask(() => {\r\n dmx.nextTick(() => {\r\n //console.log('exec Microtask', this.name, this.updateRequested);\r\n if (this.isDestroyed) return;\r\n this.updateRequested = false;\r\n this.performUpdate(this.updatedProps);\r\n this.updatedProps.clear();\r\n });\r\n }\r\n\r\n this.updateRequested = true;\r\n },\r\n\r\n $initialData: function () {\r\n Object.assign(\r\n this.data,\r\n { $type: this.type },\r\n typeof this.initialData == 'function' ? this.initialData() : this.initialData\r\n );\r\n\r\n Object.keys(this.methods).forEach(function (method) {\r\n var self = this;\r\n this.data['__' + method] = function () {\r\n return self.methods[method].apply(self, Array.prototype.slice.call(arguments, 1));\r\n };\r\n }, this);\r\n },\r\n\r\n // alias for $watch\r\n $addBinding: function (expression, cb) {\r\n this.$watch(expression, cb);\r\n },\r\n\r\n $watch: function (expression, cb) {\r\n const prop = this.__inChild ? '__childDisposables' : '__disposables';\r\n if (!this[prop]) this[prop] = [];\r\n let init = true;\r\n\r\n this[prop].push(\r\n dmx.effect(() => {\r\n if (init) {\r\n cb.call(this, this.parse(expression));\r\n init = false;\r\n } else {\r\n const value = this.parse(expression);\r\n queueMicrotask(() => cb.call(this, value));\r\n }\r\n })\r\n );\r\n },\r\n\r\n $destroy: function () {\r\n this.dispatchEvent('destroy');\r\n this.beforeDestroy();\r\n this.destroy();\r\n this.isDestroyed = true;\r\n if (this.parent && this.parent.$removeChild) {\r\n this.parent.$removeChild(this);\r\n }\r\n this.$destroyChildren();\r\n this.__disposables.forEach((dispose) => dispose());\r\n this.__disposables = [];\r\n if (this.$node) {\r\n this.$node.dmxComponent = null;\r\n this.$node = null;\r\n }\r\n this.parent = null;\r\n this.data = {};\r\n this.destroyed();\r\n },\r\n\r\n $destroyChildren: function () {\r\n Array.from(this.children).forEach((child) => {\r\n child.$destroy();\r\n });\r\n this.children = [];\r\n\r\n this.__childDisposables.forEach((dispose) => dispose());\r\n this.__childDisposables = [];\r\n },\r\n\r\n get: function (name, ignoreParents) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent && ignoreParents !== true) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n add: function (name, value) {\r\n if (this.data[name]) {\r\n if (Array.isArray(this.data[name])) {\r\n this.data[name].push(value);\r\n } else {\r\n this.data[name] = [this.data[name], value];\r\n }\r\n } else {\r\n this.set(name, value);\r\n }\r\n },\r\n\r\n set: function (name, value) {\r\n if (typeof name == 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n },\r\n\r\n del: function (name) {\r\n delete this.data[name];\r\n },\r\n});\r\n","(function() {\r\n\r\n/**\r\n * Expose `pathToRegexp`.\r\n */\r\ndmx.pathToRegexp = pathToRegexp\r\ndmx.pathToRegexp.parse = parse\r\ndmx.pathToRegexp.compile = compile\r\ndmx.pathToRegexp.tokensToFunction = tokensToFunction\r\ndmx.pathToRegexp.tokensToRegExp = tokensToRegExp\r\n\r\n/**\r\n * Default configs.\r\n */\r\nvar DEFAULT_DELIMITER = '/'\r\n\r\n/**\r\n * The main path matching regexp utility.\r\n *\r\n * @type {RegExp}\r\n */\r\nvar PATH_REGEXP = new RegExp([\r\n // Match escaped characters that would otherwise appear in future matches.\r\n // This allows the user to escape special characters that won't transform.\r\n '(\\\\\\\\.)',\r\n // Match Express-style parameters and un-named parameters with a prefix\r\n // and optional suffixes. Matches appear as:\r\n //\r\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\r\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\r\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\r\n].join('|'), 'g')\r\n\r\n/**\r\n * Parse a string for the raw tokens.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!Array}\r\n */\r\nfunction parse (str, options) {\r\n var tokens = []\r\n var key = 0\r\n var index = 0\r\n var path = ''\r\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\r\n var whitelist = (options && options.whitelist) || undefined\r\n var pathEscaped = false\r\n var res\r\n\r\n while ((res = PATH_REGEXP.exec(str)) !== null) {\r\n var m = res[0]\r\n var escaped = res[1]\r\n var offset = res.index\r\n path += str.slice(index, offset)\r\n index = offset + m.length\r\n\r\n // Ignore already escaped sequences.\r\n if (escaped) {\r\n path += escaped[1]\r\n pathEscaped = true\r\n continue\r\n }\r\n\r\n var prev = ''\r\n var name = res[2]\r\n var capture = res[3]\r\n var group = res[4]\r\n var modifier = res[5]\r\n\r\n if (!pathEscaped && path.length) {\r\n var k = path.length - 1\r\n var c = path[k]\r\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\r\n\r\n if (matches) {\r\n prev = c\r\n path = path.slice(0, k)\r\n }\r\n }\r\n\r\n // Push the current path onto the tokens.\r\n if (path) {\r\n tokens.push(path)\r\n path = ''\r\n pathEscaped = false\r\n }\r\n\r\n var repeat = modifier === '+' || modifier === '*'\r\n var optional = modifier === '?' || modifier === '*'\r\n var pattern = capture || group\r\n var delimiter = prev || defaultDelimiter\r\n\r\n tokens.push({\r\n name: name || key++,\r\n prefix: prev,\r\n delimiter: delimiter,\r\n optional: optional,\r\n repeat: repeat,\r\n pattern: pattern\r\n ? escapeGroup(pattern)\r\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\r\n })\r\n }\r\n\r\n // Push any remaining characters.\r\n if (path || index < str.length) {\r\n tokens.push(path + str.substr(index))\r\n }\r\n\r\n return tokens\r\n}\r\n\r\n/**\r\n * Compile a string to a template function for the path.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!function(Object=, Object=)}\r\n */\r\nfunction compile (str, options) {\r\n return tokensToFunction(parse(str, options))\r\n}\r\n\r\n/**\r\n * Expose a method for transforming tokens into the path function.\r\n */\r\nfunction tokensToFunction (tokens) {\r\n // Compile all the tokens into regexps.\r\n var matches = new Array(tokens.length)\r\n\r\n // Compile all the patterns before compilation.\r\n for (var i = 0; i < tokens.length; i++) {\r\n if (typeof tokens[i] === 'object') {\r\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\r\n }\r\n }\r\n\r\n return function (data, options) {\r\n var path = ''\r\n var encode = (options && options.encode) || encodeURIComponent\r\n\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n path += token\r\n continue\r\n }\r\n\r\n var value = data ? data[token.name] : undefined\r\n var segment\r\n\r\n if (Array.isArray(value)) {\r\n if (!token.repeat) {\r\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\r\n }\r\n\r\n if (value.length === 0) {\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\r\n }\r\n\r\n for (var j = 0; j < value.length; j++) {\r\n segment = encode(value[j], token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\r\n }\r\n\r\n path += (j === 0 ? token.prefix : token.delimiter) + segment\r\n }\r\n\r\n continue\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n segment = encode(String(value), token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\r\n }\r\n\r\n path += token.prefix + segment\r\n continue\r\n }\r\n\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\r\n }\r\n\r\n return path\r\n }\r\n}\r\n\r\n/**\r\n * Escape a regular expression string.\r\n *\r\n * @param {string} str\r\n * @return {string}\r\n */\r\nfunction escapeString (str) {\r\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Escape the capturing group by escaping special characters and meaning.\r\n *\r\n * @param {string} group\r\n * @return {string}\r\n */\r\nfunction escapeGroup (group) {\r\n return group.replace(/([=!:$/()])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Get the flags for a regexp from the options.\r\n *\r\n * @param {Object} options\r\n * @return {string}\r\n */\r\nfunction flags (options) {\r\n return options && options.sensitive ? '' : 'i'\r\n}\r\n\r\n/**\r\n * Pull out keys from a regexp.\r\n *\r\n * @param {!RegExp} path\r\n * @param {Array=} keys\r\n * @return {!RegExp}\r\n */\r\nfunction regexpToRegexp (path, keys) {\r\n if (!keys) return path\r\n\r\n // Use a negative lookahead to match only capturing groups.\r\n var groups = path.source.match(/\\((?!\\?)/g)\r\n\r\n if (groups) {\r\n for (var i = 0; i < groups.length; i++) {\r\n keys.push({\r\n name: i,\r\n prefix: null,\r\n delimiter: null,\r\n optional: false,\r\n repeat: false,\r\n pattern: null\r\n })\r\n }\r\n }\r\n\r\n return path\r\n}\r\n\r\n/**\r\n * Transform an array into a regexp.\r\n *\r\n * @param {!Array} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction arrayToRegexp (path, keys, options) {\r\n var parts = []\r\n\r\n for (var i = 0; i < path.length; i++) {\r\n parts.push(pathToRegexp(path[i], keys, options).source)\r\n }\r\n\r\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\r\n}\r\n\r\n/**\r\n * Create a path regexp from string input.\r\n *\r\n * @param {string} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction stringToRegexp (path, keys, options) {\r\n return tokensToRegExp(parse(path, options), keys, options)\r\n}\r\n\r\n/**\r\n * Expose a function for taking tokens and returning a RegExp.\r\n *\r\n * @param {!Array} tokens\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction tokensToRegExp (tokens, keys, options) {\r\n options = options || {}\r\n\r\n var strict = options.strict\r\n var start = options.start !== false\r\n var end = options.end !== false\r\n var delimiter = options.delimiter || DEFAULT_DELIMITER\r\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\r\n var route = start ? '^' : ''\r\n\r\n // Iterate over the tokens and create our regexp string.\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n route += escapeString(token)\r\n } else {\r\n var capture = token.repeat\r\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\r\n : token.pattern\r\n\r\n if (keys) keys.push(token)\r\n\r\n if (token.optional) {\r\n if (!token.prefix) {\r\n route += '(' + capture + ')?'\r\n } else {\r\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\r\n }\r\n } else {\r\n route += escapeString(token.prefix) + '(' + capture + ')'\r\n }\r\n }\r\n }\r\n\r\n if (end) {\r\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\r\n\r\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\r\n } else {\r\n var endToken = tokens[tokens.length - 1]\r\n var isEndDelimited = typeof endToken === 'string'\r\n ? endToken[endToken.length - 1] === delimiter\r\n : endToken === undefined\r\n\r\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\r\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\r\n }\r\n\r\n return new RegExp(route, flags(options))\r\n}\r\n\r\n/**\r\n * Normalize the given path string, returning a regular expression.\r\n *\r\n * An empty array can be passed in for the keys, which will hold the\r\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\r\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\r\n *\r\n * @param {(string|RegExp|Array)} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction pathToRegexp (path, keys, options) {\r\n if (path instanceof RegExp) {\r\n return regexpToRegexp(path, keys)\r\n }\r\n\r\n if (Array.isArray(path)) {\r\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\r\n }\r\n\r\n return stringToRegexp(/** @type {string} */ (path), keys, options)\r\n}\r\n\r\n})();\r\n","if (!window.Hjson) {\r\n window.Hjson = {};\r\n\r\n Hjson.parse = function(source) {\r\n // only parse, stripped dsf and comment support\r\n\r\n var text;\r\n var at; // The index of the current character\r\n var ch; // The current character\r\n var escapee = {\r\n '\"': '\"',\r\n \"'\": \"'\",\r\n '\\\\': '\\\\',\r\n '/': '/',\r\n b: '\\b',\r\n f: '\\f',\r\n n: '\\n',\r\n r: '\\r',\r\n t: '\\t'\r\n };\r\n\r\n function resetAt() {\r\n at = 0;\r\n ch = ' ';\r\n }\r\n\r\n function isPunctuatorChar(c) {\r\n return c === '{' || c === '}' || c === '[' || c === ']' || c === ',' || c === ':';\r\n }\r\n\r\n // Call error when something is wrong.\r\n function error(m) {\r\n var i, col=0, line=1;\r\n for (i = at-1; i > 0 && text[i] !== '\\n'; i--, col++) {}\r\n for (; i > 0; i--) if (text[i] === '\\n') line++;\r\n throw new Error(m + \" at line \" + line + \",\" + col + \" >>>\" + text.substr(at-col, 20) + \" ...\");\r\n }\r\n\r\n function next() {\r\n // get the next character.\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n\r\n function peek(offs) {\r\n // range check is not required\r\n return text.charAt(at + offs);\r\n }\r\n\r\n function string(allowML) {\r\n // Parse a string value.\r\n // callers make sure that (ch === '\"' || ch === \"'\")\r\n var string = '';\r\n\r\n // When parsing for string values, we must look for \"/' and \\ characters.\r\n var exitCh = ch;\r\n while (next()) {\r\n if (ch === exitCh) {\r\n next();\r\n if (allowML && exitCh === \"'\" && ch === \"'\" && string.length === 0) {\r\n // ''' indicates a multiline string\r\n next();\r\n return mlString();\r\n } else return string;\r\n }\r\n if (ch === '\\\\') {\r\n next();\r\n if (ch === 'u') {\r\n var uffff = 0;\r\n for (var i = 0; i < 4; i++) {\r\n next();\r\n var c = ch.charCodeAt(0), hex;\r\n if (ch >= '0' && ch <= '9') hex = c - 48;\r\n else if (ch >= 'a' && ch <= 'f') hex = c - 97 + 0xa;\r\n else if (ch >= 'A' && ch <= 'F') hex = c - 65 + 0xa;\r\n else error(\"Bad \\\\u char \" + ch);\r\n uffff = uffff * 16 + hex;\r\n }\r\n string += String.fromCharCode(uffff);\r\n } else if (typeof escapee[ch] === 'string') {\r\n string += escapee[ch];\r\n } else break;\r\n } else if (ch === '\\n' || ch === '\\r') {\r\n error(\"Bad string containing newline\");\r\n } else {\r\n string += ch;\r\n }\r\n }\r\n error(\"Bad string\");\r\n }\r\n\r\n function mlString() {\r\n // Parse a multiline string value.\r\n var string = '', triple = 0;\r\n\r\n // we are at ''' +1 - get indent\r\n var indent = 0;\r\n for (;;) {\r\n var c=peek(-indent-5);\r\n if (!c || c === '\\n') break;\r\n indent++;\r\n }\r\n\r\n function skipIndent() {\r\n var skip = indent;\r\n while (ch && ch <= ' ' && ch !== '\\n' && skip-- > 0) next();\r\n }\r\n\r\n // skip white/to (newline)\r\n while (ch && ch <= ' ' && ch !== '\\n') next();\r\n if (ch === '\\n') { next(); skipIndent(); }\r\n\r\n // When parsing multiline string values, we must look for ' characters.\r\n for (;;) {\r\n if (!ch) {\r\n error(\"Bad multiline string\");\r\n } else if (ch === '\\'') {\r\n triple++;\r\n next();\r\n if (triple === 3) {\r\n if (string.slice(-1) === '\\n') string=string.slice(0, -1); // remove last EOL\r\n return string;\r\n } else continue;\r\n } else {\r\n while (triple > 0) {\r\n string += '\\'';\r\n triple--;\r\n }\r\n }\r\n if (ch === '\\n') {\r\n string += '\\n';\r\n next();\r\n skipIndent();\r\n } else {\r\n if (ch !== '\\r') string += ch;\r\n next();\r\n }\r\n }\r\n }\r\n\r\n function keyname() {\r\n // quotes for keys are optional in Hjson\r\n // unless they include {}[],: or whitespace.\r\n\r\n if (ch === '\"' || ch === \"'\") return string(false);\r\n\r\n var name = \"\", start = at, space = -1;\r\n for (;;) {\r\n if (ch === ':') {\r\n if (!name) error(\"Found ':' but no key name (for an empty key name use quotes)\");\r\n else if (space >=0 && space !== name.length) { at = start + space; error(\"Found whitespace in your key name (use quotes to include)\"); }\r\n return name;\r\n } else if (ch <= ' ') {\r\n if (!ch) error(\"Found EOF while looking for a key name (check your syntax)\");\r\n else if (space < 0) space = name.length;\r\n } else if (isPunctuatorChar(ch)) {\r\n error(\"Found '\" + ch + \"' where a key name was expected (check your syntax or use quotes if the key name includes {}[],: or whitespace)\");\r\n } else {\r\n name += ch;\r\n }\r\n next();\r\n }\r\n }\r\n\r\n function white() {\r\n while (ch) {\r\n // Skip whitespace.\r\n while (ch && ch <= ' ') next();\r\n // Hjson allows comments\r\n if (ch === '#' || ch === '/' && peek(0) === '/') {\r\n while (ch && ch !== '\\n') next();\r\n } else if (ch === '/' && peek(0) === '*') {\r\n next(); next();\r\n while (ch && !(ch === '*' && peek(0) === '/')) next();\r\n if (ch) { next(); next(); }\r\n } else break;\r\n }\r\n }\r\n\r\n function tfnns() {\r\n // Hjson strings can be quoteless\r\n // returns string, true, false, or null.\r\n var value = ch;\r\n if (isPunctuatorChar(ch))\r\n error(\"Found a punctuator character '\" + ch + \"' when expecting a quoteless string (check your syntax)\");\r\n\r\n for(;;) {\r\n next();\r\n // (detection of ml strings was moved to string())\r\n var isEol = ch === '\\r' || ch === '\\n' || ch === '';\r\n if (isEol ||\r\n ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' ||\r\n ch === '/' && (peek(0) === '/' || peek(0) === '*')\r\n ) {\r\n // this tests for the case of {true|false|null|num}\r\n // followed by { ',' | '}' | ']' | '#' | '//' | '/*' }\r\n // which needs to be parsed as the specified value\r\n var chf = value[0];\r\n switch (chf) {\r\n case 'f': if (value.trim() === \"false\") return false; break;\r\n case 'n': if (value.trim() === \"null\") return null; break;\r\n case 't': if (value.trim() === \"true\") return true; break;\r\n default:\r\n if (chf === '-' || chf >= '0' && chf <= '9') {\r\n var n = tryParseNumber(value);\r\n if (n !== undefined) return n;\r\n }\r\n }\r\n if (isEol) {\r\n // remove any whitespace at the end (ignored in quoteless strings)\r\n return value.trim();\r\n }\r\n }\r\n value += ch;\r\n }\r\n }\r\n\r\n function tryParseNumber(text, stopAtNext) {\r\n // try to parse a number\r\n \r\n var number, string = '', leadingZeros = 0, testLeading = true;\r\n var at = 0;\r\n var ch;\r\n function next() {\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n \r\n next();\r\n if (ch === '-') {\r\n string = '-';\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n if (testLeading) {\r\n if (ch == '0') leadingZeros++;\r\n else testLeading = false;\r\n }\r\n string += ch;\r\n next();\r\n }\r\n if (testLeading) leadingZeros--; // single 0 is allowed\r\n if (ch === '.') {\r\n string += '.';\r\n while (next() && ch >= '0' && ch <= '9')\r\n string += ch;\r\n }\r\n if (ch === 'e' || ch === 'E') {\r\n string += ch;\r\n next();\r\n if (ch === '-' || ch === '+') {\r\n string += ch;\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n string += ch;\r\n next();\r\n }\r\n }\r\n \r\n // skip white/to (newline)\r\n while (ch && ch <= ' ') next();\r\n \r\n if (stopAtNext) {\r\n // end scan if we find a punctuator character like ,}] or a comment\r\n if (ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' || ch === '/' && (text[at] === '/' || text[at] === '*')) ch = 0;\r\n }\r\n \r\n number = +string;\r\n if (ch || leadingZeros || !isFinite(number)) return undefined;\r\n else return number;\r\n }\r\n \r\n function errorClosingHint(value) {\r\n function search(value, ch) {\r\n var i, k, length, res;\r\n switch (typeof value) {\r\n case 'string':\r\n if (value.indexOf(ch) >= 0) res = value;\r\n break;\r\n case 'object':\r\n if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n for (i = 0, length = value.length; i < length; i++) {\r\n res=search(value[i], ch) || res;\r\n }\r\n } else {\r\n for (k in value) {\r\n if (!Object.prototype.hasOwnProperty.call(value, k)) continue;\r\n res=search(value[k], ch) || res;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n function report(ch) {\r\n var possibleErr=search(value, ch);\r\n if (possibleErr) {\r\n return \"found '\"+ch+\"' in a string value, your mistake could be with:\\n\"+\r\n \" > \"+possibleErr+\"\\n\"+\r\n \" (unquoted strings contain everything up to the next line!)\";\r\n } else return \"\";\r\n }\r\n \r\n return report('}') || report(']');\r\n }\r\n\r\n function array() {\r\n // Parse an array value.\r\n // assuming ch === '['\r\n \r\n var array = [];\r\n try {\r\n next();\r\n white();\r\n if (ch === ']') {\r\n next();\r\n return array; // empty array\r\n }\r\n \r\n while (ch) {\r\n array.push(value());\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === ']') {\r\n next();\r\n return array;\r\n }\r\n white();\r\n }\r\n \r\n error(\"End of input while parsing an array (missing ']')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(array);\r\n throw e;\r\n }\r\n }\r\n\r\n function object(withoutBraces) {\r\n // Parse an object value.\r\n \r\n var key = \"\", object = {};\r\n \r\n try {\r\n if (!withoutBraces) {\r\n // assuming ch === '{'\r\n next();\r\n }\r\n\r\n white();\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object; // empty object\r\n }\r\n while (ch) {\r\n key = keyname();\r\n white();\r\n if (ch !== ':') error(\"Expected ':' instead of '\" + ch + \"'\");\r\n next();\r\n // duplicate keys overwrite the previous value\r\n object[key] = value();\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object;\r\n }\r\n white();\r\n }\r\n \r\n if (withoutBraces) return object;\r\n else error(\"End of input while parsing an object (missing '}')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(object);\r\n throw e;\r\n }\r\n }\r\n\r\n function value() {\r\n // Parse a Hjson value. It could be an object, an array, a string, a number or a word.\r\n \r\n white();\r\n switch (ch) {\r\n case '{': return object();\r\n case '[': return array();\r\n case \"'\":\r\n case '\"': return string(true);\r\n default: return tfnns();\r\n }\r\n }\r\n\r\n function checkTrailing(v) {\r\n white();\r\n if (ch) error(\"Syntax error, found trailing characters\");\r\n return v;\r\n }\r\n\r\n function rootValue() {\r\n white();\r\n switch (ch) {\r\n case '{': return checkTrailing(object());\r\n case '[': return checkTrailing(array());\r\n default: return checkTrailing(value());\r\n }\r\n }\r\n\r\n if (typeof source!==\"string\") throw new Error(\"source is not a string\");\r\n text = source;\r\n resetAt();\r\n return rootValue();\r\n };\r\n}","dmx.Flow = dmx.createClass({\r\n constructor: function (parent) {\r\n if (!(this instanceof dmx.Flow)) {\r\n return new dmx.Flow(parent);\r\n }\r\n\r\n if (!window.Promise) {\r\n console.warn('Promises are not supported, flows can not be used');\r\n }\r\n\r\n this._execStep = this._execStep.bind(this);\r\n\r\n this.scope = new dmx.DataScope({}, parent);\r\n this.output = {};\r\n },\r\n\r\n run: function (flow) {\r\n this.output = {};\r\n\r\n return this._exec(flow.exec || flow).then(() => {\r\n if (dmx.debug) {\r\n console.debug('finished', this.output);\r\n }\r\n return this.output;\r\n });\r\n },\r\n\r\n _each: function (arr, fn) {\r\n return Promise.resolve(arr).then((arr) => {\r\n arr = Array.isArray(arr) ? arr : [arr];\r\n\r\n return arr\r\n .reduce((prev, curr, i) => {\r\n return prev.then(() => {\r\n return fn(curr, i, arr.length).then((result) => {\r\n if (result) {\r\n arr[i] = result;\r\n }\r\n });\r\n });\r\n }, Promise.resolve())\r\n .then(() => {\r\n return arr;\r\n });\r\n });\r\n },\r\n\r\n _exec: function (flow) {\r\n if (flow.steps) {\r\n var promise = this._each(flow.steps, this._execStep);\r\n\r\n if (flow.catch) {\r\n promise.catch((err) => {\r\n return this._each(flow.catch, self._execStep);\r\n });\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n return this._each(flow, this._execStep);\r\n },\r\n\r\n _execStep: function (step) {\r\n for (let name in step) {\r\n if (step.hasOwnProperty(name) && dmx.__actions[name]) {\r\n const action = dmx.__actions[name].bind(this);\r\n const options = step[name];\r\n const timerName = name + Date.now();\r\n\r\n if (dmx.debug) {\r\n console.debug('exec action', name, options);\r\n console.time(timerName);\r\n }\r\n\r\n if (options.disabled) {\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.resolve(action(options)).then((output) => {\r\n if (dmx.debug) {\r\n console.debug('finished exec action', name, options);\r\n console.timeEnd(timerName);\r\n }\r\n\r\n if (options.name) {\r\n if (dmx.debug) {\r\n console.debug('set data', options.name, output);\r\n }\r\n\r\n this.scope.set(options.name, output);\r\n\r\n if (options.output) {\r\n if (dmx.debug) {\r\n console.debug('set output', options.name, output);\r\n }\r\n this.output[options.name] = output;\r\n }\r\n }\r\n });\r\n } else {\r\n throw new Error('Action ' + name + ' was not found.');\r\n }\r\n }\r\n },\r\n\r\n parse: function (value) {\r\n if (value == null) return value;\r\n\r\n value = value.valueOf();\r\n\r\n if (typeof value == 'object') {\r\n var obj = value.slice ? [] : {};\r\n\r\n for (var key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n obj[key] = this.parse(value[key], this.scope);\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n if (typeof value == 'string' && value.indexOf('{{') != -1) {\r\n return dmx.parse(value, this.scope);\r\n }\r\n\r\n return value;\r\n },\r\n});\r\n\r\ndmx.Flow.run = function (flow, data) {\r\n var instance = new dmx.Flow(data);\r\n return instance.run(flow);\r\n};\r\n","dmx.Component(\"app\", {\r\n\r\n initialData: {\r\n query: {},\r\n },\r\n\r\n events: {\r\n ready: Event,\r\n load: Event,\r\n },\r\n\r\n init () {\r\n this.dispatchLoad = this.dispatchEvent.bind(this, \"load\");\r\n this._parseQuery = this._parseQuery.bind(this);\r\n\r\n // is this remove needed?\r\n window.addEventListener(\"load\", this.dispatchLoad, { once: true });\r\n window.addEventListener(\"load\", this._parseQuery);\r\n window.addEventListener(\"popstate\", this._parseQuery);\r\n window.addEventListener(\"pushstate\", this._parseQuery);\r\n window.addEventListener(\"replacestate\", this._parseQuery);\r\n\r\n this._parseQuery();\r\n\r\n queueMicrotask(() => this.dispatchEvent(\"ready\"));\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener(\"load\", this.dispatchLoad);\r\n window.removeEventListener(\"load\", this._parseQuery);\r\n window.removeEventListener(\"popstate\", this._parseQuery);\r\n window.removeEventListener(\"pushstate\", this._parseQuery);\r\n window.removeEventListener(\"replacestate\", this._parseQuery);\r\n },\r\n\r\n _parseQuery () {\r\n let querystring = \"\";\r\n\r\n if (window.location.search) {\r\n querystring = window.location.search.slice(1);\r\n } else if (window.location.hash.indexOf(\"?\")) {\r\n querystring = window.location.hash.slice(\r\n window.location.hash.indexOf(\"?\") + 1\r\n );\r\n if (querystring.indexOf(\"#\") > 0) {\r\n querystring = querystring.slice(0, querystring.indexOf(\"#\"));\r\n }\r\n }\r\n\r\n let query = querystring.split(\"&\").reduce(function (query, part) {\r\n var p = part.replace(/\\+/g, \" \").split(\"=\");\r\n if (p[0]) {\r\n query[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || \"\");\r\n }\r\n return query;\r\n }, {});\r\n\r\n let base = document.querySelector('meta[name=\"ac:base\"]');\r\n let route = document.querySelector('meta[name=\"ac:route\"]');\r\n if (route && route.content) {\r\n let keys = [];\r\n let path = route.content;\r\n\r\n if (base && base.content) {\r\n path = base.content.replace(/\\/$/, \"\") + path;\r\n }\r\n\r\n let re = dmx.pathToRegexp(path, keys, { end: false });\r\n let match = re.exec(decodeURI(window.location.pathname));\r\n\r\n if (match) {\r\n keys.forEach(function (key, index) {\r\n query[key.name] = match[index + 1];\r\n });\r\n }\r\n }\r\n\r\n this.set(\"query\", query);\r\n },\r\n\r\n});\r\n","dmx.Component('form', {\r\n\r\n attributes: {\r\n novalidate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n methods: {\r\n submit (direct) {\r\n this._submit(direct);\r\n },\r\n\r\n reset () {\r\n this._reset();\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n invalid: Event,\r\n submit: Event,\r\n },\r\n\r\n init (node) {\r\n this._submitHandler = this._submitHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n\r\n node.noValidate = true;\r\n node.addEventListener('submit', this._submitHandler);\r\n node.addEventListener('reset', this._resetHandler);\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('submit', this._submitHandler);\r\n this.$node.removeEventListener('reset', this._resetHandler);\r\n },\r\n\r\n _submitHandler (event) {\r\n event.preventDefault();\r\n this._submit();\r\n },\r\n\r\n _resetHandler (event) {\r\n // remove this when validation is rewritten\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n },\r\n\r\n _submit (direct) {\r\n if (direct) {\r\n return this._formSubmit();\r\n }\r\n\r\n if (this.props.novalidate || this._validate()) {\r\n if (this.dispatchEvent('submit', { cancelable: true })) {\r\n this._formSubmit();\r\n }\r\n } else {\r\n this.dispatchEvent('invalid');\r\n this._focusFirstInvalid();\r\n }\r\n },\r\n\r\n _reset () {\r\n this._formReset();\r\n },\r\n\r\n _validate () {\r\n if (dmx.validate) return dmx.validate(this.$node);\r\n Array.from(this.$node.elements).forEach(node => node.dirty = true);\r\n return this.$node.checkValidity();\r\n },\r\n\r\n _formSubmit () {\r\n HTMLFormElement.prototype.submit.call(this.$node);\r\n },\r\n\r\n _formReset () {\r\n HTMLFormElement.prototype.reset.call(this.$node);\r\n },\r\n\r\n _focusFirstInvalid () {\r\n const elm = Array.from(this.$node.elements).find(elm => !elm.validity.valid);\r\n if (elm) elm.focus();\r\n },\r\n\r\n _parseJsonForm () {\r\n const result = {};\r\n\r\n for (const element of this.$node.elements) {\r\n if (element.name && !element.disabled) {\r\n const steps = parseSteps(element.name.replace(/\\[\\]$/, \"\"));\r\n let context = result;\r\n\r\n for (const step of steps) {\r\n const type = element.type;\r\n\r\n if (type == \"number\") {\r\n if (element.value) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n +element.value\r\n );\r\n }\r\n } else if (type == \"radio\" || type == \"checkbox\") {\r\n if (element.getAttribute(\"value\")) {\r\n if (element.checked) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.value\r\n );\r\n }\r\n } else {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.checked\r\n );\r\n }\r\n } else if (type == \"select-multiple\") {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n Array.from(element.selectedOptions).map((opt) => opt.value)\r\n );\r\n } else {\r\n context = setValue(context, step, context[step.key], element.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n\r\n function parseSteps(name) {\r\n const steps = [],\r\n org = name;\r\n const re = /^\\[([^\\]]*)\\]/;\r\n const reNumeric = /^\\d+$/;\r\n\r\n name = name.replace(/^([^\\[]+)/, (m, p1) => {\r\n steps.push({ type: \"object\", key: p1 });\r\n return \"\";\r\n });\r\n\r\n if (!name) {\r\n steps[0].last = true;\r\n return steps;\r\n }\r\n\r\n while (name) {\r\n if (re.test(name)) {\r\n name = name.replace(re, (m, p1) => {\r\n if (!p1) {\r\n steps[steps.length - 1].append = true;\r\n } else if (reNumeric.test(p1)) {\r\n steps.push({ type: \"array\", key: +p1 });\r\n } else {\r\n steps.push({ type: \"object\", key: p1 });\r\n }\r\n\r\n return \"\";\r\n });\r\n\r\n continue;\r\n }\r\n\r\n return { type: \"object\", key: org, last: true };\r\n }\r\n\r\n for (let i = 0, n = steps.length; i < n; i++) {\r\n const step = steps[i];\r\n\r\n if (i + 1 < n) step.nextType = steps[i + 1].type;\r\n else step.last = true;\r\n }\r\n\r\n return steps;\r\n }\r\n\r\n function setValue(context, step, current, value) {\r\n if (step.last) {\r\n if (current === undefined) {\r\n context[step.key] = step.append ? [value] : value;\r\n } else if (Array.isArray(current)) {\r\n context[step.key].push(value);\r\n } else if (typeof current == \"object\") {\r\n return setValue(\r\n current,\r\n { type: \"object\", key: \"\", last: true },\r\n current[\"\"],\r\n value\r\n );\r\n } else {\r\n context[step.key] = [current, value];\r\n }\r\n\r\n return context;\r\n }\r\n\r\n if (current === undefined) {\r\n return (context[step.key] = step.nextType == \"array\" ? [] : {});\r\n } else if (Array.isArray(current)) {\r\n if (step.nextType == \"array\") return current;\r\n const obj = {};\r\n for (let i = 0, n = current.length; i < n; i++) {\r\n if (current[i] !== undefined) obj[i] = current[i];\r\n }\r\n return (context[step.key] = obj);\r\n } else if (typeof current == \"object\") {\r\n return context[step.key];\r\n }\r\n\r\n return (context[step.key] = { \"\": current });\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-element', {\r\n\r\n initialData: {\r\n disabled: false,\r\n focused: false,\r\n invalid: false,\r\n validationMessage: '',\r\n value: '',\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: '',\r\n alwaysUpdate: true,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n\r\n focus () {\r\n this._focus();\r\n },\r\n\r\n disable (disable) {\r\n this._disable(disable);\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n changed: Event,\r\n },\r\n\r\n init (node) {\r\n this._inputHandler = this._inputHandler.bind(this);\r\n this._changeHandler = this._changeHandler.bind(this);\r\n this._invalidHandler = this._invalidHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n this._focusHandler = this._focusHandler.bind(this);\r\n this._blurHandler = this._blurHandler.bind(this);\r\n\r\n node.value = this.props.value || '';\r\n node.defaultValue = node.value ;\r\n \r\n node.addEventListener('input', this._inputHandler);\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('invalid', this._invalidHandler);\r\n node.addEventListener('focus', this._focusHandler);\r\n node.addEventListener('blur', this._blurHandler);\r\n \r\n if (node.form) {\r\n this._form = node.form;\r\n this._form.addEventListener('reset', this._resetHandler);\r\n }\r\n\r\n if (this.props.disabled) {\r\n this._disable(this.props.disabled);\r\n }\r\n \r\n this.set('value', this.props.value);\r\n if (this.$node === document.activeElement) {\r\n this.set('focused', true);\r\n }\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('input', this._inputHandler);\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('invalid', this._invalidHandler);\r\n this.$node.removeEventListener('focus', this._focusHandler);\r\n this.$node.removeEventListener('blur', this._blurHandler);\r\n if (this._form) {\r\n this._form.removeEventListener('reset', this._resetHandler);\r\n this._form = null;\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this._disable(this.props.disabled);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n this.$node.value = value || '';\r\n if (defaultValue) this.$node.defaultValue = value || '';\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _focus () {\r\n this.$node.focus();\r\n },\r\n\r\n _disable (disable) {\r\n this.$node.disabled = disable;\r\n this.set('disabled', this.$node.disabled);\r\n },\r\n\r\n _validate () {\r\n dmx.validate(this.$node);\r\n\r\n if (this.$node.dirty) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n }\r\n },\r\n\r\n _inputHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _invalidHandler (event) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n },\r\n\r\n _resetHandler (event) {\r\n if (!this.$node) return;\r\n this.$node.dirty = false;\r\n this.set({\r\n invalid: false,\r\n validationMessage: '',\r\n });\r\n this._changeHandler(event);\r\n },\r\n\r\n _focusHandler (event) {\r\n this.set('focused', true);\r\n },\r\n\r\n _blurHandler (event) {\r\n this.set('focused', false);\r\n },\r\n\r\n});\r\n","dmx.Component('textarea', {\r\n\r\n extends: 'form-element',\r\n\r\n init (node) {\r\n if (!this.props.value) {\r\n const value = this.$node.value;\r\n this.props.value = value.includes('{{') ? this.parse(value) : value;\r\n }\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n});\r\n","dmx.Component('input', { extends: 'form-element' });\r\n","dmx.Component('input-file', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n file: null,\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n 'image/png': 'image/png',\r\n 'image/jpeg': 'image/jpeg',\r\n 'image/webp': 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n 'image/png': 'png',\r\n 'image/jpeg': 'jpg',\r\n 'image/webp': 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n \r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImage();\r\n }\r\n },\r\n\r\n _resizeImage () {\r\n const file = this.$node.files[0];\r\n\r\n if (file && file.type.startsWith('image/')) {\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n\r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n if (blob == null) {\r\n return console.error('Could not resize image!');\r\n }\r\n const container = new DataTransfer();\r\n const newName = file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[blob.type]);\r\n const newFile = new File([blob], newName, { type: blob.type });\r\n container.items.add(newFile);\r\n this.$node.files = container.files;\r\n this._updateData();\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n }\r\n };\r\n }\r\n },\r\n\r\n _updateData () {\r\n let data = null;\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n const file = this.$node.files[0];\r\n\r\n data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n get dataUrl () {\r\n if (!file._dataUrl) {\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n file._dataUrl = dataUrl;\r\n self.set('file', Object.assign({}, data, { dataUrl }));\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return null;\r\n },\r\n };\r\n }\r\n\r\n this.set('file', data);\r\n }\r\n\r\n});\r\n","dmx.Component('input-file-multiple', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n files: [],\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n 'image/png': 'image/png',\r\n 'image/jpeg': 'image/jpeg',\r\n 'image/webp': 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n 'image/png': 'png',\r\n 'image/jpeg': 'jpg',\r\n 'image/webp': 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n\r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImages();\r\n }\r\n },\r\n\r\n _resizeImages () {\r\n const files = Array.from(this.$node.files);\r\n\r\n Promise.all(files.map(file => {\r\n return new Promise(resolve => {\r\n if (!file.type.startsWith('image/')) {\r\n resolve(file);\r\n return;\r\n }\r\n\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n \r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n if (blob == null) {\r\n return console.error('Could not resize image!');\r\n }\r\n const newName = file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[blob.type]);\r\n const newFile = new File([blob], newName, { type: blob.type });\r\n resolve(newFile);\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n } else {\r\n resolve(file);\r\n }\r\n };\r\n });\r\n })).then(files => {\r\n const container = new DataTransfer();\r\n for (let file of files) {\r\n container.items.add(file);\r\n }\r\n this.$node.files = container.files;\r\n this._updateData();\r\n });\r\n },\r\n\r\n _updateData () {\r\n let files = [];\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n\r\n files = Array.from(this.$node.files).map((file, index) => {\r\n const data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n get dataUrl () {\r\n if (!file._dataUrl) {\r\n loading = true;\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n file._dataUrl = dataUrl;\r\n files = dmx.clone(files);\r\n files[index].dataUrl = dataUrl;\r\n self.set('files', files);\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return null;\r\n },\r\n };\r\n\r\n return data;\r\n });\r\n }\r\n\r\n this.set('files', files);\r\n },\r\n\r\n});\r\n","dmx.Component('button', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n type: {\r\n type: String,\r\n default: 'button',\r\n enum: ['button', 'reset', 'submit'],\r\n },\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n \r\n node.type = this.props.type;\r\n },\r\n\r\n});\r\n","dmx.Component('radio', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check, triggerEvent) {\r\n this._select(check);\r\n if (triggerEvent) {\r\n dmx.nextTick(() => {\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n });\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'radio';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('radio', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n\r\n // trigger change on other radios with the same name and current form\r\n if (this.$node.checked && this.$node.form) {\r\n for (const elem of this.$node.form.elements) {\r\n if (elem == this.$node) continue;\r\n if (elem.type == 'radio' && elem.name == this.$node.name) {\r\n elem.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n }\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('radio-group', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('radio', this._changeHandler);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n for (let mutation of mutationList) {\r\n if (mutation.type == 'attributes' && mutation.attributeName == 'value') {\r\n if (mutation.target.tagName === 'INPUT' && mutation.target.type === 'radio') {\r\n mutation.target.checked = mutation.target.value == value;\r\n mutation.target.defaultChecked = mutation.target.checked;\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n }\r\n }\r\n\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'radio') {\r\n node.checked = node.value == value;\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=radio]').forEach(checkbox => {\r\n checkbox.checked = node.value == value;\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n \r\n this._mutationObserver.observe(node, { subtree: true, childList: true, attributes: true, attributeFilter: ['value'] });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('radio', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value != null) {\r\n value = value.toString();\r\n \r\n this._radios().forEach(radio => {\r\n radio.checked = radio.value == value;\r\n if (defaultValue) radio.defaultChecked = radio.checked;\r\n });\r\n\r\n this._updateValue();\r\n }\r\n },\r\n\r\n _updateValue () {\r\n const value = this._radios().filter(radio => !radio.disabled && radio.checked).map(radio => radio.value);\r\n\r\n if (!dmx.equal(this.data.value, value[0])) {\r\n this.set('value', value[0] || null);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _radios () {\r\n return Array.from(this.$node.querySelectorAll('input[type=radio]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('checkbox', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check, triggerEvent) {\r\n this._select(check);\r\n if (triggerEvent) {\r\n dmx.nextTick(() => {\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n });\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'checkbox';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('checkbox', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n if (event.type != 'reset') {\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n }\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('checkbox-group', {\r\n\r\n initialData: {\r\n value: [],\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: [],\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n for (let mutation of mutationList) {\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'checkbox') {\r\n node.checked = value.includes(node.value);\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=checkbox]').forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n this._mutationObserver.observe(node, { subtree: true, childList: true });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n this._checkboxes().forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n if (defaultValue) checkbox.defaultChecked = checkbox.checked;\r\n });\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const value = this._checkboxes().filter(checkbox => !checkbox.disabled && checkbox.checked).map(checkbox => checkbox.value);\r\n\r\n if (!dmx.equal(this.data.value, value)) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _checkboxes () {\r\n return Array.from(this.$node.querySelectorAll('input[type=checkbox]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('select', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n selectedIndex: -1,\r\n selectedValue: '',\r\n selectedText: '',\r\n },\r\n\r\n attributes: {\r\n options: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n optiontext: {\r\n type: String,\r\n default: '$value',\r\n },\r\n\r\n optionvalue: {\r\n type: String,\r\n default: '$value',\r\n },\r\n },\r\n\r\n methods: {\r\n setSelectedIndex (index) {\r\n this.$node.selectedIndex = index;\r\n this._updateValue();\r\n },\r\n },\r\n\r\n init (node) {\r\n this._options = [];\r\n\r\n if (!this.props.value) {\r\n this.props.value = this.$node.value;\r\n this._updateValue();\r\n }\r\n\r\n this._mutationObserver = new MutationObserver((a) => {\r\n if (!this._updatingOptions) {\r\n this._updateValue();\r\n }\r\n });\r\n this._mutationObserver.observe(this.$node, { subtree: true, childList: true });\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n this._renderOptions();\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', (option.value == value));\r\n option.selected = (option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n this._updateValue();\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n dmx.Component('form-element').prototype.destroy.call(this);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('options') || updatedProps.has('optiontext') || updatedProps.has('optionvalue')) {\r\n this._renderOptions();\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n \r\n if (defaultValue) {\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n } else {\r\n const selectedIndex = Array.from(this.$node.options).findIndex(option => option.value == value);\r\n this.$node.selectedIndex = selectedIndex;\r\n }\r\n\r\n this._updateValue();\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _updateValue () {\r\n const selectedIndex = this.$node.selectedIndex;\r\n const selected = this.$node.options[selectedIndex] || { value: '', text: '' };\r\n\r\n this.set({\r\n selectedIndex: selectedIndex,\r\n selectedValue: selected.value,\r\n selectedText: selected.text,\r\n value: selected.value,\r\n });\r\n },\r\n\r\n _renderOptions () {\r\n this._options.forEach(option => option.remove());\r\n this._options = [];\r\n\r\n if (this.props.options) {\r\n this._updatingOptions = true;\r\n dmx.repeatItems(this.props.options).forEach(option => {\r\n const node = document.createElement('option');\r\n node.value = dmx.parse(this.props.optionvalue, dmx.DataScope(option, this));\r\n node.textContent = dmx.parse(this.props.optiontext, dmx.DataScope(option, this));\r\n if (node.value == this.props.value) node.selected = true;\r\n node.defaultSelected = node.selected;\r\n this.$node.append(node);\r\n this._options.push(node);\r\n });\r\n this._updatingOptions = false;\r\n }\r\n\r\n this._updateValue();\r\n },\r\n\r\n _inputHandler (event) {\r\n // do nothing\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) {\r\n this._validate();\r\n }\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('select-multiple', {\r\n\r\n extends: 'select',\r\n\r\n initialData: {\r\n value: [],\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('select').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n Array.from(this.$node.options).forEach(option => {\r\n const selected = value.includes(option.value);\r\n if (defaultValue) {\r\n option.toggleAttribute('selected', selected);\r\n option.defaultSelected = option.selected;\r\n } else {\r\n option.selected = selected;\r\n }\r\n });\r\n\r\n this._updateValue();\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _getValue () {\r\n return Array.from(this.$node.selectedOptions).map(option => option.value);\r\n },\r\n\r\n _updateValue () {\r\n const value = this._getValue(); //Array.from(this.$node.options).filter(option => option.selected).map(option => option.value);\r\n\r\n dmx.batch(() => {\r\n dmx.Component('select').prototype._updateValue.call(this);\r\n this.set('value', value);\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex || !dmx.equal(this.data.value, this._getValue())) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('value', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n default: null,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n if (this.data.value !== value) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('value', this.props.value);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this.set('value', this.props.value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});","dmx.Component(\"repeat\", {\r\n\r\n initialData: {\r\n items: [],\r\n },\r\n\r\n attributes: {\r\n repeat: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n key: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n rerender: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n events: {\r\n update: Event,\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.prevItems = [];\r\n this.childKeys = new Map();\r\n this.$template = document.createDocumentFragment();\r\n while (this.$node.hasChildNodes()) {\r\n this.$template.appendChild(this.$node.firstChild);\r\n }\r\n if (this.props.repeat) {\r\n this.performUpdate(new Map([['repeat', undefined]]));\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"key\")) this._rerender = true;\r\n if (!updatedProps.has(\"repeat\")) return;\r\n\r\n this.dispatchEvent(\"update\");\r\n\r\n if (this.props.rerender || this._rerender) {\r\n this._rerender = false;\r\n this._clear();\r\n }\r\n\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var repeat = dmx.clone(this.props.repeat);\r\n var items = dmx.repeatItems(repeat);\r\n\r\n if (items.length) {\r\n if (\r\n !this.props.rerender &&\r\n this.props.key &&\r\n items[0].hasOwnProperty(this.props.key) &&\r\n this.prevItems.length\r\n ) {\r\n // keyed repeater (https://github.com/localvoid/kivi/blob/master/lib/vnode.ts#L1320-L1513)\r\n var key = this.props.key;\r\n var a = this.prevItems;\r\n var b = this._clone(items);\r\n var aStart = 0;\r\n var bStart = 0;\r\n var aEnd = a.length - 1;\r\n var bEnd = b.length - 1;\r\n var i, j, nextPos;\r\n\r\n outer: while (true) {\r\n // remove same keys from start\r\n while (a[aStart][key] === b[bStart][key]) {\r\n this.childKeys.get(b[bStart][key]).set(b[bStart]);\r\n aStart++;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // remove same keys at end\r\n while (a[aEnd][key] === b[bEnd][key]) {\r\n this.childKeys.get(b[bEnd][key]).set(b[bEnd]);\r\n aEnd--;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // move from right to left\r\n if (a[aEnd][key] === b[bStart][key]) {\r\n this.childKeys.get(b[bStart][key]).set(b[bStart]);\r\n this._moveChild(b[bStart][key], a[aStart][key]);\r\n aEnd--;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n // move from left to right\r\n if (a[aStart][key] === b[bEnd][key]) {\r\n nextPos = bEnd + 1;\r\n this.childKeys.get(b[bEnd][key]).set(b[bEnd]);\r\n this._moveChild(b[bEnd][key], b[nextPos] && b[nextPos][key]);\r\n aStart++;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (aStart > aEnd) {\r\n // insert rest from b\r\n nextPos = bEnd + 1;\r\n while (bStart <= bEnd) {\r\n this._insertChild(b[bStart++], b[nextPos] && b[nextPos][key]);\r\n }\r\n } else if (bStart > bEnd) {\r\n // remove rest from a\r\n while (aStart <= aEnd) {\r\n this._removeChild(a[aStart++][key]);\r\n }\r\n } else {\r\n var aLength = aEnd - aStart + 1;\r\n var bLength = bEnd - bStart + 1;\r\n var aNullable = a;\r\n var sources = new Array(bLength).fill(-1);\r\n\r\n var moved = false;\r\n var pos = 0;\r\n var synced = 0;\r\n\r\n if (bLength <= 4 || aLength * bLength <= 16) {\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n for (j = bStart; j <= bEnd; j++) {\r\n if (a[i][key] === b[j][key]) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys.get(b[j][key]).set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var keyIndex = {};\r\n\r\n for (i = bStart; i <= bEnd; i++) {\r\n keyIndex[b[i][key]] = i;\r\n }\r\n\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n j = keyIndex[a[i][key]];\r\n\r\n if (j !== undefined) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys.get(b[j][key]).set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (aLength === a.length && synced === 0) {\r\n this._clear();\r\n while (bStart < bLength) {\r\n this._insertChild(b[bStart++], null);\r\n }\r\n } else {\r\n i = aLength - synced;\r\n while (i > 0) {\r\n if (aNullable[aStart] !== null) {\r\n this._removeChild(a[aStart][key]);\r\n i--;\r\n }\r\n aStart++;\r\n }\r\n\r\n if (moved) {\r\n var seq = this._lis(sources);\r\n j = seq.length - 1;\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n if (j < 0 || i !== seq[j]) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._moveChild(b[pos][key], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n j--;\r\n }\r\n }\r\n }\r\n } else if (synced !== bLength) {\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.children.length > items.length) {\r\n // remove some children\r\n this.children.splice(items.length).forEach((child) => {\r\n child.$destroy();\r\n });\r\n }\r\n\r\n if (this.children.length) {\r\n // update existing children\r\n this.children.forEach((child, i) => {\r\n for (const key in child.data) {\r\n // remove old data that is not in new data\r\n if (!items[i][key]) {\r\n delete child.data[key];\r\n }\r\n }\r\n child.set(items[i]);\r\n });\r\n }\r\n\r\n if (items.length > this.children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n for (var i = this.children.length; i < items.length; i++) {\r\n var child = new RepeatItem(\r\n this.$template.cloneNode(true),\r\n this,\r\n items[i]\r\n );\r\n child.$nodes.forEach((node) => {\r\n fragment.appendChild(node);\r\n //this.$node.appendChild(node);\r\n //child.$parse(node);\r\n toParse.add(child);\r\n });\r\n this.children.push(child);\r\n }\r\n\r\n this.$node.appendChild(fragment);\r\n\r\n for (const child of toParse) {\r\n child.$nodes.forEach((node) => {\r\n child.$parse(node);\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this._clear();\r\n }\r\n\r\n if (this.props.key) {\r\n this.prevItems = this._clone(items);\r\n for (let child of this.children) {\r\n this.childKeys.set(child.data[this.props.key], child);\r\n }\r\n }\r\n\r\n //this.set('items', items);\r\n this.set(\r\n \"items\",\r\n this.children.map((child) => child.data)\r\n );\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _lis (a) {\r\n var p = a.slice(0);\r\n var result = [];\r\n result.push(0);\r\n var u, v;\r\n\r\n for (var i = 0, il = a.length; i < il; i++) {\r\n if (a[i] === -1) {\r\n continue;\r\n }\r\n\r\n var j = result[result.length - 1];\r\n if (a[j] < a[i]) {\r\n p[i] = j;\r\n result.push(i);\r\n continue;\r\n }\r\n\r\n u = 0;\r\n v = result.length - 1;\r\n\r\n while (u < v) {\r\n var c = ((u + v) / 2) | 0;\r\n if (a[result[c]] < a[i]) {\r\n u = c + 1;\r\n } else {\r\n v = c;\r\n }\r\n }\r\n\r\n if (a[i] < a[result[u]]) {\r\n if (u > 0) {\r\n p[i] = result[u - 1];\r\n }\r\n result[u] = i;\r\n }\r\n }\r\n\r\n u = result.length;\r\n v = result[u - 1];\r\n\r\n while (u-- > 0) {\r\n result[u] = v;\r\n v = p[v];\r\n }\r\n\r\n return result;\r\n },\r\n\r\n _clear () {\r\n this.prevItems = [];\r\n this.childKeys.clear();\r\n this.$node.innerHTML = '';\r\n this.children.splice(0).forEach((child) => {\r\n child.$destroy();\r\n });\r\n },\r\n\r\n _insertChild (data, before) {\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, data);\r\n\r\n child.$nodes.forEach((node) => {\r\n if (!before) {\r\n this.$node.appendChild(node);\r\n } else {\r\n if (this.childKeys.has(before)) {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n } else {\r\n console.warn(\r\n \"(insert) can not insert node before key \" + before + \"!\"\r\n );\r\n }\r\n }\r\n\r\n child.$parse(node);\r\n });\r\n\r\n this.childKeys.set(data[this.props.key], child);\r\n this.children.push(child);\r\n },\r\n\r\n _moveChild (key, before) {\r\n var child = this.childKeys.get(key);\r\n\r\n if (child) {\r\n if (this.childKeys.has(before)) {\r\n child.$nodes.forEach((node) => {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n });\r\n } else {\r\n child.$nodes.forEach((node) => {\r\n this.$node.appendChild(node);\r\n });\r\n }\r\n } else {\r\n console.warn(\"(move) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _removeChild (key) {\r\n var child = this.childKeys.get(key);\r\n if (child) {\r\n child.$destroy();\r\n this.children.splice(this.children.indexOf(child), 1);\r\n this.childKeys.delete(key);\r\n } else {\r\n console.warn(\"(remove) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _clone (o) {\r\n return dmx.clone(o);\r\n },\r\n});\r\n","dmx.Component(\"repeat-item\", {\r\n\r\n constructor: function (fragment, parent, data, name) {\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n this.props = {};\r\n\r\n this.__disposables = [];\r\n this.__childDisposables = [];\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = true;\r\n this.isDestroyed = false;\r\n\r\n this.data = dmx.signalProxy(data);\r\n this.seed = parent.seed;\r\n\r\n this.name = name || \"repeatItem\";\r\n this.$nodes = [];\r\n for (var i = 0; i < fragment.childNodes.length; i++) {\r\n this.$nodes.push(fragment.childNodes[i]);\r\n }\r\n },\r\n\r\n destroy () {\r\n for (const node of this.$nodes) {\r\n if (this.parent && this.parent.props && this.parent.props.key) {\r\n const event = new Event('remove', { cancelable: true });\r\n \r\n if (node.dispatchEvent(event)) {\r\n dmx.dom.remove(node);\r\n }\r\n } else {\r\n node.remove();\r\n }\r\n }\r\n },\r\n});\r\n","dmx.Component('fetch', {\r\n\r\n initialData: {\r\n status: 0,\r\n data: null,\r\n links: {},\r\n paging: {},\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null,\r\n },\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n method: {\r\n type: String,\r\n default: 'GET',\r\n },\r\n\r\n url: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n data: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n dataType: {\r\n type: String,\r\n default: 'auto',\r\n enum: ['auto', 'json', 'text'],\r\n },\r\n\r\n noload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n cache: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n ttl: {\r\n // cache ttl in seconds (default 1 day)\r\n type: Number,\r\n default: 86400,\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n load (params, reload) {\r\n const options = {};\r\n if (params) options.params = params;\r\n if (reload) options.ttl = 0;\r\n this._fetch(options);\r\n },\r\n\r\n reset () {\r\n this._abort();\r\n this._resetData(true);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n invalid: Event,\r\n unauthorized: Event,\r\n forbidden: Event,\r\n abort: Event,\r\n success: Event,\r\n upload: ProgressEvent,\r\n download: ProgressEvent,\r\n },\r\n\r\n _statusEvents: {\r\n 200: 'success',\r\n 400: 'invalid',\r\n 401: 'unauthorized',\r\n 403: 'forbidden',\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this._fetch = dmx.debounce(this._fetch.bind(this));\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n if (!this.props.noload && this.props.url) {\r\n this._fetch();\r\n }\r\n },\r\n\r\n destroy () {\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr.abort();\r\n this._xhr = null;\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (!this.props.noload && this.props.url) {\r\n // if url or params are changed\r\n if (updatedProps.has('url') || updatedProps.has('params')) {\r\n this._fetch();\r\n }\r\n }\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n\r\n if (argument && value && name == 'data') {\r\n this.$watch(value, value => {\r\n this.props.data = Object.assign({}, this.props.data, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _abort () {\r\n if (this._xhr) {\r\n this._xhr.abort();\r\n }\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\r\n status: 0,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: \"\",\r\n response: null,\r\n },\r\n };\r\n\r\n if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _fetch (options) {\r\n this._abort();\r\n\r\n options = dmx.extend(true, this.props, options || {});\r\n \r\n let qs = Object.keys(options.params)\r\n .filter(key => options.params[key] != null)\r\n .map(key => {\r\n let value = options.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n \r\n this._url = options.url;\r\n\r\n if (qs) {\r\n this._url += (this._url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n this._url = window.WebviewProxy.convertProxyUrl(this._url);\r\n }\r\n\r\n if (this.props.cache) {\r\n const cache = this.parse(`${this.props.cache}.data[\"${this._url}\"]`);\r\n if (cache) {\r\n if (Date.now() - cache.created >= options.ttl * 1000) {\r\n this.parse(`${this.props.cache}.remove(\"${this._url}\")`);\r\n } else {\r\n this.set({\r\n headers: cache.headers || {},\r\n paging: cache.paging || {},\r\n links: cache.links || {},\r\n data: cache.data,\r\n });\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n });\r\n\r\n let data = null;\r\n let method = this.props.method.toUpperCase();\r\n\r\n if (method !== 'GET') {\r\n if (this.props.dataType === 'text') {\r\n data = this.props.data.toString();\r\n } else if (this.props.dataType === 'json') {\r\n data = JSON.stringify(this.props.data);\r\n } else {\r\n if (method === 'POST') {\r\n data = new FormData();\r\n\r\n Object.keys(this.props.data).forEach(key => {\r\n let value = this.props.data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.text(value)) key += '[]';\r\n value.forEach(val => data.append(key, val));\r\n } else {\r\n data.set(key, value);\r\n }\r\n });\r\n } else {\r\n data = this.props.data.toString();\r\n }\r\n }\r\n }\r\n\r\n this._xhr.open(method, this._url);\r\n this._xhr.timeout = options.timeout * 1000;\r\n if (this.props.dataType === 'json' || this.props.dataType === 'text') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/' + this.props.dataType);\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n if (this.serverconnect && method !== 'GET') {\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let response = this._xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch (err) {\r\n if (this._xhr.status < 400) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n this._parseHeaders();\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n\r\n if (this.props.cache) {\r\n this.parse(`${this.props.cache}.set(\"${this._url}\", { headers: headers, paging: paging, links: links, data: data, created: ${Date.now()} })`)\r\n }\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[this._xhr.status] || 'error');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _parseHeaders() {\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n return;\r\n }\r\n\r\n this._parseLinkHeaders();\r\n },\r\n\r\n _parseLinkHeaders () {\r\n try {\r\n const linkHeader = Object.keys(this.data.headers).find(header => header.toLowerCase() === 'link');\r\n\r\n if (linkHeader) {\r\n this.set('links', this.data.headers[linkHeader].split(/,\\s* {\r\n try {\r\n const match = link.match(/]*)>(.*)/);\r\n const linkUrl = new URL(match[1]);\r\n const parts = match[2].split(';');\r\n const qs = linkUrl.search.slice(1).split('&').reduce((acc, x) => {\r\n const p = x.split('=');\r\n if (p[0]) acc[decodeURIComponent[p[0]]] = decodeURIComponent(p[1] || '');\r\n return acc;\r\n }, {});\r\n \r\n let info = parts.slice(1).reduce((acc, part) => {\r\n const match = part.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\r\n if (match) acc[match[1]] = match[2];\r\n return acc;\r\n }, {});\r\n\r\n info = Object.assign({}, qs, info);\r\n info.url = linkUrl.toString();\r\n\r\n return info;\r\n } catch (err) {\r\n console.warn('Error parsing link header part', err);\r\n return null;\r\n }\r\n })).filter(x => x && x.rel).reduce((acc, x) => {\r\n x.rel.split(/\\s+/).forEach(rel => acc[rel] = Object.assign(x, { rel }));\r\n return acc;\r\n }, {});\r\n }\r\n } catch (err) {\r\n console.warn('Error parsing link header', err);\r\n return;\r\n }\r\n\r\n this._parsePaging();\r\n },\r\n\r\n _parsePaging () {\r\n try {\r\n const paging = {\r\n page: 1,\r\n pages: 1,\r\n items: 0,\r\n has: {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false,\r\n },\r\n };\r\n\r\n const { first, prev, next, last } = this.data.links;\r\n\r\n if (prev || next) {\r\n if (last && last.page) {\r\n paging.pages = +last.page;\r\n } else if (prev && prev.page) {\r\n paging.pages = +prev.page + 1;\r\n }\r\n\r\n const countHeader = Object.keys(this.data.headers).find(header => {\r\n header = header.toLowerCase();\r\n return header === 'x-total' || header === 'x-count' || header === 'x-total-count';\r\n });\r\n\r\n if (countHeader) {\r\n paging.items = +this.data.headers[countHeader];\r\n }\r\n\r\n if (prev && prev.page) {\r\n paging.page = +prev.page + 1;\r\n } else if (next && next.page) {\r\n paging.page = +next.page - 1;\r\n }\r\n\r\n paging.has = {\r\n first: !!first,\r\n prev: !!prev,\r\n next: !!next,\r\n last: !!last,\r\n };\r\n }\r\n\r\n this.set('paging', paging);\r\n } catch (err) {\r\n console.warn('Error parsing paging', err);\r\n }\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n state: {\r\n executing: true,\r\n uploading: type === 'upload' && percent < 100,\r\n processing: type === 'upload' && percent === 100,\r\n downloading: type === 'download',\r\n },\r\n [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total,\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('serverconnect', {\r\n\r\n extends: 'fetch',\r\n\r\n attributes: {\r\n sockets: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n init (node) {\r\n this.serverconnect = true;\r\n \r\n if (this.props.sockets && dmx.Socket) {\r\n this._refresh = this._refresh.bind(this);\r\n this._event = this.props.url.replace(/^(.*?)api\\//, '')\r\n this._socket = dmx.Socket('/api');\r\n this._socket.on(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.init.call(this, node);\r\n },\r\n\r\n destroy () {\r\n if (this._socket) {\r\n this._socket.off(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.destroy.call(this);\r\n },\r\n\r\n _fetch (options) {\r\n if (this._socket && this._socket.connected) {\r\n this._refresh(options && options.params);\r\n } else {\r\n dmx.Component('fetch').prototype._fetch.call(this, options);\r\n }\r\n },\r\n\r\n _refresh (params) {\r\n params = dmx.extend(true, {}, this.props.params, params || {});\r\n\r\n this.dispatchEvent('start');\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: true,\r\n downloading: false,\r\n });\r\n\r\n this._socket.emit(this._event, params, response => {\r\n this.set({\r\n status: response.status,\r\n data: response.data,\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[response.status] || 'error');\r\n this.dispatchEvent('done');\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('serverconnect-form', {\r\n \r\n extends: 'form',\r\n\r\n initialData: {\r\n status: 0,\r\n data: null,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null,\r\n },\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n autosubmit: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n postData: {\r\n type: String,\r\n default: 'form',\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n reset (clearData) {\r\n this._reset();\r\n\r\n if (clearData) {\r\n this._abort();\r\n this._resetData(true);\r\n }\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent, // on download progress\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form').prototype.init.call(this, node);\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n this._extendNode(node);\r\n\r\n if (this.props.autosubmit) {\r\n dmx.nextTick(() => this._submit());\r\n }\r\n },\r\n\r\n destroy () {\r\n dmx.Component('form').prototype.destroy.call(this);\r\n\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr = null;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _extendNode (node) {\r\n node.dmxExtraData = {};\r\n node.dmxExtraElements = [];\r\n },\r\n\r\n _abort () {\r\n this._xhr.abort();\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\r\n status: 0,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: \"\",\r\n response: null,\r\n },\r\n };\r\n\r\n if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _formSubmit () {\r\n this._send();\r\n },\r\n\r\n _send () {\r\n // abort any previous request\r\n this._abort();\r\n \r\n const method = this.$node.method.toUpperCase();\r\n const action = this.$node.action;\r\n \r\n let data = null;\r\n \r\n let qs = Object.keys(this.props.params)\r\n .filter(key => this.props.params[key] != null)\r\n .map(key => {\r\n let value = this.props.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n if (method === 'GET') {\r\n if (qs.length) qs += '&';\r\n\r\n qs += Array.from(this.$node.elements)\r\n .filter(element => !element.disabled && ((element.type !== 'radio' && element.type !== 'checkbox') || element.checked))\r\n .map(element => encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value))\r\n .join('&');\r\n } else if (this.props.postData === 'json') {\r\n data = this._parseJsonForm();\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.assign(data, this.$node.dmxExtraData);\r\n }\r\n\r\n data = JSON.stringify(data);\r\n } else {\r\n data = new FormData(this.$node);\r\n\r\n if (this.$node.dmxExtraData) {\r\n for (let key in this.$node.dmxExtraData) {\r\n let value = this.$node.dmxExtraData[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) key += '[]';\r\n value.forEach(value => data.append(key, value));\r\n } else {\r\n data.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n });\r\n\r\n let url = action;\r\n\r\n if (qs) {\r\n url += (url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n url = window.WebviewProxy.convertProxyUrl(url);\r\n }\r\n\r\n this._xhr.open(method, url);\r\n this._xhr.timeout = this.props.timeout * 1000;\r\n if (this.props.postData === 'json') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/json');\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let response = this._xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch (err) {\r\n if (this._xhr.status < 400) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n }\r\n\r\n // reset form validation\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n if (this._xhr.status === 400) {\r\n this.dispatchEvent('invalid');\r\n\r\n // server-side validation error\r\n if (response.form && dmx.validate.setMessage) {\r\n for (const name in response.form) {\r\n const element = this.$node.querySelector(`[name=\"${name}\"]`);\r\n if (element) {\r\n const message = response.form[name];\r\n dmx.validate.setMessage(element, message);\r\n }\r\n }\r\n } else if (dmx.debug) {\r\n // console warning for debug purpose\r\n console.warn('400 error, no form errors in response.', response);\r\n }\r\n } else if (this._xhr.status === 401) {\r\n this.dispatchEvent('unauthorized');\r\n } else if (this._xhr.status === 403) {\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n this.dispatchEvent('error');\r\n }\r\n\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n state: {\r\n executing: true,\r\n uploading: type === 'upload' && percent < 100,\r\n processing: type === 'upload' && percent === 100,\r\n downloading: type === 'download',\r\n },\r\n [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total,\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('if', {\r\n\r\n attributes: {\r\n condition: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n events: {\r\n show: Event,\r\n hide: Event,\r\n },\r\n\r\n init (node) {\r\n this._shown = false;\r\n this._template = document.createDocumentFragment();\r\n\r\n while (node.firstChild) {\r\n this._template.appendChild(node.firstChild);\r\n }\r\n },\r\n\r\n render (node) {\r\n if (this.props.condition) {\r\n this._show();\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n this.props.condition ? this._show() : this._hide();\r\n },\r\n\r\n destroy () {\r\n this._template = null;\r\n },\r\n\r\n _show () {\r\n if (this._shown) return;\r\n\r\n const template = this._template.cloneNode(true);\r\n this.$node.appendChild(template);\r\n this.$parse();\r\n this.dispatchEvent('show');\r\n this._shown = true;\r\n },\r\n\r\n _hide () {\r\n if (!this._shown) return;\r\n\r\n if (this.effects) {\r\n this.effects.forEach((effect) => effect());\r\n this.effects = null;\r\n }\r\n\r\n Array.from(this.$node.childNodes).forEach(node => {\r\n const event = new Event('remove', { cancelable: true });\r\n if (node.dispatchEvent(event)) node.remove();\r\n });\r\n \r\n this.$destroyChildren();\r\n this.dispatchEvent('hide');\r\n this._shown = false;\r\n }\r\n});\r\n","dmx.Component('datetime', {\r\n\r\n initialData: {\r\n datetime: null,\r\n },\r\n\r\n attributes: {\r\n interval: {\r\n type: String,\r\n default: 'seconds',\r\n enum: ['seconds', 'minutes', 'hours', 'days']\r\n },\r\n\r\n utc: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n init () {\r\n this._tick = this._tick.bind(this);\r\n this._tick();\r\n },\r\n\r\n destroy () {\r\n if (this._timeout) clearTimeout(this._timeout);\r\n if (this._animationFrame) cancelAnimationFrame(this._animationFrame);\r\n },\r\n\r\n _tick () {\r\n this.set('datetime', this._datetime());\r\n\r\n switch (this.props.interval) {\r\n case 'seconds': return this._timeout = setTimeout(this._tick, 1000);\r\n case 'minutes': return this._timeout = setTimeout(this._tick, 60000);\r\n case 'hours': return this._timeout = setTimeout(this._tick, 3600000);\r\n case 'days': return this._timeout = setTimeout(this._tick, 86400000);\r\n default: return this._animationFrame = requestAnimationFrame(this._tick);\r\n }\r\n },\r\n\r\n _datetime () {\r\n const now = new Date();\r\n const pad = (n, d) => ('0000' + n).slice(-d);\r\n const utc = this.props.utc;\r\n \r\n const year = utc ? now.getUTCFullYear() : now.getFullYear();\r\n const month = (utc ? now.getUTCMonth() : now.getMonth()) + 1;\r\n const day = utc ? now.getUTCDate() : now.getDate();\r\n const hours = utc ? now.getUTCHours() : now.getHours();\r\n const minutes = utc ? now.getUTCMinutes() : now.getMinutes();\r\n const seconds = utc ? now.getUTCSeconds() : now.getSeconds();\r\n\r\n const dateString = pad(year, 4) + '-' + pad(month, 2) + '-' + pad(day, 2);\r\n const tz = utc ? 'Z' : '';\r\n\r\n switch (this.props.interval) {\r\n case 'days': return dateString + 'T00:00:00' + tz;\r\n case 'hours': return dateString + 'T' + pad(hours, 2) + ':00:00' + tz;\r\n case 'minutes': return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':00' + tz;\r\n }\r\n\r\n return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':' + pad(seconds, 2) + tz;\r\n },\r\n\r\n});\r\n","dmx.Component('api-action', { extends: 'fetch' });\r\n","dmx.Component('api-form', { extends: 'serverconnect-form' });\r\n","dmx.Component(\"array\", {\r\n\r\n initialData: {\r\n items: [],\r\n count: 0,\r\n },\r\n\r\n attributes: {\r\n items: {\r\n type: Array,\r\n default: [],\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n methods: {\r\n add (newItem) {\r\n this._splice(this._count(), 0, newItem);\r\n },\r\n\r\n addUniq (newItem) {\r\n // Only add when not exists\r\n if (this._indexOf(newItem) == -1) {\r\n this._splice(this._count(), 0, newItem);\r\n }\r\n },\r\n\r\n insert (index, newItem) {\r\n this._splice(index, 0, newItem);\r\n },\r\n\r\n insertBefore (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 0, newItem);\r\n }\r\n },\r\n\r\n insertAfter (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index + 1, 0, newItem);\r\n }\r\n },\r\n\r\n replace (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1, newItem);\r\n }\r\n },\r\n\r\n replaceAt (index, newItem) {\r\n this._splice(index, 1, newItem);\r\n },\r\n\r\n remove (item) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1);\r\n }\r\n },\r\n\r\n removeAt (index) {\r\n this._splice(index, 1);\r\n },\r\n\r\n reverse () {\r\n this._reverse();\r\n },\r\n\r\n sort () {\r\n this._sort();\r\n },\r\n\r\n empty () {\r\n this._updateData([]);\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n const arr = dmx.array(this.props.items);\r\n\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"items\")) {\r\n this._updateData(dmx.array(this.props.items));\r\n }\r\n },\r\n\r\n _count () {\r\n return this.data.items.length;\r\n },\r\n\r\n _indexOf (item) {\r\n return this.data.items.indexOf(item);\r\n },\r\n\r\n _splice (index, remove, item) {\r\n const arr = dmx.clone(this.data.items);\r\n\r\n if (item !== undefined) {\r\n arr.splice(index, remove, item);\r\n } else {\r\n arr.splice(index, remove);\r\n }\r\n\r\n this._updateData(arr);\r\n },\r\n\r\n _reverse () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.reverse();\r\n this._updateData(arr);\r\n },\r\n\r\n _sort () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.sort();\r\n this._updateData(arr);\r\n },\r\n\r\n _updateData (arr) {\r\n if (!dmx.equal(this.data.items, arr)) {\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('group', {});\r\n","dmx.Component('flow', {\r\n\r\n initialData: {\r\n data: null,\r\n running: false,\r\n lastError: null,\r\n },\r\n\r\n attributes: {\r\n src: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n preload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n autorun: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n },\r\n\r\n methods: {\r\n run (param, throwError) {\r\n return this._run(param, throwError);\r\n },\r\n\r\n runSub (param) {\r\n return this._runSub(param);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n },\r\n \r\n render: false,\r\n\r\n init (node) {\r\n if (this.props.src) {\r\n if (this.props.preload || this.props.autorun) {\r\n this._load(this.props.src, this.props.autorun).catch(console.error);\r\n }\r\n } else {\r\n try {\r\n this._flow = this._parse(node.textContent);\r\n if (this.props.autorun) this._run();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n },\r\n\r\n destroy () {\r\n this._destroyed = true;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && name == 'param') {\r\n this.$watch(value, value => {\r\n this.props.params = Object.assign({}, this.props.params, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _load (url, run) {\r\n return fetch(url).then(response => {\r\n if (!response.ok || response.status >= 400) {\r\n throw Error(`Could not load flow ${this.name}, status ${response.status} ${response.statusText}`);\r\n }\r\n \r\n return response.text()\r\n }).then(text => {\r\n this._flow = this._parse(text);\r\n if (run) this._run();\r\n });\r\n },\r\n\r\n _parse (str) {\r\n return (window.Hjson ? Hjson : JSON).parse(str);\r\n },\r\n\r\n _runSub (param) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._runFlow(param);\r\n });\r\n }\r\n\r\n throw Error('No flow');\r\n }\r\n\r\n return this._runFlow(param);\r\n },\r\n\r\n _run (param, throwError) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._run(param, throwError);\r\n }).catch(console.error);\r\n }\r\n\r\n console.warn(`Flow ${this.name} is missing.`);\r\n return;\r\n }\r\n\r\n if (this.data.running) {\r\n console.info(`Can't run flow ${this.name} when a previous run didn't finish.`);\r\n return;\r\n }\r\n\r\n this.set({\r\n running: true,\r\n lastError: null,\r\n });\r\n\r\n this.dispatchEvent('start');\r\n\r\n if (dmx.debug) {\r\n console.debug(`Running flow ${this.name} with params`, param);\r\n console.time(`Flow ${this.name}`);\r\n }\r\n return this._runFlow(param).then(data => {\r\n if (dmx.debug) {\r\n console.debug(`Flow ${this.name} finished`, data);\r\n console.timeEnd(`Flow ${this.name}`);\r\n }\r\n this.set({\r\n running: false,\r\n data: data\r\n });\r\n\r\n this.dispatchEvent('done');\r\n\r\n return data;\r\n }).catch(err => {\r\n this.set({\r\n running: false,\r\n lastError: err && err.message,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n\r\n if (throwError) {\r\n throw err;\r\n }\r\n })\r\n },\r\n\r\n _runFlow (param) {\r\n return dmx.Flow.run(this._flow, dmx.DataScope({\r\n $param: Object.assign({}, this.props.params, param),\r\n }, this));\r\n },\r\n\r\n});\r\n","dmx.Component('toggle', {\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n check () {\r\n this.props.checked = true;\r\n },\r\n\r\n uncheck () {\r\n this.props.checked = false;\r\n },\r\n\r\n toggle () {\r\n this.props.checked = !this.data.checked;\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('checked', this.props.checked);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('checked')) {\r\n this.set('checked', this.props.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-data', {\r\n\r\n attributes: {\r\n name: {\r\n type: String,\r\n default: 'data',\r\n },\r\n\r\n data: {\r\n type: [Array, Object], // can be anything\r\n default: null,\r\n },\r\n },\r\n\r\n init (node) {\r\n this._formdataHandler = this._formdataHandler.bind(this);\r\n this._form = node.closest('form');\r\n \r\n if (this._form) {\r\n this._form.addEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n destroy () {\r\n if (this._form) {\r\n this._form.removeEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n _formdataHandler (event) {\r\n const formData = event.formData;\r\n const data = this.props.data;\r\n\r\n this._appendData(formData, data, this.props.name);\r\n },\r\n\r\n _appendData (formData, data, prefix = '') {\r\n if (Array.isArray(data)) {\r\n data.forEach((value, index) => {\r\n this._appendData(formData, value, `${prefix}[${index}]`);\r\n });\r\n } else if (typeof data === 'object') {\r\n for (const key in data) {\r\n this._appendData(formData, data[key], `${prefix}[${key}]`);\r\n }\r\n } else {\r\n formData.append(prefix, data);\r\n }\r\n },\r\n\r\n});","dmx.Attribute(\"bind\", \"mounted\", function (node, attr) {\r\n const name = attr.argument;\r\n const isToggle = dmx.reToggleAttribute.test(name);\r\n\r\n this.$watch(attr.value, value => {\r\n if (isToggle) {\r\n node.toggleAttribute(name, !!value);\r\n } else {\r\n if (name === \"style\" && typeof value === \"object\") {\r\n return Object.assign(node.style, value);\r\n }\r\n\r\n if (value == null) {\r\n return node.removeAttribute(name);\r\n }\r\n\r\n node.setAttribute(name, value);\r\n\r\n if (name === \"src\") {\r\n if (node.nodeName === \"VIDEO\" || node.nodeName === \"AUDIO\") {\r\n node.load();\r\n } else if (node.nodeName === \"SOURCE\" && node.parentNode) {\r\n node.parentNode.load();\r\n }\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"on\", \"mounted\", function (node, attr) {\r\n if (!node.dmxOn) {\r\n node.dmxOn = {\r\n component: this,\r\n };\r\n }\r\n\r\n node.dmxOn[attr.argument] = true;\r\n\r\n return dmx.eventListener(node, attr.argument, function (event) {\r\n // jQuery event\r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n const retValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event.$data,\r\n $originalEvent: event,\r\n }, node.dmxOn.component));\r\n\r\n return retValue;\r\n }, attr.modifiers);\r\n});\r\n","dmx.Attribute('repeat', 'before', function (node, attr) {\r\n const comment = document.createComment('Repeat Attribute');\r\n const template = document.createDocumentFragment();\r\n const RepeatItem = dmx.Component('repeat-item');\r\n\r\n node.parentNode.replaceChild(comment, node);\r\n node.removeAttribute(attr.fullName);\r\n\r\n template.append(node);\r\n\r\n let children = [];\r\n\r\n this.$watch(attr.value, repeat => {\r\n const items = dmx.repeatItems(repeat);\r\n\r\n if (items.length > 10000) {\r\n console.warn('More than 10000 repeat items, we limit the result!');\r\n //items.splice(10000, items.length);\r\n items.length = 10000;\r\n }\r\n\r\n if (attr.modifiers.fast) {\r\n if (children.length > items.length) {\r\n // destroy children\r\n children.splice(items.length).forEach(child => child.$destroy());\r\n }\r\n\r\n if (children.length) {\r\n // update existing children\r\n children.forEach((child, i) => child.set(items[i]));\r\n }\r\n\r\n if (items.length > children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n items.slice(children.length).forEach(item => {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.appendChild(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n });\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n } else {\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n children.splice(0).forEach(child => child.$destroy());\r\n\r\n for (const item of items) {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.append(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n }\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"class\", \"mounted\", function (node, attr) {\r\n if (!node.dmxClass) {\r\n node.dmxClass = {\r\n component: this,\r\n };\r\n }\r\n\r\n this.$watch(attr.value, toggle => {\r\n node.dmxClass[attr.argument] = toggle;\r\n node.classList[toggle ? \"add\" : \"remove\"](attr.argument);\r\n });\r\n});\r\n","dmx.Attribute(\"hide\", \"mounted\", function (node, attr) {\r\n if (node.dmxHide) return;\r\n\r\n node.dmxHide = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue(\"display\"),\r\n priority: node.style.getPropertyPriority(\"display\"),\r\n },\r\n hide: null,\r\n };\r\n\r\n this.$watch(attr.value, hide => {\r\n node.dmxHide.hide = hide;\r\n\r\n const { initial } = node.dmxHide;\r\n const display = hide ? 'none' : initial.display;\r\n const priority = hide ? 'important' : initial.priority;\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n if (node.dmxShow) return;\r\n\r\n node.dmxShow = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue('display'),\r\n priority: node.style.getPropertyPriority('display'),\r\n },\r\n show: null,\r\n };\r\n \r\n this.$watch(attr.value, show => {\r\n node.dmxShow.show = show;\r\n \r\n const { initial } = node.dmxShow;\r\n const display = show ? initial.display : 'none';\r\n const priority = show ? initial.priority : 'important';\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute(\"html\", \"mounted\", function (node, attr) {\r\n if (node.dmxHtml) return;\r\n\r\n node.dmxHtml = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, html => {\r\n node.innerHTML = html != null ? String(html) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"text\", \"mounted\", function (node, attr) {\r\n if (node.dmxText) return;\r\n\r\n node.dmxText = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, text => {\r\n node.innerText = text != null ? String(text) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"style\", \"mounted\", function (node, attr) {\r\n if (!node.dmxStyle) {\r\n node.dmxStyle = {\r\n component: this,\r\n };\r\n }\r\n\r\n const important = attr.modifiers.important ? \"important\" : \"\";\r\n\r\n this.$watch(attr.value, value => {\r\n node.dmxStyle[attr.argument] = value;\r\n if (value != null) {\r\n node.style.setProperty(attr.argument, value, important);\r\n }\r\n });\r\n});\r\n","dmx.Formatters('global', {\r\n\r\n // json(obj:Any):String\r\n json: function(obj) {\r\n return JSON.stringify(obj);\r\n },\r\n\r\n // log(obj:Any):Any\r\n log: function(obj) {\r\n console.log(obj);\r\n return obj;\r\n },\r\n\r\n // run(flow:Any, param:Any):Undefined\r\n run: function(flow, param) {\r\n var scope = dmx.DataScope({\r\n $param: param\r\n }, this);\r\n\r\n dmx.Flow.run(flow, scope);\r\n }\r\n\r\n});\r\n","dmx.Actions({\r\n\r\n subflow (options) {\r\n const subflow = this.parse(options.flow);\r\n const param = this.parse(options.param);\r\n\r\n return this.parse(subflow + \".runSub(\" + JSON.stringify(param) + \")\");\r\n },\r\n\r\n comment (options) {\r\n if (dmx.debug) {\r\n console.debug(options.message);\r\n }\r\n },\r\n\r\n wait (options) {\r\n const delay = this.parse(options.delay);\r\n\r\n if (typeof delay != \"number\") {\r\n throw new Error(\"wait: Invalid delay\");\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, delay);\r\n });\r\n },\r\n\r\n now (options) {\r\n return new Date().toISOString();\r\n },\r\n\r\n random (options) {\r\n let lower = this.parse(options.lower);\r\n let upper = this.parse(options.upper);\r\n let floating = !!this.parse(options.floating);\r\n\r\n if (typeof lower != \"number\" || !isFinite(lower)) {\r\n lower = 0;\r\n }\r\n\r\n if (typeof upper != \"number\" || !isFinite(upper)) {\r\n upper = 1;\r\n }\r\n\r\n let rnd = lower + Math.random() * (upper - lower);\r\n\r\n if (!floating && Math.floor(lower) == lower && Math.floor(upper) == upper) {\r\n rnd = Math.round(rnd);\r\n }\r\n\r\n return rnd;\r\n },\r\n\r\n confirm (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"confirm: Invalid message\");\r\n }\r\n\r\n const result = confirm(message);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n prompt (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"prompt: Invalid message\");\r\n }\r\n\r\n return prompt(message);\r\n },\r\n\r\n alert (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"alert: Invalid message\");\r\n }\r\n\r\n return alert(message);\r\n },\r\n\r\n repeat (options) {\r\n let items = dmx.clone(this.parse(options.repeat));\r\n\r\n if (!items) return;\r\n\r\n if (typeof items == \"boolean\") {\r\n items = items ? [0] : [];\r\n } else if (typeof items == \"string\") {\r\n items = items.split(/\\s*,\\s*/);\r\n } else if (typeof items == \"number\") {\r\n var arr = [];\r\n for (var i = 0; i < items; i++) {\r\n arr.push(i + 1);\r\n }\r\n items = arr;\r\n }\r\n\r\n if (typeof items != \"object\") {\r\n throw new Error(\"repeat: data is not repeatable\");\r\n }\r\n\r\n const parentScope = this.scope;\r\n const parentOutput = this.output;\r\n return this._each(items, (value, index) => {\r\n this.scope = new dmx.DataScope(\r\n Object.assign(\r\n {\r\n $value: value,\r\n $index: index,\r\n $name: index,\r\n $key: index,\r\n $number: index + 1,\r\n $oddeven: index % 2,\r\n },\r\n value\r\n ),\r\n parentScope\r\n );\r\n\r\n this.output = {};\r\n\r\n if (Array.isArray(options.outputFields) && value instanceof Object) {\r\n options.outputFields.forEach((field) => {\r\n this.output[field] = value[field];\r\n });\r\n }\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n this.scope = parentScope;\r\n this.output = parentOutput;\r\n return output;\r\n });\r\n });\r\n },\r\n\r\n condition (options) {\r\n const result = !!this.parse(options.if);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n conditions (options) {\r\n if (Array.isArray(options.conditions)) {\r\n for (let i = 0; i < options.conditions.length; i++) {\r\n const condition = options.conditions[i];\r\n\r\n if (this.parse(condition.when)) {\r\n return this._exec(condition.then);\r\n }\r\n }\r\n }\r\n },\r\n\r\n select (options) {\r\n const expression = this.parse(options.expression);\r\n\r\n if (Array.isArray(options.cases)) {\r\n for (let i = 0; i < options.cases.length; i++) {\r\n const item = options.cases[i];\r\n\r\n if (this.parse(item.value) == expression) {\r\n return this._exec(item.exec);\r\n }\r\n }\r\n }\r\n },\r\n\r\n group (options) {\r\n if (options.name) {\r\n const parentOutput = this.output;\r\n this.output = {};\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n self.output = parentOutput;\r\n return output;\r\n });\r\n }\r\n\r\n return this._exec(options.exec);\r\n },\r\n\r\n while (options) {\r\n const loop = () => {\r\n return new Promise((resolve) => {\r\n if (!this.parse(options.condition)) return resolve();\r\n this._exec(options.exec).then(loop).then(resolve);\r\n });\r\n };\r\n\r\n return loop();\r\n },\r\n\r\n switch (options) {\r\n /*\r\n {\r\n switch: {\r\n expression: \"{{myVar}}\",\r\n cases: [\r\n { case: 1, exec: { console.log: { message: \"Case 1\" }}}\r\n { case: 2, exec: { console.log: { message: \"Case 2\" }}}\r\n { case: 3, exec: { console.log: { message: \"Case 3\" }}}\r\n ],\r\n default: { console.log: { message: \"Default Case\" }}\r\n }\r\n }\r\n */\r\n const expression = this.parse(options.expression);\r\n for (let i = 0; i < options.cases.length; i++) {\r\n if (this.parse(options.cases[i].case) === expression) {\r\n return this._exec(options.cases[i].exec);\r\n }\r\n }\r\n if (options.default) {\r\n return this._exec(options.default);\r\n }\r\n },\r\n\r\n tryCatch (options) {\r\n return Promise.resolve(this._exec(options.try)).catch(() => {\r\n return this._exec(options.catch);\r\n });\r\n },\r\n\r\n run (options) {\r\n if (!options.action) {\r\n throw new Error(\"run: missing action\");\r\n }\r\n\r\n return this.parse(options.action);\r\n },\r\n\r\n runJS (options) {\r\n if (!options.function) {\r\n throw new Error(\"runJS: missing function\");\r\n }\r\n\r\n const func = this.parse(options.function);\r\n const args = this.parse(options.args);\r\n\r\n return window[func].apply(null, args);\r\n },\r\n\r\n assign (options) {\r\n return this.parse(options.value);\r\n },\r\n\r\n setGlobal (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setGlobal: key must be a string\");\r\n }\r\n\r\n dmx.global.set(key, value);\r\n\r\n return value;\r\n },\r\n\r\n setSession (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setSession: key must be a string\");\r\n }\r\n\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n getSession (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"getSession: key must be a string\");\r\n }\r\n\r\n return JSON.parse(sessionStorage.getItem(key));\r\n },\r\n\r\n removeSession (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"removeSession: key must be a string\");\r\n }\r\n\r\n sessionStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n setStorage (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setStorage: key must be a string\");\r\n }\r\n\r\n localStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n getStorage (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"getStorage: key must be a string\");\r\n }\r\n\r\n const value = localStorage.getItem(key);\r\n\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(value);\r\n },\r\n\r\n removeStorage (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"removeStorage: key must be a string\");\r\n }\r\n\r\n localStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n fetch (options) {\r\n let url = this.parse(options.url);\r\n let method = this.parse(options.method);\r\n let timeout = this.parse(options.timeout);\r\n let dataType = this.parse(options.dataType);\r\n let data = this.parse(options.data);\r\n let params = this.parse(options.params);\r\n let headers = this.parse(options.headers);\r\n let credentials = this.parse(options.credentials);\r\n let body = null;\r\n\r\n if (typeof url != \"string\") {\r\n throw new Error(\"fetch: invalid url \" + url);\r\n }\r\n\r\n if (![\"GET\", \"POST\", \"PUT\", \"DELETE\"].includes(method)) {\r\n //throw new Error('fetch: invalid method ' + method);\r\n method = \"GET\";\r\n }\r\n\r\n if (![\"auto\", \"json\", \"text\"].includes(dataType)) {\r\n dataType = \"auto\";\r\n }\r\n\r\n if (typeof timeout != \"number\") {\r\n timeout = 0;\r\n }\r\n\r\n if (!headers) {\r\n headers = {};\r\n }\r\n\r\n if (typeof params == \"object\") {\r\n for (var param in params) {\r\n if (params.hasOwnProperty(param) && params[param] != null) {\r\n url +=\r\n (url.indexOf(\"?\") != -1 ? \"&\" : \"?\") +\r\n decodeURIComponent(param) +\r\n \"=\" +\r\n decodeURIComponent(params[param]);\r\n }\r\n }\r\n }\r\n\r\n if (method != \"GET\") {\r\n if (dataType == \"text\") {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n } else if (dataType == \"json\") {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/json\";\r\n }\r\n body = JSON.stringify(data);\r\n } else {\r\n if (method == \"POST\") {\r\n body = new FormData();\r\n\r\n if (typeof data == \"object\" && !Array.isArray(data)) {\r\n for (var key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n var value = data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += \"[]\";\r\n }\r\n for (var i in value) {\r\n if (value.hasOwnProperty(i)) {\r\n body.append(key, value[i]);\r\n }\r\n }\r\n } else {\r\n body.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n } else if (data) {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n }\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onerror = reject;\r\n xhr.onabort = reject;\r\n xhr.ontimeout = reject;\r\n xhr.onload = function () {\r\n var response = xhr.responseText;\r\n var headers = (function (raw) {\r\n var arr = raw.trim().split(/[\\r\\n]+/);\r\n\r\n return arr.reduce(function (headers, line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n\r\n headers[header.toLowerCase()] = value;\r\n\r\n return headers;\r\n }, {});\r\n })(xhr.getAllResponseHeaders());\r\n\r\n if (/^application\\/json/.test(headers[\"content-type\"])) {\r\n response = JSON.parse(response);\r\n }\r\n\r\n resolve({\r\n status: xhr.status,\r\n headers: headers,\r\n data: response,\r\n });\r\n };\r\n\r\n xhr.open(method, url);\r\n\r\n xhr.timeout = timeout * 1000;\r\n\r\n for (var header in headers) {\r\n if (headers.hasOwnProperty(header)) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n }\r\n }\r\n\r\n if (credentials) {\r\n xhr.withCredentials = true;\r\n }\r\n\r\n xhr.send(body);\r\n });\r\n },\r\n});\r\n\r\n// aliasses\r\ndmx.__actions[\"setValue\"] = dmx.__actions[\"assign\"];\r\ndmx.__actions[\"api\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"api.send\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"serverConnect\"] = dmx.__actions[\"fetch\"];\r\n","dmx.Actions({\r\n /**\r\n * Add new columns to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.add - Object with column name as key and the value\r\n * @param {boolean} [options.overwrite=false] - Overwrite existing columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var add = options.add;\r\n var overwrite = !!this.parse(options.overwrite);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n \r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in add) {\r\n if (add.hasOwnProperty(column)) {\r\n var scope = new dmx.DataScope(row, this.scope);\r\n\r\n if (overwrite || row[column] == null) {\r\n row[column] = dmx.parse(add[column], scope);\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Remove entire specified columns from the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns\r\n * @param {boolean} [options.keep=false] - Keep or remove the columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.filterColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n var keep = !!this.parse(options.keep);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n if (columns.includes(column)) {\r\n if (keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n } else if (!keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Rename columns in the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.rename - Object with old name as key and new name as value\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.renameColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rename = this.parse(options.rename);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n newRow[rename[column] || column] = dmx.clone(row[column]);\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Fills empty rows with the row above's value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns to fill\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.fillDown': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n var toFill = {};\r\n\r\n for (var i = 0, l = columns.length; i < l; i++) {\r\n toFill[columns[i]] = null;\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in toFill) {\r\n if (toFill.hasOwnProperty(column)) {\r\n if (row[column] == null) {\r\n row[column] = toFill[column];\r\n } else {\r\n toFill[column] = row[column];\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Add new rows to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object[]} options.rows - The rows to add\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRows': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rows = this.parse(options.rows);\r\n\r\n return dmx.clone(collection).concat(dmx.clone(rows));\r\n },\r\n\r\n /**\r\n * Add row numbers to the collection\r\n * @param {Object} options \r\n * @param {Object[]} options.collection - The collection\r\n * @param {string} options.column - The name for the column\r\n * @param {number} options.startAt - The row number to start with\r\n * @param {boolean} [options.desc=false] - Order descending\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRowNumbers': function(options) {\r\n var collection = this.parse(options.collection);\r\n var column = this.parse(options.column);\r\n var startAt = this.parse(options.startAt);\r\n var desc = !!this.parse(options.desc);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n row[column] = desc ? l + startAt - i : startAt + i;\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Join two collections (Left join)\r\n * @param {Object} options\r\n * @param {Object[]} options.collection1 - Left collection\r\n * @param {Object[]} options.collection2 - Right collection\r\n * @param {Object.} options.matches - Columns to match\r\n * @param {boolean} [options.matchAll=false] - Match columns using AND instead of OR\r\n * @returns {Object[]} - New collection\r\n */\r\n 'colections.join': function(options) {\r\n var collection1 = this.parse(options.collection1);\r\n var collection2 = this.parse(options.collection2);\r\n var matches = this.parse(options.matches);\r\n var matchAll = !!this.parse(options.matchAll);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection1.length; i < l; i++) {\r\n var row = dmx.clone(collection1[i]);\r\n\r\n for (var j = 0, l2 = collection2.length; j < l2; j++) {\r\n var row2 = collection2[j];\r\n var hasMatch = false;\r\n\r\n for (var match in matches) {\r\n if (matches.hasOwnProperty(match)) {\r\n if (row[match] == row2[matches[match]]) {\r\n hasMatch = true;\r\n if (!matchAll) break;\r\n } else if (matchAll) {\r\n hasMatch = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (hasMatch) {\r\n for (var column in row2) {\r\n if (row2.hasOwnProperty(column)) {\r\n // TODO duplicate row from collection1 when multiple matches exist in collection2\r\n // TODO check for duplicate column names\r\n row[column] = dmx.clone(row2[column]);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Normalize all rows, add missing columns with NULL value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.mormalize': function(options) {\r\n var collection = this.parse(options.collection);\r\n\r\n var columns = [];\r\n var output = [];\r\n\r\n // first collect all columns from collection\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n for (var column in collection[i]) {\r\n if (collection[i].hasOwnProperty(column)) {\r\n if (columns.indexOf(column) == -1) {\r\n columns.push(column);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = {};\r\n\r\n for (var j = 0, l2 = columns.length; j < l2; j++) {\r\n var column = columns[j];\r\n var value = dmx.clone(collection[column]);\r\n row[column] = value != null ? value : null;\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n});","dmx.Actions({\r\n\r\n 'console.log': function(options) {\r\n console.log(this.parse(options.message));\r\n },\r\n\r\n 'console.info': function(options) {\r\n console.info(this.parse(options.message));\r\n },\r\n\r\n 'console.warn': function(options) {\r\n console.warn(this.parse(options.message));\r\n },\r\n\r\n 'console.error': function(options) {\r\n console.error(this.parse(options.message));\r\n },\r\n\r\n 'console.count': function(options) {\r\n console.count(this.parse(options.label));\r\n },\r\n\r\n 'console.time': function(options) {\r\n console.time(this.parse(options.label));\r\n },\r\n\r\n 'console.timeEnd': function(options) {\r\n console.timeEnd(this.parse(options.label));\r\n },\r\n\r\n 'console.group': function(options) {\r\n console.group();\r\n },\r\n\r\n 'console.groupEnd': function(options) {\r\n console.groupEnd();\r\n },\r\n\r\n 'console.clear': function(options) {\r\n console.clear();\r\n }\r\n\r\n});"]} \ No newline at end of file +{"version":3,"sources":["init.js","core/polyfills.js","core/clone.js","core/equal.js","core/api.js","core/events.js","core/fileUtils.js","appConnect.js","cordova.js","core/signal.js","core/signalProxy.js","core/scope.js","core/dom.js","core/parser.js","core/BaseComponent.js","core/pathToRegexp.js","core/hjson.js","core/flow.js","components/app.js","components/form.js","components/formElement.js","components/textarea.js","components/input.js","components/inputFile.js","components/inputFileMultiple.js","components/button.js","components/radio.js","components/radioGroup.js","components/checkbox.js","components/checkboxGroup.js","components/select.js","components/selectMultiple.js","components/value.js","components/repeat.js","components/repeatItem.js","components/fetch.js","components/serverconnect.js","components/serverconnectForm.js","components/if.js","components/datetime.js","components/apiAction.js","components/apiForm.js","components/array.js","components/group.js","components/flow.js","components/toggle.js","components/formData.js","attributes/bind.js","attributes/on.js","attributes/repeat.js","attributes/class.js","attributes/hide.js","attributes/show.js","attributes/html.js","attributes/text.js","attributes/style.js","formatters/global.js","actions/core.js","actions/collections.js","actions/console.js"],"names":["window","dmx","version","versions","config","mapping","form","input","textarea","select","noop","isset","v","undefined","array","a","Array","from","reIgnoreElement","rePrefixed","reExpression","reExpressionReplace","reToggleAttribute","reDashAlpha","reUppercase","__components","Object","create","__attributes","before","mounted","__formatters","boolean","global","string","number","object","any","__adapters","__actions","__startup","Set","Element","prototype","closest","s","i","matches","this","document","ownerDocument","querySelectorAll","el","length","item","parentElement","NodeList","forEach","queueMicrotask","callback","Promise","resolve","then","catch","e","setTimeout","Node","defineProperty","get","contains","toggleAttribute","name","force","hasAttribute","removeAttribute","setAttribute","toString","hasOwnProperty","reFlags","reTypedType","eq","value","other","assocIndexOf","key","getMapData","data","type","map","Hash","entries","index","clear","entry","set","__data__","size","delete","result","has","HASH_UNDEFINED","ListCache","pop","splice","push","MapCache","hash","Map","Stack","pairs","LARGE_ARRAY_SIZE","getType","call","slice","isArray","isObject","cloneArrayBuffer","arrayBuffer","constructor","byteLength","Uint8Array","cloneTypedArray","typedArray","buffer","byteOffset","initType","imageData","regexp","dataView","Ctor","source","exec","lastIndex","width","height","clone","stack","stacked","subValue","add","test","isTypedArray","props","keys","iteratee","arrayEach","objValue","assignValue","equalArrays","arrLength","arrValue","othValue","equal","equalDeep","objIsArr","othIsArr","objType","othType","isSameType","String","equalByType","objProps","objLength","objCtor","othCtor","equalObjects","createClass","proto","parent","Cls","apply","arguments","assign","ready","fn","readyState","addEventListener","once","Config","Component","parentComponent","extends","BaseComponent","initialData","attributes","methods","events","node","Attribute","hook","Formatter","Formatters","formatters","Adapter","Action","action","Actions","actions","Startup","promise","debounce","delay","handle","cb","clearTimeout","cancelAnimationFrame","requestAnimationFrame","throttle","args","db","keyCodes","bs","tab","enter","esc","space","left","up","right","down","backspace","pause","capslock","escape","pageup","pagedown","end","home","arrowleft","arrowup","arrowright","arrowdown","insert","numlock","scrolllock","semicolon","comma","minus","period","slash","backquote","bracketleft","backslash","bracketright","quote","numpad0","numpad1","numpad2","numpad3","numpad4","numpad5","numpad6","numpad7","numpad8","numpad9","numpadmultiply","numpadadd","numpadsubstract","numpaddivide","f1","f2","f3","f4","f5","f6","f7","f8","f9","f10","f11","f12","digit0","digit1","digit2","digit3","digit4","digit5","digit6","digit7","digit8","digit9","keya","keyb","keyc","keyd","keye","keyf","keyg","keyh","keyi","keyj","keyk","keyl","keym","keyn","keyo","keyp","keyq","keyr","keyt","keyu","keyv","keyw","keyx","keyy","keyz","eventListener","target","eventType","handler","modifiers","timeout","listener","event","self","currentTarget","ctrl","ctrlKey","alt","altKey","shift","shiftKey","meta","metaKey","originalEvent","nsp","includes","MouseEvent","button","parseInt","button0","button1","button2","button3","button4","KeyboardEvent","keyVal","which","stop","stopPropagation","prevent","preventDefault","$data","pageX","pageY","x","clientX","y","clientY","WheelEvent","deltaX","deltaY","deltaZ","deltaMode","PointerEvent","pointerId","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","TouchEvent","touchMap","touch","identifier","screenX","screenY","touches","changedTouches","targetTouches","rotation","scale","location","repeat","code","Dom7","nodeType","replace","capture","off","jQuery","passive","removeEventListener","fileUtils","fileReader","file","readAs","reject","reader","FileReader","onload","onerror","error","blobToArrayBuffer","blob","blobToBinaryString","blobToDataURL","blobToBase64String","dataURL","substring","indexOf","arrayBufferToBlob","Blob","binaryStringToBlob","binary","bytes","c","charCodeAt","dataURLToBlob","parseDataURL","base64StringToBlob","base64String","atob","match","mediaType","base64","split","parseMediaType","subtype","suffix","parameters","reduce","obj","param","_wr","orig","history","rv","Event","toLowerCase","dispatchEvent","pushState","replaceState","onpopstate","state","title","documentElement","style","visibility","all","app","Error","root","querySelector","App","err","console","extend","extended","deep","merge","prop","parseDate","struct","offset","n","Date","k","UTC","d","setUTCHours","setUTCMinutes","setUTCSeconds","setUTCMilliseconds","setHours","setMinutes","setSeconds","setMilliseconds","hashCode","o","str","JSON","stringify","Math","abs","randomizer","seed","repeatItems","items","l","$key","$index","$value","escapeRegExp","val","validate","tagName","elements","dirty","checkValidity","validateReset","queue","task","context","nextTick","postMessage","requestUpdate","warn","protocol","is","batches","batch","prev","Signal","_","toJSON","valueOf","computedSignal","Computed","f","super","$","r","Reactive","peek","defaults","async","equals","outerEffect","computed","options","empty","dispose","FX","run","Effect","m","sync","effect","unique","isNew","skip","effects","signal","signalProxy","signals","b","Proxy","receiver","Reflect","startsWith","ok","deleteProperty","Scope","random","del","DataScope","selector","len","addClass","className","classList","removeClass","remove","toggleClass","toggle","hasClass","attr","attrs","getAttribute","removeAttr","css","getComputedStyle","getPropertyValue","setProperty","each","append","children","j","appendChild","appendTo","detach","parentNode","removeChild","innerHTML","dom","id","getElementById","query","elem","createElement","walk","hasChildNodes","child","childNodes","getAttributes","attribute","specified","substr","argument","part","pos","fullName","oldNode","newNode","replaceChild","_CACHE","_OPERATORS","_ESCAPE_CHARS","_EXPRESSIONS","pow","_RESERVED","scope","__dmxScope__","_SUPPORTED_TYPES","lexer","expression","token","start","ch","ch2","ch3","tokens","op","read","isQuote","readString","isDigid","readNumber","isAlpha","readIdent","testRegexp","readRegexp","isWhitespace","chars","isAlphaNum","isExpOperator","hex","fromCharCode","exponent","next","BigInt","Decimal","RegExp","parse","trim","endsWith","parseExpression","expect","doParse","consume","exp","parseLogicalAnd","parseLogicalOr","parseConditional","parseBitwiseOr","parseBitwiseXor","parseBitwiseAnd","parseEquality","parseRelational","parseBitwiseShift","parseMultiplicative","parseAddictive","parseUnary","parsePrimary","arr","parseMember","parseCall","parseIndex","func","argsFn","indexFn","method","bind","$node","listeners","__disposables","__childDisposables","updatedProps","updateRequested","isInitialized","isDestroyed","oldValue","alwaysUpdate","$initialData","$parseAttributes","init","render","$customAttributes","dmxComponent","dmxRendered","tag","destroy","$parse","find","found","beforeUpdate","update","updated","beforeDestroy","destroyed","CustomEvent","defaultPrevented","$createChild","component","$addChild","debug","$removeChild","toUpperCase","__inChild","$parseTextNode","nodeValue","parts","fragment","createDocumentFragment","textNode","createTextNode","$watch","findIndex","isComponent","__WAPPLER__","$update","idents","opts","attrName","default","Boolean","Number","isFinite","enum","Function","$event","$originalEvent","performUpdate","$type","$addBinding","$destroy","$destroyChildren","ignoreParents","pathToRegexp","compile","tokensToFunction","tokensToRegExp","DEFAULT_DELIMITER","PATH_REGEXP","join","res","path","defaultDelimiter","delimiter","whitelist","pathEscaped","escaped","group","modifier","optional","pattern","prefix","escapeGroup","escapeString","encode","encodeURIComponent","segment","TypeError","flags","sensitive","strict","concat","route","endToken","isEndDelimited","groups","regexpToRegexp","arrayToRegexp","stringToRegexp","Hjson","text","at","escapee","t","isPunctuatorChar","col","line","charAt","offs","allowML","exitCh","mlString","uffff","triple","indent","skipIndent","keyname","white","tryParseNumber","stopAtNext","leadingZeros","testLeading","errorClosingHint","search","report","possibleErr","hint","withoutBraces","isEol","chf","tfnns","checkTrailing","rootValue","Flow","_execStep","output","flow","_exec","_each","curr","steps","step","timerName","now","time","disabled","timeEnd","load","dispatchLoad","_parseQuery","querystring","p","decodeURIComponent","base","content","decodeURI","pathname","novalidate","submit","direct","_submit","reset","_reset","_validate","invalid","_submitHandler","_resetHandler","noValidate","grecaptcha","_formSubmit","cancelable","_focusFirstInvalid","_formReset","HTMLFormElement","elm","validity","valid","focus","_parseJsonForm","element","parseSteps","setValue","checked","selectedOptions","opt","org","re","reNumeric","p1","last","nextType","current","focused","validationMessage","_setValue","_focus","disable","_disable","changed","_inputHandler","_changeHandler","_invalidHandler","_focusHandler","_blurHandler","defaultValue","_form","activeElement","imageMaxWidth","imageMaxHeight","imageType","imageQuality","_imageTypes","png","jpeg","webp","_imageExtensions","_updateData","files","_resizeImage","blobUrl","URL","createObjectURL","img","Image","src","revokeObjectURL","ratio","needResize","newType","canvas","ctx","getContext","drawImage","toBlob","container","DataTransfer","newName","newFile","File","date","lastModified","lastModifiedDate","toISOString","dataUrl","_dataUrl","_resizeImages","loading","check","triggerEvent","_select","unchecked","defaultChecked","bubbles","radios","_mutationObserver","MutationObserver","mutationList","mutation","attributeName","_updateValue","addedNodes","ELEMENT_NODE","checkbox","observe","subtree","childList","attributeFilter","disconnect","_radios","radio","filter","_checkboxes","selectedIndex","selectedValue","selectedText","optiontext","optionvalue","setSelectedIndex","_options","_updatingOptions","_renderOptions","option","selected","defaultSelected","textContent","_getValue","rerender","prevItems","childKeys","$template","firstChild","_rerender","_clear","RepeatItem","nextPos","_clone","aStart","bStart","aEnd","bEnd","outer","_moveChild","_insertChild","_removeChild","aLength","bLength","aNullable","sources","fill","moved","synced","keyIndex","seq","_lis","toParse","cloneNode","$nodes","u","il","insertBefore","status","links","paging","headers","executing","uploading","processing","downloading","uploadProgress","position","percent","total","downloadProgress","lastError","message","response","url","params","dataType","noload","cache","ttl","credentials","abort","_abort","reload","_fetch","_resetData","done","unauthorized","forbidden","success","upload","ProgressEvent","download","_statusEvents","_loadHandler","_abortHandler","_errorHandler","_timeoutHandler","_downloadProgressHandler","_progressHandler","_uploadProgressHandler","_xhr","XMLHttpRequest","clearData","qs","_url","WebviewProxy","convertProxyUrl","created","FormData","open","setRequestHeader","header","withCredentials","serverconnect","csrf_token","send","_done","responseText","_parseHeaders","statusText","arrHeaders","getAllResponseHeaders","_parseLinkHeaders","linkHeader","link","linkUrl","acc","info","rel","_parsePaging","page","pages","first","countHeader","loaded","lengthComputable","ceil","sockets","Socket","_refresh","_event","_socket","on","connected","emit","autosubmit","postData","_extendNode","dmxExtraData","dmxExtraElements","_send","setMessage","condition","show","hide","_shown","_template","_show","_hide","template","datetime","interval","utc","_tick","_timeout","_animationFrame","_datetime","pad","year","getUTCFullYear","getFullYear","month","getUTCMonth","getMonth","day","getUTCDate","getDate","hours","getUTCHours","getHours","minutes","getUTCMinutes","getMinutes","seconds","getUTCSeconds","getSeconds","dateString","tz","count","newItem","_splice","_count","addUniq","_indexOf","insertAfter","replaceAt","removeAt","reverse","_reverse","sort","_sort","running","preload","autorun","throwError","_run","runSub","_runSub","_load","_flow","_parse","_destroyed","fetch","_runFlow","$param","uncheck","_formdataHandler","formData","_appendData","isToggle","nodeName","dmxOn","comment","createComment","fast","dmxClass","dmxHide","initial","display","priority","getPropertyPriority","dmxShow","dmxHtml","html","dmxText","innerText","dmxStyle","important","json","log","subflow","wait","lower","upper","floating","rnd","floor","round","confirm","else","prompt","alert","parentScope","parentOutput","$name","$number","$oddeven","outputFields","field","if","conditions","when","cases","while","loop","switch","case","tryCatch","try","runJS","function","setGlobal","setSession","sessionStorage","setItem","getSession","getItem","removeSession","removeItem","setStorage","localStorage","getStorage","removeStorage","body","xhr","onabort","ontimeout","collection","overwrite","row","column","columns","keep","newRow","rename","toFill","rows","startAt","desc","collection1","collection2","matchAll","l2","row2","hasMatch","label","groupEnd"],"mappings":"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","file":"dmxAppConnect.js","sourcesContent":["window.dmx = {\r\n // Versions\r\n version: '2.0.19',\r\n versions: {},\r\n\r\n // Configuration Options\r\n config: {\r\n mapping: {\r\n 'form': 'form',\r\n 'button, input[type=button], input[type=submit], input[type=reset]': 'button',\r\n 'input[type=radio]': 'radio',\r\n 'input[type=checkbox]': 'checkbox',\r\n 'input[type=file][multiple]': 'input-file-multiple',\r\n 'input[type=file]': 'input-file',\r\n 'input': 'input',\r\n 'textarea': 'textarea',\r\n 'select[multiple]': 'select-multiple',\r\n 'select': 'select',\r\n '.checkbox-group': 'checkbox-group',\r\n '.radio-group': 'radio-group'\r\n },\r\n },\r\n\r\n noop: () => {},\r\n isset: (v) => v !== undefined,\r\n array: (a) => a != null ? Array.from(a) : [],\r\n\r\n // Global Regexp\r\n reIgnoreElement: /^(script|style)$/i,\r\n rePrefixed: /^dmx-/i,\r\n reExpression: /\\{\\{(.+?)\\}\\}/,\r\n reExpressionReplace: /\\{\\{(.+?)\\}\\}/g,\r\n reToggleAttribute: /^(checked|selected|disabled|required|hidden|async|autofocus|autoplay|default|defer|multiple|muted|novalidate|open|readonly|reversed|scoped)$/i,\r\n reDashAlpha: /-([a-z])/g,\r\n reUppercase: /[A-Z]/g,\r\n \r\n // Internal collections for registering components etc.\r\n __components: Object.create(null),\r\n __attributes: {\r\n before: Object.create(null),\r\n mounted: Object.create(null),\r\n },\r\n __formatters: {\r\n boolean: Object.create(null),\r\n global: Object.create(null),\r\n string: Object.create(null),\r\n number: Object.create(null),\r\n object: Object.create(null),\r\n array: Object.create(null),\r\n any: Object.create(null),\r\n },\r\n __adapters: Object.create(null),\r\n __actions: Object.create(null),\r\n __startup: new Set(),\r\n};\r\n","// Polyfills for older browsers\r\n// IE is not supported\r\n\r\n// https://caniuse.com/element-closest\r\nif (window.Element && !('closest' in Element.prototype)) {\r\n Element.prototype.closest = function (s) {\r\n let matches = (this.document || this.ownerDocument).querySelectorAll(s),\r\n i,\r\n el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) {};\r\n } while ((i < 0) && (el = el.parentElement));\r\n return el;\r\n };\r\n}\r\n\r\n// https://caniuse.com/mdn-api_nodelist_foreach\r\nif (window.NodeList && !('forEach' in NodeList.prototype)) {\r\n NodeList.prototype.forEach = Array.prototype.forEach;\r\n}\r\n\r\n// https://caniuse.com/mdn-api_queuemicrotask\r\nif (typeof window.queueMicrotask !== 'function') {\r\n window.queueMicrotask = function (callback) {\r\n Promise.resolve().then(callback).catch(e => setTimeout(() => { throw e }));\r\n }\r\n}\r\n\r\n// https://caniuse.com/mdn-api_node_isconnected\r\nif (window.Node && !('isConnected' in Node.prototype)) {\r\n Object.defineProperty(Node.prototype, 'isConnected', {\r\n get: function () { return document.contains(this) }\r\n });\r\n}\r\n\r\n// https://caniuse.com/mdn-api_element_toggleattribute\r\nif (window.Element && !('toggleAttribute' in Element.prototype)) {\r\n Element.prototype.toggleAttribute = function (name, force) {\r\n if (this.hasAttribute(name)) {\r\n if (force !== true) this.removeAttribute(name);\r\n } else {\r\n if (force !== false) this.setAttribute(name, '');\r\n }\r\n }\r\n}","(function() {\r\n\r\n // unsupported types: ImageBitmap\r\n\r\n var LARGE_ARRAY_SIZE = 200;\r\n\r\n var toString = Object.prototype.toString;\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reFlags = /\\w*$/;\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var assocIndexOf = function(array, key) {\r\n var length = array.length;\r\n while (length--) {\r\n if (eq(array[length][0], key)) {\r\n return length;\r\n }\r\n }\r\n return -1;\r\n };\r\n\r\n var isKeyable = function(value) {\r\n var type = typeof value;\r\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\r\n ? (value !== '__proto__')\r\n : (value === null);\r\n };\r\n\r\n var getMapData = function(data, key) {\r\n return isKeyable(key)\r\n ? data[typeof key == 'string' ? 'string' : 'hash']\r\n : data.map;\r\n };\r\n\r\n var Hash = function(entries) {\r\n var index = -1,\r\n length = entries == null ? 0 : entries.length;\r\n\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n }\r\n\r\n Hash.prototype = {\r\n clear: function() {\r\n this.__data__ = Object.create(null);\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var result = this.has(key) && delete this.__data__[key];\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n var result = this.__data__[key];\r\n return result === HASH_UNDEFINED ? undefined : result;\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__[key] !== undefined;\r\n },\r\n\r\n set: function(key, value) {\r\n this.size += this.has(key) ? 0 : 1;\r\n this.__data__[key] = value === undefined ? HASH_UNDEFINED : value;\r\n return this;\r\n }\r\n }\r\n\r\n var ListCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n ListCache.prototype = {\r\n clear: function() {\r\n this.__data__ = [];\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n return false;\r\n }\r\n var lastIndex = data.length - 1;\r\n if (index == lastIndex) {\r\n data.pop();\r\n } else {\r\n data.splice(index, 1);\r\n }\r\n --this.size;\r\n return true;\r\n },\r\n\r\n get: function(key) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n return index < 0 ? undefined : data[index][1];\r\n },\r\n\r\n has: function(key) {\r\n return assocIndexOf(this.__data__, key) > -1;\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n var index = assocIndexOf(data, key);\r\n if (index < 0) {\r\n ++this.size;\r\n data.push([key, value]);\r\n } else {\r\n data[index][1] = value;\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n var MapCache = function(entries) {\r\n var index = -1;\r\n var length = entries == null ? 0 : entries.length;\r\n this.clear();\r\n while (++index < length) {\r\n var entry = entries[index];\r\n this.set(entry[0], entry[1]);\r\n }\r\n };\r\n\r\n MapCache.prototype = {\r\n clear: function() {\r\n this.size = 0;\r\n this.__data__ = {\r\n 'hash': new Hash(),\r\n 'map': new Map(),\r\n 'string': new Hash()\r\n };\r\n },\r\n\r\n delete: function(key) {\r\n var result = getMapData(this.__data__, key)['delete'](key);\r\n this.size -= result ? 1 : 0;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return getMapData(this.__data__, key).get(key);\r\n },\r\n\r\n has: function(key) {\r\n return getMapData(this.__data__, key).has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = getMapData(this.__data__, key);\r\n var size = data.size;\r\n data.set(key, value);\r\n this.size += data.size == size ? 0 : 1;\r\n return this;\r\n }\r\n };\r\n\r\n var Stack = function(entries) {\r\n var data = this.__data__ = new ListCache(entries);\r\n this.size = data.size;\r\n };\r\n\r\n Stack.prototype = {\r\n clear: function() {\r\n this.__data__ = new ListCache();\r\n this.size = 0;\r\n },\r\n\r\n delete: function(key) {\r\n var data = this.__data__;\r\n var result = data['delete'](key);\r\n this.size = data.size;\r\n return result;\r\n },\r\n\r\n get: function(key) {\r\n return this.__data__.get(key);\r\n },\r\n\r\n has: function(key) {\r\n return this.__data__.has(key);\r\n },\r\n\r\n set: function(key, value) {\r\n var data = this.__data__;\r\n if (data instanceof ListCache) {\r\n var pairs = data.__data__;\r\n if (pairs.length < LARGE_ARRAY_SIZE - 1) {\r\n pairs.push([key, value]);\r\n this.size = ++data.size;\r\n return this;\r\n }\r\n data = this.__data__ = new MapCache(pairs);\r\n }\r\n data.set(key, value);\r\n this.size = data.size;\r\n return this;\r\n }\r\n };\r\n\r\n var arrayEach = function(array, iteratee) {\r\n var index = -1;\r\n var length = array.length;\r\n while (++index < length) {\r\n if (iteratee(array[index], index, array) === false) {\r\n break;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isArray = function(value) {\r\n return Array.isArray(value);\r\n };\r\n\r\n var isObject = function(value) {\r\n return value != null && typeof value == 'object'\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var assignValue = function(object, key, value) {\r\n // Prototype polution protection\r\n if (key == '__proto__') return;\r\n\r\n var objValue = object[key];\r\n\r\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value))) {\r\n //if (value !== 0 || (1 / value) === (1 / objValue)) {\r\n object[key] = value;\r\n //}\r\n } else if (value === undefined && !(key in object)) {\r\n object[key] = value;\r\n }\r\n };\r\n\r\n var cloneArrayBuffer = function(arrayBuffer) {\r\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\r\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\r\n return result;\r\n };\r\n\r\n var cloneDataView = function(dataView) {\r\n var buffer = cloneArrayBuffer(dataView.buffer);\r\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\r\n };\r\n\r\n var cloneTypedArray = function(typedArray) {\r\n var buffer = cloneArrayBuffer(typedArray.buffer);\r\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\r\n };\r\n\r\n var cloneRegExp = function(regexp) {\r\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\r\n result.lastIndex = regexp.lastIndex;\r\n return result;\r\n };\r\n\r\n var cloneImageData = function(imageData) {\r\n var data = cloneTypedArray(imageData.data);\r\n return new imageData.constructor(data, imageData.width, imageData.height);\r\n }\r\n\r\n var initArray = function(array) {\r\n return new array.constructor(array.length);\r\n };\r\n\r\n var initType = function(object, type) {\r\n var Ctor = object.constructor;\r\n\r\n switch (type) {\r\n case 'ArrayBuffer':\r\n return cloneArrayBuffer();\r\n \r\n case 'Boolean':\r\n case 'Date':\r\n return new Ctor(+object);\r\n\r\n case 'DataView':\r\n return cloneDataView(object);\r\n\r\n case 'Float32Array':\r\n case 'Float64Array':\r\n case 'Int8Array':\r\n case 'Int16Array':\r\n case 'Int32Array':\r\n case 'Uint8Array':\r\n case 'Uint8ClampedArray':\r\n case 'Uint16Array':\r\n case 'Uint32Array':\r\n return cloneTypedArray(object);\r\n\r\n case 'Map':\r\n case 'Set':\r\n return new Ctor();\r\n\r\n case 'Number':\r\n case 'String':\r\n return new Ctor(object);\r\n\r\n case 'RegExp':\r\n return cloneRegExp(object);\r\n\r\n case 'ImageData':\r\n return cloneImageData(object);\r\n }\r\n };\r\n\r\n var clone = function(value, key, object, stack) {\r\n var result;\r\n\r\n if (!isObject(value)) {\r\n return value;\r\n }\r\n \r\n var type = getType(value);\r\n\r\n if (isArray(value)) {\r\n result = initArray(value);\r\n } else {\r\n if (type == 'Object') {\r\n result = {};\r\n } else {\r\n result = initType(value, type);\r\n }\r\n } \r\n \r\n stack = stack || new Stack();\r\n\r\n var stacked = stack.get(value);\r\n if (stacked) {\r\n return stacked;\r\n }\r\n stack.set(value, result);\r\n\r\n if (type == 'Map') {\r\n value.forEach(function(subValue, key) {\r\n result.set(key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (type == 'Set') {\r\n value.forEach(function(subValue) {\r\n result.add(clone(subValue, subValue, value, stack));\r\n });\r\n\r\n return result;\r\n }\r\n\r\n if (isTypedArray(value)) {\r\n return result;\r\n }\r\n\r\n var props = isArray(value) ? undefined : Object.keys(Object(value));\r\n arrayEach(props || value, function(subValue, key) {\r\n if (props) {\r\n key = subValue;\r\n subValue = value[key];\r\n }\r\n assignValue(result, key, clone(subValue, key, value, stack));\r\n });\r\n\r\n return result;\r\n };\r\n\r\n dmx.clone = clone;\r\n\r\n})();","(function() {\r\n\r\n // TODO: ImageData compare\r\n\r\n var hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\n var reTypedType = /^(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)Array$/;\r\n\r\n var eq = function(value, other) {\r\n return value === other || (value !== value && other !== other);\r\n }\r\n\r\n var getType = function(value) {\r\n return toString.call(value).slice(8, -1);\r\n };\r\n\r\n var isObject = function(value) {\r\n return typeof value === 'object' && value !== null;\r\n };\r\n\r\n var isTypedArray = function(value) {\r\n return isObject(value) && reTypedType.test(getType(value));\r\n };\r\n\r\n var mapToArray = function(map) {\r\n var index = -1;\r\n var result = new Array(map.size);\r\n map.forEach(function(value, key) {\r\n result[++index] = [key, value];\r\n });\r\n return result;\r\n };\r\n\r\n var setToArray = function(set) {\r\n var index = -1;\r\n var result = new Array(set.size);\r\n set.forEach(function(value) {\r\n result[++index] = value;\r\n });\r\n return result;\r\n }\r\n\r\n var equalByType = function(object, other, type) {\r\n switch (type) {\r\n case 'DataView':\r\n if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) {\r\n return false;\r\n }\r\n object = object.buffer;\r\n other = other.buffer;\r\n\r\n case 'ArrayBuffer':\r\n if (object.byteLength != other.byteLength || !equal(new Uint8Array(object), new Uint8Array(other))) {\r\n return false;\r\n }\r\n return true;\r\n\r\n case 'Boolean':\r\n case 'Date':\r\n case 'Number':\r\n return eq(+object, +other);\r\n\r\n case 'RegExp':\r\n case 'String':\r\n return object == String(other);\r\n\r\n case 'Map':\r\n case 'Set':\r\n if (object.size != other.size) return false;\r\n return equalArrays(Array.from(object), Array.from(other));\r\n }\r\n };\r\n\r\n var equalArrays = function(array, other) {\r\n var arrLength = array.length;\r\n var othLength = other.length;\r\n\r\n if (arrLength != othLength) {\r\n return false;\r\n }\r\n\r\n var index = -1;\r\n\r\n while (++index < arrLength) {\r\n var arrValue = array[index];\r\n var othValue = other[index];\r\n\r\n if (!(arrValue === othValue || equal(arrValue, othValue))) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n };\r\n\r\n var equalObjects = function(object, other) {\r\n var objProps = Object.keys(object);\r\n var objLength = objProps.length;\r\n var othProps = Object.keys(other);\r\n var othLength = othProps.length;\r\n\r\n if (objLength != othLength) {\r\n return false;\r\n }\r\n\r\n var key, index = objLength;\r\n \r\n while (index--) {\r\n key = objProps[index];\r\n if (!hasOwnProperty.call(other, key)) {\r\n return false;\r\n }\r\n }\r\n\r\n var result = true;\r\n\r\n while (++index < objLength) {\r\n key = objProps[index];\r\n var objValue = object[key];\r\n var othValue = other[key];\r\n\r\n if (!(objValue === othValue || equal(objValue, othValue))) {\r\n result = false;\r\n break;\r\n }\r\n }\r\n\r\n if (result) {\r\n var objCtor = object.constructor;\r\n var othCtor = other.constructor;\r\n\r\n if (objCtor != othCtor &&\r\n ('constructor' in object && 'constructor' in other) &&\r\n !(typeof objCtor === 'function' && objCtor instanceof objCtor &&\r\n typeof othCtor === 'function' && othCtor instanceof othCtor)) {\r\n result = false;\r\n }\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var equalDeep = function(object, other) {\r\n var objIsArr = Array.isArray(object);\r\n var othIsArr = Array.isArray(other);\r\n var objType = objIsArr ? 'Array' : getType(object);\r\n var othType = othIsArr ? 'Array' : getType(other);\r\n var objIsObj = objType == 'Object';\r\n var othIsObj = othType == 'Object';\r\n var isSameType = objType == othType;\r\n\r\n if (isSameType && !objIsObj) {\r\n return (objIsArr || isTypedArray(object))\r\n ? equalArrays(object, other)\r\n : equalByType(object, other, objType);\r\n }\r\n\r\n if (!isSameType) {\r\n return false;\r\n }\r\n\r\n return equalObjects(object, other);\r\n };\r\n\r\n var equal = function(value, other) {\r\n if (value === other) {\r\n return true;\r\n }\r\n if (value == null || other == null || (!isObject(value) && !isObject(other))) {\r\n return value !== value && other !== other;\r\n }\r\n return equalDeep(value, other);\r\n };\r\n\r\n dmx.equal = equal;\r\n\r\n})();","// Create Class\r\ndmx.createClass = (proto, parent) => {\r\n const Cls = function () {\r\n if (proto.constructor) {\r\n proto.constructor.apply(this, arguments);\r\n }\r\n };\r\n\r\n if (parent && parent.prototype) {\r\n Cls.prototype = Object.create(parent.prototype);\r\n }\r\n\r\n Object.assign(Cls.prototype, proto);\r\n\r\n Cls.prototype.constructor = Cls;\r\n\r\n return Cls;\r\n};\r\n\r\ndmx.ready = (fn) => {\r\n if (document.readyState === 'loading') {\r\n document.addEventListener('DOMContentLoaded', () => { fn() }, { once: true });\r\n } else {\r\n fn();\r\n }\r\n};\r\n\r\n// Config\r\ndmx.Config = (config) => {\r\n Object.assign(dmx.config, config)\r\n};\r\n\r\n// Create/get component\r\ndmx.Component = (name, proto) => {\r\n if (proto) {\r\n const parentComponent = proto.extends ? dmx.Component(proto.extends) : dmx.BaseComponent;\r\n \r\n if (typeof proto.initialData != 'function') {\r\n proto.initialData = Object.assign({}, parentComponent.prototype.initialData, proto.initialData);\r\n }\r\n proto.attributes = Object.assign({}, parentComponent.prototype.attributes, proto.attributes);\r\n proto.methods = Object.assign({}, parentComponent.prototype.methods, proto.methods);\r\n proto.events = Object.assign({}, parentComponent.prototype.events, proto.events);\r\n\r\n if (!proto.hasOwnProperty('constructor')) {\r\n proto.constructor = function(node, parent) {\r\n parentComponent.call(this, node, parent);\r\n }\r\n }\r\n\r\n proto.type = name;\r\n\r\n const Component = dmx.createClass(proto, parentComponent);\r\n Component.extends = proto.extends;\r\n\r\n dmx.__components[name] = Component;\r\n }\r\n\r\n return dmx.__components[name];\r\n};\r\n\r\n// Create attribute\r\ndmx.Attribute = (name, hook, fn) => {\r\n dmx.__attributes[hook][name] = fn;\r\n};\r\n\r\n// Create/get formatter(s)\r\ndmx.Formatter = (type, name, fn) => {\r\n dmx.__formatters[type][name] = fn;\r\n}\r\ndmx.Formatters = (type, formatters) => {\r\n for (const name in formatters) {\r\n dmx.Formatter(type, name, formatters[name]);\r\n }\r\n};\r\n\r\n// Create/get adapter\r\ndmx.Adapter = (type, name, fn) => {\r\n if (fn) dmx.__adapters[type][name] = fn;\r\n return dmx.__adapters[type][name];\r\n};\r\n\r\n// Create action(s)\r\ndmx.Action = (name, action) => {\r\n dmx.__actions[name] = action;\r\n};\r\ndmx.Actions = (actions) => {\r\n for (const name in actions) {\r\n dmx.Action(name, actions[name]);\r\n }\r\n};\r\n\r\n// Startup\r\ndmx.Startup = (promise) => {\r\n dmx.__startup.add(promise)\r\n};","dmx.debounce = (fn, delay) => {\r\n let handle;\r\n\r\n return function () {\r\n const cb = () => {\r\n fn.apply(this, arguments);\r\n };\r\n\r\n if (delay) {\r\n clearTimeout(handle);\r\n handle = setTimeout(cb, delay);\r\n } else {\r\n cancelAnimationFrame(handle);\r\n handle = requestAnimationFrame(cb);\r\n }\r\n };\r\n};\r\n\r\ndmx.throttle = (fn, delay) => {\r\n let throttle = false, args;\r\n\r\n return function () {\r\n args = Array.from(arguments);\r\n\r\n if (!throttle) {\r\n const cb = () => {\r\n throttle = false;\r\n if (args) fn.apply(this, args);\r\n };\r\n\r\n fn.apply(this, args);\r\n\r\n args = undefined;\r\n throttle = true;\r\n\r\n if (delay) {\r\n setTimeout(db, delay);\r\n } else {\r\n requestAnimationFrame(cb);\r\n }\r\n }\r\n };\r\n};\r\n\r\ndmx.keyCodes = {\r\n 'bs': 8,\r\n 'tab': 9,\r\n 'enter': 13,\r\n 'esc': 27,\r\n 'space': 32,\r\n 'left': 37,\r\n 'up': 38,\r\n 'right': 39,\r\n 'down': 40,\r\n 'delete': 46,\r\n\r\n 'backspace': 8,\r\n 'pause': 19,\r\n 'capslock': 20,\r\n 'escape': 27,\r\n 'pageup': 33,\r\n 'pagedown': 34,\r\n 'end': 35,\r\n 'home': 36,\r\n 'arrowleft': 37,\r\n 'arrowup': 38,\r\n 'arrowright': 39,\r\n 'arrowdown': 40,\r\n 'insert': 45,\r\n 'numlock': 144,\r\n 'scrolllock': 145,\r\n 'semicolon': 186,\r\n 'equal': 187,\r\n 'comma': 188,\r\n 'minus': 189,\r\n 'period': 190,\r\n 'slash': 191,\r\n 'backquote': 192,\r\n 'bracketleft': 219,\r\n 'backslash': 220,\r\n 'bracketright': 221,\r\n 'quote': 222,\r\n\r\n 'numpad0': 96,\r\n 'numpad1': 97,\r\n 'numpad2': 98,\r\n 'numpad3': 99,\r\n 'numpad4': 100,\r\n 'numpad5': 101,\r\n 'numpad6': 102,\r\n 'numpad7': 103,\r\n 'numpad8': 104,\r\n 'numpad9': 105,\r\n 'numpadmultiply': 106,\r\n 'numpadadd': 107,\r\n 'numpadsubstract': 109,\r\n 'numpaddivide': 111,\r\n\r\n 'f1': 112,\r\n 'f2': 113,\r\n 'f3': 114,\r\n 'f4': 115,\r\n 'f5': 116,\r\n 'f6': 117,\r\n 'f7': 118,\r\n 'f8': 119,\r\n 'f9': 120,\r\n 'f10': 121,\r\n 'f11': 122,\r\n 'f12': 123,\r\n\r\n 'digit0': 48,\r\n 'digit1': 49,\r\n 'digit2': 50,\r\n 'digit3': 51,\r\n 'digit4': 52,\r\n 'digit5': 53,\r\n 'digit6': 54,\r\n 'digit7': 55,\r\n 'digit8': 56,\r\n 'digit9': 57,\r\n\r\n 'keya': [65, 97],\r\n 'keyb': [66, 98],\r\n 'keyc': [67, 99],\r\n 'keyd': [68, 100],\r\n 'keye': [69, 101],\r\n 'keyf': [70, 102],\r\n 'keyg': [71, 103],\r\n 'keyh': [72, 104],\r\n 'keyi': [73, 105],\r\n 'keyj': [74, 106],\r\n 'keyk': [75, 107],\r\n 'keyl': [76, 108],\r\n 'keym': [77, 109],\r\n 'keyn': [78, 110],\r\n 'keyo': [79, 111],\r\n 'keyp': [80, 112],\r\n 'keyq': [81, 113],\r\n 'keyr': [82, 114],\r\n 'keys': [83, 115],\r\n 'keyt': [84, 116],\r\n 'keyu': [85, 117],\r\n 'keyv': [86, 118],\r\n 'keyw': [87, 119],\r\n 'keyx': [88, 120],\r\n 'keyy': [89, 121],\r\n 'keyz': [90, 122]\r\n};\r\n\r\ndmx.eventListener = function(target, eventType, handler, modifiers) {\r\n let timeout, throttle;\r\n \r\n const listener = function(event) {\r\n if (modifiers.self && event.target !== event.currentTarget) return;\r\n if (modifiers.ctrl && !event.ctrlKey) return;\r\n if (modifiers.alt && !event.altKey) return;\r\n if (modifiers.shift && !event.shiftKey) return;\r\n if (modifiers.meta && !event.metaKey) return;\r\n\r\n if ((event.originalEvent || event).nsp && !Object.keys(modifiers).includes((event.originalEvent || event).nsp)) {\r\n return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof MouseEvent) {\r\n if (modifiers.button != null && event.button != (parseInt(modifiers.button, 10) || 0)) return;\r\n if (modifiers.button0 && event.button != 0) return;\r\n if (modifiers.button1 && event.button != 1) return;\r\n if (modifiers.button2 && event.button != 2) return;\r\n if (modifiers.button3 && event.button != 3) return;\r\n if (modifiers.button4 && event.button != 4) return;\r\n }\r\n\r\n if ((event.originalEvent || event) instanceof KeyboardEvent) {\r\n var keys = [];\r\n\r\n Object.keys(modifiers).forEach(function(key) {\r\n var keyVal = parseInt(key, 10);\r\n\r\n if (keyVal) {\r\n keys.push(keyVal);\r\n } else if (dmx.keyCodes[key]) {\r\n keys.push(dmx.keyCodes[key]);\r\n }\r\n });\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n if (Array.isArray(keys[i])) {\r\n if (!keys[i].includes(event.which)) return;\r\n } else if (event.which !== keys[i]) return;\r\n }\r\n }\r\n\r\n if (modifiers.stop) event.stopPropagation();\r\n if (modifiers.prevent) event.preventDefault();\r\n \r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n if (!event.$data) event.$data = {};\r\n\r\n if (event instanceof MouseEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.pageX = event.pageX;\r\n event.$data.pageY = event.pageY;\r\n event.$data.x = event.x || event.clientX;\r\n event.$data.y = event.y || event.clientY;\r\n event.$data.button = event.button;\r\n }\r\n\r\n if (event instanceof WheelEvent) {\r\n event.$data.deltaX = event.deltaX;\r\n event.$data.deltaY = event.deltaY;\r\n event.$data.deltaZ = event.deltaZ;\r\n event.$data.deltaMode = event.deltaMode;\r\n }\r\n\r\n if (window.PointerEvent && event instanceof PointerEvent) {\r\n event.$data.pointerId = event.pointerId;\r\n event.$data.width = event.width;\r\n event.$data.height = event.height;\r\n event.$data.pressure = event.pressure;\r\n event.$data.tangentialPressure = event.tangentialPressure;\r\n event.$data.tiltX = event.tiltX;\r\n event.$data.tiltY = event.tiltY;\r\n event.$data.twist = event.twist;\r\n event.$data.pointerType = event.pointerType;\r\n event.$data.isPrimary = event.isPrimary;\r\n }\r\n\r\n if (window.TouchEvent && event instanceof TouchEvent) {\r\n const touchMap = touch => ({\r\n identifier: touch.identifier,\r\n screenX: touch.screenX,\r\n screenY: touch.screenY,\r\n clientX: touch.clientX,\r\n clientY: touch.clientY,\r\n pageX: touch.pageX,\r\n pageY: touch.pageY\r\n });\r\n\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.touches = Array.from(event.touches).map(touchMap);\r\n event.$data.changedTouches = Array.from(event.changedTouches).map(touchMap);\r\n event.$data.targetTouches = Array.from(event.targetTouches).map(touchMap);\r\n event.$data.rotation = event.rotation;\r\n event.$data.scale = event.scale;\r\n }\r\n\r\n if (event instanceof KeyboardEvent) {\r\n event.$data.altKey = event.altKey;\r\n event.$data.ctrlKey = event.ctrlKey;\r\n event.$data.metaKey = event.metaKey;\r\n event.$data.shiftKey = event.shiftKey;\r\n event.$data.location = event.location;\r\n event.$data.repeat = event.repeat;\r\n event.$data.code = event.code;\r\n event.$data.key = event.key;\r\n }\r\n\r\n if (modifiers.debounce) {\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n handler.apply(this, arguments);\r\n }, parseInt(modifiers.debounce, 10) || 0);\r\n } else if (modifiers.throttle) {\r\n if (!throttle) {\r\n throttle = true;\r\n handler.apply(this, arguments);\r\n setTimeout(() => {\r\n throttle = false\r\n }, parseInt(modifiers.throttle, 10) || 0);\r\n }\r\n } else {\r\n return handler.apply(this, arguments);\r\n }\r\n };\r\n\r\n modifiers = modifiers || {};\r\n\r\n if (window.Dom7 && target.nodeType === 1) {\r\n Dom7(target)[modifiers.once ? 'once' : 'on'](eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n return () => Dom7(target).off(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n } else if (window.jQuery && !modifiers.capture) {\r\n jQuery(target)[modifiers.once ? 'one' : 'on'](eventType.replace(/-/g, '.'), listener);\r\n return () => jQuery(target).off(eventType.replace(/-/g, '.'), listener);\r\n } else {\r\n target.addEventListener(eventType.replace(/-/g, '.'), listener, {\r\n capture: !!modifiers.capture,\r\n once: !!modifiers.once,\r\n passive: !!modifiers.passive\r\n });\r\n return () => target.removeEventListener(eventType.replace(/-/g, '.'), listener, !!modifiers.capture);\r\n }\r\n};\r\n","dmx.fileUtils = {\r\n\r\n fileReader (file, readAs) {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = () => resolve(reader.result);\r\n reader.onerror = () => reject(reader.error);\r\n reader[readAs](file);\r\n });\r\n },\r\n\r\n blobToArrayBuffer: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsArrayBuffer');\r\n },\r\n \r\n blobToBinaryString: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsBinaryString');\r\n },\r\n\r\n blobToDataURL: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL');\r\n },\r\n \r\n blobToBase64String: function(blob) {\r\n return dmx.fileUtils.fileReader(blob, 'readAsDataURL').then(dataURL =>\r\n dataURL.substring(dataURL.indexOf(',') + 1)\r\n );\r\n },\r\n\r\n arrayBufferToBlob: function(arrayBuffer, type) {\r\n return Promise.resolve(new Blob([arrayBuffer], { type }));\r\n },\r\n\r\n binaryStringToBlob: function(binary, type) {\r\n const bytes = Uint8Array.from(binary, c => c.charCodeAt(0));\r\n return Promise.resolve(new Blob([bytes], { type }));\r\n }, \r\n \r\n dataURLToBlob: function(dataURL) {\r\n const { data, type } = dmx.fileUtils.parseDataURL(dataURL);\r\n return dmx.fileUtils.base64StringToBlob(data, type);\r\n },\r\n\r\n base64StringToBlob: function(base64String, type) {\r\n const binary = window.atob(base64String);\r\n return dmx.fileUtils.binaryStringToBlob(binary, type);\r\n },\r\n\r\n parseDataURL: function(dataURL) {\r\n const match = dataURL.match(/^data:(.*?)(;base64)?,(.*)$/);\r\n return {\r\n mediaType: match[1],\r\n base64: !!match[2],\r\n data: match[3],\r\n type: match[1].split(';')[0],\r\n };\r\n },\r\n\r\n parseMediaType: function(mediaType) {\r\n const match = mediaType.match(/^([^/]+)\\/([^+;]+)(?:\\+([^;]+))?(?:;(.*))?$/);\r\n return {\r\n type: match[1],\r\n subtype: match[2],\r\n suffix: match[3],\r\n parameters: match[4] ? match[4].split(';').reduce((obj, param) => {\r\n const [key, value] = param.split('=');\r\n obj[key] = value;\r\n return obj;\r\n }, {}) : {},\r\n };\r\n },\r\n\r\n};\r\n\r\n\r\n","// Trigger event on pushState and replaceState\r\n// https://stackoverflow.com/questions/5129386/how-to-detect-when-history-pushstate-and-history-replacestate-are-used/25673911#25673911\r\n{\r\n const _wr = function(type) {\r\n const orig = history[type];\r\n\r\n return function() {\r\n const rv = orig.apply(this, arguments);\r\n const e = new Event(type.toLowerCase());\r\n e.arguments = arguments;\r\n window.dispatchEvent(e);\r\n return rv;\r\n };\r\n };\r\n\r\n history.pushState = _wr('pushState');\r\n history.replaceState = _wr('replaceState');\r\n}\r\n\r\nwindow.onpopstate = function(e) {\r\n if (e.state && e.state.title) {\r\n document.title = e.state.title;\r\n }\r\n};\r\n\r\ndocument.documentElement.style.visibility = 'hidden';\r\n\r\ndmx.ready(() => {\r\n // First execute all startup scripts that are registered\r\n const startup = Promise.all(dmx.__startup);\r\n\r\n // Now we can start App Connect\r\n startup.then(() => {\r\n if (dmx.app) {\r\n throw Error('App already running!');\r\n }\r\n\r\n history.replaceState({ title: document.title }, '');\r\n\r\n const root = document.querySelector(':root[dmx-app], [dmx-app], :root[is=\"dmx-app\"], [is=\"dmx-app\"]');\r\n\r\n if (!root) {\r\n throw Error('App root not found!');\r\n }\r\n\r\n const App = dmx.Component('app');\r\n\r\n dmx.app = new App(root, dmx.global);\r\n\r\n document.documentElement.style.visibility = '';\r\n }).catch((err) => {\r\n // Something went wrong, log error and show page\r\n console.error(err);\r\n document.documentElement.style.visibility = '';\r\n })\r\n});\r\n\r\ndmx.extend = function () {\r\n // Variables\r\n var extended = {};\r\n var deep = false;\r\n var i = 0;\r\n var length = arguments.length;\r\n\r\n // Check if a deep merge\r\n if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {\r\n deep = arguments[0];\r\n i++;\r\n }\r\n\r\n // Merge the object into the extended object\r\n var merge = function (obj) {\r\n for ( var prop in obj ) {\r\n // Prototype polution protection\r\n if (prop == '__proto__') continue;\r\n\r\n if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {\r\n // If deep merge and property is an object, merge properties\r\n if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {\r\n extended[prop] = dmx.extend( true, extended[prop], obj[prop] );\r\n } else {\r\n if (obj[prop] != null) {\r\n extended[prop] = obj[prop];\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n // Loop through each object and conduct a merge\r\n for ( ; i < length; i++ ) {\r\n var obj = arguments[i];\r\n merge(obj);\r\n }\r\n\r\n return extended;\r\n};\r\n\r\ndmx.parseDate = function(obj) {\r\n if (typeof obj == 'string') {\r\n var d, struct, offset = 0, n = [1,4,5,6,7,10,11];\r\n\r\n if (obj.toLowerCase() == 'now') {\r\n return new Date();\r\n }\r\n\r\n if ((struct = /^(\\d{4}|[+\\-]\\d{6})(?:-(\\d{2})(?:-(\\d{2}))?)?(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?)?$/.exec(obj))) {\r\n for (var i = 0, k; (k = n[i]); ++i) {\r\n struct[k] = +struct[k] || 0;\r\n }\r\n\r\n struct[2] = (+struct[2] || 1) - 1;\r\n struct[3] = +struct[3] || 1;\r\n\r\n if (struct[8] === undefined) {\r\n return new Date(struct[1], struct[2], struct[3], struct[4], struct[5], struct[6], struct[7]);\r\n } else {\r\n if (struct[8] !== 'Z' && struct[9] !== undefined) {\r\n offset = struct[10] * 60 + struct[11];\r\n if (struct[9] === '+') offset = 0 - offset;\r\n }\r\n\r\n return new Date(Date.UTC(struct[1], struct[2], struct[3], struct[4], struct[5] + offset, struct[6], struct[7]));\r\n }\r\n } else if ((struct = /^(\\d{2}):(\\d{2})(?::(\\d{2})(?:\\.(\\d{3}))?)?(?:(Z)|([+\\-])(\\d{2})(?::(\\d{2}))?)?$/.exec(obj))) {\r\n var d = new Date();\r\n if (struct[5] === 'Z') {\r\n d.setUTCHours(+struct[1] || 0);\r\n d.setUTCMinutes(+struct[2] || 0);\r\n d.setUTCSeconds(+struct[3] || 0);\r\n d.setUTCMilliseconds(+struct[4] || 0);\r\n } else {\r\n d.setHours(+struct[1] || 0);\r\n d.setMinutes(+struct[2] || 0);\r\n d.setSeconds(+struct[3] || 0);\r\n d.setMilliseconds(+struct[4] || 0);\r\n }\r\n return d;\r\n }\r\n\r\n return new Date(obj);\r\n } else if (typeof obj == 'number') {\r\n return new Date(obj * 1000);\r\n } else {\r\n return new Date('');\r\n }\r\n};\r\n\r\ndmx.hashCode = function(o) {\r\n if (o == null) return 0;\r\n var str = JSON.stringify(o);\r\n var i, hash = 0;\r\n for (i = 0; i < str.length; i++) {\r\n hash = ((hash << 5) - hash) + str.charCodeAt(i);\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash);\r\n};\r\n\r\ndmx.randomizer = function(seed) {\r\n seed = +seed || 0;\r\n return function() {\r\n seed = (seed * 9301 + 49297) % 233280;\r\n return seed / 233280;\r\n };\r\n};\r\n\r\ndmx.repeatItems = function(repeat) {\r\n const items = [];\r\n\r\n if (repeat) {\r\n if (typeof repeat == 'object') {\r\n if (Array.isArray(repeat)) {\r\n for (let i = 0, l = repeat.length; i < l; i++) {\r\n const item = dmx.clone(repeat[i]);\r\n items.push(Object.assign({}, item, {\r\n $key: i,\r\n $index: i,\r\n $value: item\r\n }));\r\n }\r\n } else {\r\n let i = 0;\r\n for (const key in repeat) {\r\n if (repeat.hasOwnProperty(key)) {\r\n const item = dmx.clone(repeat[key]);\r\n items.push(Object.assign({}, item, {\r\n $key: key,\r\n $index: i,\r\n $value: item\r\n }));\r\n i++;\r\n }\r\n }\r\n }\r\n } else if (typeof repeat == 'number') {\r\n for (let n = 0; n < repeat; n++) {\r\n items.push({\r\n $key: String(n),\r\n $index: n,\r\n $value: n + 1\r\n });\r\n }\r\n }\r\n }\r\n\r\n return items;\r\n};\r\n\r\ndmx.escapeRegExp = function(val) {\r\n // https://github.com/benjamingr/RegExp.escape\r\n return val.replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\r\n};\r\n\r\ndmx.validate = function(node) {\r\n if (node.tagName == 'FORM') {\r\n Array.from(node.elements).forEach(node => node.dirty = true);\r\n }\r\n\r\n return node.checkValidity();\r\n};\r\n\r\ndmx.validateReset = function(node) {\r\n // reset validation?\r\n};\r\n\r\n(() => {\r\n const queue = [];\r\n\r\n window.addEventListener('message', event => {\r\n if (event.source === window && event.data === 'dmxNextTick' && queue.length) {\r\n event.stopPropagation();\r\n while (queue.length) {\r\n const task = queue.shift();\r\n task.fn.call(task.context);\r\n };\r\n }\r\n }, true);\r\n\r\n dmx.nextTick = (fn, context) => {\r\n queue.push({ fn, context });\r\n window.postMessage('dmxNextTick', '*');\r\n }\r\n})();\r\n\r\ndmx.requestUpdate = function() {\r\n console.warn('dmx.requestUpdate is deprecated.');\r\n};\r\n","// cordova init\r\n\r\nif (document.location.protocol == 'app:') { // cordova detection by checking protocol\r\n dmx.Startup(new Promise(resolve => document.addEventListener('deviceready', resolve)));\r\n}","(() => {\r\n /*! (c) Andrea Giammarchi */\r\n \r\n const {is} = Object;\r\n \r\n let batches;\r\n \r\n /**\r\n * Execute a callback that will not side-effect until its top-most batch is\r\n * completed.\r\n * @param {() => void} callback a function that batches changes to be notified\r\n * through signals.\r\n */\r\n const batch = callback => {\r\n const prev = batches;\r\n batches = prev || [];\r\n try {\r\n callback();\r\n if (!prev)\r\n for (const {value} of batches);\r\n }\r\n finally { batches = prev }\r\n };\r\n dmx.batch = batch;\r\n \r\n /**\r\n * A signal with a value property also exposed via toJSON, toString and valueOf.\r\n * When created via computed, the `value` property is **readonly**.\r\n * @template T\r\n */\r\n class Signal {\r\n constructor(value) {\r\n this._ = value;\r\n }\r\n \r\n /** @returns {T} */\r\n toJSON() { return this.value }\r\n \r\n /** @returns {string} */\r\n toString() { return String(this.value) }\r\n \r\n /** @returns {T} */\r\n valueOf() { return this.value }\r\n }\r\n dmx.Signal = Signal\r\n \r\n let computedSignal;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Computed extends Signal {\r\n /**\r\n * @private\r\n * @type{Reactive}\r\n */\r\n s\r\n /**\r\n * @param {(v: T) => T} _ \r\n * @param {T} v \r\n * @param {{ equals?: Equals }} o\r\n * @param {boolean} f \r\n */\r\n constructor(_, v, o, f) {\r\n super(_);\r\n this.f = f; // is effect?\r\n this.$ = true; // should update (\"value for money\")\r\n this.r = new Set; // related signals\r\n this.s = new Reactive(v, o); // signal\r\n }\r\n peek() { return this.s.peek() }\r\n get value() {\r\n if (this.$) {\r\n const prev = computedSignal;\r\n computedSignal = this;\r\n try { this.s.value = this._(this.s._) }\r\n finally {\r\n this.$ = false;\r\n computedSignal = prev;\r\n }\r\n }\r\n return this.s.value;\r\n }\r\n }\r\n \r\n const defaults = {async: false, equals: true};\r\n \r\n /**\r\n * Returns a read-only Signal that is invoked only when any of the internally\r\n * used signals, as in within the callback, is unknown or updated.\r\n * @type {(fn: (v: T) => R, value?: V, options?: { equals?: Equals }) => ComputedSignal}\r\n */\r\n const computed = (fn, value, options = defaults) =>\r\n new Computed(fn, value, options, false);\r\n dmx.computed = computed;\r\n \r\n let outerEffect;\r\n const empty = [];\r\n const noop = () => {};\r\n const dispose = ({s}) => {\r\n if (typeof s._ === 'function')\r\n s._ = s._();\r\n };\r\n \r\n class FX extends Computed {\r\n constructor(_, v, o) {\r\n super(_, v, o, true);\r\n this.e = empty;\r\n }\r\n run() {\r\n this.$ = true;\r\n this.value;\r\n return this;\r\n }\r\n stop() {\r\n this._ = noop;\r\n for (const s of this.r) {\r\n // remove computed from related signals\r\n s.c.delete(this);\r\n }\r\n this.r.clear();\r\n this.s.c.clear();\r\n }\r\n }\r\n dmx.FX = FX\r\n \r\n class Effect extends FX {\r\n constructor(_, v, o) {\r\n super(_, v, o);\r\n this.i = 0; // index\r\n this.a = !!o.async; // async\r\n this.m = true; // microtask\r\n this.e = []; // effects\r\n // \"I am effects\" ^_^;;\r\n }\r\n get value() {\r\n this.a ? this.async() : this.sync();\r\n }\r\n async() {\r\n if (this.m) {\r\n this.m = false;\r\n queueMicrotask(() => {\r\n this.m = true;\r\n this.sync();\r\n });\r\n }\r\n }\r\n sync() {\r\n const prev = outerEffect;\r\n (outerEffect = this).i = 0;\r\n dispose(this);\r\n super.value;\r\n outerEffect = prev;\r\n }\r\n stop() {\r\n super.stop();\r\n dispose(this);\r\n for (const effect of this.e.splice(0))\r\n effect.stop();\r\n }\r\n }\r\n dmx.Effect = Effect\r\n \r\n /**\r\n * Invokes a function when any of its internal signals or computed values change.\r\n * \r\n * Returns a dispose callback.\r\n * @template T\r\n * @type {(fn: (v: T) => T, value?: T, options?: { async?: boolean }) => () => void}\r\n */\r\n const effect = (callback, value, options = defaults) => {\r\n let unique;\r\n if (outerEffect) {\r\n const {i, e} = outerEffect;\r\n const isNew = i === e.length;\r\n // bottleneck:\r\n // there's literally no way to optimize this path *unless* the callback is\r\n // already a known one. however, latter case is not really common code so\r\n // the question is: should I optimize this more than this? 'cause I don't\r\n // think the amount of code needed to understand if a callback is *likely*\r\n // the same as before makes any sense + correctness would be trashed.\r\n if (isNew || e[i]._ !== callback) {\r\n if (!isNew) e[i].stop();\r\n e[i] = new Effect(callback, value, options).run();\r\n }\r\n unique = e[i];\r\n outerEffect.i++;\r\n }\r\n else\r\n unique = new Effect(callback, value, options).run();\r\n return () => { unique.stop() };\r\n };\r\n dmx.effect = effect;\r\n \r\n const skip = () => false;\r\n /**\r\n * @template T\r\n * @extends {Signal}\r\n */\r\n class Reactive extends Signal {\r\n constructor(_, {equals}) {\r\n super(_)\r\n this.c = new Set; // computeds\r\n this.s = equals === true ? is : (equals || skip); // (don't) skip updates\r\n }\r\n /**\r\n * Allows to get signal.value without subscribing to updates in an effect\r\n * @returns {T}\r\n */\r\n peek() { return this._ }\r\n /** @returns {T} */\r\n get value() {\r\n if (computedSignal) {\r\n this.c.add(computedSignal);\r\n computedSignal.r.add(this);\r\n }\r\n return this._;\r\n }\r\n set value(_) {\r\n const prev = this._;\r\n if (!this.s((this._ = _), prev)) {\r\n if (this.c.size) {\r\n const effects = [];\r\n const stack = [this];\r\n for (const signal of stack) {\r\n for (const computed of signal.c) {\r\n if (!computed.$ && computed.r.has(signal)) {\r\n computed.r.clear();\r\n computed.$ = true;\r\n if (computed.f) {\r\n effects.push(computed);\r\n const stack = [computed];\r\n for (const c of stack) {\r\n for (const effect of c.e) {\r\n effect.r.clear();\r\n effect.$ = true;\r\n stack.push(effect);\r\n }\r\n }\r\n }\r\n else\r\n stack.push(computed.s);\r\n }\r\n }\r\n }\r\n for (const effect of effects)\r\n batches ? batches.push(effect) : effect.value;\r\n }\r\n }\r\n }\r\n }\r\n \r\n /**\r\n * Returns a writable Signal that side-effects whenever its value gets updated.\r\n * @template T\r\n * @type {(initialValue: T, options?: { equals?: Equals }) => ReactiveSignal}\r\n */\r\n const signal = (value, options = defaults) => new Reactive(value, options);\r\n dmx.signal = signal;\r\n \r\n /**\r\n * @template [T=any]\r\n * @typedef {boolean | ((prev: T, next: T) => boolean)} Equals\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '_'|'s'|'c'>} ReactiveSignal\r\n */\r\n \r\n /**\r\n * @public\r\n * @template T\r\n * @typedef {Omit, '$'|'s'|'f'|'r'|'_'>} ComputedSignal\r\n */\r\n })();","dmx.signalProxy = function (o = {}) {\r\n const signals = new Map();\r\n const equals = (a, b) => {\r\n return dmx.equal(a, b);\r\n };\r\n\r\n return new Proxy(o, {\r\n has (target, prop) {\r\n // when checking for a prop, always return true\r\n return true;\r\n },\r\n\r\n get (target, prop, receiver) {\r\n const value = Reflect.get(target, prop, receiver);\r\n\r\n if (typeof value == 'function' || typeof prop != 'string' || prop.startsWith('_')) {\r\n // ignore private props\r\n return value;\r\n }\r\n\r\n if (!signals.has(prop)) {\r\n signals.set(prop, dmx.signal(value, { equals }));\r\n }\r\n\r\n return signals.get(prop).value;\r\n },\r\n\r\n set (target, prop, value, receiver) {\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok) {\r\n if (signals.has(prop)) {\r\n signals.get(prop).value = value;\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n\r\n deleteProperty (target, prop) {\r\n const ok = Reflect.deleteProperty(target, prop);\r\n\r\n if (ok && signals.has(prop)) {\r\n signals.get(prop).value = undefined;\r\n }\r\n\r\n return ok;\r\n }\r\n });\r\n};","(() => {\r\n\r\n class Scope {\r\n\r\n constructor (initialData = {}, parent = null) {\r\n if (typeof initialData !== 'object') {\r\n initialData = { $value: initialData };\r\n }\r\n\r\n this.data = dmx.signalProxy();\r\n Object.assign(this.data, initialData);\r\n this.parent = parent;\r\n this.seed = Math.random();\r\n }\r\n\r\n get (name) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n set (name, value) {\r\n if (typeof name === 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n }\r\n\r\n del (name) {\r\n delete this.data[name];\r\n }\r\n\r\n }\r\n\r\n dmx.global = new Scope();\r\n dmx.DataScope = function (data, parent) {\r\n return new Scope(data, parent || dmx.global);\r\n };\r\n\r\n})();","(function() {\r\n\r\n var $ = function(selector) {\r\n if (!(this instanceof $)) {\r\n return new $(selector);\r\n }\r\n if (selector instanceof $) {\r\n return selector;\r\n }\r\n if (!selector) return this;\r\n var len = selector.length;\r\n if (selector.nodeType) {\r\n this[0] = selector;\r\n this.length = 1;\r\n } else if (typeof selector == 'string') {\r\n return $(document.querySelectorAll(selector));\r\n } else if (len) {\r\n for (var i = 0; i < len; i++) {\r\n if (selector[i] && selector[i].nodeType) {\r\n this[this.length] = selector[i];\r\n this.length++;\r\n }\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n $.prototype = {\r\n constructor: $,\r\n length: 0,\r\n\r\n addClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.add(className);\r\n }\r\n return this;\r\n },\r\n\r\n removeClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.remove(className);\r\n }\r\n return this;\r\n },\r\n\r\n toggleClass: function(className) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].classList.toggle(className);\r\n }\r\n return this;\r\n },\r\n\r\n hasClass: function(className) {\r\n if (!this[0]) return false;\r\n return this[0].classList.contains(className);\r\n },\r\n\r\n attr: function(attrs, value) {\r\n if (arguments.length === 1 && typeof attrs === 'string') {\r\n return this[0] && this[0].getAttribute(attrs);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].setAttribute(attrs, value);\r\n } else {\r\n for (var attr in attrs) {\r\n if (attrs.hasOwnProperty(attr)) {\r\n this[i].setAttribute(attr, attrs[attr]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n removeAttr: function(attr) {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].removeAttribute(attr);\r\n }\r\n return this;\r\n },\r\n\r\n prop: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && this[0][props];\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i][props] = value;\r\n } else {\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n this[i][prop] = props[prop];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n css: function(props, value) {\r\n if (arguments.length === 1 && typeof props === 'string') {\r\n return this[0] && window.getComputedStyle(this[0], null).getPropertyValue(props);\r\n } else {\r\n for (var i = 0; i < this.length; i++) {\r\n if (arguments.length === 2) {\r\n this[i].style.setProperty(props, value);\r\n } else {\r\n for (var prop in props) {\r\n if (props.hasOwnProperty(prop)) {\r\n this[i].style.setProperty(prop, props[prop]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n each: function(callback, context) {\r\n if (!callback) return this;\r\n for (var i = 0; i < this.length; i++) {\r\n if (callback.call(context || this[i], i, this[i]) === false) {\r\n return this;\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n append: function() {\r\n for (var i = 0; i < arguments.length; i++) {\r\n var children = $(arguments[i]);\r\n\r\n for (var j = 0; j < children.length; j++) {\r\n this[0].appendChild(children[j]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n appendTo: function(parent) {\r\n $(parent).append(this);\r\n return this;\r\n },\r\n\r\n detach: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n if (this[i].parentNode) {\r\n this[i].parentNode.removeChild(this[i]);\r\n }\r\n }\r\n return this;\r\n },\r\n\r\n empty: function() {\r\n for (var i = 0; i < this.length; i++) {\r\n this[i].innerHTML = '';\r\n }\r\n return this;\r\n }\r\n };\r\n\r\n dmx.dom = {\r\n\r\n get: function(id) {\r\n return $(document.getElementById(id));\r\n },\r\n\r\n select: function(query) {\r\n return $(query);\r\n },\r\n\r\n create: function(tagName) {\r\n var elem = document.createElement(tagName);\r\n return $(elem);\r\n },\r\n\r\n contains: function(node) {\r\n return document.documentElement.contains(node);\r\n },\r\n\r\n walk: function(node, fn, context) {\r\n if (node) {\r\n if (fn.call(context, node) === false) {\r\n // stop going deeper when callback returns false\r\n return;\r\n } else if (node.hasChildNodes()) {\r\n for (const child of Array.from(node.childNodes)) {\r\n dmx.dom.walk(child, fn, context);\r\n }\r\n }\r\n }\r\n },\r\n\r\n getAttributes: function(node) {\r\n var attributes = [];\r\n\r\n if (node.nodeType == 1) {\r\n for (var i = 0; i < node.attributes.length; i++) {\r\n var attribute = node.attributes[i];\r\n\r\n if (attribute && attribute.specified && dmx.rePrefixed.test(attribute.name)) {\r\n var name = attribute.name.substr(4);\r\n var argument = null;\r\n var modifiers = {};\r\n\r\n name.split('.').forEach(function(part, i) {\r\n if (i === 0) {\r\n name = part;\r\n } else {\r\n var pos = part.indexOf(':');\r\n if (pos > 0) {\r\n modifiers[part.substr(0, pos)] = part.substr(pos + 1);\r\n } else {\r\n modifiers[part] = true;\r\n }\r\n }\r\n });\r\n\r\n var pos = name.indexOf(':');\r\n if (pos > 0) {\r\n argument = name.substr(pos + 1);\r\n name = name.substr(0, pos);\r\n }\r\n\r\n attributes.push({\r\n name: name,\r\n fullName: attribute.name,\r\n value: attribute.value,\r\n argument: argument,\r\n modifiers: modifiers\r\n });\r\n }\r\n }\r\n }\r\n\r\n return attributes;\r\n },\r\n\r\n remove: function(node) {\r\n if (Array.isArray(node)) {\r\n node.forEach(function(node) {\r\n dmx.dom.remove(node);\r\n });\r\n } else {\r\n node.remove()\r\n }\r\n },\r\n\r\n replace: function(oldNode, newNode) {\r\n if (oldNode.parentNode) {\r\n oldNode.parentNode.replaceChild(newNode, oldNode);\r\n }\r\n }\r\n\r\n };\r\n\r\n})();\r\n","dmx._CACHE = new Map();\r\n\r\ndmx._OPERATORS = new Map([\r\n ['{', 'L_CURLY'],\r\n ['}', 'R_CURLY'],\r\n ['[', 'L_BRACKET'],\r\n [']', 'R_BRACKET'],\r\n ['(', 'L_PAREN'],\r\n [')', 'R_PAREN'],\r\n ['.', 'PERIOD'],\r\n [',', 'COMMA'],\r\n [';', 'SEMI'], // not used\r\n [':', 'COLON'],\r\n ['?', 'QUESTION'],\r\n // Arithmetic operators\r\n ['-', 'ADDICTIVE'],\r\n ['+', 'ADDICTIVE'],\r\n ['*', 'MULTIPLICATIVE'],\r\n ['/', 'MULTIPLICATIVE'],\r\n ['%', 'MULTIPLICATIVE'],\r\n // Comparison operators\r\n ['===', 'EQUALITY'],\r\n ['!==', 'EQUALITY'],\r\n ['==', 'EQUALITY'],\r\n ['!=', 'EQUALITY'],\r\n ['<', 'RELATIONAL'],\r\n ['>', 'RELATIONAL'],\r\n ['<=', 'RELATIONAL'],\r\n ['>=', 'RELATIONAL'],\r\n ['in', 'RELATIONAL'],\r\n // Logical operators\r\n ['&&', 'LOGICAL_AND'],\r\n ['||', 'LOGICAL_OR'],\r\n ['!', 'LOGICAL_NOT'],\r\n // Bitwise operators\r\n ['&', 'BITWISE_AND'],\r\n ['|', 'BITWISE_OR'],\r\n ['^', 'BITWISE_XOR'],\r\n ['~', 'BITWISE_NOT'],\r\n ['<<', 'BITWISE_SHIFT'],\r\n ['>>', 'BITWISE_SHIFT'],\r\n ['>>>', 'BITWISE_SHIFT'],\r\n]);\r\n\r\ndmx._ESCAPE_CHARS = new Map([\r\n ['n', '\\n'],\r\n ['r', '\\r'],\r\n ['t', '\\t'],\r\n ['b', '\\b'],\r\n ['f', '\\f'],\r\n ['v', '\\v'],\r\n ['0', '\\0'],\r\n [\"'\", \"'\"],\r\n ['`', '`'],\r\n ['\"', '\"'],\r\n]);\r\n\r\ndmx._EXPRESSIONS = new Map([\r\n ['**', (a, b) => Math.pow(a(), b())],\r\n ['??', (a, b) => (a = a(), a == null ? b() : a)],\r\n ['in', (a, b) => a() in b()],\r\n ['?', (a, b, c) => (a() ? b() : c())],\r\n ['+', (a, b) => (a = a(), b = b(), a == null ? b : b == null ? a : a + b)],\r\n ['-', (a, b) => a() - b()],\r\n ['*', (a, b) => a() * b()],\t\r\n ['/', (a, b) => a() / b()],\r\n ['%', (a, b) => a() % b()],\r\n ['===', (a, b) => a() === b()],\r\n ['!==', (a, b) => a() !== b()],\r\n ['==', (a, b) => a() == b()],\r\n ['!=', (a, b) => a() != b()],\r\n ['<', (a, b) => a() < b()],\r\n ['>', (a, b) => a() > b()],\r\n ['<=', (a, b) => a() <= b()],\r\n ['>=', (a, b) => a() >= b()],\r\n ['&&', (a, b) => a() && b()],\r\n ['||', (a, b) => a() || b()],\r\n ['&', (a, b) => a() & b()],\r\n ['|', (a, b) => a() | b()],\r\n ['^', (a, b) => a() ^ b()],\r\n ['<<', (a, b) => a() << b()],\r\n ['>>', (a, b) => a() >> b()],\r\n ['>>>', (a, b) => a() >>> b()],\r\n ['~', (a) => ~a()],\r\n ['!', (a) => !a()],\r\n]);\r\n\r\ndmx._RESERVED = new Map([\r\n ['this', (scope) => () => scope.data],\r\n ['true', () => () => true],\r\n ['false', () => () => false],\r\n ['null', () => () => null],\r\n ['undefined', () => () => undefined],\r\n ['_', () => () => ({ __dmxScope__: true })],\r\n]);\r\n\r\ndmx._SUPPORTED_TYPES = new Map([\r\n ['Boolean', 'boolean'],\r\n ['Null', 'null'],\r\n ['Undefined', 'undefined'],\r\n ['Number', 'number'],\r\n ['BigInt', 'number'],\r\n ['Decimal', 'number'], // requires Decimal.js\r\n ['String', 'string'],\r\n ['Date', 'date'],\r\n ['RegExp', 'regexp'],\r\n ['Blob', 'blob'],\r\n ['File', 'file'],\r\n ['FileList', 'filelist'],\r\n ['ArrayBuffer', 'arraybuffer'],\r\n ['ImageBitmap', 'imagebitmap'],\r\n ['ImageData', 'imagedata'],\r\n ['Array', 'array'],\r\n ['Object', 'object'],\r\n ['Map', 'map'],\r\n ['Set', 'set'],\r\n ['DataView', 'array'],\r\n ['Int8Array', 'array'],\r\n ['Uint8Array', 'array'],\r\n ['Uint8ClampedArray', 'array'],\r\n ['Int16Array', 'array'],\r\n ['Uint16Array', 'array'],\r\n ['Int32Array', 'array'],\r\n ['Uint32Array', 'array'],\r\n ['Float32Array', 'array'],\r\n ['Float64Array', 'array'],\r\n ['BigInt64Array', 'array'],\r\n ['BigUint64Array', 'array'],\r\n]);\r\n\r\ndmx.getType = function (obj) {\r\n return dmx._SUPPORTED_TYPES.get(Object.prototype.toString.call(obj).slice(8, -1));\r\n};\r\n\r\ndmx.lexer = function (expression) {\r\n if (dmx._CACHE.has(expression)) {\r\n return dmx._CACHE.get(expression);\r\n }\r\n\r\n let tokens = [], token, name, start, index = 0, op = true, ch, ch2, ch3;\r\n\r\n while (index < expression.length) {\r\n start = index;\r\n\r\n ch = read();\r\n\r\n if (isQuote(ch)) {\r\n name = 'STRING';\r\n token = readString(ch);\r\n op = false;\r\n } else if ((isDigid(ch) || (is('.') && peek() && isDigid(peek()))) && op) {\r\n name = 'NUMBER';\r\n token = readNumber();\r\n op = false;\r\n } else if (isAlpha(ch) && op) {\r\n name = 'IDENT';\r\n token = readIdent();\r\n if (is('(')) {\r\n name = 'METHOD';\r\n }\r\n op = false;\r\n } else if (is('/') && op && (token == '(' || token == ',' || token == '?' || token == ':') && testRegexp()) {\r\n name = 'REGEXP';\r\n token = readRegexp();\r\n op = false;\r\n } else if (isWhitespace(ch)) {\r\n index++;\r\n continue;\r\n } else if ((ch3 = read(3)) && dmx._OPERATORS.has(ch3)) {\r\n name = dmx._OPERATORS.get(ch3);\r\n token = ch3;\r\n op = true;\r\n index += 3;\r\n } else if ((ch2 = read(2)) && dmx._OPERATORS.has(ch2)) {\r\n name = dmx._OPERATORS.get(ch2);\r\n token = ch2;\r\n op = true;\r\n index += 2;\r\n } else if (dmx._OPERATORS.has(ch)) {\r\n name = dmx._OPERATORS.get(ch);\r\n token = ch;\r\n op = true;\r\n index++;\r\n } else {\r\n throw new Error(`Unexpected token \"${ch}\" at index ${index} in expression: ${expression}`);\r\n }\r\n\r\n tokens.push({ name, index: start, value: token });\r\n }\r\n\r\n dmx._CACHE.set(expression, tokens);\r\n\r\n return tokens;\r\n\r\n function read (n) {\r\n return n > 1 ? expression.slice(index, index + n) : expression[index];\r\n }\r\n\r\n function peek (n = 1) {\r\n return index + n < expression.length ? expression[index + n] : false;\r\n }\r\n\r\n function is (chars) {\r\n return chars.includes(ch);\r\n }\r\n\r\n function isQuote (ch) {\r\n return ch == '\"' || ch == \"'\" || ch == '`';\r\n }\r\n\r\n function isDigid (ch) {\r\n return ch >= '0' && ch <= '9';\r\n }\r\n\r\n function isAlpha (ch) {\r\n return (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || ch === '_' || ch === '$';\r\n }\r\n\r\n function isAlphaNum (ch) {\r\n return isAlpha(ch) || isDigid(ch);\r\n }\r\n\r\n function isWhitespace (ch) {\r\n return ch == ' ' || ch == '\\r' || ch == '\\t' || ch == '\\n' || ch == '\\v' || ch == '\\u00A0';\r\n }\r\n\r\n function isExpOperator (ch) {\r\n return ch == '-' || ch == '+' || isDigid(ch);\r\n }\r\n\r\n function readString (quote) {\r\n let escape = false, result = '';\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n if (ch == 'u') {\r\n index++;\r\n const hex = read(4);\r\n if (!hex.match(/[\\da-f]{4}/i)) {\r\n throw new Error(`Invalid unicode escape [\\\\u${hex}] at index ${index} in expression: ${expression}`);\r\n }\r\n result += String.fromCharCode(parseInt(hex, 16));\r\n index += 4;\r\n } else {\r\n result += dmx._ESCAPE_CHARS.has(ch) ? dmx._ESCAPE_CHARS.get(ch) : ch;\r\n }\r\n\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == quote) {\r\n index++;\r\n if (quote == '`') {\r\n result = '{{' + result + '}}';\r\n }\r\n return result;\r\n } else {\r\n result += ch;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated string in expression: ${expression}`);\r\n }\r\n\r\n function readNumber () {\r\n let result = '', exponent = false;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (is('_') && peek() && isDigid(peek())) {\r\n index++;\r\n continue;\r\n }\r\n\r\n if ((is('.') && peek() && isDigid(peek())) || isDigid(ch)) {\r\n result += ch;\r\n } else {\r\n const next = peek();\r\n\r\n if (is('eE') && isExpOperator(next)) {\r\n result += 'e';\r\n exponent = true;\r\n } else if (isExpOperator(ch) && next && isDigid(next) && exponent) {\r\n result += ch;\r\n exponent = false;\r\n } else if (isExpOperator(ch) && (!next || !isDigid(next)) && exponent) {\r\n throw new Error(`Invalid exponent in expression: ${expression}`);\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n index++;\r\n }\r\n\r\n if (read() == 'n') {\r\n index++;\r\n return BigInt(result);\r\n }\r\n\r\n if (read() == 'm') {\r\n index++;\r\n if (window.Decimal) {\r\n return new Decimal(result);\r\n } else {\r\n console.warn('Decimal number in expression but library not found');\r\n }\r\n }\r\n\r\n return +result;\r\n }\r\n\r\n function readIdent () {\r\n let result = '';\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (isAlphaNum(ch)) {\r\n result += ch;\r\n } else {\r\n break;\r\n }\r\n\r\n index++;\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function readRegexp () {\r\n let result = '', modifiers = '', escape = false;\r\n\r\n index++;\r\n\r\n while (index < expression.length) {\r\n ch = read();\r\n\r\n if (escape) {\r\n escape = false;\r\n } else if (ch == '\\\\') {\r\n escape = true;\r\n } else if (ch == '/') {\r\n index++;\r\n\r\n while ('ign'.includes(ch = read())) {\r\n modifiers += ch;\r\n index++;\r\n }\r\n\r\n return new RegExp(result, modifiers);\r\n }\r\n\r\n result += ch;\r\n index++;\r\n }\r\n\r\n throw new Error(`Unterminated regexp in expression: ${expression}`);\r\n }\r\n\r\n function testRegexp () {\r\n let i = index, ok = true;\r\n\r\n try {\r\n readRegexp();\r\n } catch (e) {\r\n ok = false;\r\n }\r\n\r\n index = i;\r\n ch = '/';\r\n\r\n return ok;\r\n }\r\n};\r\n\r\ndmx.parse = function (expression, scope = dmx.app) {\r\n expression = expression.trim();\r\n\r\n if (expression.includes('{{')) {\r\n if (expression.startsWith('{{') && expression.endsWith('}}') && !expression.slice(2).includes('{{')) {\r\n expression = expression.slice(2, -2);\r\n } else {\r\n return expression.replace(/{{(.+?)}}/g, (_, expression) => {\r\n const result = dmx.parse(expression, scope);\r\n return result == null ? '' : result;\r\n });\r\n }\r\n }\r\n\r\n if (!expression) return undefined;\r\n\r\n let tokens, context, result;\r\n\r\n try {\r\n tokens = Array.from(dmx.lexer(expression));\r\n result = doParse();\r\n } catch (e) {\r\n console.error('Error parsing expression:', expression, e);\r\n }\r\n\r\n return result;\r\n\r\n function read () {\r\n if (tokens.length === 0) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n return tokens[0];\r\n }\r\n\r\n function peek (e) {\r\n if (tokens.length > 0) {\r\n const token = tokens[0];\r\n\r\n if (!e || token.name == e) {\r\n return token;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function expect (e) {\r\n const token = peek(e);\r\n\r\n if (token) {\r\n tokens.shift();\r\n return token;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function consume (e) {\r\n if (!expect(e)) {\r\n throw new Error(`Expected ${e} at index ${tokens[0].index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n function fn (exp) {\r\n const args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return () => {\r\n if (dmx._EXPRESSIONS.has(exp)) {\r\n return dmx._EXPRESSIONS.get(exp).apply(scope, args);\r\n }\r\n\r\n return exp;\r\n };\r\n }\r\n\r\n function doParse () {\r\n const a = [];\r\n\r\n while (true) {\r\n if (tokens.length > 0 && !(peek('R_PAREN') || peek('R_BRACKET') || peek('R_CURLY') || peek('COMMA') || peek('SEMI'))) {\r\n a.push(parseExpression());\r\n }\r\n\r\n if (!(expect('COMMA') || expect('SEMI'))) {\r\n return (a.length == 1 ? a[0] : b)();\r\n }\r\n }\r\n\r\n function b () {\r\n let result;\r\n\r\n for (let i = 0; i < a.length; i++) {\r\n const e = a[i];\r\n if (e) result = e();\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n function parseExpression () {\r\n return parseConditional();\r\n }\r\n\r\n function parseConditional () {\r\n const a = parseLogicalOr();\r\n\r\n if (expect('QUESTION')) {\r\n const b = parseExpression();\r\n consume('COLON');\r\n const c = parseExpression();\r\n\r\n return fn('?', a, b, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalOr () {\r\n let a = parseLogicalAnd();\r\n\r\n while (expect('LOGICAL_OR')) {\r\n const b = parseLogicalAnd();\r\n a = fn('||', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseLogicalAnd () {\r\n let a = parseBitwiseOr();\r\n\r\n while (expect('LOGICAL_AND')) {\r\n const b = parseBitwiseOr();\r\n a = fn('&&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseOr () {\r\n let a = parseBitwiseXor();\r\n\r\n while (expect('BITWISE_OR')) {\r\n const b = parseBitwiseXor();\r\n a = fn('|', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseXor () {\r\n let a = parseBitwiseAnd();\r\n\r\n while (expect('BITWISE_XOR')) {\r\n const b = parseBitwiseAnd();\r\n a = fn('^', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseAnd () {\r\n let a = parseEquality();\r\n\r\n while (expect('BITWISE_AND')) {\r\n const b = parseEquality();\r\n a = fn('&', a, b);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseEquality () {\r\n let a = parseRelational(), b;\r\n\r\n if ((b = expect('EQUALITY'))) {\r\n const c = parseEquality();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseRelational () {\r\n let a = parseBitwiseShift(), b;\r\n\r\n if ((b = expect('RELATIONAL'))) {\r\n const c = parseRelational();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseBitwiseShift () {\r\n let a = parseAddictive(), b;\r\n\r\n if ((b = expect('BITWISE_SHIFT'))) {\r\n const c = parseBitwiseShift();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseAddictive () {\r\n let a = parseMultiplicative(), b;\r\n\r\n while ((b = expect('ADDICTIVE'))) {\r\n const c = parseMultiplicative();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseMultiplicative () {\r\n let a = parseUnary(), b;\r\n\r\n while ((b = expect('MULTIPLICATIVE'))) {\r\n const c = parseUnary();\r\n a = fn(b.value, a, c);\r\n }\r\n\r\n return a;\r\n }\r\n\r\n function parseUnary () {\r\n let a;\r\n\r\n if ((a = expect('ADDICTIVE'))) {\r\n if (a.value == '+') {\r\n return parsePrimary();\r\n } else {\r\n return fn(a.value, () => 0, parsePrimary());\r\n }\r\n } else if ((a = expect('LOGICAL_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else if ((a = expect('BITWISE_NOT'))) {\r\n return fn(a.value, parseUnary());\r\n } else {\r\n return parsePrimary();\r\n }\r\n }\r\n\r\n function parsePrimary () {\r\n let result, next;\r\n\r\n if (expect('L_PAREN')) {\r\n result = parseExpression();\r\n consume('R_PAREN');\r\n } else if (expect('L_CURLY')) {\r\n const obj = {};\r\n\r\n if (read().name != 'R_CURLY') {\r\n do {\r\n const key = expect().value;\r\n consume('COLON');\r\n obj[key] = parseExpression()();\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(obj);\r\n\r\n consume('R_CURLY');\r\n } else if (expect('L_BRACKET')) {\r\n const arr = [];\r\n\r\n if (read().name != 'R_BRACKET') {\r\n do {\r\n arr.push(parseExpression()());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n result = fn(arr);\r\n\r\n consume('R_BRACKET');\r\n } else if (expect('PERIOD')) {\r\n result = peek() ? parseMember(fn(scope.data)) : fn(scope.data);\r\n } else {\r\n const token = expect();\r\n\r\n if (token === false) {\r\n throw new Error(`Unexpected end of expression: ${expression}`);\r\n }\r\n\r\n if (token.name == 'IDENT') {\r\n result = dmx._RESERVED.has(token.value) ? dmx._RESERVED.get(token.value)(scope) : () => scope.get(token.value);\r\n } else if (token.name == 'METHOD') {\r\n result = fn(dmx.__formatters.global[token.value] || (() => {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n return undefined;\r\n })\r\n );\r\n } else {\r\n result = () => token.value;\r\n }\r\n }\r\n\r\n while ((next = expect('L_PAREN') || expect('L_BRACKET') || expect('PERIOD'))) {\r\n if (next.value == '(') {\r\n result = parseCall(result, context);\r\n } else if (next.value == '[') {\r\n context = result;\r\n result = parseIndex(result, context);\r\n } else if (next.value == '.') {\r\n context = result;\r\n result = parseMember(result, context);\r\n } else {\r\n throw new Error(`Unexpected token \"${next.value}\" at index ${next.index} in expression: ${expression}`);\r\n }\r\n }\r\n\r\n context = null;\r\n\r\n return result;\r\n }\r\n\r\n function parseCall (func, context) {\r\n const argsFn = [];\r\n\r\n if (read().name != 'R_PAREN') {\r\n do {\r\n argsFn.push(parseExpression());\r\n } while (expect('COMMA'));\r\n }\r\n\r\n consume('R_PAREN');\r\n\r\n return () => {\r\n let args = [];\r\n\r\n if (context) {\r\n args.push(context());\r\n }\r\n\r\n for (let f of argsFn) {\r\n args.push(f());\r\n }\r\n\r\n try {\r\n return (func() || dmx.noop).apply(scope, args);\r\n } catch (e) {\r\n console.warn(`Error calling method ${func().name} in expression: ${expression}`, e);\r\n return undefined;\r\n }\r\n };\r\n }\r\n\r\n function parseIndex (object) {\r\n const indexFn = parseExpression();\r\n\r\n consume('R_BRACKET');\r\n\r\n return () => {\r\n const obj = object();\r\n const index = indexFn();\r\n\r\n if (typeof obj != 'object' || obj == null) {\r\n return undefined;\r\n }\r\n\r\n if (obj.__dmxScope__) {\r\n return scope.get(index);\r\n }\r\n\r\n if (dmx.getType(obj) == 'map') {\r\n return obj.get(index);\r\n }\r\n\r\n return obj[index];\r\n };\r\n }\r\n\r\n function parseMember (object) {\r\n const token = expect();\r\n\r\n return () => {\r\n const obj = object();\r\n const type = dmx.getType(obj);\r\n\r\n if (token.name == 'METHOD') {\r\n const method = '__' + token.value;\r\n\r\n if (type == 'map' && typeof obj.get(method) == 'function') {\r\n return obj.get(method).bind(obj);\r\n }\r\n\r\n if (type == 'object' && typeof obj[method] == 'function') {\r\n return obj[method];\r\n }\r\n\r\n if (dmx.__formatters[type] && dmx.__formatters[type][token.value]) {\r\n return dmx.__formatters[type][token.value];\r\n }\r\n\r\n if (dmx.__formatters['any'] && dmx.__formatters['any'][token.value]) {\r\n return dmx.__formatters['any'][token.value];\r\n }\r\n\r\n return () => {\r\n if (obj != null) {\r\n console.warn(`Method \"${token.value}\" not found in expression: ${expression}`);\r\n }\r\n return undefined;\r\n };\r\n }\r\n\r\n if (obj && obj.__dmxScope__) {\r\n return scope.get(token.value);\r\n }\r\n\r\n if (type == 'map') {\r\n return obj.get(token.value);\r\n }\r\n\r\n return obj && typeof obj == 'object' && token.value in obj ? obj[token.value] : undefined;\r\n };\r\n }\r\n};","dmx.BaseComponent = dmx.createClass({\r\n constructor: function (node, parent) {\r\n this.$node = node;\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n\r\n this.__disposables = [];\r\n this.__childDisposables = [];\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = false;\r\n this.isDestroyed = false;\r\n\r\n this.props = new Proxy(\r\n {},\r\n {\r\n set: (target, prop, value, receiver) => {\r\n const oldValue = Reflect.get(target, prop, receiver);\r\n const ok = Reflect.set(target, prop, value, receiver);\r\n\r\n if (ok && this.isInitialized) {\r\n if ((this.attributes[prop] && this.attributes[prop].alwaysUpdate) || !dmx.equal(oldValue, value)) {\r\n this.requestUpdate(prop, oldValue);\r\n }\r\n }\r\n\r\n return ok;\r\n },\r\n }\r\n );\r\n\r\n this.data = dmx.signalProxy();\r\n this.seed = Math.random();\r\n\r\n this.name =\r\n node.getAttribute('id') ||\r\n node.getAttribute('name') ||\r\n (this.type && this.type.toLowerCase().replace(/^dmx-/, '')) ||\r\n '';\r\n this.name = this.name.replace(/[^\\w]/g, '');\r\n\r\n try {\r\n this.$initialData();\r\n this.$parseAttributes(node);\r\n this.init(node);\r\n if (this.render !== false) {\r\n this.render(node);\r\n }\r\n if (this.$node) {\r\n this.$customAttributes('mounted', this.$node);\r\n this.$node.dmxComponent = this;\r\n this.$node.dmxRendered = true;\r\n }\r\n this.isInitialized = true;\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n },\r\n\r\n tag: null,\r\n initialData: {},\r\n attributes: {},\r\n methods: {},\r\n events: {\r\n destroy: Event,\r\n },\r\n\r\n render: function (node) {\r\n if (this.$node) {\r\n this.$parse();\r\n }\r\n },\r\n\r\n parse: function (expression) {\r\n return dmx.parse(expression, this);\r\n },\r\n\r\n // find component based on name inside children\r\n find: function (name) {\r\n if (this.name == name) return this;\r\n\r\n for (var i = 0; i < this.children.length; i++) {\r\n var found = this.children[i].find(name);\r\n if (found) return found;\r\n }\r\n\r\n return null;\r\n },\r\n\r\n init: dmx.noop,\r\n\r\n beforeUpdate: dmx.noop,\r\n update: dmx.noop,\r\n updated: dmx.noop,\r\n\r\n beforeDestroy: dmx.noop,\r\n destroy: dmx.noop,\r\n destroyed: dmx.noop,\r\n\r\n addEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) {\r\n this.listeners[type] = new Set();\r\n }\r\n this.listeners[type].add(callback);\r\n },\r\n\r\n removeEventListener: function (type, callback) {\r\n if (!(type in this.listeners)) return;\r\n this.listeners[type].delete(callback);\r\n },\r\n\r\n dispatchEvent: function (event, props, data, nsp) {\r\n if (this.isDestroyed) return;\r\n\r\n if (typeof event == 'string') {\r\n var ComponentEvent = this.events[event] || CustomEvent;\r\n event = new ComponentEvent(event, props);\r\n }\r\n\r\n if (!(event.type in this.listeners)) return true;\r\n\r\n event.nsp = nsp;\r\n event.target = this;\r\n event.$data = data || {};\r\n for (let listener of this.listeners[event.type]) {\r\n if (listener.call(this, event) === false) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n return !event.defaultPrevented;\r\n },\r\n\r\n $createChild: function (name, node) {\r\n var Component = dmx.__components[name];\r\n var component = new Component(node, this);\r\n this.$addChild(component, component.name);\r\n },\r\n\r\n $addChild: function (child, name) {\r\n this.children.push(child);\r\n if (name) {\r\n if (this.data[name] && dmx.debug) {\r\n console.warn('Duplicate name \"' + name + '\" found, component not added to scope.');\r\n //return;\r\n }\r\n this.set(name, child.data);\r\n }\r\n },\r\n\r\n $removeChild: function (child) {\r\n // remove from children collection\r\n if (this.children.includes(child)) {\r\n this.children.splice(this.children.indexOf(child), 1);\r\n }\r\n // remove from data\r\n if (child.name && this.data[child.name]) {\r\n this.del(child.name);\r\n }\r\n },\r\n\r\n $customAttributes: function (hook, node, attributes) {\r\n const toCamelCase = (s) => s.replace(/-./g, (x) => x[1].toUpperCase());\r\n if (!attributes) attributes = dmx.dom.getAttributes(node);\r\n\r\n attributes.forEach((attr) => {\r\n if (node == this.$node) {\r\n if (attr.name == 'bind' && this.attributes[toCamelCase(attr.argument)]) {\r\n return;\r\n }\r\n\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n return;\r\n }\r\n }\r\n\r\n if (dmx.__attributes[hook][attr.name]) {\r\n this.__inChild = node != this.$node;\r\n const dispose = dmx.__attributes[hook][attr.name].call(this, node, attr);\r\n if (dispose) {\r\n this[this.__inChild ? '__childDisposables' : '__disposables'].push(dispose);\r\n }\r\n }\r\n });\r\n\r\n this.__inChild = null;\r\n },\r\n\r\n $parseTextNode(node) {\r\n if (node.nodeType !== 3) return;\r\n\r\n if (dmx.reExpression.test(node.nodeValue)) {\r\n const parts = node.nodeValue\r\n .replace(dmx.reExpressionReplace, (_, expression) => {\r\n return `##split##${expression}##split##`;\r\n })\r\n .split('##split##');\r\n\r\n const fragment = document.createDocumentFragment();\r\n parts.forEach((part, i) => {\r\n const textNode = document.createTextNode(part);\r\n fragment.appendChild(textNode);\r\n\r\n if (i % 2) {\r\n this.$watch(part, (value) => {\r\n textNode.nodeValue = value;\r\n });\r\n }\r\n });\r\n\r\n node.parentNode.replaceChild(fragment, node);\r\n }\r\n },\r\n\r\n $parse: function (node) {\r\n node = node || this.$node;\r\n\r\n if (!node) return;\r\n\r\n if (node.nodeType === 3) {\r\n return this.$parseTextNode(node);\r\n }\r\n\r\n if (node.nodeType !== 1) return;\r\n\r\n if (dmx.config.mapping) {\r\n Object.keys(dmx.config.mapping).forEach((map) => {\r\n dmx.array(node.querySelectorAll(map)).forEach((node) => {\r\n if (!node.hasAttribute('is')) {\r\n node.setAttribute('is', 'dmx-' + dmx.config.mapping[map]);\r\n }\r\n });\r\n });\r\n }\r\n\r\n dmx.dom.walk(\r\n node,\r\n function (node) {\r\n if (node == this.$node) {\r\n // skip current node\r\n return;\r\n }\r\n\r\n // Element Node\r\n if (node.nodeType === 1) {\r\n var tagName = node.tagName.toLowerCase();\r\n var attributes = dmx.dom.getAttributes(node);\r\n\r\n if (node.hasAttribute('is')) {\r\n tagName = node.getAttribute('is');\r\n }\r\n\r\n if (dmx.reIgnoreElement.test(tagName)) {\r\n // ignore element\r\n return false;\r\n }\r\n\r\n this.$customAttributes('before', node, attributes);\r\n var idx = attributes.findIndex((attr) => attr.name === 'repeat');\r\n if (idx !== -1) return false;\r\n\r\n if (dmx.rePrefixed.test(tagName)) {\r\n tagName = tagName.replace(/^dmx-/i, '');\r\n\r\n if (tagName in dmx.__components) {\r\n node.isComponent = true;\r\n if (!node.dmxRendered) {\r\n this.$createChild(tagName, node);\r\n } else if (window.__WAPPLER__) {\r\n // This breaks some components in design view\r\n // causes flows to trigger constantly\r\n // components ofter have there own parsing and this breaks it\r\n if (node.dmxComponent && node.dmxComponent.$parse) {\r\n // for now ignode specific for flows with script tag\r\n if (!dmx.reIgnoreElement.test(node.tagName)) {\r\n node.dmxComponent.$parse();\r\n }\r\n }\r\n }\r\n return false;\r\n } else {\r\n console.warn('Unknown component found! ' + tagName);\r\n return;\r\n }\r\n }\r\n\r\n this.$customAttributes('mounted', node, attributes);\r\n }\r\n\r\n // Text Node\r\n if (node.nodeType === 3) {\r\n this.$parseTextNode(node);\r\n }\r\n },\r\n this\r\n );\r\n },\r\n\r\n $update: function (idents) {\r\n console.warn('Component.$update is deprecated.');\r\n },\r\n\r\n $parseAttributes: function (node) {\r\n const toKebabCase = (s) => s.replace(/[A-Z]/g, (c) => '-' + c.toLowerCase());\r\n\r\n for (const name in this.attributes) {\r\n const opts = this.attributes[name];\r\n const attrName = toKebabCase(name);\r\n\r\n let value = dmx.clone(opts.default);\r\n\r\n // static\r\n if (node.hasAttribute(attrName)) {\r\n if (opts.type === Boolean) {\r\n value = node.getAttribute(attrName) !== 'false';\r\n } else {\r\n value = node.getAttribute(attrName);\r\n\r\n if (opts.type === Number) {\r\n // Only set number is a valid number is given\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n }\r\n }\r\n\r\n if (opts.type === Object || opts.type === Array) {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (err) {\r\n console.warn('Invalid attribute value, expected a JSON string got ' + value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n //opts.default = value;\r\n }\r\n\r\n // dynamic\r\n if (node.hasAttribute('dmx-bind:' + attrName)) {\r\n const expression = node.getAttribute('dmx-bind:' + attrName);\r\n\r\n this.$watch(expression, (value) => {\r\n if (value === undefined) {\r\n value = dmx.clone(opts.default);\r\n } else if (opts.type === Boolean) {\r\n value = !!value;\r\n } else {\r\n if (value != null) {\r\n if (opts.type === Number) {\r\n if (typeof value === 'string') {\r\n if (value && isFinite(Number(value))) {\r\n value = Number(value);\r\n } else {\r\n value = dmx.clone(opts.default);\r\n }\r\n } else if (typeof value !== 'number' || !isFinite(Number(value))) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n if (opts.type === String) {\r\n value = String(value);\r\n }\r\n\r\n if (opts.type === Object && typeof value !== 'object') {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.type === Array) {\r\n value = Array.from(value);\r\n }\r\n }\r\n\r\n if (opts.enum && !opts.enum.includes(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n\r\n if (opts.validate && !opts.validate(value)) {\r\n value = dmx.clone(opts.default);\r\n }\r\n }\r\n\r\n this.props[name] = value;\r\n });\r\n } else {\r\n this.props[name] = value;\r\n }\r\n }\r\n\r\n for (const event in this.events) {\r\n if (node.hasAttribute('on' + event)) {\r\n this.__disposables.push(dmx.eventListener(this, event, Function('event', node.getAttribute('on' + event)), {}));\r\n }\r\n }\r\n\r\n dmx.dom.getAttributes(node).forEach((attr) => {\r\n if (attr.name == 'on' && this.events[attr.argument]) {\r\n this.__disposables.push(dmx.eventListener(\r\n this,\r\n attr.argument,\r\n (event) => {\r\n if (event.originalEvent) {\r\n event = event.originalEvent;\r\n }\r\n\r\n var returnValue = dmx.parse(\r\n attr.value,\r\n dmx.DataScope(\r\n {\r\n $event: event.$data,\r\n $originalEvent: event,\r\n },\r\n this\r\n )\r\n );\r\n\r\n return returnValue;\r\n },\r\n attr.modifiers\r\n ));\r\n }\r\n });\r\n },\r\n\r\n requestUpdate: function (prop, oldValue) {\r\n //console.log(`request Update ${this.name} (${prop}: ${oldValue} => ${this.prop})`);\r\n if (!this.performUpdate) return;\r\n\r\n if (!this.updatedProps.has(prop)) {\r\n this.updatedProps.set(prop, oldValue);\r\n }\r\n\r\n if (!this.updateRequested) {\r\n //console.log('queue Microtask', this.name, this.updateRequested);\r\n //queueMicrotask(() => {\r\n dmx.nextTick(() => {\r\n //console.log('exec Microtask', this.name, this.updateRequested);\r\n if (this.isDestroyed) return;\r\n this.updateRequested = false;\r\n this.performUpdate(this.updatedProps);\r\n this.updatedProps.clear();\r\n });\r\n }\r\n\r\n this.updateRequested = true;\r\n },\r\n\r\n $initialData: function () {\r\n Object.assign(\r\n this.data,\r\n { $type: this.type },\r\n typeof this.initialData == 'function' ? this.initialData() : this.initialData\r\n );\r\n\r\n Object.keys(this.methods).forEach(function (method) {\r\n var self = this;\r\n this.data['__' + method] = function () {\r\n return self.methods[method].apply(self, Array.prototype.slice.call(arguments, 1));\r\n };\r\n }, this);\r\n },\r\n\r\n // alias for $watch\r\n $addBinding: function (expression, cb) {\r\n this.$watch(expression, cb);\r\n },\r\n\r\n $watch: function (expression, cb) {\r\n const prop = this.__inChild ? '__childDisposables' : '__disposables';\r\n if (!this[prop]) this[prop] = [];\r\n let init = true;\r\n\r\n this[prop].push(\r\n dmx.effect(() => {\r\n if (init) {\r\n cb.call(this, this.parse(expression));\r\n init = false;\r\n } else {\r\n const value = this.parse(expression);\r\n queueMicrotask(() => cb.call(this, value));\r\n }\r\n })\r\n );\r\n },\r\n\r\n $destroy: function () {\r\n this.dispatchEvent('destroy');\r\n this.beforeDestroy();\r\n this.destroy();\r\n this.isDestroyed = true;\r\n if (this.parent && this.parent.$removeChild) {\r\n this.parent.$removeChild(this);\r\n }\r\n this.$destroyChildren();\r\n this.__disposables.forEach((dispose) => dispose());\r\n this.__disposables = [];\r\n if (this.$node) {\r\n this.$node.dmxComponent = null;\r\n this.$node = null;\r\n }\r\n this.parent = null;\r\n this.data = {};\r\n this.destroyed();\r\n },\r\n\r\n $destroyChildren: function () {\r\n Array.from(this.children).forEach((child) => {\r\n child.$destroy();\r\n });\r\n this.children = [];\r\n\r\n this.__childDisposables.forEach((dispose) => dispose());\r\n this.__childDisposables = [];\r\n },\r\n\r\n get: function (name, ignoreParents) {\r\n if (this.data[name] !== undefined) {\r\n return this.data[name];\r\n }\r\n\r\n if (this.parent && ignoreParents !== true) {\r\n if (name == 'parent') {\r\n return this.parent.data;\r\n }\r\n\r\n return this.parent.get(name);\r\n }\r\n\r\n return undefined;\r\n },\r\n\r\n add: function (name, value) {\r\n if (this.data[name]) {\r\n if (Array.isArray(this.data[name])) {\r\n this.data[name].push(value);\r\n } else {\r\n this.data[name] = [this.data[name], value];\r\n }\r\n } else {\r\n this.set(name, value);\r\n }\r\n },\r\n\r\n set: function (name, value) {\r\n if (typeof name == 'object') {\r\n dmx.batch(() => {\r\n for (var prop in name) {\r\n if (name.hasOwnProperty(prop)) {\r\n this.set(prop, name[prop]);\r\n }\r\n }\r\n });\r\n } else {\r\n this.data[name] = value;\r\n }\r\n },\r\n\r\n del: function (name) {\r\n delete this.data[name];\r\n },\r\n});\r\n","(function() {\r\n\r\n/**\r\n * Expose `pathToRegexp`.\r\n */\r\ndmx.pathToRegexp = pathToRegexp\r\ndmx.pathToRegexp.parse = parse\r\ndmx.pathToRegexp.compile = compile\r\ndmx.pathToRegexp.tokensToFunction = tokensToFunction\r\ndmx.pathToRegexp.tokensToRegExp = tokensToRegExp\r\n\r\n/**\r\n * Default configs.\r\n */\r\nvar DEFAULT_DELIMITER = '/'\r\n\r\n/**\r\n * The main path matching regexp utility.\r\n *\r\n * @type {RegExp}\r\n */\r\nvar PATH_REGEXP = new RegExp([\r\n // Match escaped characters that would otherwise appear in future matches.\r\n // This allows the user to escape special characters that won't transform.\r\n '(\\\\\\\\.)',\r\n // Match Express-style parameters and un-named parameters with a prefix\r\n // and optional suffixes. Matches appear as:\r\n //\r\n // \":test(\\\\d+)?\" => [\"test\", \"\\d+\", undefined, \"?\"]\r\n // \"(\\\\d+)\" => [undefined, undefined, \"\\d+\", undefined]\r\n '(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?'\r\n].join('|'), 'g')\r\n\r\n/**\r\n * Parse a string for the raw tokens.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!Array}\r\n */\r\nfunction parse (str, options) {\r\n var tokens = []\r\n var key = 0\r\n var index = 0\r\n var path = ''\r\n var defaultDelimiter = (options && options.delimiter) || DEFAULT_DELIMITER\r\n var whitelist = (options && options.whitelist) || undefined\r\n var pathEscaped = false\r\n var res\r\n\r\n while ((res = PATH_REGEXP.exec(str)) !== null) {\r\n var m = res[0]\r\n var escaped = res[1]\r\n var offset = res.index\r\n path += str.slice(index, offset)\r\n index = offset + m.length\r\n\r\n // Ignore already escaped sequences.\r\n if (escaped) {\r\n path += escaped[1]\r\n pathEscaped = true\r\n continue\r\n }\r\n\r\n var prev = ''\r\n var name = res[2]\r\n var capture = res[3]\r\n var group = res[4]\r\n var modifier = res[5]\r\n\r\n if (!pathEscaped && path.length) {\r\n var k = path.length - 1\r\n var c = path[k]\r\n var matches = whitelist ? whitelist.indexOf(c) > -1 : true\r\n\r\n if (matches) {\r\n prev = c\r\n path = path.slice(0, k)\r\n }\r\n }\r\n\r\n // Push the current path onto the tokens.\r\n if (path) {\r\n tokens.push(path)\r\n path = ''\r\n pathEscaped = false\r\n }\r\n\r\n var repeat = modifier === '+' || modifier === '*'\r\n var optional = modifier === '?' || modifier === '*'\r\n var pattern = capture || group\r\n var delimiter = prev || defaultDelimiter\r\n\r\n tokens.push({\r\n name: name || key++,\r\n prefix: prev,\r\n delimiter: delimiter,\r\n optional: optional,\r\n repeat: repeat,\r\n pattern: pattern\r\n ? escapeGroup(pattern)\r\n : '[^' + escapeString(delimiter === defaultDelimiter ? delimiter : (delimiter + defaultDelimiter)) + ']+?'\r\n })\r\n }\r\n\r\n // Push any remaining characters.\r\n if (path || index < str.length) {\r\n tokens.push(path + str.substr(index))\r\n }\r\n\r\n return tokens\r\n}\r\n\r\n/**\r\n * Compile a string to a template function for the path.\r\n *\r\n * @param {string} str\r\n * @param {Object=} options\r\n * @return {!function(Object=, Object=)}\r\n */\r\nfunction compile (str, options) {\r\n return tokensToFunction(parse(str, options))\r\n}\r\n\r\n/**\r\n * Expose a method for transforming tokens into the path function.\r\n */\r\nfunction tokensToFunction (tokens) {\r\n // Compile all the tokens into regexps.\r\n var matches = new Array(tokens.length)\r\n\r\n // Compile all the patterns before compilation.\r\n for (var i = 0; i < tokens.length; i++) {\r\n if (typeof tokens[i] === 'object') {\r\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')\r\n }\r\n }\r\n\r\n return function (data, options) {\r\n var path = ''\r\n var encode = (options && options.encode) || encodeURIComponent\r\n\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n path += token\r\n continue\r\n }\r\n\r\n var value = data ? data[token.name] : undefined\r\n var segment\r\n\r\n if (Array.isArray(value)) {\r\n if (!token.repeat) {\r\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but got array')\r\n }\r\n\r\n if (value.length === 0) {\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\r\n }\r\n\r\n for (var j = 0; j < value.length; j++) {\r\n segment = encode(value[j], token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\"')\r\n }\r\n\r\n path += (j === 0 ? token.prefix : token.delimiter) + segment\r\n }\r\n\r\n continue\r\n }\r\n\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n segment = encode(String(value), token)\r\n\r\n if (!matches[i].test(segment)) {\r\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but got \"' + segment + '\"')\r\n }\r\n\r\n path += token.prefix + segment\r\n continue\r\n }\r\n\r\n if (token.optional) continue\r\n\r\n throw new TypeError('Expected \"' + token.name + '\" to be ' + (token.repeat ? 'an array' : 'a string'))\r\n }\r\n\r\n return path\r\n }\r\n}\r\n\r\n/**\r\n * Escape a regular expression string.\r\n *\r\n * @param {string} str\r\n * @return {string}\r\n */\r\nfunction escapeString (str) {\r\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Escape the capturing group by escaping special characters and meaning.\r\n *\r\n * @param {string} group\r\n * @return {string}\r\n */\r\nfunction escapeGroup (group) {\r\n return group.replace(/([=!:$/()])/g, '\\\\$1')\r\n}\r\n\r\n/**\r\n * Get the flags for a regexp from the options.\r\n *\r\n * @param {Object} options\r\n * @return {string}\r\n */\r\nfunction flags (options) {\r\n return options && options.sensitive ? '' : 'i'\r\n}\r\n\r\n/**\r\n * Pull out keys from a regexp.\r\n *\r\n * @param {!RegExp} path\r\n * @param {Array=} keys\r\n * @return {!RegExp}\r\n */\r\nfunction regexpToRegexp (path, keys) {\r\n if (!keys) return path\r\n\r\n // Use a negative lookahead to match only capturing groups.\r\n var groups = path.source.match(/\\((?!\\?)/g)\r\n\r\n if (groups) {\r\n for (var i = 0; i < groups.length; i++) {\r\n keys.push({\r\n name: i,\r\n prefix: null,\r\n delimiter: null,\r\n optional: false,\r\n repeat: false,\r\n pattern: null\r\n })\r\n }\r\n }\r\n\r\n return path\r\n}\r\n\r\n/**\r\n * Transform an array into a regexp.\r\n *\r\n * @param {!Array} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction arrayToRegexp (path, keys, options) {\r\n var parts = []\r\n\r\n for (var i = 0; i < path.length; i++) {\r\n parts.push(pathToRegexp(path[i], keys, options).source)\r\n }\r\n\r\n return new RegExp('(?:' + parts.join('|') + ')', flags(options))\r\n}\r\n\r\n/**\r\n * Create a path regexp from string input.\r\n *\r\n * @param {string} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction stringToRegexp (path, keys, options) {\r\n return tokensToRegExp(parse(path, options), keys, options)\r\n}\r\n\r\n/**\r\n * Expose a function for taking tokens and returning a RegExp.\r\n *\r\n * @param {!Array} tokens\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction tokensToRegExp (tokens, keys, options) {\r\n options = options || {}\r\n\r\n var strict = options.strict\r\n var start = options.start !== false\r\n var end = options.end !== false\r\n var delimiter = options.delimiter || DEFAULT_DELIMITER\r\n var endsWith = [].concat(options.endsWith || []).map(escapeString).concat('$').join('|')\r\n var route = start ? '^' : ''\r\n\r\n // Iterate over the tokens and create our regexp string.\r\n for (var i = 0; i < tokens.length; i++) {\r\n var token = tokens[i]\r\n\r\n if (typeof token === 'string') {\r\n route += escapeString(token)\r\n } else {\r\n var capture = token.repeat\r\n ? '(?:' + token.pattern + ')(?:' + escapeString(token.delimiter) + '(?:' + token.pattern + '))*'\r\n : token.pattern\r\n\r\n if (keys) keys.push(token)\r\n\r\n if (token.optional) {\r\n if (!token.prefix) {\r\n route += '(' + capture + ')?'\r\n } else {\r\n route += '(?:' + escapeString(token.prefix) + '(' + capture + '))?'\r\n }\r\n } else {\r\n route += escapeString(token.prefix) + '(' + capture + ')'\r\n }\r\n }\r\n }\r\n\r\n if (end) {\r\n if (!strict) route += '(?:' + escapeString(delimiter) + ')?'\r\n\r\n route += endsWith === '$' ? '$' : '(?=' + endsWith + ')'\r\n } else {\r\n var endToken = tokens[tokens.length - 1]\r\n var isEndDelimited = typeof endToken === 'string'\r\n ? endToken[endToken.length - 1] === delimiter\r\n : endToken === undefined\r\n\r\n if (!strict) route += '(?:' + escapeString(delimiter) + '(?=' + endsWith + '))?'\r\n if (!isEndDelimited) route += '(?=' + escapeString(delimiter) + '|' + endsWith + ')'\r\n }\r\n\r\n return new RegExp(route, flags(options))\r\n}\r\n\r\n/**\r\n * Normalize the given path string, returning a regular expression.\r\n *\r\n * An empty array can be passed in for the keys, which will hold the\r\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\r\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\r\n *\r\n * @param {(string|RegExp|Array)} path\r\n * @param {Array=} keys\r\n * @param {Object=} options\r\n * @return {!RegExp}\r\n */\r\nfunction pathToRegexp (path, keys, options) {\r\n if (path instanceof RegExp) {\r\n return regexpToRegexp(path, keys)\r\n }\r\n\r\n if (Array.isArray(path)) {\r\n return arrayToRegexp(/** @type {!Array} */ (path), keys, options)\r\n }\r\n\r\n return stringToRegexp(/** @type {string} */ (path), keys, options)\r\n}\r\n\r\n})();\r\n","if (!window.Hjson) {\r\n window.Hjson = {};\r\n\r\n Hjson.parse = function(source) {\r\n // only parse, stripped dsf and comment support\r\n\r\n var text;\r\n var at; // The index of the current character\r\n var ch; // The current character\r\n var escapee = {\r\n '\"': '\"',\r\n \"'\": \"'\",\r\n '\\\\': '\\\\',\r\n '/': '/',\r\n b: '\\b',\r\n f: '\\f',\r\n n: '\\n',\r\n r: '\\r',\r\n t: '\\t'\r\n };\r\n\r\n function resetAt() {\r\n at = 0;\r\n ch = ' ';\r\n }\r\n\r\n function isPunctuatorChar(c) {\r\n return c === '{' || c === '}' || c === '[' || c === ']' || c === ',' || c === ':';\r\n }\r\n\r\n // Call error when something is wrong.\r\n function error(m) {\r\n var i, col=0, line=1;\r\n for (i = at-1; i > 0 && text[i] !== '\\n'; i--, col++) {}\r\n for (; i > 0; i--) if (text[i] === '\\n') line++;\r\n throw new Error(m + \" at line \" + line + \",\" + col + \" >>>\" + text.substr(at-col, 20) + \" ...\");\r\n }\r\n\r\n function next() {\r\n // get the next character.\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n\r\n function peek(offs) {\r\n // range check is not required\r\n return text.charAt(at + offs);\r\n }\r\n\r\n function string(allowML) {\r\n // Parse a string value.\r\n // callers make sure that (ch === '\"' || ch === \"'\")\r\n var string = '';\r\n\r\n // When parsing for string values, we must look for \"/' and \\ characters.\r\n var exitCh = ch;\r\n while (next()) {\r\n if (ch === exitCh) {\r\n next();\r\n if (allowML && exitCh === \"'\" && ch === \"'\" && string.length === 0) {\r\n // ''' indicates a multiline string\r\n next();\r\n return mlString();\r\n } else return string;\r\n }\r\n if (ch === '\\\\') {\r\n next();\r\n if (ch === 'u') {\r\n var uffff = 0;\r\n for (var i = 0; i < 4; i++) {\r\n next();\r\n var c = ch.charCodeAt(0), hex;\r\n if (ch >= '0' && ch <= '9') hex = c - 48;\r\n else if (ch >= 'a' && ch <= 'f') hex = c - 97 + 0xa;\r\n else if (ch >= 'A' && ch <= 'F') hex = c - 65 + 0xa;\r\n else error(\"Bad \\\\u char \" + ch);\r\n uffff = uffff * 16 + hex;\r\n }\r\n string += String.fromCharCode(uffff);\r\n } else if (typeof escapee[ch] === 'string') {\r\n string += escapee[ch];\r\n } else break;\r\n } else if (ch === '\\n' || ch === '\\r') {\r\n error(\"Bad string containing newline\");\r\n } else {\r\n string += ch;\r\n }\r\n }\r\n error(\"Bad string\");\r\n }\r\n\r\n function mlString() {\r\n // Parse a multiline string value.\r\n var string = '', triple = 0;\r\n\r\n // we are at ''' +1 - get indent\r\n var indent = 0;\r\n for (;;) {\r\n var c=peek(-indent-5);\r\n if (!c || c === '\\n') break;\r\n indent++;\r\n }\r\n\r\n function skipIndent() {\r\n var skip = indent;\r\n while (ch && ch <= ' ' && ch !== '\\n' && skip-- > 0) next();\r\n }\r\n\r\n // skip white/to (newline)\r\n while (ch && ch <= ' ' && ch !== '\\n') next();\r\n if (ch === '\\n') { next(); skipIndent(); }\r\n\r\n // When parsing multiline string values, we must look for ' characters.\r\n for (;;) {\r\n if (!ch) {\r\n error(\"Bad multiline string\");\r\n } else if (ch === '\\'') {\r\n triple++;\r\n next();\r\n if (triple === 3) {\r\n if (string.slice(-1) === '\\n') string=string.slice(0, -1); // remove last EOL\r\n return string;\r\n } else continue;\r\n } else {\r\n while (triple > 0) {\r\n string += '\\'';\r\n triple--;\r\n }\r\n }\r\n if (ch === '\\n') {\r\n string += '\\n';\r\n next();\r\n skipIndent();\r\n } else {\r\n if (ch !== '\\r') string += ch;\r\n next();\r\n }\r\n }\r\n }\r\n\r\n function keyname() {\r\n // quotes for keys are optional in Hjson\r\n // unless they include {}[],: or whitespace.\r\n\r\n if (ch === '\"' || ch === \"'\") return string(false);\r\n\r\n var name = \"\", start = at, space = -1;\r\n for (;;) {\r\n if (ch === ':') {\r\n if (!name) error(\"Found ':' but no key name (for an empty key name use quotes)\");\r\n else if (space >=0 && space !== name.length) { at = start + space; error(\"Found whitespace in your key name (use quotes to include)\"); }\r\n return name;\r\n } else if (ch <= ' ') {\r\n if (!ch) error(\"Found EOF while looking for a key name (check your syntax)\");\r\n else if (space < 0) space = name.length;\r\n } else if (isPunctuatorChar(ch)) {\r\n error(\"Found '\" + ch + \"' where a key name was expected (check your syntax or use quotes if the key name includes {}[],: or whitespace)\");\r\n } else {\r\n name += ch;\r\n }\r\n next();\r\n }\r\n }\r\n\r\n function white() {\r\n while (ch) {\r\n // Skip whitespace.\r\n while (ch && ch <= ' ') next();\r\n // Hjson allows comments\r\n if (ch === '#' || ch === '/' && peek(0) === '/') {\r\n while (ch && ch !== '\\n') next();\r\n } else if (ch === '/' && peek(0) === '*') {\r\n next(); next();\r\n while (ch && !(ch === '*' && peek(0) === '/')) next();\r\n if (ch) { next(); next(); }\r\n } else break;\r\n }\r\n }\r\n\r\n function tfnns() {\r\n // Hjson strings can be quoteless\r\n // returns string, true, false, or null.\r\n var value = ch;\r\n if (isPunctuatorChar(ch))\r\n error(\"Found a punctuator character '\" + ch + \"' when expecting a quoteless string (check your syntax)\");\r\n\r\n for(;;) {\r\n next();\r\n // (detection of ml strings was moved to string())\r\n var isEol = ch === '\\r' || ch === '\\n' || ch === '';\r\n if (isEol ||\r\n ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' ||\r\n ch === '/' && (peek(0) === '/' || peek(0) === '*')\r\n ) {\r\n // this tests for the case of {true|false|null|num}\r\n // followed by { ',' | '}' | ']' | '#' | '//' | '/*' }\r\n // which needs to be parsed as the specified value\r\n var chf = value[0];\r\n switch (chf) {\r\n case 'f': if (value.trim() === \"false\") return false; break;\r\n case 'n': if (value.trim() === \"null\") return null; break;\r\n case 't': if (value.trim() === \"true\") return true; break;\r\n default:\r\n if (chf === '-' || chf >= '0' && chf <= '9') {\r\n var n = tryParseNumber(value);\r\n if (n !== undefined) return n;\r\n }\r\n }\r\n if (isEol) {\r\n // remove any whitespace at the end (ignored in quoteless strings)\r\n return value.trim();\r\n }\r\n }\r\n value += ch;\r\n }\r\n }\r\n\r\n function tryParseNumber(text, stopAtNext) {\r\n // try to parse a number\r\n \r\n var number, string = '', leadingZeros = 0, testLeading = true;\r\n var at = 0;\r\n var ch;\r\n function next() {\r\n ch = text.charAt(at);\r\n at++;\r\n return ch;\r\n }\r\n \r\n next();\r\n if (ch === '-') {\r\n string = '-';\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n if (testLeading) {\r\n if (ch == '0') leadingZeros++;\r\n else testLeading = false;\r\n }\r\n string += ch;\r\n next();\r\n }\r\n if (testLeading) leadingZeros--; // single 0 is allowed\r\n if (ch === '.') {\r\n string += '.';\r\n while (next() && ch >= '0' && ch <= '9')\r\n string += ch;\r\n }\r\n if (ch === 'e' || ch === 'E') {\r\n string += ch;\r\n next();\r\n if (ch === '-' || ch === '+') {\r\n string += ch;\r\n next();\r\n }\r\n while (ch >= '0' && ch <= '9') {\r\n string += ch;\r\n next();\r\n }\r\n }\r\n \r\n // skip white/to (newline)\r\n while (ch && ch <= ' ') next();\r\n \r\n if (stopAtNext) {\r\n // end scan if we find a punctuator character like ,}] or a comment\r\n if (ch === ',' || ch === '}' || ch === ']' ||\r\n ch === '#' || ch === '/' && (text[at] === '/' || text[at] === '*')) ch = 0;\r\n }\r\n \r\n number = +string;\r\n if (ch || leadingZeros || !isFinite(number)) return undefined;\r\n else return number;\r\n }\r\n \r\n function errorClosingHint(value) {\r\n function search(value, ch) {\r\n var i, k, length, res;\r\n switch (typeof value) {\r\n case 'string':\r\n if (value.indexOf(ch) >= 0) res = value;\r\n break;\r\n case 'object':\r\n if (Object.prototype.toString.apply(value) === '[object Array]') {\r\n for (i = 0, length = value.length; i < length; i++) {\r\n res=search(value[i], ch) || res;\r\n }\r\n } else {\r\n for (k in value) {\r\n if (!Object.prototype.hasOwnProperty.call(value, k)) continue;\r\n res=search(value[k], ch) || res;\r\n }\r\n }\r\n }\r\n return res;\r\n }\r\n \r\n function report(ch) {\r\n var possibleErr=search(value, ch);\r\n if (possibleErr) {\r\n return \"found '\"+ch+\"' in a string value, your mistake could be with:\\n\"+\r\n \" > \"+possibleErr+\"\\n\"+\r\n \" (unquoted strings contain everything up to the next line!)\";\r\n } else return \"\";\r\n }\r\n \r\n return report('}') || report(']');\r\n }\r\n\r\n function array() {\r\n // Parse an array value.\r\n // assuming ch === '['\r\n \r\n var array = [];\r\n try {\r\n next();\r\n white();\r\n if (ch === ']') {\r\n next();\r\n return array; // empty array\r\n }\r\n \r\n while (ch) {\r\n array.push(value());\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === ']') {\r\n next();\r\n return array;\r\n }\r\n white();\r\n }\r\n \r\n error(\"End of input while parsing an array (missing ']')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(array);\r\n throw e;\r\n }\r\n }\r\n\r\n function object(withoutBraces) {\r\n // Parse an object value.\r\n \r\n var key = \"\", object = {};\r\n \r\n try {\r\n if (!withoutBraces) {\r\n // assuming ch === '{'\r\n next();\r\n }\r\n\r\n white();\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object; // empty object\r\n }\r\n while (ch) {\r\n key = keyname();\r\n white();\r\n if (ch !== ':') error(\"Expected ':' instead of '\" + ch + \"'\");\r\n next();\r\n // duplicate keys overwrite the previous value\r\n object[key] = value();\r\n white();\r\n // in Hjson the comma is optional and trailing commas are allowed\r\n // note that we do not keep comments before the , if there are any\r\n if (ch === ',') { next(); white(); }\r\n if (ch === '}' && !withoutBraces) {\r\n next();\r\n return object;\r\n }\r\n white();\r\n }\r\n \r\n if (withoutBraces) return object;\r\n else error(\"End of input while parsing an object (missing '}')\");\r\n } catch (e) {\r\n e.hint=e.hint||errorClosingHint(object);\r\n throw e;\r\n }\r\n }\r\n\r\n function value() {\r\n // Parse a Hjson value. It could be an object, an array, a string, a number or a word.\r\n \r\n white();\r\n switch (ch) {\r\n case '{': return object();\r\n case '[': return array();\r\n case \"'\":\r\n case '\"': return string(true);\r\n default: return tfnns();\r\n }\r\n }\r\n\r\n function checkTrailing(v) {\r\n white();\r\n if (ch) error(\"Syntax error, found trailing characters\");\r\n return v;\r\n }\r\n\r\n function rootValue() {\r\n white();\r\n switch (ch) {\r\n case '{': return checkTrailing(object());\r\n case '[': return checkTrailing(array());\r\n default: return checkTrailing(value());\r\n }\r\n }\r\n\r\n if (typeof source!==\"string\") throw new Error(\"source is not a string\");\r\n text = source;\r\n resetAt();\r\n return rootValue();\r\n };\r\n}","dmx.Flow = dmx.createClass({\r\n constructor: function (parent) {\r\n if (!(this instanceof dmx.Flow)) {\r\n return new dmx.Flow(parent);\r\n }\r\n\r\n if (!window.Promise) {\r\n console.warn('Promises are not supported, flows can not be used');\r\n }\r\n\r\n this._execStep = this._execStep.bind(this);\r\n\r\n this.scope = new dmx.DataScope({}, parent);\r\n this.output = {};\r\n },\r\n\r\n run: function (flow) {\r\n this.output = {};\r\n\r\n return this._exec(flow.exec || flow).then(() => {\r\n if (dmx.debug) {\r\n console.debug('finished', this.output);\r\n }\r\n return this.output;\r\n });\r\n },\r\n\r\n _each: function (arr, fn) {\r\n return Promise.resolve(arr).then((arr) => {\r\n arr = Array.isArray(arr) ? arr : [arr];\r\n\r\n return arr\r\n .reduce((prev, curr, i) => {\r\n return prev.then(() => {\r\n return fn(curr, i, arr.length).then((result) => {\r\n if (result) {\r\n arr[i] = result;\r\n }\r\n });\r\n });\r\n }, Promise.resolve())\r\n .then(() => {\r\n return arr;\r\n });\r\n });\r\n },\r\n\r\n _exec: function (flow) {\r\n if (flow.steps) {\r\n var promise = this._each(flow.steps, this._execStep);\r\n\r\n if (flow.catch) {\r\n promise.catch((err) => {\r\n return this._each(flow.catch, self._execStep);\r\n });\r\n }\r\n\r\n return promise;\r\n }\r\n\r\n return this._each(flow, this._execStep);\r\n },\r\n\r\n _execStep: function (step) {\r\n for (let name in step) {\r\n if (step.hasOwnProperty(name) && dmx.__actions[name]) {\r\n const action = dmx.__actions[name].bind(this);\r\n const options = step[name];\r\n const timerName = name + Date.now();\r\n\r\n if (dmx.debug) {\r\n console.debug('exec action', name, options);\r\n console.time(timerName);\r\n }\r\n\r\n if (options.disabled) {\r\n return Promise.resolve();\r\n }\r\n\r\n return Promise.resolve(action(options)).then((output) => {\r\n if (dmx.debug) {\r\n console.debug('finished exec action', name, options);\r\n console.timeEnd(timerName);\r\n }\r\n\r\n if (options.name) {\r\n if (dmx.debug) {\r\n console.debug('set data', options.name, output);\r\n }\r\n\r\n this.scope.set(options.name, output);\r\n\r\n if (options.output) {\r\n if (dmx.debug) {\r\n console.debug('set output', options.name, output);\r\n }\r\n this.output[options.name] = output;\r\n }\r\n }\r\n });\r\n } else {\r\n throw new Error('Action ' + name + ' was not found.');\r\n }\r\n }\r\n },\r\n\r\n parse: function (value) {\r\n if (value == null) return value;\r\n\r\n value = value.valueOf();\r\n\r\n if (typeof value == 'object') {\r\n var obj = value.slice ? [] : {};\r\n\r\n for (var key in value) {\r\n if (value.hasOwnProperty(key)) {\r\n obj[key] = this.parse(value[key], this.scope);\r\n }\r\n }\r\n\r\n return obj;\r\n }\r\n\r\n if (typeof value == 'string' && value.indexOf('{{') != -1) {\r\n return dmx.parse(value, this.scope);\r\n }\r\n\r\n return value;\r\n },\r\n});\r\n\r\ndmx.Flow.run = function (flow, data) {\r\n var instance = new dmx.Flow(data);\r\n return instance.run(flow);\r\n};\r\n","dmx.Component(\"app\", {\r\n\r\n initialData: {\r\n query: {},\r\n },\r\n\r\n events: {\r\n ready: Event,\r\n load: Event,\r\n },\r\n\r\n init () {\r\n this.dispatchLoad = this.dispatchEvent.bind(this, \"load\");\r\n this._parseQuery = this._parseQuery.bind(this);\r\n\r\n // is this remove needed?\r\n window.addEventListener(\"load\", this.dispatchLoad, { once: true });\r\n window.addEventListener(\"load\", this._parseQuery);\r\n window.addEventListener(\"popstate\", this._parseQuery);\r\n window.addEventListener(\"pushstate\", this._parseQuery);\r\n window.addEventListener(\"replacestate\", this._parseQuery);\r\n\r\n this._parseQuery();\r\n\r\n queueMicrotask(() => this.dispatchEvent(\"ready\"));\r\n },\r\n\r\n destroy () {\r\n window.removeEventListener(\"load\", this.dispatchLoad);\r\n window.removeEventListener(\"load\", this._parseQuery);\r\n window.removeEventListener(\"popstate\", this._parseQuery);\r\n window.removeEventListener(\"pushstate\", this._parseQuery);\r\n window.removeEventListener(\"replacestate\", this._parseQuery);\r\n },\r\n\r\n _parseQuery () {\r\n let querystring = \"\";\r\n\r\n if (window.location.search) {\r\n querystring = window.location.search.slice(1);\r\n } else if (window.location.hash.indexOf(\"?\")) {\r\n querystring = window.location.hash.slice(\r\n window.location.hash.indexOf(\"?\") + 1\r\n );\r\n if (querystring.indexOf(\"#\") > 0) {\r\n querystring = querystring.slice(0, querystring.indexOf(\"#\"));\r\n }\r\n }\r\n\r\n let query = querystring.split(\"&\").reduce(function (query, part) {\r\n var p = part.replace(/\\+/g, \" \").split(\"=\");\r\n if (p[0]) {\r\n query[decodeURIComponent(p[0])] = decodeURIComponent(p[1] || \"\");\r\n }\r\n return query;\r\n }, {});\r\n\r\n let base = document.querySelector('meta[name=\"ac:base\"]');\r\n let route = document.querySelector('meta[name=\"ac:route\"]');\r\n if (route && route.content) {\r\n let keys = [];\r\n let path = route.content;\r\n\r\n if (base && base.content) {\r\n path = base.content.replace(/\\/$/, \"\") + path;\r\n }\r\n\r\n let re = dmx.pathToRegexp(path, keys, { end: false });\r\n let match = re.exec(decodeURI(window.location.pathname));\r\n\r\n if (match) {\r\n keys.forEach(function (key, index) {\r\n query[key.name] = match[index + 1];\r\n });\r\n }\r\n }\r\n\r\n this.set(\"query\", query);\r\n },\r\n\r\n});\r\n","dmx.Component('form', {\r\n\r\n attributes: {\r\n novalidate: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n methods: {\r\n submit (direct) {\r\n this._submit(direct);\r\n },\r\n\r\n reset () {\r\n this._reset();\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n invalid: Event,\r\n submit: Event,\r\n },\r\n\r\n init (node) {\r\n this._submitHandler = this._submitHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n\r\n node.noValidate = true;\r\n node.addEventListener('submit', this._submitHandler);\r\n node.addEventListener('reset', this._resetHandler);\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('submit', this._submitHandler);\r\n this.$node.removeEventListener('reset', this._resetHandler);\r\n },\r\n\r\n _submitHandler (event) {\r\n event.preventDefault();\r\n this._submit();\r\n },\r\n\r\n _resetHandler (event) {\r\n // remove this when validation is rewritten\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n },\r\n\r\n _submit (direct) {\r\n if (direct) {\r\n return this._formSubmit();\r\n }\r\n\r\n if (this.props.novalidate || this._validate()) {\r\n if (this.dispatchEvent('submit', { cancelable: true })) {\r\n this._formSubmit();\r\n }\r\n } else {\r\n this.dispatchEvent('invalid');\r\n this._focusFirstInvalid();\r\n }\r\n },\r\n\r\n _reset () {\r\n this._formReset();\r\n },\r\n\r\n _validate () {\r\n if (dmx.validate) return dmx.validate(this.$node);\r\n Array.from(this.$node.elements).forEach(node => node.dirty = true);\r\n return this.$node.checkValidity();\r\n },\r\n\r\n _formSubmit () {\r\n HTMLFormElement.prototype.submit.call(this.$node);\r\n },\r\n\r\n _formReset () {\r\n HTMLFormElement.prototype.reset.call(this.$node);\r\n },\r\n\r\n _focusFirstInvalid () {\r\n const elm = Array.from(this.$node.elements).find(elm => !elm.validity.valid);\r\n if (elm) elm.focus();\r\n },\r\n\r\n _parseJsonForm () {\r\n const result = {};\r\n\r\n for (const element of this.$node.elements) {\r\n if (element.name && !element.disabled) {\r\n const steps = parseSteps(element.name.replace(/\\[\\]$/, \"\"));\r\n let context = result;\r\n\r\n for (const step of steps) {\r\n const type = element.type;\r\n\r\n if (type == \"number\") {\r\n if (element.value) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n +element.value\r\n );\r\n }\r\n } else if (type == \"radio\" || type == \"checkbox\") {\r\n if (element.getAttribute(\"value\")) {\r\n if (element.checked) {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.value\r\n );\r\n }\r\n } else {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n element.checked\r\n );\r\n }\r\n } else if (type == \"select-multiple\") {\r\n context = setValue(\r\n context,\r\n step,\r\n context[step.key],\r\n Array.from(element.selectedOptions).map((opt) => opt.value)\r\n );\r\n } else {\r\n context = setValue(context, step, context[step.key], element.value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n return result;\r\n\r\n function parseSteps(name) {\r\n const steps = [],\r\n org = name;\r\n const re = /^\\[([^\\]]*)\\]/;\r\n const reNumeric = /^\\d+$/;\r\n\r\n name = name.replace(/^([^\\[]+)/, (m, p1) => {\r\n steps.push({ type: \"object\", key: p1 });\r\n return \"\";\r\n });\r\n\r\n if (!name) {\r\n steps[0].last = true;\r\n return steps;\r\n }\r\n\r\n while (name) {\r\n if (re.test(name)) {\r\n name = name.replace(re, (m, p1) => {\r\n if (!p1) {\r\n steps[steps.length - 1].append = true;\r\n } else if (reNumeric.test(p1)) {\r\n steps.push({ type: \"array\", key: +p1 });\r\n } else {\r\n steps.push({ type: \"object\", key: p1 });\r\n }\r\n\r\n return \"\";\r\n });\r\n\r\n continue;\r\n }\r\n\r\n return { type: \"object\", key: org, last: true };\r\n }\r\n\r\n for (let i = 0, n = steps.length; i < n; i++) {\r\n const step = steps[i];\r\n\r\n if (i + 1 < n) step.nextType = steps[i + 1].type;\r\n else step.last = true;\r\n }\r\n\r\n return steps;\r\n }\r\n\r\n function setValue(context, step, current, value) {\r\n if (step.last) {\r\n if (current === undefined) {\r\n context[step.key] = step.append ? [value] : value;\r\n } else if (Array.isArray(current)) {\r\n context[step.key].push(value);\r\n } else if (typeof current == \"object\") {\r\n return setValue(\r\n current,\r\n { type: \"object\", key: \"\", last: true },\r\n current[\"\"],\r\n value\r\n );\r\n } else {\r\n context[step.key] = [current, value];\r\n }\r\n\r\n return context;\r\n }\r\n\r\n if (current === undefined) {\r\n return (context[step.key] = step.nextType == \"array\" ? [] : {});\r\n } else if (Array.isArray(current)) {\r\n if (step.nextType == \"array\") return current;\r\n const obj = {};\r\n for (let i = 0, n = current.length; i < n; i++) {\r\n if (current[i] !== undefined) obj[i] = current[i];\r\n }\r\n return (context[step.key] = obj);\r\n } else if (typeof current == \"object\") {\r\n return context[step.key];\r\n }\r\n\r\n return (context[step.key] = { \"\": current });\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-element', {\r\n\r\n initialData: {\r\n disabled: false,\r\n focused: false,\r\n invalid: false,\r\n validationMessage: '',\r\n value: '',\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: '',\r\n alwaysUpdate: true,\r\n },\r\n\r\n disabled: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n\r\n focus () {\r\n this._focus();\r\n },\r\n\r\n disable (disable) {\r\n this._disable(disable);\r\n },\r\n\r\n validate () {\r\n this._validate();\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n changed: Event,\r\n },\r\n\r\n init (node) {\r\n this._inputHandler = this._inputHandler.bind(this);\r\n this._changeHandler = this._changeHandler.bind(this);\r\n this._invalidHandler = this._invalidHandler.bind(this);\r\n this._resetHandler = this._resetHandler.bind(this);\r\n this._focusHandler = this._focusHandler.bind(this);\r\n this._blurHandler = this._blurHandler.bind(this);\r\n\r\n node.value = this.props.value || '';\r\n node.defaultValue = node.value ;\r\n \r\n node.addEventListener('input', this._inputHandler);\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('invalid', this._invalidHandler);\r\n node.addEventListener('focus', this._focusHandler);\r\n node.addEventListener('blur', this._blurHandler);\r\n \r\n if (node.form) {\r\n this._form = node.form;\r\n this._form.addEventListener('reset', this._resetHandler);\r\n }\r\n\r\n if (this.props.disabled) {\r\n this._disable(this.props.disabled);\r\n }\r\n \r\n this.set('value', this.props.value);\r\n if (this.$node === document.activeElement) {\r\n this.set('focused', true);\r\n }\r\n },\r\n\r\n destroy () {\r\n this.$node.removeEventListener('input', this._inputHandler);\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('invalid', this._invalidHandler);\r\n this.$node.removeEventListener('focus', this._focusHandler);\r\n this.$node.removeEventListener('blur', this._blurHandler);\r\n if (this._form) {\r\n this._form.removeEventListener('reset', this._resetHandler);\r\n this._form = null;\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n\r\n if (updatedProps.has('disabled')) {\r\n this._disable(this.props.disabled);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n this.$node.value = value || '';\r\n if (defaultValue) this.$node.defaultValue = value || '';\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _focus () {\r\n this.$node.focus();\r\n },\r\n\r\n _disable (disable) {\r\n this.$node.disabled = disable;\r\n this.set('disabled', this.$node.disabled);\r\n },\r\n\r\n _validate () {\r\n dmx.validate(this.$node);\r\n\r\n if (this.$node.dirty) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n }\r\n },\r\n\r\n _inputHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n if (this.data.value !== this.$node.value) {\r\n this.set('value', this.$node.value);\r\n if (event) this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n _invalidHandler (event) {\r\n this.set({\r\n invalid: !this.$node.validity.valid,\r\n validationMessage: this.$node.validationMessage,\r\n });\r\n },\r\n\r\n _resetHandler (event) {\r\n if (!this.$node) return;\r\n this.$node.dirty = false;\r\n this.set({\r\n invalid: false,\r\n validationMessage: '',\r\n });\r\n this._changeHandler(event);\r\n },\r\n\r\n _focusHandler (event) {\r\n this.set('focused', true);\r\n },\r\n\r\n _blurHandler (event) {\r\n this.set('focused', false);\r\n },\r\n\r\n});\r\n","dmx.Component('textarea', {\r\n\r\n extends: 'form-element',\r\n\r\n init (node) {\r\n if (!this.props.value) {\r\n const value = this.$node.value;\r\n this.props.value = value.includes('{{') ? this.parse(value) : value;\r\n }\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n});\r\n","dmx.Component('input', { extends: 'form-element' });\r\n","dmx.Component('input-file', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n file: null,\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n 'image/png': 'image/png',\r\n 'image/jpeg': 'image/jpeg',\r\n 'image/webp': 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n 'image/png': 'png',\r\n 'image/jpeg': 'jpg',\r\n 'image/webp': 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n \r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImage();\r\n }\r\n },\r\n\r\n _resizeImage () {\r\n const file = this.$node.files[0];\r\n\r\n if (file && file.type.startsWith('image/')) {\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n\r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n if (blob == null) {\r\n return console.error('Could not resize image!');\r\n }\r\n const container = new DataTransfer();\r\n const newName = file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[blob.type]);\r\n const newFile = new File([blob], newName, { type: blob.type });\r\n container.items.add(newFile);\r\n this.$node.files = container.files;\r\n this._updateData();\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n }\r\n };\r\n }\r\n },\r\n\r\n _updateData () {\r\n let data = null;\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n const file = this.$node.files[0];\r\n\r\n data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n get dataUrl () {\r\n if (!file._dataUrl) {\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n file._dataUrl = dataUrl;\r\n self.set('file', Object.assign({}, data, { dataUrl }));\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return null;\r\n },\r\n };\r\n }\r\n\r\n this.set('file', data);\r\n }\r\n\r\n});\r\n","dmx.Component('input-file-multiple', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n imageMaxWidth: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageMaxHeight: {\r\n type: Number,\r\n default: null,\r\n },\r\n\r\n imageType: {\r\n type: String,\r\n default: null, // defaults to original image format\r\n enum: ['png', 'jpeg', 'webp'],\r\n },\r\n\r\n imageQuality: {\r\n type: Number,\r\n default: null,\r\n },\r\n },\r\n\r\n initialData: {\r\n files: [],\r\n },\r\n\r\n _imageTypes: {\r\n png: 'image/png', \r\n jpeg: 'image/jpeg',\r\n webp: 'image/webp',\r\n 'image/png': 'image/png',\r\n 'image/jpeg': 'image/jpeg',\r\n 'image/webp': 'image/webp',\r\n },\r\n\r\n _imageExtensions: {\r\n 'image/png': 'png',\r\n 'image/jpeg': 'jpg',\r\n 'image/webp': 'webp',\r\n },\r\n\r\n _setValue (value) {\r\n console.warn('Can not set value of a file input!');\r\n },\r\n\r\n _changeHandler (event) {\r\n dmx.Component('form-element').prototype._changeHandler.call(this, event);\r\n\r\n this._updateData();\r\n\r\n if (this.$node.files.length && (this.props.imageMaxWidth || this.props.imageMaxHeight || this.props.imageType)) {\r\n this._resizeImages();\r\n }\r\n },\r\n\r\n _resizeImages () {\r\n const files = Array.from(this.$node.files);\r\n\r\n Promise.all(files.map(file => {\r\n return new Promise(resolve => {\r\n if (!file.type.startsWith('image/')) {\r\n resolve(file);\r\n return;\r\n }\r\n\r\n const blobUrl = URL.createObjectURL(file);\r\n const img = new Image();\r\n img.src = blobUrl;\r\n img.onerror = () => URL.revokeObjectURL(blobUrl);\r\n img.onload = () => {\r\n URL.revokeObjectURL(blobUrl);\r\n\r\n const { imageMaxWidth, imageMaxHeight, imageType, imageQuality } = this.props;\r\n\r\n let width = img.width;\r\n let height = img.height;\r\n let ratio = width / height;\r\n let needResize = false;\r\n\r\n if (imageMaxWidth && width > imageMaxWidth) {\r\n width = imageMaxWidth;\r\n height = ~~(width / ratio);\r\n needResize = true;\r\n }\r\n\r\n if (imageMaxHeight && height > imageMaxHeight) {\r\n height = imageMaxHeight;\r\n width = ~~(height * ratio);\r\n needResize = true;\r\n }\r\n\r\n const newType = imageType ? this._imageTypes[imageType] : file.type;\r\n \r\n if (newType !== file.type || needResize) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n \r\n canvas.width = width;\r\n canvas.height = height;\r\n \r\n ctx.drawImage(img, 0, 0, width, height);\r\n \r\n canvas.toBlob(blob => {\r\n if (blob == null) {\r\n return console.error('Could not resize image!');\r\n }\r\n const newName = file.name.replace(/\\.\\w+$/, '.' + this._imageExtensions[blob.type]);\r\n const newFile = new File([blob], newName, { type: blob.type });\r\n resolve(newFile);\r\n }, newType, imageQuality ? imageQuality / 100 : undefined);\r\n } else {\r\n resolve(file);\r\n }\r\n };\r\n });\r\n })).then(files => {\r\n const container = new DataTransfer();\r\n for (let file of files) {\r\n container.items.add(file);\r\n }\r\n this.$node.files = container.files;\r\n this._updateData();\r\n });\r\n },\r\n\r\n _updateData () {\r\n let files = [];\r\n \r\n if (this.$node.files.length) {\r\n const self = this;\r\n\r\n files = Array.from(this.$node.files).map((file, index) => {\r\n const data = {\r\n date: (file.lastModified ? new Date(file.lastModified) : file.lastModifiedDate).toISOString(),\r\n name: file.name,\r\n size: file.size,\r\n type: file.type,\r\n get dataUrl () {\r\n if (!file._dataUrl) {\r\n loading = true;\r\n dmx.fileUtils.blobToDataURL(file).then(dataUrl => {\r\n file._dataUrl = dataUrl;\r\n files = dmx.clone(files);\r\n files[index].dataUrl = dataUrl;\r\n self.set('files', files);\r\n }).catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n return null;\r\n },\r\n };\r\n\r\n return data;\r\n });\r\n }\r\n\r\n this.set('files', files);\r\n },\r\n\r\n});\r\n","dmx.Component('button', {\r\n\r\n extends: 'form-element',\r\n\r\n attributes: {\r\n type: {\r\n type: String,\r\n default: 'button',\r\n enum: ['button', 'reset', 'submit'],\r\n },\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n \r\n node.type = this.props.type;\r\n },\r\n\r\n});\r\n","dmx.Component('radio', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check, triggerEvent) {\r\n this._select(check);\r\n if (triggerEvent) {\r\n dmx.nextTick(() => {\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n });\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'radio';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('radio', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n\r\n if (updatedProps.has('value')) {\r\n this.$node.value = this.props.value;\r\n this.$node.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n\r\n // trigger change on other radios with the same name and same form\r\n if (this.$node.checked) {\r\n const radios = document.querySelectorAll(`input[type=radio][name=\"${this.$node.name}\"]`);\r\n for (const elem of radios) {\r\n if (elem == this.$node || elem.form != this.$node.form) continue;\r\n if (elem.type == 'radio' && elem.name == this.$node.name) {\r\n elem.dispatchEvent(new Event('change', { bubbles: true }));\r\n }\r\n }\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('radio-group', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: String,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('radio', this._changeHandler);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n for (let mutation of mutationList) {\r\n if (mutation.type == 'attributes' && mutation.attributeName == 'value') {\r\n if (mutation.target.tagName === 'INPUT' && mutation.target.type === 'radio') {\r\n mutation.target.checked = mutation.target.value == value;\r\n mutation.target.defaultChecked = mutation.target.checked;\r\n mutation.target.dispatchEvent(new Event('change', { bubbles: true }));\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n }\r\n }\r\n\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'radio') {\r\n node.checked = node.value == value;\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=radio]').forEach(checkbox => {\r\n checkbox.checked = node.value == value;\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n \r\n this._mutationObserver.observe(node, { subtree: true, childList: true, attributes: true, attributeFilter: ['value'] });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('radio', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value != null) {\r\n value = value.toString();\r\n \r\n this._radios().forEach(radio => {\r\n radio.checked = radio.value == value;\r\n if (defaultValue) radio.defaultChecked = radio.checked;\r\n radio.dispatchEvent(new Event('change', { bubbles: true }));\r\n });\r\n\r\n this._updateValue();\r\n }\r\n },\r\n\r\n _updateValue () {\r\n const value = this._radios().filter(radio => !radio.disabled && radio.checked).map(radio => radio.value);\r\n\r\n if (!dmx.equal(this.data.value, value[0])) {\r\n this.set('value', value[0] || null);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _radios () {\r\n return Array.from(this.$node.querySelectorAll('input[type=radio]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('checkbox', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n select (check, triggerEvent) {\r\n this._select(check);\r\n if (triggerEvent) {\r\n dmx.nextTick(() => {\r\n this.dispatchEvent('changed');\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n });\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n checked: Event,\r\n unchecked: Event,\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n\r\n node.type = 'checkbox';\r\n node.checked = this.props.checked;\r\n node.defaultChecked = this.props.checked;\r\n\r\n if (this.props.checked) {\r\n this.set('checked', true);\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('checked')) {\r\n if (this.$node.checked != this.props.checked) {\r\n this.$node.defaultChecked = this.props.checked;\r\n this.$node.checked = this.props.checked;\r\n this.set('checked', this.props.checked);\r\n this.$node.dispatchEvent(new Event('checkbox', { bubbles: true }));\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n }\r\n },\r\n\r\n _select (check) {\r\n this.$node.checked = (check !== false);\r\n this.set('checked', this.$node.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (!this.$node) return;\r\n this.set('checked', this.$node.checked);\r\n this.dispatchEvent('changed');\r\n if (event.type != 'reset') {\r\n this.dispatchEvent(this.$node.checked ? 'checked' : 'unchecked');\r\n }\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('checkbox-group', {\r\n\r\n initialData: {\r\n value: [],\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: [],\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n this._setValue(value);\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n init (node) {\r\n this._changeHandler = this._changeHandler.bind(this);\r\n\r\n node.addEventListener('change', this._changeHandler);\r\n node.addEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n\r\n this._setValue(this.props.value, true);\r\n\r\n this._mutationObserver = new MutationObserver((mutationList) => {\r\n let value = this.props.value;\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n for (let mutation of mutationList) {\r\n for (let node of mutation.addedNodes) {\r\n if (node.nodeType !== Node.ELEMENT_NODE) continue;\r\n\r\n requestAnimationFrame(() => {\r\n if (node.tagName === 'INPUT' && node.type === 'checkbox') {\r\n node.checked = value.includes(node.value);\r\n node.defaultChecked = node.checked;\r\n } else {\r\n node.querySelectorAll('input[type=checkbox]').forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n checkbox.defaultChecked = checkbox.checked;\r\n });\r\n }\r\n\r\n requestAnimationFrame(() => {\r\n this._updateValue();\r\n });\r\n });\r\n }\r\n }\r\n });\r\n\r\n this._mutationObserver.observe(node, { subtree: true, childList: true });\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n this.$node.removeEventListener('change', this._changeHandler);\r\n this.$node.removeEventListener('checkbox', this._changeHandler);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = [];\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n this._checkboxes().forEach(checkbox => {\r\n checkbox.checked = value.includes(checkbox.value);\r\n if (defaultValue) checkbox.defaultChecked = checkbox.checked;\r\n });\r\n\r\n this._updateValue();\r\n },\r\n\r\n _updateValue () {\r\n const value = this._checkboxes().filter(checkbox => !checkbox.disabled && checkbox.checked).map(checkbox => checkbox.value);\r\n\r\n if (!dmx.equal(this.data.value, value)) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n _checkboxes () {\r\n return Array.from(this.$node.querySelectorAll('input[type=checkbox]'));\r\n },\r\n\r\n _changeHandler (event) {\r\n this._updateValue();\r\n },\r\n\r\n});\r\n","dmx.Component('select', {\r\n\r\n extends: 'form-element',\r\n\r\n initialData: {\r\n selectedIndex: -1,\r\n selectedValue: '',\r\n selectedText: '',\r\n },\r\n\r\n attributes: {\r\n options: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n optiontext: {\r\n type: String,\r\n default: '$value',\r\n },\r\n\r\n optionvalue: {\r\n type: String,\r\n default: '$value',\r\n },\r\n },\r\n\r\n methods: {\r\n setSelectedIndex (index) {\r\n this.$node.selectedIndex = index;\r\n this._updateValue();\r\n },\r\n },\r\n\r\n init (node) {\r\n this._options = [];\r\n\r\n if (!this.props.value) {\r\n this.props.value = this.$node.value;\r\n this._updateValue();\r\n }\r\n\r\n this._mutationObserver = new MutationObserver((a) => {\r\n if (!this._updatingOptions) {\r\n this._updateValue();\r\n }\r\n });\r\n this._mutationObserver.observe(this.$node, { subtree: true, childList: true });\r\n\r\n dmx.Component('form-element').prototype.init.call(this, node);\r\n },\r\n\r\n render (node) {\r\n this.$parse();\r\n this._renderOptions();\r\n let value = this.props.value;\r\n if (value == null) value = '';\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', (option.value == value));\r\n option.selected = (option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n this._updateValue();\r\n },\r\n\r\n destroy () {\r\n this._mutationObserver.disconnect();\r\n dmx.Component('form-element').prototype.destroy.call(this);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('form-element').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('options') || updatedProps.has('optiontext') || updatedProps.has('optionvalue')) {\r\n this._renderOptions();\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n value = value.toString();\r\n\r\n \r\n if (defaultValue) {\r\n Array.from(this.$node.options).forEach(option => {\r\n option.toggleAttribute('selected', option.value == value);\r\n option.defaultSelected = option.selected;\r\n });\r\n } else {\r\n const selectedIndex = Array.from(this.$node.options).findIndex(option => option.value == value);\r\n this.$node.selectedIndex = selectedIndex;\r\n }\r\n\r\n this._updateValue();\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _updateValue () {\r\n const selectedIndex = this.$node.selectedIndex;\r\n const selected = this.$node.options[selectedIndex] || { value: '', text: '' };\r\n\r\n this.set({\r\n selectedIndex: selectedIndex,\r\n selectedValue: selected.value,\r\n selectedText: selected.text,\r\n value: selected.value,\r\n });\r\n },\r\n\r\n _renderOptions () {\r\n this._options.forEach(option => option.remove());\r\n this._options = [];\r\n\r\n if (this.props.options) {\r\n this._updatingOptions = true;\r\n dmx.repeatItems(this.props.options).forEach(option => {\r\n const node = document.createElement('option');\r\n node.value = dmx.parse(this.props.optionvalue, dmx.DataScope(option, this));\r\n node.textContent = dmx.parse(this.props.optiontext, dmx.DataScope(option, this));\r\n if (node.value == this.props.value) node.selected = true;\r\n node.defaultSelected = node.selected;\r\n this.$node.append(node);\r\n this._options.push(node);\r\n });\r\n this._updatingOptions = false;\r\n }\r\n\r\n this._updateValue();\r\n },\r\n\r\n _inputHandler (event) {\r\n // do nothing\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) {\r\n this._validate();\r\n }\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('select-multiple', {\r\n\r\n extends: 'select',\r\n\r\n initialData: {\r\n value: [],\r\n },\r\n\r\n attributes: {\r\n value: {\r\n type: Array,\r\n default: null,\r\n alwaysUpdate: true,\r\n },\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n dmx.Component('select').prototype.performUpdate.call(this, updatedProps);\r\n\r\n if (updatedProps.has('value')) {\r\n this._setValue(this.props.value, true);\r\n }\r\n },\r\n\r\n _setValue (value, defaultValue) {\r\n if (value == null) value = '';\r\n if (!Array.isArray(value)) value = [value];\r\n value = value.map(v => v.toString());\r\n\r\n Array.from(this.$node.options).forEach(option => {\r\n const selected = value.includes(option.value);\r\n if (defaultValue) {\r\n option.toggleAttribute('selected', selected);\r\n option.defaultSelected = option.selected;\r\n } else {\r\n option.selected = selected;\r\n }\r\n });\r\n\r\n this._updateValue();\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _getValue () {\r\n return Array.from(this.$node.selectedOptions).map(option => option.value);\r\n },\r\n\r\n _updateValue () {\r\n const value = this._getValue(); //Array.from(this.$node.options).filter(option => option.selected).map(option => option.value);\r\n\r\n dmx.batch(() => {\r\n dmx.Component('select').prototype._updateValue.call(this);\r\n this.set('value', value);\r\n });\r\n },\r\n\r\n _changeHandler (event) {\r\n if (this.$node.dirty) this._validate();\r\n\r\n dmx.nextTick(() => {\r\n if (this.data.selectedIndex !== this.$node.selectedIndex || !dmx.equal(this.data.value, this._getValue())) {\r\n this._updateValue();\r\n this.dispatchEvent('changed');\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('value', {\r\n\r\n initialData: {\r\n value: null,\r\n },\r\n\r\n attributes: {\r\n value: {\r\n default: null,\r\n },\r\n },\r\n\r\n methods: {\r\n setValue (value) {\r\n if (this.data.value !== value) {\r\n this.set('value', value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('value', this.props.value);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('value')) {\r\n this.set('value', this.props.value);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});","dmx.Component(\"repeat\", {\r\n\r\n initialData: {\r\n items: [],\r\n },\r\n\r\n attributes: {\r\n repeat: {\r\n type: [Array, Object, Number],\r\n default: null,\r\n },\r\n\r\n key: {\r\n type: String,\r\n default: \"\",\r\n },\r\n\r\n rerender: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n events: {\r\n update: Event,\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.prevItems = [];\r\n this.childKeys = new Map();\r\n this.$template = document.createDocumentFragment();\r\n while (this.$node.hasChildNodes()) {\r\n this.$template.appendChild(this.$node.firstChild);\r\n }\r\n if (this.props.repeat) {\r\n this.performUpdate(new Map([['repeat', undefined]]));\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"key\")) this._rerender = true;\r\n if (!updatedProps.has(\"repeat\")) return;\r\n\r\n this.dispatchEvent(\"update\");\r\n\r\n if (this.props.rerender || this._rerender) {\r\n this._rerender = false;\r\n this._clear();\r\n }\r\n\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var repeat = dmx.clone(this.props.repeat);\r\n var items = dmx.repeatItems(repeat);\r\n\r\n if (items.length) {\r\n if (\r\n !this.props.rerender &&\r\n this.props.key &&\r\n items[0].hasOwnProperty(this.props.key) &&\r\n this.prevItems.length\r\n ) {\r\n // keyed repeater (https://github.com/localvoid/kivi/blob/master/lib/vnode.ts#L1320-L1513)\r\n var key = this.props.key;\r\n var a = this.prevItems;\r\n var b = this._clone(items);\r\n var aStart = 0;\r\n var bStart = 0;\r\n var aEnd = a.length - 1;\r\n var bEnd = b.length - 1;\r\n var i, j, nextPos;\r\n\r\n outer: while (true) {\r\n // remove same keys from start\r\n while (a[aStart][key] === b[bStart][key]) {\r\n this.childKeys.get(b[bStart][key]).set(b[bStart]);\r\n aStart++;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // remove same keys at end\r\n while (a[aEnd][key] === b[bEnd][key]) {\r\n this.childKeys.get(b[bEnd][key]).set(b[bEnd]);\r\n aEnd--;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break outer;\r\n }\r\n }\r\n\r\n // move from right to left\r\n if (a[aEnd][key] === b[bStart][key]) {\r\n this.childKeys.get(b[bStart][key]).set(b[bStart]);\r\n this._moveChild(b[bStart][key], a[aStart][key]);\r\n aEnd--;\r\n bStart++;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n // move from left to right\r\n if (a[aStart][key] === b[bEnd][key]) {\r\n nextPos = bEnd + 1;\r\n this.childKeys.get(b[bEnd][key]).set(b[bEnd]);\r\n this._moveChild(b[bEnd][key], b[nextPos] && b[nextPos][key]);\r\n aStart++;\r\n bEnd--;\r\n if (aStart > aEnd || bStart > bEnd) {\r\n break;\r\n }\r\n continue;\r\n }\r\n\r\n break;\r\n }\r\n\r\n if (aStart > aEnd) {\r\n // insert rest from b\r\n nextPos = bEnd + 1;\r\n while (bStart <= bEnd) {\r\n this._insertChild(b[bStart++], b[nextPos] && b[nextPos][key]);\r\n }\r\n } else if (bStart > bEnd) {\r\n // remove rest from a\r\n while (aStart <= aEnd) {\r\n this._removeChild(a[aStart++][key]);\r\n }\r\n } else {\r\n var aLength = aEnd - aStart + 1;\r\n var bLength = bEnd - bStart + 1;\r\n var aNullable = a;\r\n var sources = new Array(bLength).fill(-1);\r\n\r\n var moved = false;\r\n var pos = 0;\r\n var synced = 0;\r\n\r\n if (bLength <= 4 || aLength * bLength <= 16) {\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n for (j = bStart; j <= bEnd; j++) {\r\n if (a[i][key] === b[j][key]) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys.get(b[j][key]).set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n var keyIndex = {};\r\n\r\n for (i = bStart; i <= bEnd; i++) {\r\n keyIndex[b[i][key]] = i;\r\n }\r\n\r\n for (i = aStart; i <= aEnd; i++) {\r\n if (synced < bLength) {\r\n j = keyIndex[a[i][key]];\r\n\r\n if (j !== undefined) {\r\n sources[j - bStart] = i;\r\n\r\n if (pos > j) {\r\n moved = true;\r\n } else {\r\n pos = j;\r\n }\r\n\r\n this.childKeys.get(b[j][key]).set(b[j]);\r\n\r\n synced++;\r\n aNullable[i] = null;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (aLength === a.length && synced === 0) {\r\n this._clear();\r\n while (bStart < bLength) {\r\n this._insertChild(b[bStart++], null);\r\n }\r\n } else {\r\n i = aLength - synced;\r\n while (i > 0) {\r\n if (aNullable[aStart] !== null) {\r\n this._removeChild(a[aStart][key]);\r\n i--;\r\n }\r\n aStart++;\r\n }\r\n\r\n if (moved) {\r\n var seq = this._lis(sources);\r\n j = seq.length - 1;\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n if (j < 0 || i !== seq[j]) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._moveChild(b[pos][key], b[nextPos] && b[nextPos][key]);\r\n } else {\r\n j--;\r\n }\r\n }\r\n }\r\n } else if (synced !== bLength) {\r\n for (i = bLength - 1; i >= 0; i--) {\r\n if (sources[i] === -1) {\r\n pos = i + bStart;\r\n nextPos = pos + 1;\r\n this._insertChild(b[pos], b[nextPos] && b[nextPos][key]);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } else {\r\n if (this.children.length > items.length) {\r\n // remove some children\r\n this.children.splice(items.length).forEach((child) => {\r\n child.$destroy();\r\n });\r\n }\r\n\r\n if (this.children.length) {\r\n // update existing children\r\n this.children.forEach((child, i) => {\r\n for (const key in child.data) {\r\n // remove old data that is not in new data\r\n if (!items[i][key]) {\r\n delete child.data[key];\r\n }\r\n }\r\n child.set(items[i]);\r\n });\r\n }\r\n\r\n if (items.length > this.children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n for (var i = this.children.length; i < items.length; i++) {\r\n var child = new RepeatItem(\r\n this.$template.cloneNode(true),\r\n this,\r\n items[i]\r\n );\r\n child.$nodes.forEach((node) => {\r\n fragment.appendChild(node);\r\n //this.$node.appendChild(node);\r\n //child.$parse(node);\r\n toParse.add(child);\r\n });\r\n this.children.push(child);\r\n }\r\n\r\n this.$node.appendChild(fragment);\r\n\r\n for (const child of toParse) {\r\n child.$nodes.forEach((node) => {\r\n child.$parse(node);\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this._clear();\r\n }\r\n\r\n if (this.props.key) {\r\n this.prevItems = this._clone(items);\r\n for (let child of this.children) {\r\n this.childKeys.set(child.data[this.props.key], child);\r\n }\r\n }\r\n\r\n //this.set('items', items);\r\n this.set(\r\n \"items\",\r\n this.children.map((child) => child.data)\r\n );\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n },\r\n\r\n _lis (a) {\r\n var p = a.slice(0);\r\n var result = [];\r\n result.push(0);\r\n var u, v;\r\n\r\n for (var i = 0, il = a.length; i < il; i++) {\r\n if (a[i] === -1) {\r\n continue;\r\n }\r\n\r\n var j = result[result.length - 1];\r\n if (a[j] < a[i]) {\r\n p[i] = j;\r\n result.push(i);\r\n continue;\r\n }\r\n\r\n u = 0;\r\n v = result.length - 1;\r\n\r\n while (u < v) {\r\n var c = ((u + v) / 2) | 0;\r\n if (a[result[c]] < a[i]) {\r\n u = c + 1;\r\n } else {\r\n v = c;\r\n }\r\n }\r\n\r\n if (a[i] < a[result[u]]) {\r\n if (u > 0) {\r\n p[i] = result[u - 1];\r\n }\r\n result[u] = i;\r\n }\r\n }\r\n\r\n u = result.length;\r\n v = result[u - 1];\r\n\r\n while (u-- > 0) {\r\n result[u] = v;\r\n v = p[v];\r\n }\r\n\r\n return result;\r\n },\r\n\r\n _clear () {\r\n this.prevItems = [];\r\n this.childKeys.clear();\r\n this.$node.innerHTML = '';\r\n this.children.splice(0).forEach((child) => {\r\n child.$destroy();\r\n });\r\n },\r\n\r\n _insertChild (data, before) {\r\n var RepeatItem = dmx.Component(\"repeat-item\");\r\n var child = new RepeatItem(this.$template.cloneNode(true), this, data);\r\n\r\n child.$nodes.forEach((node) => {\r\n if (!before) {\r\n this.$node.appendChild(node);\r\n } else {\r\n if (this.childKeys.has(before)) {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n } else {\r\n console.warn(\r\n \"(insert) can not insert node before key \" + before + \"!\"\r\n );\r\n }\r\n }\r\n\r\n child.$parse(node);\r\n });\r\n\r\n this.childKeys.set(data[this.props.key], child);\r\n this.children.push(child);\r\n },\r\n\r\n _moveChild (key, before) {\r\n var child = this.childKeys.get(key);\r\n\r\n if (child) {\r\n if (this.childKeys.has(before)) {\r\n child.$nodes.forEach((node) => {\r\n this.$node.insertBefore(node, this.childKeys.get(before).$nodes[0]);\r\n });\r\n } else {\r\n child.$nodes.forEach((node) => {\r\n this.$node.appendChild(node);\r\n });\r\n }\r\n } else {\r\n console.warn(\"(move) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _removeChild (key) {\r\n var child = this.childKeys.get(key);\r\n if (child) {\r\n child.$destroy();\r\n this.children.splice(this.children.indexOf(child), 1);\r\n this.childKeys.delete(key);\r\n } else {\r\n console.warn(\"(remove) child with key \" + key + \" not found!\");\r\n }\r\n },\r\n\r\n _clone (o) {\r\n return dmx.clone(o);\r\n },\r\n});\r\n","dmx.Component(\"repeat-item\", {\r\n\r\n constructor: function (fragment, parent, data, name) {\r\n this.parent = parent;\r\n this.children = [];\r\n this.listeners = {};\r\n this.props = {};\r\n\r\n this.__disposables = [];\r\n this.__childDisposables = [];\r\n\r\n this.updatedProps = new Map();\r\n this.updateRequested = false;\r\n\r\n this.isInitialized = true;\r\n this.isDestroyed = false;\r\n\r\n this.data = dmx.signalProxy(data);\r\n this.seed = parent.seed;\r\n\r\n this.name = name || \"repeatItem\";\r\n this.$nodes = [];\r\n for (var i = 0; i < fragment.childNodes.length; i++) {\r\n this.$nodes.push(fragment.childNodes[i]);\r\n }\r\n },\r\n\r\n destroy () {\r\n for (const node of this.$nodes) {\r\n if (this.parent && this.parent.props && this.parent.props.key) {\r\n const event = new Event('remove', { cancelable: true });\r\n \r\n if (node.dispatchEvent(event)) {\r\n dmx.dom.remove(node);\r\n }\r\n } else {\r\n node.remove();\r\n }\r\n }\r\n },\r\n});\r\n","dmx.Component('fetch', {\r\n\r\n initialData: {\r\n status: 0,\r\n data: null,\r\n links: {},\r\n paging: {},\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n percent: 0,\r\n total: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null,\r\n },\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n method: {\r\n type: String,\r\n default: 'GET',\r\n },\r\n\r\n url: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n data: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n dataType: {\r\n type: String,\r\n default: 'auto',\r\n enum: ['auto', 'json', 'text'],\r\n },\r\n\r\n noload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n cache: {\r\n type: String,\r\n default: '',\r\n },\r\n\r\n ttl: {\r\n // cache ttl in seconds (default 1 day)\r\n type: Number,\r\n default: 86400,\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n load (params, reload) {\r\n const options = {};\r\n if (params) options.params = params;\r\n if (reload) options.ttl = 0;\r\n this._fetch(options);\r\n },\r\n\r\n reset () {\r\n this._abort();\r\n this._resetData(true);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n invalid: Event,\r\n unauthorized: Event,\r\n forbidden: Event,\r\n abort: Event,\r\n success: Event,\r\n upload: ProgressEvent,\r\n download: ProgressEvent,\r\n },\r\n\r\n _statusEvents: {\r\n 200: 'success',\r\n 400: 'invalid',\r\n 401: 'unauthorized',\r\n 403: 'forbidden',\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this._fetch = dmx.debounce(this._fetch.bind(this));\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n if (!this.props.noload && this.props.url) {\r\n this._fetch();\r\n }\r\n },\r\n\r\n destroy () {\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr.abort();\r\n this._xhr = null;\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (!this.props.noload && this.props.url) {\r\n // if url or params are changed\r\n if (updatedProps.has('url') || updatedProps.has('params')) {\r\n this._fetch();\r\n }\r\n }\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n\r\n if (argument && value && name == 'data') {\r\n this.$watch(value, value => {\r\n this.props.data = Object.assign({}, this.props.data, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _abort () {\r\n if (this._xhr) {\r\n this._xhr.abort();\r\n }\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\r\n status: 0,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: \"\",\r\n response: null,\r\n },\r\n };\r\n\r\n if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _fetch (options) {\r\n this._abort();\r\n\r\n options = dmx.extend(true, this.props, options || {});\r\n \r\n let qs = Object.keys(options.params)\r\n .filter(key => options.params[key] != null)\r\n .map(key => {\r\n let value = options.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n \r\n this._url = options.url;\r\n\r\n if (qs) {\r\n this._url += (this._url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n this._url = window.WebviewProxy.convertProxyUrl(this._url);\r\n }\r\n\r\n if (this.props.cache) {\r\n const cache = this.parse(`${this.props.cache}.data[\"${this._url}\"]`);\r\n if (cache) {\r\n if (Date.now() - cache.created >= options.ttl * 1000) {\r\n this.parse(`${this.props.cache}.remove(\"${this._url}\")`);\r\n } else {\r\n this.set({\r\n headers: cache.headers || {},\r\n paging: cache.paging || {},\r\n links: cache.links || {},\r\n data: cache.data,\r\n });\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n }\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n });\r\n\r\n let data = null;\r\n let method = this.props.method.toUpperCase();\r\n\r\n if (method !== 'GET') {\r\n if (this.props.dataType === 'text') {\r\n data = this.props.data.toString();\r\n } else if (this.props.dataType === 'json') {\r\n data = JSON.stringify(this.props.data);\r\n } else {\r\n if (method === 'POST') {\r\n data = new FormData();\r\n\r\n Object.keys(this.props.data).forEach(key => {\r\n let value = this.props.data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.text(value)) key += '[]';\r\n value.forEach(val => data.append(key, val));\r\n } else {\r\n data.set(key, value);\r\n }\r\n });\r\n } else {\r\n data = this.props.data.toString();\r\n }\r\n }\r\n }\r\n\r\n this._xhr.open(method, this._url);\r\n this._xhr.timeout = options.timeout * 1000;\r\n if (this.props.dataType === 'json' || this.props.dataType === 'text') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/' + this.props.dataType);\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n if (this.serverconnect && method !== 'GET') {\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let response = this._xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch (err) {\r\n if (this._xhr.status < 400) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n this._parseHeaders();\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n\r\n if (this.props.cache) {\r\n this.parse(`${this.props.cache}.set(\"${this._url}\", { headers: headers, paging: paging, links: links, data: data, created: ${Date.now()} })`)\r\n }\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[this._xhr.status] || 'error');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _parseHeaders() {\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n return;\r\n }\r\n\r\n this._parseLinkHeaders();\r\n },\r\n\r\n _parseLinkHeaders () {\r\n try {\r\n const linkHeader = Object.keys(this.data.headers).find(header => header.toLowerCase() === 'link');\r\n\r\n if (linkHeader) {\r\n this.set('links', this.data.headers[linkHeader].split(/,\\s* {\r\n try {\r\n const match = link.match(/]*)>(.*)/);\r\n const linkUrl = new URL(match[1]);\r\n const parts = match[2].split(';');\r\n const qs = linkUrl.search.slice(1).split('&').reduce((acc, x) => {\r\n const p = x.split('=');\r\n if (p[0]) acc[decodeURIComponent[p[0]]] = decodeURIComponent(p[1] || '');\r\n return acc;\r\n }, {});\r\n \r\n let info = parts.slice(1).reduce((acc, part) => {\r\n const match = part.match(/\\s*(.+)\\s*=\\s*\"?([^\"]+)\"?/);\r\n if (match) acc[match[1]] = match[2];\r\n return acc;\r\n }, {});\r\n\r\n info = Object.assign({}, qs, info);\r\n info.url = linkUrl.toString();\r\n\r\n return info;\r\n } catch (err) {\r\n console.warn('Error parsing link header part', err);\r\n return null;\r\n }\r\n })).filter(x => x && x.rel).reduce((acc, x) => {\r\n x.rel.split(/\\s+/).forEach(rel => acc[rel] = Object.assign(x, { rel }));\r\n return acc;\r\n }, {});\r\n }\r\n } catch (err) {\r\n console.warn('Error parsing link header', err);\r\n return;\r\n }\r\n\r\n this._parsePaging();\r\n },\r\n\r\n _parsePaging () {\r\n try {\r\n const paging = {\r\n page: 1,\r\n pages: 1,\r\n items: 0,\r\n has: {\r\n first: false,\r\n prev: false,\r\n next: false,\r\n last: false,\r\n },\r\n };\r\n\r\n const { first, prev, next, last } = this.data.links;\r\n\r\n if (prev || next) {\r\n if (last && last.page) {\r\n paging.pages = +last.page;\r\n } else if (prev && prev.page) {\r\n paging.pages = +prev.page + 1;\r\n }\r\n\r\n const countHeader = Object.keys(this.data.headers).find(header => {\r\n header = header.toLowerCase();\r\n return header === 'x-total' || header === 'x-count' || header === 'x-total-count';\r\n });\r\n\r\n if (countHeader) {\r\n paging.items = +this.data.headers[countHeader];\r\n }\r\n\r\n if (prev && prev.page) {\r\n paging.page = +prev.page + 1;\r\n } else if (next && next.page) {\r\n paging.page = +next.page - 1;\r\n }\r\n\r\n paging.has = {\r\n first: !!first,\r\n prev: !!prev,\r\n next: !!next,\r\n last: !!last,\r\n };\r\n }\r\n\r\n this.set('paging', paging);\r\n } catch (err) {\r\n console.warn('Error parsing paging', err);\r\n }\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n state: {\r\n executing: true,\r\n uploading: type === 'upload' && percent < 100,\r\n processing: type === 'upload' && percent === 100,\r\n downloading: type === 'download',\r\n },\r\n [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total,\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('serverconnect', {\r\n\r\n extends: 'fetch',\r\n\r\n attributes: {\r\n sockets: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n init (node) {\r\n this.serverconnect = true;\r\n \r\n if (this.props.sockets && dmx.Socket) {\r\n this._refresh = this._refresh.bind(this);\r\n this._event = this.props.url.replace(/^(.*?)api\\//, '')\r\n this._socket = dmx.Socket('/api');\r\n this._socket.on(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.init.call(this, node);\r\n },\r\n\r\n destroy () {\r\n if (this._socket) {\r\n this._socket.off(this._event, this._refresh);\r\n }\r\n\r\n dmx.Component('fetch').prototype.destroy.call(this);\r\n },\r\n\r\n _fetch (options) {\r\n if (this._socket && this._socket.connected) {\r\n this._refresh(options && options.params);\r\n } else {\r\n dmx.Component('fetch').prototype._fetch.call(this, options);\r\n }\r\n },\r\n\r\n _refresh (params) {\r\n params = dmx.extend(true, {}, this.props.params, params || {});\r\n\r\n this.dispatchEvent('start');\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: true,\r\n downloading: false,\r\n });\r\n\r\n this._socket.emit(this._event, params, response => {\r\n this.set({\r\n status: response.status,\r\n data: response.data,\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n });\r\n\r\n this.dispatchEvent(this._statusEvents[response.status] || 'error');\r\n this.dispatchEvent('done');\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('serverconnect-form', {\r\n \r\n extends: 'form',\r\n\r\n initialData: {\r\n status: 0,\r\n data: null,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: '',\r\n response: null,\r\n },\r\n },\r\n\r\n attributes: {\r\n timeout: {\r\n type: Number,\r\n default: 0,\r\n },\r\n\r\n autosubmit: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n headers: {\r\n type: Object,\r\n default: {},\r\n },\r\n\r\n postData: {\r\n type: String,\r\n default: 'form',\r\n },\r\n\r\n credentials: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n abort () {\r\n this._abort();\r\n },\r\n\r\n reset (clearData) {\r\n this._reset();\r\n\r\n if (clearData) {\r\n this._abort();\r\n this._resetData(true);\r\n }\r\n }\r\n },\r\n\r\n events: {\r\n start: Event, // when starting an ajax call\r\n done: Event, // when ajax call completed (success and error)\r\n error: Event, // server error or javascript error (json parse or network transport) or timeout error\r\n unauthorized: Event, // 401 status from server\r\n forbidden: Event, // 403 status from server\r\n abort: Event, // ajax call was aborted\r\n success: Event, // successful ajax call,\r\n upload: ProgressEvent, // on upload progress\r\n download: ProgressEvent, // on download progress\r\n },\r\n\r\n init (node) {\r\n dmx.Component('form').prototype.init.call(this, node);\r\n\r\n this._loadHandler = this._loadHandler.bind(this);\r\n this._abortHandler = this._abortHandler.bind(this);\r\n this._errorHandler = this._errorHandler.bind(this);\r\n this._timeoutHandler = this._timeoutHandler.bind(this);\r\n this._downloadProgressHandler = this._progressHandler.bind(this, 'download');\r\n this._uploadProgressHandler = this._progressHandler.bind(this, 'upload');\r\n\r\n this._xhr = new XMLHttpRequest();\r\n this._xhr.addEventListener('load', this._loadHandler);\r\n this._xhr.addEventListener('abort', this._abortHandler);\r\n this._xhr.addEventListener('error', this._errorHandler);\r\n this._xhr.addEventListener('timeout', this._timeoutHandler);\r\n this._xhr.addEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.addEventListener('progress', this._uploadProgressHandler);\r\n\r\n this._extendNode(node);\r\n\r\n if (this.props.autosubmit) {\r\n dmx.nextTick(() => this._submit());\r\n }\r\n },\r\n\r\n destroy () {\r\n dmx.Component('form').prototype.destroy.call(this);\r\n\r\n this._xhr.removeEventListener('load', this._loadHandler);\r\n this._xhr.removeEventListener('abort', this._abortHandler);\r\n this._xhr.removeEventListener('error', this._errorHandler);\r\n this._xhr.removeEventListener('timeout', this._timeoutHandler);\r\n this._xhr.removeEventListener('progress', this._downloadProgressHandler);\r\n this._xhr.upload.removeEventListener('progress', this._uploadProgressHandler);\r\n this._xhr = null;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && ['param', 'header'].includes(name)) {\r\n this.$watch(value, value => {\r\n this.props[name + 's'] = Object.assign({}, this.props[name + 's'], { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _extendNode (node) {\r\n node.dmxExtraData = {};\r\n node.dmxExtraElements = [];\r\n },\r\n\r\n _abort () {\r\n this._xhr.abort();\r\n },\r\n\r\n _resetData (clearData) {\r\n const data = {\r\n status: 0,\r\n headers: {},\r\n state: {\r\n executing: false,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n },\r\n uploadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n downloadProgress: {\r\n position: 0,\r\n total: 0,\r\n percent: 0,\r\n },\r\n lastError: {\r\n status: 0,\r\n message: \"\",\r\n response: null,\r\n },\r\n };\r\n\r\n if (clearData) {\r\n data.data = null;\r\n }\r\n\r\n this.set(data);\r\n },\r\n\r\n _formSubmit () {\r\n this._send();\r\n },\r\n\r\n _send () {\r\n // abort any previous request\r\n this._abort();\r\n \r\n const method = this.$node.method.toUpperCase();\r\n const action = this.$node.action;\r\n \r\n let data = null;\r\n \r\n let qs = Object.keys(this.props.params)\r\n .filter(key => this.props.params[key] != null)\r\n .map(key => {\r\n let value = this.props.params[key];\r\n if (typeof value === 'string' && value.startsWith('{{')) {\r\n value = this.parse(value);\r\n }\r\n return encodeURIComponent(key) + '=' + encodeURIComponent(value);\r\n })\r\n .join('&');\r\n\r\n if (method === 'GET') {\r\n if (qs.length) qs += '&';\r\n\r\n qs += Array.from(this.$node.elements)\r\n .filter(element => !element.disabled && ((element.type !== 'radio' && element.type !== 'checkbox') || element.checked))\r\n .map(element => encodeURIComponent(element.name) + '=' + encodeURIComponent(element.value))\r\n .join('&');\r\n } else if (this.props.postData === 'json') {\r\n data = this._parseJsonForm();\r\n\r\n if (this.$node.dmxExtraData) {\r\n Object.assign(data, this.$node.dmxExtraData);\r\n }\r\n\r\n data = JSON.stringify(data);\r\n } else {\r\n data = new FormData(this.$node);\r\n\r\n if (this.$node.dmxExtraData) {\r\n for (let key in this.$node.dmxExtraData) {\r\n let value = this.$node.dmxExtraData[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) key += '[]';\r\n value.forEach(value => data.append(key, value));\r\n } else {\r\n data.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n\r\n this._resetData();\r\n this.dispatchEvent('start');\r\n\r\n this.set('state', {\r\n executing: true,\r\n uploading: false,\r\n processing: false,\r\n downloading: false,\r\n });\r\n\r\n let url = action;\r\n\r\n if (qs) {\r\n url += (url.includes('?') ? '&' : '?') + qs;\r\n }\r\n\r\n if (window.WebviewProxy) {\r\n // Cordova webview proxy plugin\r\n url = window.WebviewProxy.convertProxyUrl(url);\r\n }\r\n\r\n this._xhr.open(method, url);\r\n this._xhr.timeout = this.props.timeout * 1000;\r\n if (this.props.postData === 'json') {\r\n this._xhr.setRequestHeader('Content-Type', 'application/json');\r\n }\r\n for (const header in this.props.headers) {\r\n this._xhr.setRequestHeader(header, this.props.headers[header]);\r\n }\r\n this._xhr.setRequestHeader('accept', 'application/json');\r\n if (this.props.credentials) {\r\n this._xhr.withCredentials = true;\r\n }\r\n\r\n const csrf_token = document.querySelector('meta[name=\"csrf-token\"]');\r\n if (csrf_token) {\r\n this._xhr.setRequestHeader('X-CSRF-Token', csrf_token.content);\r\n }\r\n\r\n try {\r\n this._xhr.send(data);\r\n } catch (err) {\r\n this._done(err);\r\n }\r\n },\r\n\r\n _done (err) {\r\n this._resetData();\r\n\r\n if (err) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: err.message,\r\n response: null,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n let response = this._xhr.responseText;\r\n\r\n try {\r\n response = JSON.parse(response);\r\n } catch (err) {\r\n if (this._xhr.status < 400) {\r\n this.set('lastError', {\r\n status: 0,\r\n message: 'Response was not valid JSON',\r\n response: response,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n }\r\n\r\n try {\r\n const strHeaders = this._xhr.getAllResponseHeaders();\r\n const arrHeaders = strHeaders.trim().split(/[\\r\\n]+/);\r\n\r\n this.set('headers', arrHeaders.reduce((headers, line) => {\r\n const parts = line.split(': ');\r\n const name = parts.shift();\r\n const value = parts.join(': ');\r\n\r\n headers[name] = value;\r\n\r\n return headers;\r\n }, {}));\r\n } catch (err) {\r\n console.warn('Error parsing response headers', err);\r\n }\r\n\r\n // reset form validation\r\n if (dmx.validateReset) dmx.validateReset(this.$node);\r\n if (window.grecaptcha && this.$node.querySelector('.g-recaptcha')) {\r\n grecaptcha.reset();\r\n }\r\n\r\n if (this._xhr.status < 400) {\r\n this.set({\r\n status: this._xhr.status,\r\n data: response,\r\n });\r\n\r\n this.dispatchEvent('success');\r\n this.dispatchEvent('done');\r\n return;\r\n }\r\n\r\n this.set({\r\n status: this._xhr.status,\r\n lastError: {\r\n status: this._xhr.status,\r\n message: this._xhr.statusText,\r\n response: response,\r\n }\r\n });\r\n\r\n if (this._xhr.status === 400) {\r\n this.dispatchEvent('invalid');\r\n\r\n // server-side validation error\r\n if (response.form && dmx.validate.setMessage) {\r\n for (const name in response.form) {\r\n const element = this.$node.querySelector(`[name=\"${name}\"]`);\r\n if (element) {\r\n const message = response.form[name];\r\n dmx.validate.setMessage(element, message);\r\n }\r\n }\r\n } else if (dmx.debug) {\r\n // console warning for debug purpose\r\n console.warn('400 error, no form errors in response.', response);\r\n }\r\n } else if (this._xhr.status === 401) {\r\n this.dispatchEvent('unauthorized');\r\n } else if (this._xhr.status === 403) {\r\n this.dispatchEvent('forbidden');\r\n } else {\r\n this.dispatchEvent('error');\r\n }\r\n\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _loadHandler (event) {\r\n this._done();\r\n },\r\n\r\n _abortHandler (event) {\r\n this._resetData();\r\n this.dispatchEvent('abort');\r\n this.dispatchEvent('done');\r\n },\r\n\r\n _errorHandler (event) {\r\n this._done(Error('Failed to execute'));\r\n },\r\n\r\n _timeoutHandler (event) {\r\n this._done(Error('Execution timeout'));\r\n },\r\n\r\n _progressHandler (type, event) {\r\n event.loaded = event.loaded || event.position;\r\n\r\n const percent = event.lengthComputable ? Math.ceil(event.loaded * 100 / event.total) : 0;\r\n\r\n this.set({\r\n state: {\r\n executing: true,\r\n uploading: type === 'upload' && percent < 100,\r\n processing: type === 'upload' && percent === 100,\r\n downloading: type === 'download',\r\n },\r\n [type + 'Progress']: {\r\n position: event.loaded,\r\n total: event.total,\r\n percent: percent,\r\n },\r\n });\r\n\r\n this.dispatchEvent(type, {\r\n lengthComputable: event.lengthComputable,\r\n loaded: event.loaded,\r\n total: event.total,\r\n });\r\n },\r\n\r\n});\r\n","dmx.Component('if', {\r\n\r\n attributes: {\r\n condition: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n events: {\r\n show: Event,\r\n hide: Event,\r\n },\r\n\r\n init (node) {\r\n this._shown = false;\r\n this._template = document.createDocumentFragment();\r\n\r\n while (node.firstChild) {\r\n this._template.appendChild(node.firstChild);\r\n }\r\n },\r\n\r\n render (node) {\r\n if (this.props.condition) {\r\n this._show();\r\n }\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n this.props.condition ? this._show() : this._hide();\r\n },\r\n\r\n destroy () {\r\n this._template = null;\r\n },\r\n\r\n _show () {\r\n if (this._shown) return;\r\n\r\n const template = this._template.cloneNode(true);\r\n this.$node.appendChild(template);\r\n this.$parse();\r\n this.dispatchEvent('show');\r\n this._shown = true;\r\n },\r\n\r\n _hide () {\r\n if (!this._shown) return;\r\n\r\n if (this.effects) {\r\n this.effects.forEach((effect) => effect());\r\n this.effects = null;\r\n }\r\n\r\n Array.from(this.$node.childNodes).forEach(node => {\r\n const event = new Event('remove', { cancelable: true });\r\n if (node.dispatchEvent(event)) node.remove();\r\n });\r\n \r\n this.$destroyChildren();\r\n this.dispatchEvent('hide');\r\n this._shown = false;\r\n }\r\n});\r\n","dmx.Component('datetime', {\r\n\r\n initialData: {\r\n datetime: null,\r\n },\r\n\r\n attributes: {\r\n interval: {\r\n type: String,\r\n default: 'seconds',\r\n enum: ['seconds', 'minutes', 'hours', 'days']\r\n },\r\n\r\n utc: {\r\n type: Boolean,\r\n default: false\r\n },\r\n },\r\n\r\n init () {\r\n this._tick = this._tick.bind(this);\r\n this._tick();\r\n },\r\n\r\n destroy () {\r\n if (this._timeout) clearTimeout(this._timeout);\r\n if (this._animationFrame) cancelAnimationFrame(this._animationFrame);\r\n },\r\n\r\n _tick () {\r\n this.set('datetime', this._datetime());\r\n\r\n switch (this.props.interval) {\r\n case 'seconds': return this._timeout = setTimeout(this._tick, 1000);\r\n case 'minutes': return this._timeout = setTimeout(this._tick, 60000);\r\n case 'hours': return this._timeout = setTimeout(this._tick, 3600000);\r\n case 'days': return this._timeout = setTimeout(this._tick, 86400000);\r\n default: return this._animationFrame = requestAnimationFrame(this._tick);\r\n }\r\n },\r\n\r\n _datetime () {\r\n const now = new Date();\r\n const pad = (n, d) => ('0000' + n).slice(-d);\r\n const utc = this.props.utc;\r\n \r\n const year = utc ? now.getUTCFullYear() : now.getFullYear();\r\n const month = (utc ? now.getUTCMonth() : now.getMonth()) + 1;\r\n const day = utc ? now.getUTCDate() : now.getDate();\r\n const hours = utc ? now.getUTCHours() : now.getHours();\r\n const minutes = utc ? now.getUTCMinutes() : now.getMinutes();\r\n const seconds = utc ? now.getUTCSeconds() : now.getSeconds();\r\n\r\n const dateString = pad(year, 4) + '-' + pad(month, 2) + '-' + pad(day, 2);\r\n const tz = utc ? 'Z' : '';\r\n\r\n switch (this.props.interval) {\r\n case 'days': return dateString + 'T00:00:00' + tz;\r\n case 'hours': return dateString + 'T' + pad(hours, 2) + ':00:00' + tz;\r\n case 'minutes': return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':00' + tz;\r\n }\r\n\r\n return dateString + 'T' + pad(hours, 2) + ':' + pad(minutes, 2) + ':' + pad(seconds, 2) + tz;\r\n },\r\n\r\n});\r\n","dmx.Component('api-action', { extends: 'fetch' });\r\n","dmx.Component('api-form', { extends: 'serverconnect-form' });\r\n","dmx.Component(\"array\", {\r\n\r\n initialData: {\r\n items: [],\r\n count: 0,\r\n },\r\n\r\n attributes: {\r\n items: {\r\n type: Array,\r\n default: [],\r\n },\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n methods: {\r\n add (newItem) {\r\n this._splice(this._count(), 0, newItem);\r\n },\r\n\r\n addUniq (newItem) {\r\n // Only add when not exists\r\n if (this._indexOf(newItem) == -1) {\r\n this._splice(this._count(), 0, newItem);\r\n }\r\n },\r\n\r\n insert (index, newItem) {\r\n this._splice(index, 0, newItem);\r\n },\r\n\r\n insertBefore (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 0, newItem);\r\n }\r\n },\r\n\r\n insertAfter (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index + 1, 0, newItem);\r\n }\r\n },\r\n\r\n replace (item, newItem) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1, newItem);\r\n }\r\n },\r\n\r\n replaceAt (index, newItem) {\r\n this._splice(index, 1, newItem);\r\n },\r\n\r\n remove (item) {\r\n const index = this._indexOf(item);\r\n if (index != -1) {\r\n this._splice(index, 1);\r\n }\r\n },\r\n\r\n removeAt (index) {\r\n this._splice(index, 1);\r\n },\r\n\r\n reverse () {\r\n this._reverse();\r\n },\r\n\r\n sort () {\r\n this._sort();\r\n },\r\n\r\n empty () {\r\n this._updateData([]);\r\n },\r\n },\r\n\r\n render: false,\r\n\r\n init () {\r\n const arr = dmx.array(this.props.items);\r\n\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has(\"items\")) {\r\n this._updateData(dmx.array(this.props.items));\r\n }\r\n },\r\n\r\n _count () {\r\n return this.data.items.length;\r\n },\r\n\r\n _indexOf (item) {\r\n return this.data.items.indexOf(item);\r\n },\r\n\r\n _splice (index, remove, item) {\r\n const arr = dmx.clone(this.data.items);\r\n\r\n if (item !== undefined) {\r\n arr.splice(index, remove, item);\r\n } else {\r\n arr.splice(index, remove);\r\n }\r\n\r\n this._updateData(arr);\r\n },\r\n\r\n _reverse () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.reverse();\r\n this._updateData(arr);\r\n },\r\n\r\n _sort () {\r\n const arr = dmx.clone(this.data.items);\r\n arr.sort();\r\n this._updateData(arr);\r\n },\r\n\r\n _updateData (arr) {\r\n if (!dmx.equal(this.data.items, arr)) {\r\n this.set({\r\n items: arr,\r\n count: arr.length,\r\n });\r\n\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('group', {});\r\n","dmx.Component('flow', {\r\n\r\n initialData: {\r\n data: null,\r\n running: false,\r\n lastError: null,\r\n },\r\n\r\n attributes: {\r\n src: {\r\n type: String,\r\n default: null,\r\n },\r\n\r\n preload: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n autorun: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n\r\n params: {\r\n type: Object,\r\n default: {},\r\n },\r\n },\r\n\r\n methods: {\r\n run (param, throwError) {\r\n return this._run(param, throwError);\r\n },\r\n\r\n runSub (param) {\r\n return this._runSub(param);\r\n },\r\n },\r\n\r\n events: {\r\n start: Event,\r\n done: Event,\r\n error: Event,\r\n },\r\n \r\n render: false,\r\n\r\n init (node) {\r\n if (this.props.src) {\r\n if (this.props.preload || this.props.autorun) {\r\n this._load(this.props.src, this.props.autorun).catch(console.error);\r\n }\r\n } else {\r\n try {\r\n this._flow = this._parse(node.textContent);\r\n if (this.props.autorun) this._run();\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n },\r\n\r\n destroy () {\r\n this._destroyed = true;\r\n },\r\n\r\n // TODO: deprecate this, use JSON or expression instead\r\n $parseAttributes (node) {\r\n dmx.BaseComponent.prototype.$parseAttributes.call(this, node);\r\n\r\n dmx.dom.getAttributes(node).forEach(({ name, argument, value }) => {\r\n if (argument && value && name == 'param') {\r\n this.$watch(value, value => {\r\n this.props.params = Object.assign({}, this.props.params, { [argument]: value });\r\n });\r\n }\r\n });\r\n },\r\n\r\n _load (url, run) {\r\n return fetch(url).then(response => {\r\n if (!response.ok || response.status >= 400) {\r\n throw Error(`Could not load flow ${this.name}, status ${response.status} ${response.statusText}`);\r\n }\r\n \r\n return response.text()\r\n }).then(text => {\r\n this._flow = this._parse(text);\r\n if (run) this._run();\r\n });\r\n },\r\n\r\n _parse (str) {\r\n return (window.Hjson ? Hjson : JSON).parse(str);\r\n },\r\n\r\n _runSub (param) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._runFlow(param);\r\n });\r\n }\r\n\r\n throw Error('No flow');\r\n }\r\n\r\n return this._runFlow(param);\r\n },\r\n\r\n _run (param, throwError) {\r\n if (!this._flow) {\r\n if (this.props.src) {\r\n return this._load(this.props.src).then(() => {\r\n this._run(param, throwError);\r\n }).catch(console.error);\r\n }\r\n\r\n console.warn(`Flow ${this.name} is missing.`);\r\n return;\r\n }\r\n\r\n if (this.data.running) {\r\n console.info(`Can't run flow ${this.name} when a previous run didn't finish.`);\r\n return;\r\n }\r\n\r\n this.set({\r\n running: true,\r\n lastError: null,\r\n });\r\n\r\n this.dispatchEvent('start');\r\n\r\n if (dmx.debug) {\r\n console.debug(`Running flow ${this.name} with params`, param);\r\n console.time(`Flow ${this.name}`);\r\n }\r\n return this._runFlow(param).then(data => {\r\n if (dmx.debug) {\r\n console.debug(`Flow ${this.name} finished`, data);\r\n console.timeEnd(`Flow ${this.name}`);\r\n }\r\n this.set({\r\n running: false,\r\n data: data\r\n });\r\n\r\n this.dispatchEvent('done');\r\n\r\n return data;\r\n }).catch(err => {\r\n this.set({\r\n running: false,\r\n lastError: err && err.message,\r\n });\r\n\r\n this.dispatchEvent('error');\r\n\r\n if (throwError) {\r\n throw err;\r\n }\r\n })\r\n },\r\n\r\n _runFlow (param) {\r\n return dmx.Flow.run(this._flow, dmx.DataScope({\r\n $param: Object.assign({}, this.props.params, param),\r\n }, this));\r\n },\r\n\r\n});\r\n","dmx.Component('toggle', {\r\n\r\n initialData: {\r\n checked: false,\r\n },\r\n\r\n attributes: {\r\n checked: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n\r\n methods: {\r\n check () {\r\n this.props.checked = true;\r\n },\r\n\r\n uncheck () {\r\n this.props.checked = false;\r\n },\r\n\r\n toggle () {\r\n this.props.checked = !this.data.checked;\r\n }\r\n },\r\n\r\n events: {\r\n updated: Event,\r\n },\r\n\r\n render: false,\r\n\r\n init (node) {\r\n this.set('checked', this.props.checked);\r\n },\r\n\r\n performUpdate (updatedProps) {\r\n if (updatedProps.has('checked')) {\r\n this.set('checked', this.props.checked);\r\n dmx.nextTick(() => this.dispatchEvent(\"updated\"));\r\n }\r\n },\r\n\r\n});\r\n","dmx.Component('form-data', {\r\n\r\n attributes: {\r\n name: {\r\n type: String,\r\n default: 'data',\r\n },\r\n\r\n data: {\r\n type: [Array, Object], // can be anything\r\n default: null,\r\n },\r\n },\r\n\r\n init (node) {\r\n this._formdataHandler = this._formdataHandler.bind(this);\r\n this._form = node.closest('form');\r\n \r\n if (this._form) {\r\n this._form.addEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n destroy () {\r\n if (this._form) {\r\n this._form.removeEventListener('formdata', this._formdataHandler);\r\n }\r\n },\r\n\r\n _formdataHandler (event) {\r\n const formData = event.formData;\r\n const data = this.props.data;\r\n\r\n this._appendData(formData, data, this.props.name);\r\n },\r\n\r\n _appendData (formData, data, prefix = '') {\r\n if (Array.isArray(data)) {\r\n data.forEach((value, index) => {\r\n this._appendData(formData, value, `${prefix}[${index}]`);\r\n });\r\n } else if (typeof data === 'object') {\r\n for (const key in data) {\r\n this._appendData(formData, data[key], `${prefix}[${key}]`);\r\n }\r\n } else {\r\n formData.append(prefix, data);\r\n }\r\n },\r\n\r\n});","dmx.Attribute(\"bind\", \"mounted\", function (node, attr) {\r\n const name = attr.argument;\r\n const isToggle = dmx.reToggleAttribute.test(name);\r\n\r\n this.$watch(attr.value, value => {\r\n if (isToggle) {\r\n node.toggleAttribute(name, !!value);\r\n } else {\r\n if (name === \"style\" && typeof value === \"object\") {\r\n return Object.assign(node.style, value);\r\n }\r\n\r\n if (value == null) {\r\n return node.removeAttribute(name);\r\n }\r\n\r\n node.setAttribute(name, value);\r\n\r\n if (name === \"src\") {\r\n if (node.nodeName === \"VIDEO\" || node.nodeName === \"AUDIO\") {\r\n node.load();\r\n } else if (node.nodeName === \"SOURCE\" && node.parentNode) {\r\n node.parentNode.load();\r\n }\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"on\", \"mounted\", function (node, attr) {\r\n if (!node.dmxOn) {\r\n node.dmxOn = {\r\n component: this,\r\n };\r\n }\r\n\r\n node.dmxOn[attr.argument] = true;\r\n\r\n return dmx.eventListener(node, attr.argument, function (event) {\r\n // jQuery event\r\n if (event.originalEvent) event = event.originalEvent;\r\n\r\n const retValue = dmx.parse(attr.value, dmx.DataScope({\r\n $event: event.$data,\r\n $originalEvent: event,\r\n }, node.dmxOn.component));\r\n\r\n return retValue;\r\n }, attr.modifiers);\r\n});\r\n","dmx.Attribute('repeat', 'before', function (node, attr) {\r\n const comment = document.createComment('Repeat Attribute');\r\n const template = document.createDocumentFragment();\r\n const RepeatItem = dmx.Component('repeat-item');\r\n\r\n node.parentNode.replaceChild(comment, node);\r\n node.removeAttribute(attr.fullName);\r\n\r\n template.append(node);\r\n\r\n let children = [];\r\n\r\n this.$watch(attr.value, repeat => {\r\n const items = dmx.repeatItems(repeat);\r\n\r\n if (items.length > 10000) {\r\n console.warn('More than 10000 repeat items, we limit the result!');\r\n //items.splice(10000, items.length);\r\n items.length = 10000;\r\n }\r\n\r\n if (attr.modifiers.fast) {\r\n if (children.length > items.length) {\r\n // destroy children\r\n children.splice(items.length).forEach(child => child.$destroy());\r\n }\r\n\r\n if (children.length) {\r\n // update existing children\r\n children.forEach((child, i) => child.set(items[i]));\r\n }\r\n\r\n if (items.length > children.length) {\r\n // add new children\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n items.slice(children.length).forEach(item => {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.appendChild(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n });\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n } else {\r\n const fragment = document.createDocumentFragment();\r\n const toParse = new Set();\r\n\r\n children.splice(0).forEach(child => child.$destroy());\r\n\r\n for (const item of items) {\r\n const child = new RepeatItem(template.cloneNode(true), this, item);\r\n \r\n fragment.append(child.$nodes[0]);\r\n //comment.parentNode.insertBefore(child.$nodes[0], comment);\r\n //child.$parse(child.$nodes[0]);\r\n toParse.add(child);\r\n\r\n children.push(child);\r\n this.$addChild(child);\r\n }\r\n\r\n comment.parentNode.insertBefore(fragment, comment);\r\n\r\n for (const child of toParse) {\r\n child.$parse(child.$nodes[0]);\r\n }\r\n\r\n if (attr.argument) {\r\n this.set(attr.argument, items);\r\n }\r\n }\r\n });\r\n});\r\n","dmx.Attribute(\"class\", \"mounted\", function (node, attr) {\r\n if (!node.dmxClass) {\r\n node.dmxClass = {\r\n component: this,\r\n };\r\n }\r\n\r\n this.$watch(attr.value, toggle => {\r\n node.dmxClass[attr.argument] = toggle;\r\n node.classList[toggle ? \"add\" : \"remove\"](attr.argument);\r\n });\r\n});\r\n","dmx.Attribute(\"hide\", \"mounted\", function (node, attr) {\r\n if (node.dmxHide) return;\r\n\r\n node.dmxHide = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue(\"display\"),\r\n priority: node.style.getPropertyPriority(\"display\"),\r\n },\r\n hide: null,\r\n };\r\n\r\n this.$watch(attr.value, hide => {\r\n node.dmxHide.hide = hide;\r\n\r\n const { initial } = node.dmxHide;\r\n const display = hide ? 'none' : initial.display;\r\n const priority = hide ? 'important' : initial.priority;\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute('show', 'mounted', function(node, attr) {\r\n if (node.dmxShow) return;\r\n\r\n node.dmxShow = {\r\n component: this,\r\n initial: {\r\n display: node.style.getPropertyValue('display'),\r\n priority: node.style.getPropertyPriority('display'),\r\n },\r\n show: null,\r\n };\r\n \r\n this.$watch(attr.value, show => {\r\n node.dmxShow.show = show;\r\n \r\n const { initial } = node.dmxShow;\r\n const display = show ? initial.display : 'none';\r\n const priority = show ? initial.priority : 'important';\r\n\r\n node.style.setProperty('display', display, priority);\r\n });\r\n});\r\n","dmx.Attribute(\"html\", \"mounted\", function (node, attr) {\r\n if (node.dmxHtml) return;\r\n\r\n node.dmxHtml = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, html => {\r\n node.innerHTML = html != null ? String(html) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"text\", \"mounted\", function (node, attr) {\r\n if (node.dmxText) return;\r\n\r\n node.dmxText = {\r\n component: this,\r\n };\r\n\r\n this.$watch(attr.value, text => {\r\n node.innerText = text != null ? String(text) : \"\";\r\n });\r\n});\r\n","dmx.Attribute(\"style\", \"mounted\", function (node, attr) {\r\n if (!node.dmxStyle) {\r\n node.dmxStyle = {\r\n component: this,\r\n };\r\n }\r\n\r\n const important = attr.modifiers.important ? \"important\" : \"\";\r\n\r\n this.$watch(attr.value, value => {\r\n node.dmxStyle[attr.argument] = value;\r\n if (value != null) {\r\n node.style.setProperty(attr.argument, value, important);\r\n }\r\n });\r\n});\r\n","dmx.Formatters('global', {\r\n\r\n // json(obj:Any):String\r\n json: function(obj) {\r\n return JSON.stringify(obj);\r\n },\r\n\r\n // log(obj:Any):Any\r\n log: function(obj) {\r\n console.log(obj);\r\n return obj;\r\n },\r\n\r\n // run(flow:Any, param:Any):Undefined\r\n run: function(flow, param) {\r\n var scope = dmx.DataScope({\r\n $param: param\r\n }, this);\r\n\r\n dmx.Flow.run(flow, scope);\r\n }\r\n\r\n});\r\n","dmx.Actions({\r\n\r\n subflow (options) {\r\n const subflow = this.parse(options.flow);\r\n const param = this.parse(options.param);\r\n\r\n return this.parse(subflow + \".runSub(\" + JSON.stringify(param) + \")\");\r\n },\r\n\r\n comment (options) {\r\n if (dmx.debug) {\r\n console.debug(options.message);\r\n }\r\n },\r\n\r\n wait (options) {\r\n const delay = this.parse(options.delay);\r\n\r\n if (typeof delay != \"number\") {\r\n throw new Error(\"wait: Invalid delay\");\r\n }\r\n\r\n return new Promise((resolve) => {\r\n setTimeout(resolve, delay);\r\n });\r\n },\r\n\r\n now (options) {\r\n return new Date().toISOString();\r\n },\r\n\r\n random (options) {\r\n let lower = this.parse(options.lower);\r\n let upper = this.parse(options.upper);\r\n let floating = !!this.parse(options.floating);\r\n\r\n if (typeof lower != \"number\" || !isFinite(lower)) {\r\n lower = 0;\r\n }\r\n\r\n if (typeof upper != \"number\" || !isFinite(upper)) {\r\n upper = 1;\r\n }\r\n\r\n let rnd = lower + Math.random() * (upper - lower);\r\n\r\n if (!floating && Math.floor(lower) == lower && Math.floor(upper) == upper) {\r\n rnd = Math.round(rnd);\r\n }\r\n\r\n return rnd;\r\n },\r\n\r\n confirm (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"confirm: Invalid message\");\r\n }\r\n\r\n const result = confirm(message);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n prompt (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"prompt: Invalid message\");\r\n }\r\n\r\n return prompt(message);\r\n },\r\n\r\n alert (options) {\r\n const message = this.parse(options.message);\r\n\r\n if (typeof message != \"string\") {\r\n throw new Error(\"alert: Invalid message\");\r\n }\r\n\r\n return alert(message);\r\n },\r\n\r\n repeat (options) {\r\n let items = dmx.clone(this.parse(options.repeat));\r\n\r\n if (!items) return;\r\n\r\n if (typeof items == \"boolean\") {\r\n items = items ? [0] : [];\r\n } else if (typeof items == \"string\") {\r\n items = items.split(/\\s*,\\s*/);\r\n } else if (typeof items == \"number\") {\r\n var arr = [];\r\n for (var i = 0; i < items; i++) {\r\n arr.push(i + 1);\r\n }\r\n items = arr;\r\n }\r\n\r\n if (typeof items != \"object\") {\r\n throw new Error(\"repeat: data is not repeatable\");\r\n }\r\n\r\n const parentScope = this.scope;\r\n const parentOutput = this.output;\r\n return this._each(items, (value, index) => {\r\n this.scope = new dmx.DataScope(\r\n Object.assign(\r\n {\r\n $value: value,\r\n $index: index,\r\n $name: index,\r\n $key: index,\r\n $number: index + 1,\r\n $oddeven: index % 2,\r\n },\r\n value\r\n ),\r\n parentScope\r\n );\r\n\r\n this.output = {};\r\n\r\n if (Array.isArray(options.outputFields) && value instanceof Object) {\r\n options.outputFields.forEach((field) => {\r\n this.output[field] = value[field];\r\n });\r\n }\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n this.scope = parentScope;\r\n this.output = parentOutput;\r\n return output;\r\n });\r\n });\r\n },\r\n\r\n condition (options) {\r\n const result = !!this.parse(options.if);\r\n\r\n if (result) {\r\n if (options.then) {\r\n return this._exec(options.then).then(() => result);\r\n }\r\n } else if (options.else) {\r\n return this._exec(options.else).then(() => result);\r\n }\r\n\r\n return result;\r\n },\r\n\r\n conditions (options) {\r\n if (Array.isArray(options.conditions)) {\r\n for (let i = 0; i < options.conditions.length; i++) {\r\n const condition = options.conditions[i];\r\n\r\n if (this.parse(condition.when)) {\r\n return this._exec(condition.then);\r\n }\r\n }\r\n }\r\n },\r\n\r\n select (options) {\r\n const expression = this.parse(options.expression);\r\n\r\n if (Array.isArray(options.cases)) {\r\n for (let i = 0; i < options.cases.length; i++) {\r\n const item = options.cases[i];\r\n\r\n if (this.parse(item.value) == expression) {\r\n return this._exec(item.exec);\r\n }\r\n }\r\n }\r\n },\r\n\r\n group (options) {\r\n if (options.name) {\r\n const parentOutput = this.output;\r\n this.output = {};\r\n\r\n return this._exec(options.exec).then(() => {\r\n var output = this.output;\r\n self.output = parentOutput;\r\n return output;\r\n });\r\n }\r\n\r\n return this._exec(options.exec);\r\n },\r\n\r\n while (options) {\r\n const loop = () => {\r\n return new Promise((resolve) => {\r\n if (!this.parse(options.condition)) return resolve();\r\n this._exec(options.exec).then(loop).then(resolve);\r\n });\r\n };\r\n\r\n return loop();\r\n },\r\n\r\n switch (options) {\r\n /*\r\n {\r\n switch: {\r\n expression: \"{{myVar}}\",\r\n cases: [\r\n { case: 1, exec: { console.log: { message: \"Case 1\" }}}\r\n { case: 2, exec: { console.log: { message: \"Case 2\" }}}\r\n { case: 3, exec: { console.log: { message: \"Case 3\" }}}\r\n ],\r\n default: { console.log: { message: \"Default Case\" }}\r\n }\r\n }\r\n */\r\n const expression = this.parse(options.expression);\r\n for (let i = 0; i < options.cases.length; i++) {\r\n if (this.parse(options.cases[i].case) === expression) {\r\n return this._exec(options.cases[i].exec);\r\n }\r\n }\r\n if (options.default) {\r\n return this._exec(options.default);\r\n }\r\n },\r\n\r\n tryCatch (options) {\r\n return Promise.resolve(this._exec(options.try)).catch(() => {\r\n return this._exec(options.catch);\r\n });\r\n },\r\n\r\n run (options) {\r\n if (!options.action) {\r\n throw new Error(\"run: missing action\");\r\n }\r\n\r\n return this.parse(options.action);\r\n },\r\n\r\n runJS (options) {\r\n if (!options.function) {\r\n throw new Error(\"runJS: missing function\");\r\n }\r\n\r\n const func = this.parse(options.function);\r\n const args = this.parse(options.args);\r\n\r\n return window[func].apply(null, args);\r\n },\r\n\r\n assign (options) {\r\n return this.parse(options.value);\r\n },\r\n\r\n setGlobal (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setGlobal: key must be a string\");\r\n }\r\n\r\n dmx.global.set(key, value);\r\n\r\n return value;\r\n },\r\n\r\n setSession (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setSession: key must be a string\");\r\n }\r\n\r\n sessionStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n getSession (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"getSession: key must be a string\");\r\n }\r\n\r\n return JSON.parse(sessionStorage.getItem(key));\r\n },\r\n\r\n removeSession (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"removeSession: key must be a string\");\r\n }\r\n\r\n sessionStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n setStorage (options) {\r\n const key = this.parse(options.key);\r\n const value = this.parse(options.value);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"setStorage: key must be a string\");\r\n }\r\n\r\n localStorage.setItem(key, JSON.stringify(value));\r\n\r\n return value;\r\n },\r\n\r\n getStorage (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"getStorage: key must be a string\");\r\n }\r\n\r\n const value = localStorage.getItem(key);\r\n\r\n if (value == null) {\r\n return null;\r\n }\r\n\r\n return JSON.parse(value);\r\n },\r\n\r\n removeStorage (options) {\r\n const key = this.parse(options.key);\r\n\r\n if (typeof key != \"string\") {\r\n throw new Error(\"removeStorage: key must be a string\");\r\n }\r\n\r\n localStorage.removeItem(key);\r\n\r\n return true;\r\n },\r\n\r\n fetch (options) {\r\n let url = this.parse(options.url);\r\n let method = this.parse(options.method);\r\n let timeout = this.parse(options.timeout);\r\n let dataType = this.parse(options.dataType);\r\n let data = this.parse(options.data);\r\n let params = this.parse(options.params);\r\n let headers = this.parse(options.headers);\r\n let credentials = this.parse(options.credentials);\r\n let body = null;\r\n\r\n if (typeof url != \"string\") {\r\n throw new Error(\"fetch: invalid url \" + url);\r\n }\r\n\r\n if (![\"GET\", \"POST\", \"PUT\", \"DELETE\"].includes(method)) {\r\n //throw new Error('fetch: invalid method ' + method);\r\n method = \"GET\";\r\n }\r\n\r\n if (![\"auto\", \"json\", \"text\"].includes(dataType)) {\r\n dataType = \"auto\";\r\n }\r\n\r\n if (typeof timeout != \"number\") {\r\n timeout = 0;\r\n }\r\n\r\n if (!headers) {\r\n headers = {};\r\n }\r\n\r\n if (typeof params == \"object\") {\r\n for (var param in params) {\r\n if (params.hasOwnProperty(param) && params[param] != null) {\r\n url +=\r\n (url.indexOf(\"?\") != -1 ? \"&\" : \"?\") +\r\n decodeURIComponent(param) +\r\n \"=\" +\r\n decodeURIComponent(params[param]);\r\n }\r\n }\r\n }\r\n\r\n if (method != \"GET\") {\r\n if (dataType == \"text\") {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n } else if (dataType == \"json\") {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/json\";\r\n }\r\n body = JSON.stringify(data);\r\n } else {\r\n if (method == \"POST\") {\r\n body = new FormData();\r\n\r\n if (typeof data == \"object\" && !Array.isArray(data)) {\r\n for (var key in data) {\r\n if (data.hasOwnProperty(key)) {\r\n var value = data[key];\r\n\r\n if (Array.isArray(value)) {\r\n if (!/\\[\\]$/.test(key)) {\r\n key += \"[]\";\r\n }\r\n for (var i in value) {\r\n if (value.hasOwnProperty(i)) {\r\n body.append(key, value[i]);\r\n }\r\n }\r\n } else {\r\n body.set(key, value);\r\n }\r\n }\r\n }\r\n }\r\n } else if (data) {\r\n if (!headers[\"Content-Type\"]) {\r\n headers[\"Content-Type\"] = \"application/text\";\r\n }\r\n body = data.toString();\r\n }\r\n }\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n var xhr = new XMLHttpRequest();\r\n\r\n xhr.onerror = reject;\r\n xhr.onabort = reject;\r\n xhr.ontimeout = reject;\r\n xhr.onload = function () {\r\n var response = xhr.responseText;\r\n var headers = (function (raw) {\r\n var arr = raw.trim().split(/[\\r\\n]+/);\r\n\r\n return arr.reduce(function (headers, line) {\r\n var parts = line.split(\": \");\r\n var header = parts.shift();\r\n var value = parts.join(\": \");\r\n\r\n headers[header.toLowerCase()] = value;\r\n\r\n return headers;\r\n }, {});\r\n })(xhr.getAllResponseHeaders());\r\n\r\n if (/^application\\/json/.test(headers[\"content-type\"])) {\r\n response = JSON.parse(response);\r\n }\r\n\r\n resolve({\r\n status: xhr.status,\r\n headers: headers,\r\n data: response,\r\n });\r\n };\r\n\r\n xhr.open(method, url);\r\n\r\n xhr.timeout = timeout * 1000;\r\n\r\n for (var header in headers) {\r\n if (headers.hasOwnProperty(header)) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n }\r\n }\r\n\r\n if (credentials) {\r\n xhr.withCredentials = true;\r\n }\r\n\r\n xhr.send(body);\r\n });\r\n },\r\n});\r\n\r\n// aliasses\r\ndmx.__actions[\"setValue\"] = dmx.__actions[\"assign\"];\r\ndmx.__actions[\"api\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"api.send\"] = dmx.__actions[\"fetch\"];\r\ndmx.__actions[\"serverConnect\"] = dmx.__actions[\"fetch\"];\r\n","dmx.Actions({\r\n /**\r\n * Add new columns to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.add - Object with column name as key and the value\r\n * @param {boolean} [options.overwrite=false] - Overwrite existing columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var add = options.add;\r\n var overwrite = !!this.parse(options.overwrite);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n \r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in add) {\r\n if (add.hasOwnProperty(column)) {\r\n var scope = new dmx.DataScope(row, this.scope);\r\n\r\n if (overwrite || row[column] == null) {\r\n row[column] = dmx.parse(add[column], scope);\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Remove entire specified columns from the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns\r\n * @param {boolean} [options.keep=false] - Keep or remove the columns\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.filterColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n var keep = !!this.parse(options.keep);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n if (columns.includes(column)) {\r\n if (keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n } else if (!keep) {\r\n newRow[column] = dmx.clone(row[column]);\r\n }\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Rename columns in the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object.} options.rename - Object with old name as key and new name as value\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.renameColumns': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rename = this.parse(options.rename);\r\n\r\n if (!collection.length) return [];\r\n \r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = collection[i];\r\n var newRow = {};\r\n\r\n for (var column in row) {\r\n if (row.hasOwnProperty(column)) {\r\n newRow[rename[column] || column] = dmx.clone(row[column]);\r\n }\r\n }\r\n\r\n output.push(newRow);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Fills empty rows with the row above's value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {string[]} options.columns - The columns to fill\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.fillDown': function(options) {\r\n var collection = this.parse(options.collection);\r\n var columns = this.parse(options.columns);\r\n\r\n if (!collection.length) return [];\r\n\r\n var output = [];\r\n var toFill = {};\r\n\r\n for (var i = 0, l = columns.length; i < l; i++) {\r\n toFill[columns[i]] = null;\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n\r\n for (var column in toFill) {\r\n if (toFill.hasOwnProperty(column)) {\r\n if (row[column] == null) {\r\n row[column] = toFill[column];\r\n } else {\r\n toFill[column] = row[column];\r\n }\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Add new rows to the collection\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @param {Object[]} options.rows - The rows to add\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRows': function(options) {\r\n var collection = this.parse(options.collection);\r\n var rows = this.parse(options.rows);\r\n\r\n return dmx.clone(collection).concat(dmx.clone(rows));\r\n },\r\n\r\n /**\r\n * Add row numbers to the collection\r\n * @param {Object} options \r\n * @param {Object[]} options.collection - The collection\r\n * @param {string} options.column - The name for the column\r\n * @param {number} options.startAt - The row number to start with\r\n * @param {boolean} [options.desc=false] - Order descending\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.addRowNumbers': function(options) {\r\n var collection = this.parse(options.collection);\r\n var column = this.parse(options.column);\r\n var startAt = this.parse(options.startAt);\r\n var desc = !!this.parse(options.desc);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = dmx.clone(collection[i]);\r\n row[column] = desc ? l + startAt - i : startAt + i;\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Join two collections (Left join)\r\n * @param {Object} options\r\n * @param {Object[]} options.collection1 - Left collection\r\n * @param {Object[]} options.collection2 - Right collection\r\n * @param {Object.} options.matches - Columns to match\r\n * @param {boolean} [options.matchAll=false] - Match columns using AND instead of OR\r\n * @returns {Object[]} - New collection\r\n */\r\n 'colections.join': function(options) {\r\n var collection1 = this.parse(options.collection1);\r\n var collection2 = this.parse(options.collection2);\r\n var matches = this.parse(options.matches);\r\n var matchAll = !!this.parse(options.matchAll);\r\n\r\n var output = [];\r\n\r\n for (var i = 0, l = collection1.length; i < l; i++) {\r\n var row = dmx.clone(collection1[i]);\r\n\r\n for (var j = 0, l2 = collection2.length; j < l2; j++) {\r\n var row2 = collection2[j];\r\n var hasMatch = false;\r\n\r\n for (var match in matches) {\r\n if (matches.hasOwnProperty(match)) {\r\n if (row[match] == row2[matches[match]]) {\r\n hasMatch = true;\r\n if (!matchAll) break;\r\n } else if (matchAll) {\r\n hasMatch = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (hasMatch) {\r\n for (var column in row2) {\r\n if (row2.hasOwnProperty(column)) {\r\n // TODO duplicate row from collection1 when multiple matches exist in collection2\r\n // TODO check for duplicate column names\r\n row[column] = dmx.clone(row2[column]);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n },\r\n\r\n /**\r\n * Normalize all rows, add missing columns with NULL value\r\n * @param {Object} options\r\n * @param {Object[]} options.collection - The collection\r\n * @returns {Object[]} - New collection\r\n */\r\n 'collections.mormalize': function(options) {\r\n var collection = this.parse(options.collection);\r\n\r\n var columns = [];\r\n var output = [];\r\n\r\n // first collect all columns from collection\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n for (var column in collection[i]) {\r\n if (collection[i].hasOwnProperty(column)) {\r\n if (columns.indexOf(column) == -1) {\r\n columns.push(column);\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (var i = 0, l = collection.length; i < l; i++) {\r\n var row = {};\r\n\r\n for (var j = 0, l2 = columns.length; j < l2; j++) {\r\n var column = columns[j];\r\n var value = dmx.clone(collection[column]);\r\n row[column] = value != null ? value : null;\r\n }\r\n\r\n output.push(row);\r\n }\r\n\r\n return output;\r\n }\r\n\r\n});","dmx.Actions({\r\n\r\n 'console.log': function(options) {\r\n console.log(this.parse(options.message));\r\n },\r\n\r\n 'console.info': function(options) {\r\n console.info(this.parse(options.message));\r\n },\r\n\r\n 'console.warn': function(options) {\r\n console.warn(this.parse(options.message));\r\n },\r\n\r\n 'console.error': function(options) {\r\n console.error(this.parse(options.message));\r\n },\r\n\r\n 'console.count': function(options) {\r\n console.count(this.parse(options.label));\r\n },\r\n\r\n 'console.time': function(options) {\r\n console.time(this.parse(options.label));\r\n },\r\n\r\n 'console.timeEnd': function(options) {\r\n console.timeEnd(this.parse(options.label));\r\n },\r\n\r\n 'console.group': function(options) {\r\n console.group();\r\n },\r\n\r\n 'console.groupEnd': function(options) {\r\n console.groupEnd();\r\n },\r\n\r\n 'console.clear': function(options) {\r\n console.clear();\r\n }\r\n\r\n});"]} \ No newline at end of file diff --git a/views/observationPage.ejs b/views/observationPage.ejs index 4574650..313872c 100644 --- a/views/observationPage.ejs +++ b/views/observationPage.ejs @@ -134,9 +134,9 @@ Navbar Text

+ - - + +

A nice paragraph {{myResult}}

-

@%;zIh-$BQB|ysv#1;(r0n#>FD1Q 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�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%0D3=uv31XhyXpX5Teuc8pxDe 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