From 5a324102acde7935a04c3852722ff5e6f5e3e262 Mon Sep 17 00:00:00 2001 From: Sophia Date: Wed, 1 Nov 2023 16:00:09 +0200 Subject: [PATCH] make build --- index.html | 1 + logo.6c938e44.png | Bin 0 -> 1820 bytes .../bitmaps_reference/Header_tag_1024px.png | Bin 0 -> 9234 bytes .../bitmaps_reference/Header_tag_1200px.png | Bin 0 -> 9566 bytes .../Link_with_class_is-active_1024px.png | Bin 0 -> 865 bytes .../Link_with_class_is-active_1200px.png | Bin 0 -> 865 bytes .../Link_with_data-qa_hover_1024px.png | Bin 0 -> 2701 bytes .../Link_with_data-qa_hover_1200px.png | Bin 0 -> 2701 bytes report/bitmaps_reference/Nav_tag_1024px.png | Bin 0 -> 6850 bytes report/bitmaps_reference/Nav_tag_1200px.png | Bin 0 -> 6850 bytes .../20231101-155917/Header_tag_1024px.png | Bin 0 -> 9234 bytes .../20231101-155917/Header_tag_1200px.png | Bin 0 -> 9566 bytes .../Link_with_class_is-active_1024px.png | Bin 0 -> 865 bytes .../Link_with_class_is-active_1200px.png | Bin 0 -> 865 bytes .../Link_with_data-qa_hover_1024px.png | Bin 0 -> 2701 bytes .../Link_with_data-qa_hover_1200px.png | Bin 0 -> 2701 bytes .../20231101-155917/Nav_tag_1024px.png | Bin 0 -> 6850 bytes .../20231101-155917/Nav_tag_1200px.png | Bin 0 -> 6850 bytes .../bitmaps_test/20231101-155917/report.json | 197 + report/engine_scripts/cookies.json | 14 + report/engine_scripts/imageStub.jpg | Bin 0 -> 2900 bytes .../puppet/clickAndHoverHelper.js | 39 + report/engine_scripts/puppet/loadCookies.js | 29 + report/engine_scripts/puppet/onBefore.js | 3 + report/engine_scripts/puppet/onReady.js | 6 + .../a96f14595379b7c348d66e115ec65a93.png | Bin 0 -> 12777 bytes report/html_report/assets/fonts/Lato-Bold.ttf | Bin 0 -> 121788 bytes .../html_report/assets/fonts/Lato-Regular.ttf | Bin 0 -> 120196 bytes .../assets/fonts/lato-bold-webfont.woff | Bin 0 -> 33272 bytes .../assets/fonts/lato-bold-webfont.woff2 | Bin 0 -> 26248 bytes .../assets/fonts/lato-regular-webfont.woff | Bin 0 -> 31860 bytes .../assets/fonts/lato-regular-webfont.woff2 | Bin 0 -> 24992 bytes .../b815e28b1e230cff6e9d7b749edcd562.png | Bin 0 -> 12777 bytes report/html_report/config.js | 197 + report/html_report/diff.js | 1843 +++++++++ report/html_report/diverged.js | 340 ++ report/html_report/divergedWorker.js | 6 + report/html_report/index.html | 44 + report/html_report/index_bundle.js | 3602 +++++++++++++++++ style.8572ac53.css | 2 + style.8572ac53.css.map | 1 + 41 files changed, 6324 insertions(+) create mode 100644 index.html create mode 100644 logo.6c938e44.png create mode 100644 report/bitmaps_reference/Header_tag_1024px.png create mode 100644 report/bitmaps_reference/Header_tag_1200px.png create mode 100644 report/bitmaps_reference/Link_with_class_is-active_1024px.png create mode 100644 report/bitmaps_reference/Link_with_class_is-active_1200px.png create mode 100644 report/bitmaps_reference/Link_with_data-qa_hover_1024px.png create mode 100644 report/bitmaps_reference/Link_with_data-qa_hover_1200px.png create mode 100644 report/bitmaps_reference/Nav_tag_1024px.png create mode 100644 report/bitmaps_reference/Nav_tag_1200px.png create mode 100644 report/bitmaps_test/20231101-155917/Header_tag_1024px.png create mode 100644 report/bitmaps_test/20231101-155917/Header_tag_1200px.png create mode 100644 report/bitmaps_test/20231101-155917/Link_with_class_is-active_1024px.png create mode 100644 report/bitmaps_test/20231101-155917/Link_with_class_is-active_1200px.png create mode 100644 report/bitmaps_test/20231101-155917/Link_with_data-qa_hover_1024px.png create mode 100644 report/bitmaps_test/20231101-155917/Link_with_data-qa_hover_1200px.png create mode 100644 report/bitmaps_test/20231101-155917/Nav_tag_1024px.png create mode 100644 report/bitmaps_test/20231101-155917/Nav_tag_1200px.png create mode 100644 report/bitmaps_test/20231101-155917/report.json create mode 100644 report/engine_scripts/cookies.json create mode 100644 report/engine_scripts/imageStub.jpg create mode 100644 report/engine_scripts/puppet/clickAndHoverHelper.js create mode 100644 report/engine_scripts/puppet/loadCookies.js create mode 100644 report/engine_scripts/puppet/onBefore.js create mode 100644 report/engine_scripts/puppet/onReady.js create mode 100644 report/html_report/a96f14595379b7c348d66e115ec65a93.png create mode 100755 report/html_report/assets/fonts/Lato-Bold.ttf create mode 100755 report/html_report/assets/fonts/Lato-Regular.ttf create mode 100755 report/html_report/assets/fonts/lato-bold-webfont.woff create mode 100755 report/html_report/assets/fonts/lato-bold-webfont.woff2 create mode 100755 report/html_report/assets/fonts/lato-regular-webfont.woff create mode 100755 report/html_report/assets/fonts/lato-regular-webfont.woff2 create mode 100644 report/html_report/b815e28b1e230cff6e9d7b749edcd562.png create mode 100644 report/html_report/config.js create mode 100644 report/html_report/diff.js create mode 100644 report/html_report/diverged.js create mode 100644 report/html_report/divergedWorker.js create mode 100644 report/html_report/index.html create mode 100644 report/html_report/index_bundle.js create mode 100644 style.8572ac53.css create mode 100644 style.8572ac53.css.map diff --git a/index.html b/index.html new file mode 100644 index 0000000000..ff7b0ba981 --- /dev/null +++ b/index.html @@ -0,0 +1 @@ +Moyo header

Moyo header

\ No newline at end of file diff --git a/logo.6c938e44.png b/logo.6c938e44.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea6299ec2a9cbc388bf91d4567c23bcf7dcd985 GIT binary patch literal 1820 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 N9x7@m6w6z^{6DZ;xEcTe literal 0 HcmV?d00001 diff --git a/report/bitmaps_reference/Header_tag_1200px.png b/report/bitmaps_reference/Header_tag_1200px.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec59e750bb1d1039026d4bc008d6cda0dd9e0df GIT binary patch literal 9566 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%0A?x*|5n;!`Y1u?mxeO9EpBXfrY_`^RgF{ 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 literal 0 HcmV?d00001 diff --git a/report/bitmaps_reference/Nav_tag_1200px.png b/report/bitmaps_reference/Nav_tag_1200px.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d25cd80ed3379452901b555716f3237dc3ae8b GIT binary patch literal 6850 zcmdUU_dk{IAODRaBYP!*?X0}%PQ-TI679wF*+Pu zIL7z#{ye__!}t4(b9>y^ea+YF`FcK|SFC~Fy{lv_WDo>h)zp9+LJ(mPcviSV4E~<* zJJEq30&l~6ccIE*)-?!X3DSh$G4jjWmcrpfIDUYoYElS3)XSa_xk8o(=MMH#oW59}S41f0?@K)n$Ln(^MREp3Cp`-P^$o zOxC+zf3ZIK^6^lH-N>gqTl@RQLUarak!^wh?B~BlI!`y&q$}HZU!iAWS{&0??(s${ z@+><&dh`%o>*73F&5-SAmSZ)u9bbPXId2xl3GAc9k`fFC%SC`2d*(D_C z-Q3)uu$dNL2TXrzx?-S|4maJmZ{J4R0(~!$ki@$t+>mFqs9<#Hdwm(QYV;r=XB6!G z@s?+_?y2b>7DXk}apINOM-KH53~Ylra40F=EYkaU7gcF3`go98!fl#a-WS*Xcf4#g zN0me;OXhx^jh~;)&#|%X*}%;l-_2S35JN*+7z}p%$uC}?4Ycu~ZS_L}Fg-%(VhI5U z>#;U%0rNi#wA1B%D|?##0|WB{|KYBXlhf^5G`L-Dvq`G7Zu$26_cbsv6?Jvu_Os)s zHG@dy^90Pmdxzt_HNWGvA_B;=!AbAQ)r26IYkdfnH zx+oE3^xS~rrUG+&d;7m!VdZ;Psd9maWgG>wjCkP6Xn+y z78a^qr=;RBi8mElZr;49p{aSt%8K>%4f!aPP2km+FJB&FZO@;4c?R+F^WO#I*Sk(d zEiBmYt&S3LaBvhGmzkt)obC*W9O7Cw4I1366PQH_aX8$+gnM9Dq+HPv4~q1@B9TBP!!cN{4@ld{##YhBBoaSWrYH zlrfEbPf(SK-@j|zSBBm=UQ<$1^4q9G8C2P*Ax?|YtPnL#ZeCvUn>S%QJ6?O6b8Ht4 zc7E^}5B&aXd9hTzk8(Lq$n4dTobVY;X5Zb>k_SAsE@QnyDvW{Z&GDG4q;XaLAskBOHRZ?W`(l=QMP5;UDFFb3GS(L62WMUlMJ^;oByH znYne+p|?LGBFUNJ{83f5eG#N|e=wLxu<0O-2p<&c+?i>9u74%jgKS_rSiy?GpXhmoyoZcYYpZ(4Di?xz^L_Og&GO>Oa z2J`y;=1!uNW6H&=lSQ>}#}uUvqHoW5`3tV`c#&eoc{h4pO9z7#9m%wjC7-9mn?p|J zetgzR;kvJ(amC-yj~a@LjiniQmzI_yIB+Qp#>r`n)lPv!&i(KBN{{U9>@J0IX~JN+ zh|seS(3`R{fkal>6bY8Ankn$UB(@?U%X(@E-QrticAn|p&H?!>bd$;j?C}z?Lq0o8 znl%Z61K{AXk6aop?IjH0_+TkPRq*&5>lVSMU%!lC zu(+5Qc8F`>vzcub>Vb<(NvWG^G-ZWh?`Yn=vR`*T09doDQ~V`Sa5HtPQZ{gbjhdPr zJqa?4PfE&U{VgpIW)rl(@8$JbW;XbEj|0jdbzTK1A~nDbBO@b&LG;Yb8X+Mem%`Lv zvziy+{QdoNg#!HjlffpYrly)tBM~9TnzcEdohm6@v5(9Pry2x~*)98~XLqe-Nls2q zF4kH*>M~YHLzCRnBL5sap=%sv$Ybd#nUpDZ833OcIEQN##5;R?^cz*RwR_3+vasCk z#XdUd=aahJ;Qh6+dvysF?Z$bd0Gh+$^5|;2|K-Ss<)KU`@%DrI7LwjIUSWfZ-;yZh)0FV>=E zc@iy>yk#vU8VkRQ6<C*>M~AP#Uu-h!2COb@>8UL|k1f)#g0 zZ(C)O+G3V=>|&CVc%WMQ9x_;|%-32Aq5X|1Q^B`y-muFN>+9=}A8V<;b2PW2AJjL* z5N>VvvC%6sbLG{^hz83asX)LpW-glyZb%D+7OEf!B|tEcxm#ty?(<7E$^Qi@PTJ57*g z_tmRc@GOS36jn^PmacByhb>UZbginjwX|YloX<{+sBcTcrF@-@Y$AH-7OP7k5`CPl5C1`0z=ewdwp+pwR{>Q(yPKM<7 zb5x^KxHOHdtjf{D08g$!8&eJX-E%=~gH6rNDJEqFCnrH5-Tb!L2|lf^I=8%TYFi1! zkh__iUjwQ47JO=B<0d)(g~3$Y71c_yo35KBlMId2IP~3g$pnRvm4H1oG?a!113SQ0 zb;Mzw?N{`-FD)&_hy_DnO&_o{~W6%ArajC)@XAEI&^Y!-h5J2|!_7HSk>RIE;i;r1Z5R}4Y z+%ha=Q42xzjEsa(Tzq`;$B#mVSy`+#&z?NthdSrx*Z>GzhA3Dhu0S4#TXr>BT$&!< z-d$VsU1cXax!;F|7^WJ%Fl1pFE>w~Qa@*$vwr7N&7FKAVl97`qr=>-OoF2y_v~2^{ zZh>uJmGS6&{989uDpEb~D?o&rC*%C|3=ACn{A3MoGqlS3{5GH=#Gss*z#>Vu*qd0k z^MwPNZuBH7(nmxkB~h_RKDh*~qU!_>a5M44ALXZl2RCHr1iW9oP#;JWN=6`(K7SS~ ztNC&dQy*BhIKOT+ny8(!r!i$^VZj1*0?HsP%n%%6U_cEh51j4tB+imSH$&p(*M|_q zs^B+*+aV_-Gx8Mspksoy{`le_?_`|5rY7mm&d$Z!Srr55UD35P+ttfRMkei3Jxs8{ z@$)~pBNl3E2r7P1L`h7+3_*t*4Rhsg*gF$#Y=HcXJgGZ8!*3Em0E{QwgXN>HUXLQa z%3@~yuW2P)6;!9!Y|4~*qrA(O&Hn=_q2X3ilzLr``#3dH!s9FInzZqCAwC`*xwLT6 z64YqOiW;P1*3#mz@p`5?T(i%MI;i`~>Dd4j=82S!66#n^`{Pc^)a`RJaU&CJ^xmYb zr%*T31Jlpo2RI@?h*GXwJUk=-ByTfQj9~YnFp#mv*8scn@bzViodmHqKR^Exq|SZ8 zT|mF=|Nbh8NlfgC7io_Hl#@eLw8r9j@cHS#c`PspuP)MB>kaoQjIpgJrfIN`Pi~9;};3L`Pee zcXh|o^+;J+TNC`!2`uJ2=vD@OjuqH-EH(i2nLeC7w}e3mJO$V7x>iJ7`C9)klttho@_7jP8OtKYq-8cDP72?zJ-f zk;p^(juCiW>pnM&b8tf*Rhl*X@I6LmC%z;iS(rONlO`l0+Gu8qq3hJoplUV9O3UUb}~0{`}<&flAg>Fz~na-(PAT{h;+6tu1nwT)|*2LozSc z)2%T?o#3dAJeyI>l4{S$bP@S zB}LSs@tIq$uO>*!F3iHT7IUi{__H9b9jj3ZdV z)>;u_p*QimS*G{0p?KCKSefAama zAWIQUQSk;JA0No{iv$Ps0ED&Y$)V@C7bsr~l!FHwQ$2sIEe|&5k|du_`~e#F5Y=%O zxwQ0XyFxRCE5EQX&IP2Iy`p&<0R)5v!!E#1I|-H^$UL&Bh(|qK$@)cx42H# z%Xlqa0kfb2^3eRt<5+pO1xq*O5=vyN2r(bu~Z78V&IIlJfJsA`47v zQe0_)fxe%jDtqYk6<+RRQ4YU9JEjqt=mHWcm71Mh$zot*U=UVbF35H3)}0hC&%T5E z^-Ula2^#}XsBXwbL_}PQh>Yam<0B0V4lZjFcN&I@{h)#D9fD8pbM2)vio1j2Qdl?l zmcYsN*d&`OpozFCZz{yN%`{(#VX4h_qR{L{Gpuh=aIo=d0|J3K)M?7he*d0l*&2v% zXzSMlee;=R5WO9lpasYMuFW(K!K<`Fc>Qz&y(A3=>2IXzPlS!oI3+i510$!zbA9%qp-${7SR;f3>|}PfD&Q0 zG_tVZCw?o?*J8V~Og5>MJ>9$YwHgC}`DakYHE7CK{9^CtQDg!_wjKT|Ee45haA&bAEzPdwV{j$p3LS z|A2s$%uLHv@1JO9B^a$k_&|Su`N4ku!2m{2w)*c~B{}KJ@TF{5xXI*EpK|rGJwcjJ za#>;KKRbNtT~=fV-n*is&^~DB2u3$y-Hfj=ue2mr%s^EoyYgGqJ&6Qh(Am>-xhtCL zo{0%#f;wkwYwH_8V&1)@2ZbXZfd>qULzA{0kCPuSv&@ikjRR7uyStm6m$$f|ITzIR zKVYxmz&g3`Q$*FP0o7TZtlytIXx=d+zVuS6BtAY55-4&z*Fh*j4eqYQ$H@H(d zIXRVK1VGKGihBSkK^cYkZKn%hDy2gJ*~2L>e;s@hEjR!SnzzhS06cl4Orhe>*$YTo zra(T`P-3c^2}mV81@QX1K=~Lc(r2r6ojS;=z_U{jhx-i;{`neSA)J|!5$E1<%1A>) zqoJ*>YGm||xvDJ4<|xC#yJO-sS>FtCCtlpGSga?~$qg7U2Ga$vSem*_{rPXF#-m!& z^*4NNYQ;?}v+JIsfB<9AR|VpH40sqlGfCbn!zF2^?V14)C+zjqb1EBt1_Ffs_JaasTmSHLKKeYyT88^PA`XTDm}@QEu~- zep(pCf+&xs{Q`MGR)~nXEYk4$oo+Ktr6%d_N zykL>nN~x8?6|nNrceVHGb7AkQqPz|BhC=JMfK(`k$Bn_$({o|i71Q2&Q4*EL(f@HQ z8k!k_E+04$M|bno6OBIXba^cHUL7Zw7)pKj4nP&=CGm@um6bd|&5Nz^^9lYErY0s) zxw*OcfF}pYZ;!<0fk=`I@vu4z_;4 z_Gsq(aoPbkRQP{46L{OM^Y_C4pIu)FXMQ0U-S-nVbf5K~e*SfirSVVM>!Fbj!?hm;0TEA literal 0 HcmV?d00001 diff --git a/report/bitmaps_test/20231101-155917/Header_tag_1024px.png b/report/bitmaps_test/20231101-155917/Header_tag_1024px.png new file mode 100644 index 0000000000000000000000000000000000000000..fafd48192f608d2b7059f4248987a23ab502a723 GIT binary patch literal 9234 zcmaiaby!qU_w@w?kw#KdN=l?VMM^-rJ4BF934uWw1W`ayLPXONW@CY5uyb#seOa#TEx{SS4r2<7xTZr?3Q7K{QI8L3JW6r z&qtf55eH)a&nLqqgb-4=`cy!)(7$nx7$OkK)y2b@&d}|vi}SI^Ai1k+_3+2^d@&0Z zE6!pMmT`t%g+L_3Qma1OPp z(Dyv=!q90z;59aT{Z*+q)U!S(A|gr@^I%qbOZ|d~ULrmC;Tdtq!l4hhMi;$#lUpI&#m9=x=WvJehycYxeC$yxZz(oAvT|D91$qEQd!BMtzK(01Rp=AR@jHv5fq?)Q~bM~X8(tu$ucz8H>vu26};nvm`af16*beXyHcL*V9 z+x4tN%TRx+MRuiAi2{Dl<@|WZVK6)DJRqt;cA~;5oKrX3YGh-4b+$nkfk3#g^wEp= zG>73^J2{*SD7@15kRATPRf$_4D(~kw%=Y-i@B*FG9~Yj7~rh9L}9kfm5|P zW`Zm9(@gsV+Mx~c7{}tJNvAa z2vLy%zM-MvNkv10?6>mrZh~5m1*OH6mF|+~`>Q)4oc~=%G0ilzon{(9eq$jNbt>u< zVoy8V@l~X)YFygDgtM(+ zLK|zjJNmxLQd#_mD9b@AtCiuqKC$&q#V z{rYNO3-gskA&Bc5D<$zLa=hxr`O%zdfY|_5yicsWsw$q1t?kliNdrn^ZIt)y24<#m z%qtV~tjg+rh%hdd=9_*xkpcE&YCIx`6-CpM3p-+o(#^e{0yM z0G%zRb2@iW<2xQ>lhoIxjxDR4mI<=nz9m42IFdg@&P2suI$d*^t(Sh%lc@dVxa|#< zE!b}21c(1+90ehC>lHIRYn4AEO!}rL9!YFr15%8cg=KDT?giM5%tuKgcCV^^kqj~y z`?`f@)w|Xo)D>Xb$~yZ-!T0DdH-@M$=-wzZ1nt_>FzZGQzF*7Lqn?@~vQ44MsCJ=; z8h_5ZGL33ogMJO^FCaCA;L2*x$40fSHFbzkK_~Y_WOI0gJv;ZMUOU;E-d)Q`&VEcN z>NeB*0_(c__MiJ=5)w8;x!Tkc-nq;@@jRv^l$5W8okloP;R1GD_Oefw@WDf&P}_TZ4?rL= zAlb`v!5^;Ek#^njO;&tXsPmK6(Gtcxk3O?DbiBPK_-A9|uIPkCwI?L)m zor_jT8xNsI;=OBLo9$d$*f+ z;q+jADVV*wwl>qUAvjSMR*yiwW={>t$zcam-Ka1jgu!5~9UZot6BV9`mcb|3NuqA; z01O6de4L<0)WsPo4Nc_GkRAb@7|B9=RA^mY9kUC#j*X6vX>{CW8>qTT^+T^`ZplR8BYhZDVEpEY&#YMKMWO_Qej|Vc%DKF z3#s7*w_Z|N25JYd>FURcH;N7GM31 z&v#6v<>eo`XF*RH$WX*roLX8^GccgMXI`WCBme;1bz0gau1>1Pz-c~^yWZ;~gvk1{ z;=n%865QuoZ#d5&ZiSSg#>#B3gSL0=`t|Dsw*;=0)E$0SJh7Omj@hee;Ff-q6UQ(dwGK`W8$f{nFJBrdKv4zM`f~i z6=NQB2IT5rPBB?!q>-Y&#bk_3yBAq!;4U8Ev58CK6GIw(~IWq$p zF!;T;61`nO>i0a=umHcjyu4Kq_T`>WSVabJ5)-KjXhqcdCpxY88vFZ+B~moXp5Z|o zQ`KY=DMXV$Ty!^PYkau9CFp;+%@RRk0s9Ho7M{o%U6iO`WNT{g7zkX$1 z^_E~|XYXF==;(L=@<33K?AEPYzy5kBO8E=)rOEP!pPkes|cCi*t|1qSys z2dt1Yb!apO309bD4{dK&&e}AFV2A~s3V~WG^ITGux;)?e+25Zqh-$jd$dO9(AvHCc zSoWMmBBgjp_A>wwFpE*8Yl;m_LE#!$>yV=`$lF)^w(aR4%d7nN?tpK=pXTP~MLx$0 z8m>6izH+aXzWYT63oB_bC9nW=u98zy0`$gw@#00~k*c~nTqEa!k`fMN1#< zq<4vl5onSyRpqhk`{kp^pc2ubm}>U@iIB+d(29qDs{&6vtF7;LUQSJ!si(=%gW22O zvnWGy^>1~fjBl67lcfYpbRs%WRgoSZ9wrJqQKkl;J_RHJ zi|_JZLF>hzUtH`ge$cd;YYu}#-n}EClkip{?Ks?=1g+Ov#PZQz@An?Hzxeq0p(aI2 zAaGOD(>uS_cmZ1LJ^h3gax@ELl#!7U^O(N|LWjnlc3L-%=EMTimgeSnadBav1nryK z+7wCK%|I<{3#4&%S*mrX2n86_x-~G}z72(xy$EQA-`GAlP_(gOmVfYo-*Jc|aHow5;_CDD zS}}M9SSnZjWN2vUm%+cksyuAXYM&8;Eal|njO@R|#Dqb1M_sNXntsWP`?N1FdOe>q z<5eT^&d8*<{WYk-RY7lWx=#@IoP^i;$n54Zlf~C5?vF7Cgbnw=@3EGa-8>}V%Y7M7 zb6h5P@0K6`Y69y?)s|{DxW|0C>|kp~mCy^uc}4a1Ivu3(E~4uu9o=0h!ma*9371LX z{{0v3&z@1XgcB#Uz+b(>gX9Z_BQ5FzIQvE&gm%kbzQhy<#Eu)njZ$KPlgx(_%aA~= zVfa*V5_tf8s>D2&)jg&+mzVEEMn-~*9V$%F zVPS%kfQ*TTZf9g>hLOmFoyTWqXXp3Z{?qkSWNv<*`MXI`ay)u%{}CHD7pDiF0igZg zP1`#dwd_7?I9=oRhdDatCx=4{CMKT)o%dG>R4i0Q;`LlIH5qFrYIhL-~4Rs1PQ zNNyvOgq`A{+Zt&y=3Ev`@Ua@7fbmBUs;RXd1w(W1VH$HT!czS*#k&pPm zu89ZPfHwAIA%1sua?(@=HDc;^1B7fppl&{hh(U@2iU2&a>%=X9Fk8ZV^>%VfilTu* zJQ%ys5rYrO=L{PE>u8PDUMnD8pr-MtsHnaSI4EdqzjycWAPqV@)c^V@a{!l@m$&@H z#9&-Fszs=Oxi5tqiYT}5H+cFWO?9^0ZU-g^CQ#pzTyK$_XXTU*db*ftMj%KQv zqfrqn56`3E7(hTUN;UjTq!Kxy|bf4p0}6vUu| zOjF9t`z=64Mur7#Z*PZ0MV0j(9Udxy`ZQC8sylhFV-&Vv?4o2c4xAfby?=eQt4Cu3f|Kgl}spv7@(#*X4FDB%bt8LvnQi z2Yetsp+;oGrN!KH>7Huh=HX$AzP`R=(3~--mAk^=a4W!20plvzo&wFnwkMJQc&}fU zf(5r5!0Ot1{ypIwjN77foa5hFSh0hxE6%lMx_kRmuK2Fuk(^CKt&Q~DqZCWEp-90^<|1^d2sM@=`^PvR_nl=FT3ci=G zbe)DEAVK}+U$ZZ|0QR}-|NEWlpfGuIa&r2xBPlH{H`3`>ItC^tru)gRU7=A~MvqWW zilkw13?Q%&I)N$Gc444n9B-8OFEUmO+V>Um^&KDkL2`hOk)NF%ZoUCdM7c+S9v7WV zAho8<32R_r;4g%~*ZI2TrOx>WUVk9(=9ZUV<>qqiuMOj)g$v-*aHr8?&So}NR*1uu z?;WW6F8~!NVaxGT$XLK-tjE9E`E6E=ZVzh8Hg$J*XD~XTQ#hM22vCYdpjmJTY2ZuU z2`w!xSb!oH{}%8C6$-sWRsgby9z0g%k$G<05?eE@mnIVgQHR%>-jszlrfUt~YcBPA zBur^m7dXc+Y64Sq-_m$iTtCQsIBQu5LX7tY zO!hQ|Y!Q@hem@Xl&L7aoo^A07VoKgzw;4Tf7MmPx)33v5u%FU}51RKj$B26V8TpR! z^6Y!#Y+7kTOx6@Pe9MtCxb8!^?}V`Yez%5$wNvn1Is?&x$C@3x|8rH{(Y4X*5YSXy zv9YnG_WcY(P9p^M_4T_k;(ya3L8SfwMS?~s5x1GbRsPP-&L&ADB9vb8*=?Y>C7*4C z07(Z7pd~)8I6MHe`~m_3rLNNwtat8Yz%Eg{$(CxldR%A^45U(`pndeb5is5sVGzJ) zG|MhDF2@ND4kk|Kr2tR}s;3p06mu&p;UI12!l*3dOiXrYNP)-l%Ry+YK1j0uY)cZf zmy*e(HK28;63^=%-?mzW6Ewy?Pm}&qBK^x*EIhhWv4Djzg3^-T|%hS!72MN>$ph`8% zy6Gi$L{yX_ddiFp$S6n3C^YM&A?WNG5NZoq2^R83M%1qeZs}MfbV^{IjFdY&JD`TX zacqI+Fb@PTu%ghSJ^rpS^U=?w&q7acHn+6!gAzt3{&ga{kfbEqXPXmQxam)HL{qKa*51xVx!cv(r=+8E6Bst2 znJ<#k>l-hFyJMyw@5us6jHahBRG@;A5@u0AiO-)U$^8R}hZMD`1o!J15|3rBOf~5rJ<<8s!7EA`}aC`e*%)?9<_0jZd z&m}x4-MIV-Mg0m$?DY0%di+Ks%WK%!aVO@+3{UkUp3>`&_-go=8CHPdxFc9jedCoC zRAWJ%`RjNj+Pxw>i<<(-i-+uP_)MxL7+N}tUMGxU!Vp-}9RQzgo0IM9{L}Y^+{r8?=$btRs-qYl@KyaL&pThwcG$}F&+#gWRT22TC_qJOuNlQy3kr$`ZlNcQx zHGI#YHVX0Cxe|uFq2ldIi&^~no+a{oQv3VV)O-C{;n+^lKbASAi8B0JSiP2g^q!>M z6HAWBP$6y$s>r$fC>FIKQetsM>Sh~QmkO!0yO+jV>_eC!! z4Th>#Osmd1dameI8b;FG+xrNVhczEHoTSYw*}nI)oroomIhNdKvdd}T*&9sxKYGjo zSV1Jnx}#JCFF(IFL{eZ-bW`5QpfbK9^}f3LTg4sOpEOW>yrdI%0a5MjIoRVU1kTHf zQ7Cr}4R492SaMuv!13DM!N#Y=g_uP|3}y@s>P-WRD*#hd^9FX;khJjt4LA<)cXTazv-f*qyOX0wabB+Z1)KE%K_mJIszE_v!_QvP7adr-Fl0j5oBIuRkmhYw9Dj= z&OIv(tKG#;U;~HL)=Gjzd6$wB1$JgU-`_5P2ViERs2hW`v-7WFbIIz2GV|JJo+X%8 z$qBV+tJrODcpM)OuhhB)hk#x}Z^x+k%Y*RwB)9tahUy7Y2Sd6*YPOA9!lD2Y8B8p6 ze_cn*eBd&D8C_qZn5r--lA;^^7#fN-Qeqi1kg1#?@eDv491iCw&dk`=GFHvb1fJSa z+~twe48k9+!Y%xlC=iDePGhCkSkRxkqZz^H#pUIK!RI^5tgNhP6ExSbgaH85+~Oju zY%DPZmj37O-`Az3d}z1=V7yzQQrCJjPBrY7;1e`oK$|C0Qc|UWc!J=!ba&(Pn0zli z78LbuNLtw1iUw@E=ab-dtm{M{)42YuuR9H#1k_pV7-Keq$0jf7h+&M$QcGwC)=s8U zRQ_*)(H}0RegOeCEw2bk&ys3190`9k# zv5ASfKXZU_`|)$UP1kQv!|^S4n7q8aJ811_=44VtIbGxPA!i&My>t(HKp!PEcMUtK z)E?@#&G;=4qM4M+!-q{EtU#Vxd2fuB{q75*1{kwzOQ2QmL)#bA@p)B^`l>u$5_X*fo8C6>okiG9am%h6-EyPi6M;i%*|L?O}x*Esf^$)-V(*?~Bzp-j!7nt0w!v%&*GXrq= zHATO?944SAwn)k4BY@(^Pxn*w8)Rq#BA?%FM#`UJ2hg+#|Gnkc&yU__G6K}U2iVs& zE3=1zz;>Je&1PG#T6FsR1K!u|5DyCHPBiWo6cm`P)YjBQ0{*YsS^n`Oc^lVp(CI!Y zpt`tB-ot`QHR+Ex^VnsCgud%(z8mVc516Kig7|s`b(fVOU`9N9 z_G5cz=e=w>1{MxSKwNj^gS8hT^cY&6rU<{X@m;G&OIfy^v1~^vmrI-lIVQMFl)M&q z0r^~<*==l;J4vjr%FN89SQ;N3)CCPL9uEi;7Nux9&e?{+>_=n(r>kme;!VCFN=voS zw3MNU-+NW73{aets_Oo!-)H7E*S}I6sdaUClW`jqzEdUvOtSMRraDl#4yi60+N70l zueT;`)({*N7cb8AmPG~-H;x7%f=C$yw_p5PKcE~f%0B3hWm8+Exa@7?g=;1Ax?tfD zXdx_(Pn@1smuJWNj9o0pfB|Ie8Xwa_tWH@e2YEzAN1f|cSRSY=L%7-%C%dKSs0EJ_ zFi08orGYv(fBcx^GJzBM7e7AP$)(b5mJ(W|xL^Z1efMW{tk22zTnmMdqvEXiu#dU^ zBQ`h*g)qsvz6!wBcK>`(>DX3gb7jgg3@YmCdhl7G2+=+@b(-&FiDkol=#Rt3L+W&e zk$pGEH}uj;U#eYBu-LC0VVtcvF~hfxM{=Wz3j4X80PjHgQSkhYV`5>!A|kTmeVLe$ zfOfINO*rmybL0Q`@gvu?(sM+ePv6KWVrpvYx=Gw+NwXE-ZCTmbjmRG2d;mYXXd&vg zjZCm830KV$sGab0b-m~8;=)q{3nTg2+4(*VM@z>Jww#SVM0})dm)9j=sHX=9a(d>7 z-cNkMMIvQ-EV)lNU zcglZxXxntADgI|TK4!*@@#=6bzm6xjOc#Q%8qx0pfVDypSPl~(9|@#YVj&F#D^`d{ zK*)Co1*HH9gAxlDkz#9}jb9V>spkO)VFU!?0c2`@_Ewu&wSIe#1=>@pq81U&mtk7g zPo7^NbGMeenk7JCXbilBkSOVU4+wS$a%;E{!6BdyiQ_ix>X5ap{x&oL+4&dv>?HSM ziF)y!IXmWwqiTy+{)CRrQ{w)zKwJZMtIQGR{ za>4Ap6@CqTz=>^rG+v5OTixZE+hRIGk?fFdsnO~;-}d)c|9y{O-ywGZeKHA5qvSVl zuplAVDWe(Lpmu_(`k={;6B=4!nhA1y-QBuo&z2b;4tZB=4=lL{eHd3S8DuCcM7cpK znwlN4S!xt#8mUsRLEA9$4vznV>x&-=+n1b7xUAw}udVqt#EBY!Nj99fV_wA~BVTWU z7J}q*2Is(e%kFv>8_hMYSX~a1PoLQvf;&$5zZY8Oc*|j&x18{wc)(v}Fehs?9Q}EH z=W6)33~*)+LCud{gRSQ-4tiiPX;ai0=OgLW0LOv$J{&HH3-ZxxR8C>&IHRZOoFkg* zYGX9UCQfp`8qZu%%FhUY8SBX>$wMqnJBbP5IBafrq#KB(eh$AI8sfBY>R@epy?q(F z-JoKnq3$T0op^Obt&%tL7V@K3#N3wgpuHj9CVl$MXK1ygqJ^7hbD((y=XcDdJX0w+ zl}Yd-82)JT?`eOJK~`Vz#c`@GJh5JkmUjmdq(koF?2Mt&Gp)^DxAaq_{#}SS{FxJS z8Y#RF>KOw9(uA12W7rIVUXnO(4O5%#bEX&P1}T`G-JYBLg{y;(>}b#*>IaFH*}0x`fTlF0wPOOdZ1^%Tlw z!n*bEcP?xy4A!gV{68;|l>YzTPDyW3U(>*w7#p`57L4|* z$O`gd4@1wvz|YmRvO-EK{qe^a!*_{Jxm%Ba)(Gc^&tCtLzx5cM-2*JIbb$-W@H=xP z@-#Oq{6C`z(eJhds1&4mvH7*mP|>FI_S2R2;S>V&dIPRq$Zo9n%ta4g)`H}K N9x7@m6w6z^{6DZ;xEcTe literal 0 HcmV?d00001 diff --git a/report/bitmaps_test/20231101-155917/Header_tag_1200px.png b/report/bitmaps_test/20231101-155917/Header_tag_1200px.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec59e750bb1d1039026d4bc008d6cda0dd9e0df GIT binary patch literal 9566 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%0A?x*|5n;!`Y1u?mxeO9EpBXfrY_`^RgF{ z?CZ&qTlen0)+@7)OP&V8-MQ>@vNyVWT3G+*?sQsw{MBU^*&Afi>Ng#kkN29b@qzkD_B}8r8@}98#vdFget4 zgjq`n$8SaRE5gFscr2|@8|M%Kv*vRpj!K8jWMmha{g+eR(ILZmCbM%x`t;yEauGm? zd%0m%IKg@_E6Tyqk=(1!7_J3bgN>vQu5$nRZ%_LUsV|GiLO?(el$4YNIFnISqz;h@ z-<+!9`kFOh8Pw3wFz&;Xzwx%+?5)LMwi+$cnxmD?S=PhK%8HLby{YwO@2!s#B6Afp zez7fyD1%HJMI|LlEF2;-8je3Pv=0tyG4)}b5A}F0 z62v1UM1>T2{(OuyMl(uu`IzKb1m1q{`CaI`^$;HNA|-_w;XhAQ>GtDoZDwX>rOTY(XuA?o_sb92+1*=?^X_G^8V6bcR-K~q=2Sr3qfJf}T8 zRWp%Vs9~To0>8YZAUnHyC6uW6YRr9^G`9$&ZfoV3^YZeNAm8Wbv21J}ra%=0l$Hur zMPv4i=2HOdox{PwM539btR0W<-@hN>bL~3Cl1!J8IsY4Jz{VCBxWim4J~WIBtHCTM zzt_u!@qC%X5^aStxuZ`rj$DD2BLUyaY#wfZZ$bjlB{jM4_1c*^1QrEY`S!{F3>N?I zdnBZ!9V-Lx%`7Z*H>>jX%bJVKS{(lTvXUp={95nKc~qTyx7Vt%t24Jzg>+0>yO^Gw zTtm2gt=XtF$AGY2Wn-YZkB*BXjxcqSi|Sze9^KWHTH?`@HyB9C1a+^rE2khWbL!oe zgc+?_dRIn-KeG(0=aA=w>Frj{75i*KXRhts=P;Tgn^E4$N=GbXV`H@IkTJl@!$Uk# z{zT5y^rDZiF9sr>qDmf`lte!{Ik^y$2|3p|HO1I3wV%xJ7)bfSuR*n9=;xCAlg=JL z%0?kC4{usALZhgys}r#LdZjH!yHPXG83Cyn{J)Z6mOyt~Nl$2VLrQY9XvYAQcJ zzk`GMn1PQPmupXcPq2ny|2aD9CN;vx#~1ZG7KO&B)LI5y(`9R#5iKhK@$Y^R6Bech z3g5at+alob{U#K^d;6JsnoQ@d={mhy4}rkIKz{d4L-hB+ff1z6IL0E?^Y%25QO-0r z;!ge)xt{Uy3;OvqAZvE(K{;Q%a^)N?pK$0l&o z8%G<0RWBcRz2;bKPfSR_L$aYXc^Jdp0AnX@VybE)NYCn`nu)NNAlCdet%9T zO;$DO6Cvm?j>iX%9v&XwLBg~G4md1!QOj2X^+4o_jVVBpS5{Z+A14|(H7Jb~7)8Pv z4?e$OIe@|jzP%DtaS5=e4ZutH&1;!3)11*>UQ-M1ZBMaV7fU)aU zIM(ja7@jnZC>Se!FVNy&VkLbIXpH$ohrtQry@cOI-nls;$MgIoY8t zhhey3W41obT{$+|Y%X`>^mAn)UUp4h2kGdi+3|NIzujz}Ur#N56Ejt9f=ro9`PKQ7 zZk6YSCX6NzjEx+(7N#)TZXen7?f%Zo(g`+UMu_Ny@HjX)#;Tmz=tOM80E9ZD$iK$S z!Sa6p{PMEpOuf`dzCrdujH{cQ$h7aik?nNt1t8O7wVr~$D)xW%5s+|bhe`E#N? z!zzl-&d!zbl5EN4C|2NCpx3b>m7wf7qJ`}y^-eL8-oA}!2_=1axVxAj=DZ}gtmG*~ zM+~$*R>kYtfr>s0@JnG+1cGk^-H(p<;@1ORL~X!nzJ!T`x%}VmfwEg z)EUdR_+wB_I<9}vx(s=jaGg^^f*!3Cf~qJ$J18gcW2E`);y-x!Q0c=goG0(&BMHw$ zXXAe$IxzFF!D{g8##9Y0a28H5e?Ss8IL*g-8BzQ5t12r8m6VjoJ61fIplLWel>m18 zeSJOh@aJ;3REBaCxD#L+K~HD_Z-I=41_u(^cB)#NTy?EYqt;C6!K#H_=Lzq4jXPht z?RcQq-kRCb?;i($)(e&Ti*P>-ST04Blsf0QS7GsIah)Z}puA#wOOX zlf*oJuBaS4b&D!n4+m!$>y=wm7Z6)UE1e{nJ*%O?qT{Hk+qYK79mNsq7_awlS!P_D z_r#@-oUZYEB5dqX^zu5rYn$49!Qd*t<(G@lLD8)PNC$WTam;?1xP2D{ADez}eCnio z0!GGXN6--6Q@feWzwB#wLgr*1wm-iBPK0co*WUKD_g3ebIWZxj9DG8kq~2l3OW(~5 zwNs3w;VF95`HCX8-W`xMTP>}<%x3fpxH-oF;k*7nxb#(3NkWJ&1cK|94uAEEOflkl zjUs@Nw6#`q#u04Q?K7c)30f`-JNw65hF|YKp%<}jM7MJ@+bk*KQhgq`&B<^n@88JH z@bLET64NG3=#me>%mVWyS@Jm<|Bdr*8)F*N%DS)OLs%4J7qHqxAH91-%7i2cT9Cl? z_26nzbO05YU0Wm2)zy_e+9*M~_(_AV#DYQ%Rt&kOFz7DEV4V)S> zYU<4MkM(sX1q1}p#>l11mv_J(1AS=*nimbB)TE||hlik=@$m2(mwJAZ1 zQTzV+rSYK?>W(hz_Q3iI5HriMB9?gW`ww>ho4O?yq)rRk9Kh|9D;({Pq`vn!G1klNPTCn@%p(3K zYy41tR&z@Wa4=te3Te|Gi$R}Uz~!pd^3q9d9Hrgmob1%V$Vfsk>@cOJr4jj->)k(f zKhrwzMT7H|aT-r2j4@v%iA2nHY0Bjf*%WfeIBm9A59d-tZ!7{&W#d~JAyB?gmDx)m zl+p(*zkp8lG_jfy({?n{o*g)Xq|u@t(CtAx?f2wU@|8EtV|~ ztFIsM(eg^qz~JG=Sn(Z2MHy>r&T7~75b!|2jxpVtYunwv_N)m31Vr0sVA?rJ0{agI z*A49+1q1|8IB$a$H47ai6wErW{Y{?!;^9&&Eticka$uQYQ-e~GdHnb)SY%&-qzhSn zJy&5rqthx3Oaqvs#?HHIZX0@NYrDIf5JbT(9UU4lAl?x4at+!js;IPqBVhXENmM+K zL06rmez`5jnJz7VpHhj#tn8uv;PCA3?k+ll9^T$uOc`}`bvwP+XFhY4E2jGXzW<#5 zI*Ez@i7>FxK!~e!{CaFb%jhUAR2CSzFLYl3{$`30iHnMw4(Dp`%6-U*WmD@So%!ne zT9=9G&D^TTY%nbo`x)~PjA9$?(s{6WJHRPJKM`p>JDE94lp2LZls?|ZdiClRzxQw3 zp#md%z*h%1w~#ttjV)Ch8yj#+V7V}HNf-jMv$K78vPeq7&T zP+VX?RP89eijAc{yay_jqD5cjzWydt1#V~B_O^o|@Dng4pzFzJtEMcNRl~e?9gGpy zzSv{!-8Rjy>Oaw5F0=o!fZbGeFesyR;B=M~}voie{g)TgQ!0!>zh+el??Yk zJDSm}^Aet$n=69S^sJXy_1M`;&aE!Es~acyS@%jp-a*BqP6~25I!>^C+kmhr8Bv4S zS$Y7YaH^y=@hM)Z%&%*VCd@2QUnx4uNcg3YJLZ2`$*`-BdX(66PVcP@x3s@P=_yB5 zPaHAqJmkL5*ZqY#LD`nuO4N3`xGV_nN5mJ@eO4V7?tuaq|i*D@U^uiZL@g8#KvfOf0NmGFb*uhnvNh zrhuy~Qb$87wnCyTX!n4Hd--wiTh`5)>jjM-zg9HJ&!1;6d?W%6k>hNjfJtUt@P{~x z%k`amwO0v_zbbh}>8nYw-S6hzj!RB9oU86O2>v3}ubgNQtd7S5`)0RHP2U|S?yU_g z0kX%_hsMOHg`;N;#9q*ViBt3bYJ#-?Db}+8{ksM{YIrOFwQK@TkwFyT6~WSUjmTa6DHV1*{mK z<(8XUIc(CF9{T~n_aq3&f&CY`t~2<@{Pg&6H{#jS9IY&S-S<@L`7k;G;GOb zeg3R|8qZ;~r=ZlAZ+YE*nhIH<#%6^*-QBgfZR@+>Ua_wY?E;%vtL99)i??%rSe$YD@DkUcSV@4gJbi+~B^&l$W2+ zoQ1z=jUd=W=yw6EGAv-j&cMK6D0k0eiAYdeT|FQ5O z{_kr7Qpt2;;ofFuEa1Y2Od8G`(gS%(t*yO+^dwzZJN0hsitB1eX$qAVH&^h9s0$g( zPhb0iXsvJHOS&pYQi^iL5nG+6iFC@IS{1_3&pLZUjR6LU-Y#QH{t|wN#=; z(OUJlLOk<*jNAt0J+_7?^b_fcz5`vv-F@coW@gtD{6(<1cqiK?*fa&^##BB`a~+uA zQD>Dp1qidb{oC#JdL&$qL5O6jrJ;9Dk%Oa|vuMagv(8tnyF2}FxH$x_>sU=&=?E>$ zjqTYgOU3Cth(_h>mIz#~x5Q3oB3^qJ`QBV9?B75&#;skjMxyAiZx8F5VDR%c(ZdE; zJWrIf1}hsY%atpwwhX^@I7pa+&`*^(ip8~Ptx3?eSP7#oiU3OK?GgVniCPr-)Ie7M(q&m zxo=K39b*$x9jPXZJ}oNZkL(*=rk%4h)_5Nm={w%7Eio}1*q-}wVC}Kpc$CqJM(W0;B)fcKL2_Xm|2#6y%(5=bdkxBA$ zsw|=xJJ3qo|JZr;@6NZ^+0!RWBN#8LB6Auc73PO8k!qb^*EZbDzq zx|Wj+)0y(Cqku$1gr?HpdEYB3!swP={`7O!bA_(ls5g*(u@Z3*kf8M?G3iJaybzZn z`FC^~bnD?4WGj6RordxaXpt8Q2?y$qhJBqK+bc;2)n->igo+hxRCx4I0jLnnW3MBo za^qgv+s0<{SCb%p(Z@=7HbquR(pj(~>P#EYz}r-dLH+6d%OT}?MV0?OBP=ZSikdQM zUZ}=Xl?VS;=GO~rWh@=y)jPNUebeSZ;r@42m;QfW$N9hS{N%Ui$=-pRk=pH-+4^{i zGqP9}fsne3xek`Omjr##A4B|zttwjd`<(8sk~@HUOcux0TU1u#&Q_=QiZd)D(Y z(<<;QdPw(r9q=Fp2PpHZPiRrqnW5;(MW8DU_5fN=g2LOkzPGDGh04iKMhad8D zu+fLlp>g)l44;l9>3X7$aCy;mMRlt@S?wv_srQCv>5H4ZKQvP`@N&YWFK(i18b&Tp z`)^Z(&PVy-z5&3G_cL6XUO?A0Mlwqry*^3s`#*@87DK5leQ}eyZ1Lpl>sFgqxKr`P z9G4R&9$lj^ZZeh46LhaRdvuN7XF>qPOp9>OC?5>Zaxmlt;OQEV$bUVS;2^8kGNR6PJ+uEeDXxR#I2$o+lw0F5ihl(tIe3rSfvqlP7#Wf$yJ z$K52m{4QQ>^s(LR~rkTp-ICC!z zz#BUQVzCe6>dXR>-cb?vKNnt>x;eW@%*^pZeHo`?X?FNrTuhk!I=4u3piC5WkEL*F z8qe02b0q9%e}h-#5{o&y$5K={bxu4|#j9aIp_K>WpJ)w~@mXuFh##$RElYKdBmuZE zX>eiE5Cb~yCh2Oe1D5Zp@%@npUc9ZgoS*hKZYZ&y8n;eM!NLKY**ttTnxZ-2=0;ms zB$|J|$2VhXI$P@g^+csOKapWDl@;+z+x!4T4U5yUwCJxZbKpETp2o7_Sfmn1!IN@) zdnK>;Pl@~Izw+kq#jlwIAs+y@(@VT^ZBq2_sdS^MKY5ZUDOr@1EJ{iiB_)fJl0`|$ zqNHR|QnDy1S(KD4&U51#-W{CbRx-Qs=>M6B*U3jsL9|Fu)Q%d~X8Q;puX3YrwU0g< r&_8Yp(p2T%Y!?6?_Bwgzv1MW8DU_5fN=g2LOkzPGDGh04iKMhad8D zu+fLlp>g)l44;l9>3X7$aCy;mMRlt@S?wv_srQCv>5H4ZKQvP`@N&YWFK(i18b&Tp z`)^Z(&PVy-z5&3G_cL6XUO?A0Mlwqry*^3s`#*@87DK5leQ}eyZ1Lpl>sFgqxKr`P z9G4R&9$lj^ZZeh46LhaRdvuN7XF>qPOp9>OC?5>Zaxmlt;OQEV$bUVS;2^8kGNR6PJ+uEeDXxR#I2$o+lw0F5ihl(tIe3rSfvqlP7#Wf$yJ z$K52m{4QQ>^s(LR~rkTp-ICC!z zz#BUQVzCe6>dXR>-cb?vKNnt>x;eW@%*^pZeHo`?X?FNrTuhk!I=4u3piC5WkEL*F z8qe02b0q9%e}h-#5{o&y$5K={bxu4|#j9aIp_K>WpJ)w~@mXuFh##$RElYKdBmuZE zX>eiE5Cb~yCh2Oe1D5Zp@%@npUc9ZgoS*hKZYZ&y8n;eM!NLKY**ttTnxZ-2=0;ms zB$|J|$2VhXI$P@g^+csOKapWDl@;+z+x!4T4U5yUwCJxZbKpETp2o7_Sfmn1!IN@) zdnK>;Pl@~Izw+kq#jlwIAs+y@(@VT^ZBq2_sdS^MKY5ZUDOr@1EJ{iiB_)fJl0`|$ zqNHR|QnDy1S(KD4&U51#-W{CbRx-Qs=>M6B*U3jsL9|Fu)Q%d~X8Q;puX3YrwU0g< r&_8Yp(p2T%Y!?6?_Bwgzv1Ce<~mw3w(wB52iB(YuI@;o~3mkgL-d z2&DK$>cK_Z!A0xA!G()>+8smdKd%|-(f$R+EK$M6B36d~FFje`MjV$zr<`(0=|j`^ zRA=WXt9{q^wA2-HeISq1)<>}ctDkzfVxZ~vnRmZYos@FLWdrQOsl-Wb&sLncxRTtY zL2l2etG9;w!p)`TBR&wH&qra4Dt=(6taOxb7%gowrAmTSgti9(3tvI`qgp3;gzjev zzN@{3Nj398R0mDJ+Vwg9=|V`ReFikFziU#GE2unFU?5k8&@e2jzx24w6j$w?-|DqK z2puaFeAX|`3e#22!pkI(bT%~@wVeDVEO5&iGr3U{OUuV*Bc$^pvD@M6xw&`9o0~X? z#P6n+h41-i5Ho3rq;#|=U!CYi7-kqa;3)SzrFY7wT4a@x^!K)X_U*6TXnT(y6U}jQ z-y&s!?n!aRW9_5#?RVKv4OX|6lhvt%J;@^66%L zpHTr;%j{O(v~jW^N7aEF_4D(W&irxx$2TOb+O$RP_Gi9wtLMl zdTf7nLv+~ucTuW8GqN6)OZ@L(*{lT>ejGKsgxGMA#%cbsm7pw&Cg5McAn2ICAN#Ny zD_ow?4jU{mCehHlKddvCaSGn%Co*92@Kv)4gyU^)#&fL=5Po!Eh=c zwM=G<7D_UB@ku5!GNI+kqejno@o28=6L68zDF2E?ru>8+&O+~9jtrg}s7C-ElWr>E z4|Bhmmub%7HekDz1Z3>2$WQ_4z&A&%H|{Y9F~zC2l6A&v-4kXZK)=me-&UhWmvL!}rqnN? z_HE&wlG34l-27cPeFu*7d(SHlk}LJDQfEmgIb|h>#;5NEeRe#~h&)mnjMzO6dC>t9 zH$t0vgXuwYvt)U&P3_k~vE*1@T*((PCFGiEa8cWJeAR1W&~p{X1$4@H$Y#b_MX|JZ z%L&CPYHG{9MiAbbG600ZkBkAE05R`1?1%1pc;wl7%?nz>FF;Dy;Aqul3ckc%2-;9 znrut~hfna>R=Z5jR~sGu_s~~JQR9L8fSc=o6Y(Hz9{)bZ+gC)}D5(i`k z(CZ0Dd^{ju&y$z}6X=_x2Xh+;C9lFPI*0&)A;?rt=*;Q5)J&(rtYt}i^9_kr-`ays||zub(;g3Ihy8>$uoE;iQX?{~>Rjfiu3 zlmadTvpr^m7NRTvjHre@k}xs16gX$|cd1B}OR718lx8eu&PCv72Pkn&Q0$lGT~6xu zu6aShyWU~-AoCf!Q3M`unI2siMr>Lvp4?sIBNM_DWXC&y?tl%mE$5s^FT(s?@(Ql< zS+oQ&sg|D3hMGzz4o%W>1vwqtfF!b^gk(DjzskH!w6$o^kL9nGSw&^Q ze5RW86anPvSxMJ$%3Y#B0GD0Y5d&M!HRbrKC*jq#m5J-cL#;OJy+XDqx5{{Hq6XqV zaK?VMTUy$@mJfCHP*XgmcOl}ZHBk}mz*Exq1*a^wWu-l4EHi>$T@TP~JV9O89Y|fR zJN!N|8$@Y}wX&>^=!8@E+=-De=eM2BNh%=S9XG>v<{FEhG6&ucwaLMWN;Mt!gF+$v zL563|q#!qHuhD>>^Js%XTco{mfA{;~$P)1BN3BRZMG$N`#q3^jjkyCEThPDaPM$oH z==-pI_*-CKZL0fH!ZG$O2OR@lpAri`yGWYDho5PF!_?6!Dl@7~gB8E_IZ?GD{v}s2 zz96rCBihP6q%Dsy>{520AGHbIUh7MksKu+jp2MinPFPf{xy4}|zA~l~s)#`SmxoDX znKZogEmp#gA%EGwr;v=PP48F&7ZUXNtFoLd9T_w`?Pu&}Xd2PGV4EYjF|v!mta fClRs#pQr(C23jvLk`xnq%>Ce<~mw3w(wB52iB(YuI@;o~3mkgL-d z2&DK$>cK_Z!A0xA!G()>+8smdKd%|-(f$R+EK$M6B36d~FFje`MjV$zr<`(0=|j`^ zRA=WXt9{q^wA2-HeISq1)<>}ctDkzfVxZ~vnRmZYos@FLWdrQOsl-Wb&sLncxRTtY zL2l2etG9;w!p)`TBR&wH&qra4Dt=(6taOxb7%gowrAmTSgti9(3tvI`qgp3;gzjev zzN@{3Nj398R0mDJ+Vwg9=|V`ReFikFziU#GE2unFU?5k8&@e2jzx24w6j$w?-|DqK z2puaFeAX|`3e#22!pkI(bT%~@wVeDVEO5&iGr3U{OUuV*Bc$^pvD@M6xw&`9o0~X? z#P6n+h41-i5Ho3rq;#|=U!CYi7-kqa;3)SzrFY7wT4a@x^!K)X_U*6TXnT(y6U}jQ z-y&s!?n!aRW9_5#?RVKv4OX|6lhvt%J;@^66%L zpHTr;%j{O(v~jW^N7aEF_4D(W&irxx$2TOb+O$RP_Gi9wtLMl zdTf7nLv+~ucTuW8GqN6)OZ@L(*{lT>ejGKsgxGMA#%cbsm7pw&Cg5McAn2ICAN#Ny zD_ow?4jU{mCehHlKddvCaSGn%Co*92@Kv)4gyU^)#&fL=5Po!Eh=c zwM=G<7D_UB@ku5!GNI+kqejno@o28=6L68zDF2E?ru>8+&O+~9jtrg}s7C-ElWr>E z4|Bhmmub%7HekDz1Z3>2$WQ_4z&A&%H|{Y9F~zC2l6A&v-4kXZK)=me-&UhWmvL!}rqnN? z_HE&wlG34l-27cPeFu*7d(SHlk}LJDQfEmgIb|h>#;5NEeRe#~h&)mnjMzO6dC>t9 zH$t0vgXuwYvt)U&P3_k~vE*1@T*((PCFGiEa8cWJeAR1W&~p{X1$4@H$Y#b_MX|JZ z%L&CPYHG{9MiAbbG600ZkBkAE05R`1?1%1pc;wl7%?nz>FF;Dy;Aqul3ckc%2-;9 znrut~hfna>R=Z5jR~sGu_s~~JQR9L8fSc=o6Y(Hz9{)bZ+gC)}D5(i`k z(CZ0Dd^{ju&y$z}6X=_x2Xh+;C9lFPI*0&)A;?rt=*;Q5)J&(rtYt}i^9_kr-`ays||zub(;g3Ihy8>$uoE;iQX?{~>Rjfiu3 zlmadTvpr^m7NRTvjHre@k}xs16gX$|cd1B}OR718lx8eu&PCv72Pkn&Q0$lGT~6xu zu6aShyWU~-AoCf!Q3M`unI2siMr>Lvp4?sIBNM_DWXC&y?tl%mE$5s^FT(s?@(Ql< zS+oQ&sg|D3hMGzz4o%W>1vwqtfF!b^gk(DjzskH!w6$o^kL9nGSw&^Q ze5RW86anPvSxMJ$%3Y#B0GD0Y5d&M!HRbrKC*jq#m5J-cL#;OJy+XDqx5{{Hq6XqV zaK?VMTUy$@mJfCHP*XgmcOl}ZHBk}mz*Exq1*a^wWu-l4EHi>$T@TP~JV9O89Y|fR zJN!N|8$@Y}wX&>^=!8@E+=-De=eM2BNh%=S9XG>v<{FEhG6&ucwaLMWN;Mt!gF+$v zL563|q#!qHuhD>>^Js%XTco{mfA{;~$P)1BN3BRZMG$N`#q3^jjkyCEThPDaPM$oH z==-pI_*-CKZL0fH!ZG$O2OR@lpAri`yGWYDho5PF!_?6!Dl@7~gB8E_IZ?GD{v}s2 zz96rCBihP6q%Dsy>{520AGHbIUh7MksKu+jp2MinPFPf{xy4}|zA~l~s)#`SmxoDX znKZogEmp#gA%EGwr;v=PP48F&7ZUXNtFoLd9T_w`?Pu&}Xd2PGV4EYjF|v!mta fClRs#pQr(C23jvLk`xnq%>*?X0}%PQ-TI679wF*+Pu zIL7z#{ye__!}t4(b9>y^ea+YF`FcK|SFC~Fy{lv_WDo>h)zp9+LJ(mPcviSV4E~<* zJJEq30&l~6ccIE*)-?!X3DSh$G4jjWmcrpfIDUYoYElS3)XSa_xk8o(=MMH#oW59}S41f0?@K)n$Ln(^MREp3Cp`-P^$o zOxC+zf3ZIK^6^lH-N>gqTl@RQLUarak!^wh?B~BlI!`y&q$}HZU!iAWS{&0??(s${ z@+><&dh`%o>*73F&5-SAmSZ)u9bbPXId2xl3GAc9k`fFC%SC`2d*(D_C z-Q3)uu$dNL2TXrzx?-S|4maJmZ{J4R0(~!$ki@$t+>mFqs9<#Hdwm(QYV;r=XB6!G z@s?+_?y2b>7DXk}apINOM-KH53~Ylra40F=EYkaU7gcF3`go98!fl#a-WS*Xcf4#g zN0me;OXhx^jh~;)&#|%X*}%;l-_2S35JN*+7z}p%$uC}?4Ycu~ZS_L}Fg-%(VhI5U z>#;U%0rNi#wA1B%D|?##0|WB{|KYBXlhf^5G`L-Dvq`G7Zu$26_cbsv6?Jvu_Os)s zHG@dy^90Pmdxzt_HNWGvA_B;=!AbAQ)r26IYkdfnH zx+oE3^xS~rrUG+&d;7m!VdZ;Psd9maWgG>wjCkP6Xn+y z78a^qr=;RBi8mElZr;49p{aSt%8K>%4f!aPP2km+FJB&FZO@;4c?R+F^WO#I*Sk(d zEiBmYt&S3LaBvhGmzkt)obC*W9O7Cw4I1366PQH_aX8$+gnM9Dq+HPv4~q1@B9TBP!!cN{4@ld{##YhBBoaSWrYH zlrfEbPf(SK-@j|zSBBm=UQ<$1^4q9G8C2P*Ax?|YtPnL#ZeCvUn>S%QJ6?O6b8Ht4 zc7E^}5B&aXd9hTzk8(Lq$n4dTobVY;X5Zb>k_SAsE@QnyDvW{Z&GDG4q;XaLAskBOHRZ?W`(l=QMP5;UDFFb3GS(L62WMUlMJ^;oByH znYne+p|?LGBFUNJ{83f5eG#N|e=wLxu<0O-2p<&c+?i>9u74%jgKS_rSiy?GpXhmoyoZcYYpZ(4Di?xz^L_Og&GO>Oa z2J`y;=1!uNW6H&=lSQ>}#}uUvqHoW5`3tV`c#&eoc{h4pO9z7#9m%wjC7-9mn?p|J zetgzR;kvJ(amC-yj~a@LjiniQmzI_yIB+Qp#>r`n)lPv!&i(KBN{{U9>@J0IX~JN+ zh|seS(3`R{fkal>6bY8Ankn$UB(@?U%X(@E-QrticAn|p&H?!>bd$;j?C}z?Lq0o8 znl%Z61K{AXk6aop?IjH0_+TkPRq*&5>lVSMU%!lC zu(+5Qc8F`>vzcub>Vb<(NvWG^G-ZWh?`Yn=vR`*T09doDQ~V`Sa5HtPQZ{gbjhdPr zJqa?4PfE&U{VgpIW)rl(@8$JbW;XbEj|0jdbzTK1A~nDbBO@b&LG;Yb8X+Mem%`Lv zvziy+{QdoNg#!HjlffpYrly)tBM~9TnzcEdohm6@v5(9Pry2x~*)98~XLqe-Nls2q zF4kH*>M~YHLzCRnBL5sap=%sv$Ybd#nUpDZ833OcIEQN##5;R?^cz*RwR_3+vasCk z#XdUd=aahJ;Qh6+dvysF?Z$bd0Gh+$^5|;2|K-Ss<)KU`@%DrI7LwjIUSWfZ-;yZh)0FV>=E zc@iy>yk#vU8VkRQ6<C*>M~AP#Uu-h!2COb@>8UL|k1f)#g0 zZ(C)O+G3V=>|&CVc%WMQ9x_;|%-32Aq5X|1Q^B`y-muFN>+9=}A8V<;b2PW2AJjL* z5N>VvvC%6sbLG{^hz83asX)LpW-glyZb%D+7OEf!B|tEcxm#ty?(<7E$^Qi@PTJ57*g z_tmRc@GOS36jn^PmacByhb>UZbginjwX|YloX<{+sBcTcrF@-@Y$AH-7OP7k5`CPl5C1`0z=ewdwp+pwR{>Q(yPKM<7 zb5x^KxHOHdtjf{D08g$!8&eJX-E%=~gH6rNDJEqFCnrH5-Tb!L2|lf^I=8%TYFi1! zkh__iUjwQ47JO=B<0d)(g~3$Y71c_yo35KBlMId2IP~3g$pnRvm4H1oG?a!113SQ0 zb;Mzw?N{`-FD)&_hy_DnO&_o{~W6%ArajC)@XAEI&^Y!-h5J2|!_7HSk>RIE;i;r1Z5R}4Y z+%ha=Q42xzjEsa(Tzq`;$B#mVSy`+#&z?NthdSrx*Z>GzhA3Dhu0S4#TXr>BT$&!< z-d$VsU1cXax!;F|7^WJ%Fl1pFE>w~Qa@*$vwr7N&7FKAVl97`qr=>-OoF2y_v~2^{ zZh>uJmGS6&{989uDpEb~D?o&rC*%C|3=ACn{A3MoGqlS3{5GH=#Gss*z#>Vu*qd0k z^MwPNZuBH7(nmxkB~h_RKDh*~qU!_>a5M44ALXZl2RCHr1iW9oP#;JWN=6`(K7SS~ ztNC&dQy*BhIKOT+ny8(!r!i$^VZj1*0?HsP%n%%6U_cEh51j4tB+imSH$&p(*M|_q zs^B+*+aV_-Gx8Mspksoy{`le_?_`|5rY7mm&d$Z!Srr55UD35P+ttfRMkei3Jxs8{ z@$)~pBNl3E2r7P1L`h7+3_*t*4Rhsg*gF$#Y=HcXJgGZ8!*3Em0E{QwgXN>HUXLQa z%3@~yuW2P)6;!9!Y|4~*qrA(O&Hn=_q2X3ilzLr``#3dH!s9FInzZqCAwC`*xwLT6 z64YqOiW;P1*3#mz@p`5?T(i%MI;i`~>Dd4j=82S!66#n^`{Pc^)a`RJaU&CJ^xmYb zr%*T31Jlpo2RI@?h*GXwJUk=-ByTfQj9~YnFp#mv*8scn@bzViodmHqKR^Exq|SZ8 zT|mF=|Nbh8NlfgC7io_Hl#@eLw8r9j@cHS#c`PspuP)MB>kaoQjIpgJrfIN`Pi~9;};3L`Pee zcXh|o^+;J+TNC`!2`uJ2=vD@OjuqH-EH(i2nLeC7w}e3mJO$V7x>iJ7`C9)klttho@_7jP8OtKYq-8cDP72?zJ-f zk;p^(juCiW>pnM&b8tf*Rhl*X@I6LmC%z;iS(rONlO`l0+Gu8qq3hJoplUV9O3UUb}~0{`}<&flAg>Fz~na-(PAT{h;+6tu1nwT)|*2LozSc z)2%T?o#3dAJeyI>l4{S$bP@S zB}LSs@tIq$uO>*!F3iHT7IUi{__H9b9jj3ZdV z)>;u_p*QimS*G{0p?KCKSefAama zAWIQUQSk;JA0No{iv$Ps0ED&Y$)V@C7bsr~l!FHwQ$2sIEe|&5k|du_`~e#F5Y=%O zxwQ0XyFxRCE5EQX&IP2Iy`p&<0R)5v!!E#1I|-H^$UL&Bh(|qK$@)cx42H# z%Xlqa0kfb2^3eRt<5+pO1xq*O5=vyN2r(bu~Z78V&IIlJfJsA`47v zQe0_)fxe%jDtqYk6<+RRQ4YU9JEjqt=mHWcm71Mh$zot*U=UVbF35H3)}0hC&%T5E z^-Ula2^#}XsBXwbL_}PQh>Yam<0B0V4lZjFcN&I@{h)#D9fD8pbM2)vio1j2Qdl?l zmcYsN*d&`OpozFCZz{yN%`{(#VX4h_qR{L{Gpuh=aIo=d0|J3K)M?7he*d0l*&2v% zXzSMlee;=R5WO9lpasYMuFW(K!K<`Fc>Qz&y(A3=>2IXzPlS!oI3+i510$!zbA9%qp-${7SR;f3>|}PfD&Q0 zG_tVZCw?o?*J8V~Og5>MJ>9$YwHgC}`DakYHE7CK{9^CtQDg!_wjKT|Ee45haA&bAEzPdwV{j$p3LS z|A2s$%uLHv@1JO9B^a$k_&|Su`N4ku!2m{2w)*c~B{}KJ@TF{5xXI*EpK|rGJwcjJ za#>;KKRbNtT~=fV-n*is&^~DB2u3$y-Hfj=ue2mr%s^EoyYgGqJ&6Qh(Am>-xhtCL zo{0%#f;wkwYwH_8V&1)@2ZbXZfd>qULzA{0kCPuSv&@ikjRR7uyStm6m$$f|ITzIR zKVYxmz&g3`Q$*FP0o7TZtlytIXx=d+zVuS6BtAY55-4&z*Fh*j4eqYQ$H@H(d zIXRVK1VGKGihBSkK^cYkZKn%hDy2gJ*~2L>e;s@hEjR!SnzzhS06cl4Orhe>*$YTo zra(T`P-3c^2}mV81@QX1K=~Lc(r2r6ojS;=z_U{jhx-i;{`neSA)J|!5$E1<%1A>) zqoJ*>YGm||xvDJ4<|xC#yJO-sS>FtCCtlpGSga?~$qg7U2Ga$vSem*_{rPXF#-m!& z^*4NNYQ;?}v+JIsfB<9AR|VpH40sqlGfCbn!zF2^?V14)C+zjqb1EBt1_Ffs_JaasTmSHLKKeYyT88^PA`XTDm}@QEu~- zep(pCf+&xs{Q`MGR)~nXEYk4$oo+Ktr6%d_N zykL>nN~x8?6|nNrceVHGb7AkQqPz|BhC=JMfK(`k$Bn_$({o|i71Q2&Q4*EL(f@HQ z8k!k_E+04$M|bno6OBIXba^cHUL7Zw7)pKj4nP&=CGm@um6bd|&5Nz^^9lYErY0s) zxw*OcfF}pYZ;!<0fk=`I@vu4z_;4 z_Gsq(aoPbkRQP{46L{OM^Y_C4pIu)FXMQ0U-S-nVbf5K~e*SfirSVVM>!Fbj!?hm;0TEA literal 0 HcmV?d00001 diff --git a/report/bitmaps_test/20231101-155917/Nav_tag_1200px.png b/report/bitmaps_test/20231101-155917/Nav_tag_1200px.png new file mode 100644 index 0000000000000000000000000000000000000000..e9d25cd80ed3379452901b555716f3237dc3ae8b GIT binary patch literal 6850 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 literal 0 HcmV?d00001 diff --git a/report/bitmaps_test/20231101-155917/report.json b/report/bitmaps_test/20231101-155917/report.json new file mode 100644 index 0000000000..0d54abdd19 --- /dev/null +++ b/report/bitmaps_test/20231101-155917/report.json @@ -0,0 +1,197 @@ +{ + "testSuite": "BackstopJS", + "tests": [ + { + "pair": { + "reference": "../bitmaps_reference/Header_tag_1024px.png", + "test": "../bitmaps_test/20231101-155917/Header_tag_1024px.png", + "selector": "header", + "fileName": "Header_tag_1024px.png", + "label": "Header tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Header_tag_1200px.png", + "test": "../bitmaps_test/20231101-155917/Header_tag_1200px.png", + "selector": "header", + "fileName": "Header_tag_1200px.png", + "label": "Header tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Nav_tag_1024px.png", + "test": "../bitmaps_test/20231101-155917/Nav_tag_1024px.png", + "selector": "nav", + "fileName": "Nav_tag_1024px.png", + "label": "Nav tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Nav_tag_1200px.png", + "test": "../bitmaps_test/20231101-155917/Nav_tag_1200px.png", + "selector": "nav", + "fileName": "Nav_tag_1200px.png", + "label": "Nav tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_data-qa_hover_1024px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_data-qa_hover_1024px.png", + "selector": "[data-qa=\"hover\"]", + "fileName": "Link_with_data-qa_hover_1024px.png", + "label": "Link with data-qa_hover", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_data-qa_hover_1200px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_data-qa_hover_1200px.png", + "selector": "[data-qa=\"hover\"]", + "fileName": "Link_with_data-qa_hover_1200px.png", + "label": "Link with data-qa_hover", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_class_is-active_1024px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_class_is-active_1024px.png", + "selector": "a.is-active", + "fileName": "Link_with_class_is-active_1024px.png", + "label": "Link with class_is-active", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_class_is-active_1200px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_class_is-active_1200px.png", + "selector": "a.is-active", + "fileName": "Link_with_class_is-active_1200px.png", + "label": "Link with class_is-active", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + } + ] +} \ No newline at end of file diff --git a/report/engine_scripts/cookies.json b/report/engine_scripts/cookies.json new file mode 100644 index 0000000000..b59400d7e6 --- /dev/null +++ b/report/engine_scripts/cookies.json @@ -0,0 +1,14 @@ +[ + { + "domain": ".www.yourdomain.com", + "path": "/", + "name": "yourCookieName", + "value": "yourCookieValue", + "expirationDate": 1798790400, + "hostOnly": false, + "httpOnly": false, + "secure": false, + "session": false, + "sameSite": "no_restriction" + } +] diff --git a/report/engine_scripts/imageStub.jpg b/report/engine_scripts/imageStub.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3e526b4bbbc74ef5125cb58f7c8849497ef4fa83 GIT binary patch literal 2900 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 literal 0 HcmV?d00001 diff --git a/report/engine_scripts/puppet/clickAndHoverHelper.js b/report/engine_scripts/puppet/clickAndHoverHelper.js new file mode 100644 index 0000000000..c7b0616f1b --- /dev/null +++ b/report/engine_scripts/puppet/clickAndHoverHelper.js @@ -0,0 +1,39 @@ +module.exports = async (page, scenario) => { + var hoverSelector = scenario.hoverSelectors || scenario.hoverSelector; + var clickSelector = scenario.clickSelectors || scenario.clickSelector; + var keyPressSelector = scenario.keyPressSelectors || scenario.keyPressSelector; + var scrollToSelector = scenario.scrollToSelector; + var postInteractionWait = scenario.postInteractionWait; // selector [str] | ms [int] + + if (keyPressSelector) { + for (const keyPressSelectorItem of [].concat(keyPressSelector)) { + await page.waitFor(keyPressSelectorItem.selector); + await page.type(keyPressSelectorItem.selector, keyPressSelectorItem.keyPress); + } + } + + if (hoverSelector) { + for (const hoverSelectorIndex of [].concat(hoverSelector)) { + await page.waitFor(hoverSelectorIndex); + await page.hover(hoverSelectorIndex); + } + } + + if (clickSelector) { + for (const clickSelectorIndex of [].concat(clickSelector)) { + await page.waitFor(clickSelectorIndex); + await page.click(clickSelectorIndex); + } + } + + if (postInteractionWait) { + await page.waitFor(postInteractionWait); + } + + if (scrollToSelector) { + await page.waitFor(scrollToSelector); + await page.evaluate(scrollToSelector => { + document.querySelector(scrollToSelector).scrollIntoView(); + }, scrollToSelector); + } +}; diff --git a/report/engine_scripts/puppet/loadCookies.js b/report/engine_scripts/puppet/loadCookies.js new file mode 100644 index 0000000000..db848a7cc7 --- /dev/null +++ b/report/engine_scripts/puppet/loadCookies.js @@ -0,0 +1,29 @@ +var fs = require('fs'); + +module.exports = async (page, scenario) => { + var cookies = []; + var cookiePath = scenario.cookiePath; + + // READ COOKIES FROM FILE IF EXISTS + if (fs.existsSync(cookiePath)) { + cookies = JSON.parse(fs.readFileSync(cookiePath)); + } + + // MUNGE COOKIE DOMAIN + cookies = cookies.map(cookie => { + cookie.url = 'https://' + cookie.domain; + delete cookie.domain; + return cookie; + }); + + // SET COOKIES + const setCookies = async () => { + return Promise.all( + cookies.map(async (cookie) => { + await page.setCookie(cookie); + }) + ); + }; + await setCookies(); + console.log('Cookie state restored with:', JSON.stringify(cookies, null, 2)); +}; diff --git a/report/engine_scripts/puppet/onBefore.js b/report/engine_scripts/puppet/onBefore.js new file mode 100644 index 0000000000..a1c374c371 --- /dev/null +++ b/report/engine_scripts/puppet/onBefore.js @@ -0,0 +1,3 @@ +module.exports = async (page, scenario, vp) => { + await require('./loadCookies')(page, scenario); +}; diff --git a/report/engine_scripts/puppet/onReady.js b/report/engine_scripts/puppet/onReady.js new file mode 100644 index 0000000000..517c0e41b6 --- /dev/null +++ b/report/engine_scripts/puppet/onReady.js @@ -0,0 +1,6 @@ +module.exports = async (page, scenario, vp) => { + console.log('SCENARIO > ' + scenario.label); + await require('./clickAndHoverHelper')(page, scenario); + + // add more ready handlers here... +}; diff --git a/report/html_report/a96f14595379b7c348d66e115ec65a93.png b/report/html_report/a96f14595379b7c348d66e115ec65a93.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5adc37b2a8af0688dd640f6e7b759c2b0d31a9 GIT binary patch literal 12777 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 literal 0 HcmV?d00001 diff --git a/report/html_report/assets/fonts/Lato-Bold.ttf b/report/html_report/assets/fonts/Lato-Bold.ttf new file mode 100755 index 0000000000000000000000000000000000000000..74343694e2b2114272f38b1124813b972cb592e5 GIT binary patch literal 121788 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 literal 0 HcmV?d00001 diff --git a/report/html_report/assets/fonts/Lato-Regular.ttf b/report/html_report/assets/fonts/Lato-Regular.ttf new file mode 100755 index 0000000000000000000000000000000000000000..04ea8efb1367727b081dea87e63818be0a4d02f0 GIT binary patch literal 120196 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�r(aJ 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 d3)lz{Xfc9M412p literal 0 HcmV?d00001 diff --git a/report/html_report/assets/fonts/lato-bold-webfont.woff b/report/html_report/assets/fonts/lato-bold-webfont.woff new file mode 100755 index 0000000000000000000000000000000000000000..d02221df5b1fe1ee13eeb0988408ef43a795d786 GIT binary patch literal 33272 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 literal 0 HcmV?d00001 diff --git a/report/html_report/assets/fonts/lato-bold-webfont.woff2 b/report/html_report/assets/fonts/lato-bold-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..d330650bc325af7126b1411b2bfaee8747826c1f GIT binary patch literal 26248 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 literal 0 HcmV?d00001 diff --git a/report/html_report/assets/fonts/lato-regular-webfont.woff2 b/report/html_report/assets/fonts/lato-regular-webfont.woff2 new file mode 100755 index 0000000000000000000000000000000000000000..0e58138a07e7dfadcd6bb92348ff09268098228c GIT binary patch literal 24992 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 literal 0 HcmV?d00001 diff --git a/report/html_report/b815e28b1e230cff6e9d7b749edcd562.png b/report/html_report/b815e28b1e230cff6e9d7b749edcd562.png new file mode 100644 index 0000000000000000000000000000000000000000..3c5adc37b2a8af0688dd640f6e7b759c2b0d31a9 GIT binary patch literal 12777 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 literal 0 HcmV?d00001 diff --git a/report/html_report/config.js b/report/html_report/config.js new file mode 100644 index 0000000000..4c88fde0d0 --- /dev/null +++ b/report/html_report/config.js @@ -0,0 +1,197 @@ +report({ + "testSuite": "BackstopJS", + "tests": [ + { + "pair": { + "reference": "../bitmaps_reference/Header_tag_1024px.png", + "test": "../bitmaps_test/20231101-155917/Header_tag_1024px.png", + "selector": "header", + "fileName": "Header_tag_1024px.png", + "label": "Header tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Header_tag_1200px.png", + "test": "../bitmaps_test/20231101-155917/Header_tag_1200px.png", + "selector": "header", + "fileName": "Header_tag_1200px.png", + "label": "Header tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Nav_tag_1024px.png", + "test": "../bitmaps_test/20231101-155917/Nav_tag_1024px.png", + "selector": "nav", + "fileName": "Nav_tag_1024px.png", + "label": "Nav tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Nav_tag_1200px.png", + "test": "../bitmaps_test/20231101-155917/Nav_tag_1200px.png", + "selector": "nav", + "fileName": "Nav_tag_1200px.png", + "label": "Nav tag", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_data-qa_hover_1024px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_data-qa_hover_1024px.png", + "selector": "[data-qa=\"hover\"]", + "fileName": "Link_with_data-qa_hover_1024px.png", + "label": "Link with data-qa_hover", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_data-qa_hover_1200px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_data-qa_hover_1200px.png", + "selector": "[data-qa=\"hover\"]", + "fileName": "Link_with_data-qa_hover_1200px.png", + "label": "Link with data-qa_hover", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_class_is-active_1024px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_class_is-active_1024px.png", + "selector": "a.is-active", + "fileName": "Link_with_class_is-active_1024px.png", + "label": "Link with class_is-active", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1024px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + }, + { + "pair": { + "reference": "../bitmaps_reference/Link_with_class_is-active_1200px.png", + "test": "../bitmaps_test/20231101-155917/Link_with_class_is-active_1200px.png", + "selector": "a.is-active", + "fileName": "Link_with_class_is-active_1200px.png", + "label": "Link with class_is-active", + "requireSameDimensions": false, + "misMatchThreshold": 1, + "url": "http://localhost:3001/index.html", + "referenceUrl": "https://mate-academy.github.io/layout_solutions/moyo-header/", + "expect": 0, + "viewportLabel": "1200px", + "diff": { + "isSameDimensions": true, + "dimensionDifference": { + "width": 0, + "height": 0 + }, + "misMatchPercentage": "0.00" + } + }, + "status": "pass" + } + ] +}); \ No newline at end of file diff --git a/report/html_report/diff.js b/report/html_report/diff.js new file mode 100644 index 0000000000..0b824f1237 --- /dev/null +++ b/report/html_report/diff.js @@ -0,0 +1,1843 @@ +/*! + + diff v3.5.0 + +Software License Agreement (BSD License) + +Copyright (c) 2009-2015, Kevin Decker + +All rights reserved. + +Redistribution and use of this software in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above + copyright notice, this list of conditions and the + following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the + following disclaimer in the documentation and/or other + materials provided with the distribution. + +* Neither the name of Kevin Decker nor the names of its + contributors may be used to endorse or promote products + derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +@license +*/ +(function webpackUniversalModuleDefinition(root, factory) { + if(typeof exports === 'object' && typeof module === 'object') + module.exports = factory(); + else if(typeof define === 'function' && define.amd) + define([], factory); + else if(typeof exports === 'object') + exports["JsDiff"] = factory(); + else + root["JsDiff"] = factory(); +})(this, function() { +return /******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; + +/******/ // The require function +/******/ function __webpack_require__(moduleId) { + +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) +/******/ return installedModules[moduleId].exports; + +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ exports: {}, +/******/ id: moduleId, +/******/ loaded: false +/******/ }; + +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); + +/******/ // Flag the module as loaded +/******/ module.loaded = true; + +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } + + +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; + +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; + +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; + +/******/ // Load entry module and return exports +/******/ return __webpack_require__(0); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.merge = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffArrays = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined; + + /*istanbul ignore end*/var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + /*istanbul ignore end*/var /*istanbul ignore start*/_character = __webpack_require__(2) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_word = __webpack_require__(3) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_sentence = __webpack_require__(6) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_css = __webpack_require__(7) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_json = __webpack_require__(8) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_array = __webpack_require__(9) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_apply = __webpack_require__(10) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_merge = __webpack_require__(13) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_dmp = __webpack_require__(16) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_xml = __webpack_require__(17) /*istanbul ignore end*/; + + /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /* See LICENSE file for terms of use */ + + /* + * Text diff implementation. + * + * This library supports the following APIS: + * JsDiff.diffChars: Character by character diff + * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace + * JsDiff.diffLines: Line based diff + * + * JsDiff.diffCss: Diff targeted at CSS content + * + * These methods are based on the implementation proposed in + * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986). + * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927 + */ + exports. /*istanbul ignore end*/Diff = _base2['default']; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffArrays = _array.diffArrays; + /*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches; + /*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = _merge.merge; + /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP; + /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML; + /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize; + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJEaWZmIiwiZGlmZkNoYXJzIiwiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImRpZmZTZW50ZW5jZXMiLCJkaWZmQ3NzIiwiZGlmZkpzb24iLCJkaWZmQXJyYXlzIiwic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwiYXBwbHlQYXRjaCIsImFwcGx5UGF0Y2hlcyIsInBhcnNlUGF0Y2giLCJtZXJnZSIsImNvbnZlcnRDaGFuZ2VzVG9ETVAiLCJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2Fub25pY2FsaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozt1QkFnQkE7Ozs7dUJBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFqQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O2dDQWtDRUEsSTt5REFFQUMsUzt5REFDQUMsUzt5REFDQUMsa0I7eURBQ0FDLFM7eURBQ0FDLGdCO3lEQUNBQyxhO3lEQUVBQyxPO3lEQUNBQyxRO3lEQUVBQyxVO3lEQUVBQyxlO3lEQUNBQyxtQjt5REFDQUMsVzt5REFDQUMsVTt5REFDQUMsWTt5REFDQUMsVTt5REFDQUMsSzt5REFDQUMsbUI7eURBQ0FDLG1CO3lEQUNBQyxZIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU2VlIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMgb2YgdXNlICovXG5cbi8qXG4gKiBUZXh0IGRpZmYgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQVBJUzpcbiAqIEpzRGlmZi5kaWZmQ2hhcnM6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgZGlmZlxuICogSnNEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBKc0RpZmYuZGlmZkxpbmVzOiBMaW5lIGJhc2VkIGRpZmZcbiAqXG4gKiBKc0RpZmYuZGlmZkNzczogRGlmZiB0YXJnZXRlZCBhdCBDU1MgY29udGVudFxuICpcbiAqIFRoZXNlIG1ldGhvZHMgYXJlIGJhc2VkIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm9wb3NlZCBpblxuICogXCJBbiBPKE5EKSBEaWZmZXJlbmNlIEFsZ29yaXRobSBhbmQgaXRzIFZhcmlhdGlvbnNcIiAoTXllcnMsIDE5ODYpLlxuICogaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS40LjY5MjdcbiAqL1xuaW1wb3J0IERpZmYgZnJvbSAnLi9kaWZmL2Jhc2UnO1xuaW1wb3J0IHtkaWZmQ2hhcnN9IGZyb20gJy4vZGlmZi9jaGFyYWN0ZXInO1xuaW1wb3J0IHtkaWZmV29yZHMsIGRpZmZXb3Jkc1dpdGhTcGFjZX0gZnJvbSAnLi9kaWZmL3dvcmQnO1xuaW1wb3J0IHtkaWZmTGluZXMsIGRpZmZUcmltbWVkTGluZXN9IGZyb20gJy4vZGlmZi9saW5lJztcbmltcG9ydCB7ZGlmZlNlbnRlbmNlc30gZnJvbSAnLi9kaWZmL3NlbnRlbmNlJztcblxuaW1wb3J0IHtkaWZmQ3NzfSBmcm9tICcuL2RpZmYvY3NzJztcbmltcG9ydCB7ZGlmZkpzb24sIGNhbm9uaWNhbGl6ZX0gZnJvbSAnLi9kaWZmL2pzb24nO1xuXG5pbXBvcnQge2RpZmZBcnJheXN9IGZyb20gJy4vZGlmZi9hcnJheSc7XG5cbmltcG9ydCB7YXBwbHlQYXRjaCwgYXBwbHlQYXRjaGVzfSBmcm9tICcuL3BhdGNoL2FwcGx5JztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXRjaC9wYXJzZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICcuL3BhdGNoL21lcmdlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgZGlmZkFycmF5cyxcblxuICBzdHJ1Y3R1cmVkUGF0Y2gsXG4gIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsXG4gIGNyZWF0ZVBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iXX0= + + +/***/ }), +/* 1 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports['default'] = /*istanbul ignore end*/Diff; + function Diff() {} + + Diff.prototype = { + /*istanbul ignore start*/ /*istanbul ignore end*/diff: function diff(oldString, newString) { + /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + var callback = options.callback; + if (typeof options === 'function') { + callback = options; + options = {}; + } + this.options = options; + + var self = this; + + function done(value) { + if (callback) { + setTimeout(function () { + callback(undefined, value); + }, 0); + return true; + } else { + return value; + } + } + + // Allow subclasses to massage the input prior to running + oldString = this.castInput(oldString); + newString = this.castInput(newString); + + oldString = this.removeEmpty(this.tokenize(oldString)); + newString = this.removeEmpty(this.tokenize(newString)); + + var newLen = newString.length, + oldLen = oldString.length; + var editLength = 1; + var maxEditLength = newLen + oldLen; + var bestPath = [{ newPos: -1, components: [] }]; + + // Seed editLength = 0, i.e. the content starts with the same values + var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0); + if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) { + // Identity per the equality and tokenizer + return done([{ value: this.join(newString), count: newString.length }]); + } + + // Main worker method. checks all permutations of a given edit length for acceptance. + function execEditLength() { + for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) { + var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/; + var addPath = bestPath[diagonalPath - 1], + removePath = bestPath[diagonalPath + 1], + _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath; + if (addPath) { + // No one else is going to attempt to use this value, clear it + bestPath[diagonalPath - 1] = undefined; + } + + var canAdd = addPath && addPath.newPos + 1 < newLen, + canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen; + if (!canAdd && !canRemove) { + // If this path is a terminal then prune + bestPath[diagonalPath] = undefined; + continue; + } + + // Select the diagonal that we want to branch from. We select the prior + // path whose position in the new string is the farthest from the origin + // and does not pass the bounds of the diff graph + if (!canAdd || canRemove && addPath.newPos < removePath.newPos) { + basePath = clonePath(removePath); + self.pushComponent(basePath.components, undefined, true); + } else { + basePath = addPath; // No need to clone, we've pulled it from the list + basePath.newPos++; + self.pushComponent(basePath.components, true, undefined); + } + + _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath); + + // If we have hit the end of both strings, then we are done + if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) { + return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken)); + } else { + // Otherwise track this path as a potential candidate and continue. + bestPath[diagonalPath] = basePath; + } + } + + editLength++; + } + + // Performs the length of edit iteration. Is a bit fugly as this has to support the + // sync and async mode which is never fun. Loops over execEditLength until a value + // is produced. + if (callback) { + (function exec() { + setTimeout(function () { + // This should not happen, but we want to be safe. + /* istanbul ignore next */ + if (editLength > maxEditLength) { + return callback(); + } + + if (!execEditLength()) { + exec(); + } + }, 0); + })(); + } else { + while (editLength <= maxEditLength) { + var ret = execEditLength(); + if (ret) { + return ret; + } + } + } + }, + /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) { + var last = components[components.length - 1]; + if (last && last.added === added && last.removed === removed) { + // We need to clone here as the component clone operation is just + // as shallow array clone + components[components.length - 1] = { count: last.count + 1, added: added, removed: removed }; + } else { + components.push({ count: 1, added: added, removed: removed }); + } + }, + /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) { + var newLen = newString.length, + oldLen = oldString.length, + newPos = basePath.newPos, + oldPos = newPos - diagonalPath, + commonCount = 0; + while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) { + newPos++; + oldPos++; + commonCount++; + } + + if (commonCount) { + basePath.components.push({ count: commonCount }); + } + + basePath.newPos = newPos; + return oldPos; + }, + /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) { + if (this.options.comparator) { + return this.options.comparator(left, right); + } else { + return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase(); + } + }, + /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) { + var ret = []; + for (var i = 0; i < array.length; i++) { + if (array[i]) { + ret.push(array[i]); + } + } + return ret; + }, + /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) { + return value; + }, + /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) { + return value.split(''); + }, + /*istanbul ignore start*/ /*istanbul ignore end*/join: function join(chars) { + return chars.join(''); + } + }; + + function buildValues(diff, components, newString, oldString, useLongestToken) { + var componentPos = 0, + componentLen = components.length, + newPos = 0, + oldPos = 0; + + for (; componentPos < componentLen; componentPos++) { + var component = components[componentPos]; + if (!component.removed) { + if (!component.added && useLongestToken) { + var value = newString.slice(newPos, newPos + component.count); + value = value.map(function (value, i) { + var oldValue = oldString[oldPos + i]; + return oldValue.length > value.length ? oldValue : value; + }); + + component.value = diff.join(value); + } else { + component.value = diff.join(newString.slice(newPos, newPos + component.count)); + } + newPos += component.count; + + // Common case + if (!component.added) { + oldPos += component.count; + } + } else { + component.value = diff.join(oldString.slice(oldPos, oldPos + component.count)); + oldPos += component.count; + + // Reverse add and remove so removes are output first to match common convention + // The diffing algorithm is tied to add then remove output and this is the simplest + // route to get the desired output with minimal overhead. + if (componentPos && components[componentPos - 1].added) { + var tmp = components[componentPos - 1]; + components[componentPos - 1] = components[componentPos]; + components[componentPos] = tmp; + } + } + } + + // Special case handle for when one terminal is ignored (i.e. whitespace). + // For this case we merge the terminal into the prior string and drop the change. + // This is only available for string mode. + var lastComponent = components[componentLen - 1]; + if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) { + components[componentLen - 2].value += lastComponent.value; + components.pop(); + } + + return components; + } + + function clonePath(path) { + return { newPos: path.newPos, components: path.components.slice(0) }; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsImJlc3RQYXRoIiwibmV3UG9zIiwiY29tcG9uZW50cyIsIm9sZFBvcyIsImV4dHJhY3RDb21tb24iLCJqb2luIiwiY291bnQiLCJleGVjRWRpdExlbmd0aCIsImRpYWdvbmFsUGF0aCIsImJhc2VQYXRoIiwiYWRkUGF0aCIsInJlbW92ZVBhdGgiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjbG9uZVBhdGgiLCJwdXNoQ29tcG9uZW50IiwiYnVpbGRWYWx1ZXMiLCJ1c2VMb25nZXN0VG9rZW4iLCJleGVjIiwicmV0IiwiYWRkZWQiLCJyZW1vdmVkIiwibGFzdCIsInB1c2giLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJzcGxpdCIsImNoYXJzIiwiY29tcG9uZW50UG9zIiwiY29tcG9uZW50TGVuIiwiY29tcG9uZW50Iiwic2xpY2UiLCJtYXAiLCJvbGRWYWx1ZSIsInRtcCIsImxhc3RDb21wb25lbnQiLCJwb3AiLCJwYXRoIl0sIm1hcHBpbmdzIjoiOzs7NENBQXdCQSxJO0FBQVQsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsS0FBS0MsU0FBTCxHQUFpQjtBQUFBLG1EQUNmQyxJQURlLGdCQUNWQyxTQURVLEVBQ0NDLFNBREQsRUFDMEI7QUFBQSx3REFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUN2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RUFBd0JBLFNBQVNrQyxVQUFVL0IsS0FBM0MsQ0FBVixDQUFsQjtBQUNBSCxnQkFBVWtDLFVBQVUvQixLQUFwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFJNkIsZ0JBQWdCakMsV0FBV2lDLGVBQWUsQ0FBMUIsRUFBNkJmLEtBQWpELEVBQXdEO0FBQ3RELFlBQUlxQixNQUFNdkMsV0FBV2lDLGVBQWUsQ0FBMUIsQ0FBVjtBQUNBakMsbUJBQVdpQyxlQUFlLENBQTFCLElBQStCakMsV0FBV2lDLFlBQVgsQ0FBL0I7QUFDQWpDLG1CQUFXaUMsWUFBWCxJQUEyQk0sR0FBM0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsTUFBSUMsZ0JBQWdCeEMsV0FBV2tDLGVBQWUsQ0FBMUIsQ0FBcEI7QUFDQSxNQUFJQSxlQUFlLENBQWYsSUFDRyxPQUFPTSxjQUFjckQsS0FBckIsS0FBK0IsUUFEbEMsS0FFSXFELGNBQWN0QixLQUFkLElBQXVCc0IsY0FBY3JCLE9BRnpDLEtBR0d2QyxLQUFLMkMsTUFBTCxDQUFZLEVBQVosRUFBZ0JpQixjQUFjckQsS0FBOUIsQ0FIUCxFQUc2QztBQUMzQ2EsZUFBV2tDLGVBQWUsQ0FBMUIsRUFBNkIvQyxLQUE3QixJQUFzQ3FELGNBQWNyRCxLQUFwRDtBQUNBYSxlQUFXeUMsR0FBWDtBQUNEOztBQUVELFNBQU96QyxVQUFQO0FBQ0Q7O0FBRUQsU0FBU1ksU0FBVCxDQUFtQjhCLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sRUFBRTNDLFFBQVEyQyxLQUFLM0MsTUFBZixFQUF1QkMsWUFBWTBDLEtBQUsxQyxVQUFMLENBQWdCb0MsS0FBaEIsQ0FBc0IsQ0FBdEIsQ0FBbkMsRUFBUDtBQUNEIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaWZmKCkge31cblxuRGlmZi5wcm90b3R5cGUgPSB7XG4gIGRpZmYob2xkU3RyaW5nLCBuZXdTdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2sodW5kZWZpbmVkLCB2YWx1ZSk7IH0sIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIHRvIG1hc3NhZ2UgdGhlIGlucHV0IHByaW9yIHRvIHJ1bm5pbmdcbiAgICBvbGRTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChvbGRTdHJpbmcpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMuY2FzdElucHV0KG5ld1N0cmluZyk7XG5cbiAgICBvbGRTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUob2xkU3RyaW5nKSk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG5ld1N0cmluZykpO1xuXG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGg7XG4gICAgbGV0IGVkaXRMZW5ndGggPSAxO1xuICAgIGxldCBtYXhFZGl0TGVuZ3RoID0gbmV3TGVuICsgb2xkTGVuO1xuICAgIGxldCBiZXN0UGF0aCA9IFt7IG5ld1BvczogLTEsIGNvbXBvbmVudHM6IFtdIH1dO1xuXG4gICAgLy8gU2VlZCBlZGl0TGVuZ3RoID0gMCwgaS5lLiB0aGUgY29udGVudCBzdGFydHMgd2l0aCB0aGUgc2FtZSB2YWx1ZXNcbiAgICBsZXQgb2xkUG9zID0gdGhpcy5leHRyYWN0Q29tbW9uKGJlc3RQYXRoWzBdLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgMCk7XG4gICAgaWYgKGJlc3RQYXRoWzBdLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAvLyBJZGVudGl0eSBwZXIgdGhlIGVxdWFsaXR5IGFuZCB0b2tlbml6ZXJcbiAgICAgIHJldHVybiBkb25lKFt7dmFsdWU6IHRoaXMuam9pbihuZXdTdHJpbmcpLCBjb3VudDogbmV3U3RyaW5nLmxlbmd0aH1dKTtcbiAgICB9XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKGxldCBkaWFnb25hbFBhdGggPSAtMSAqIGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCA8PSBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggKz0gMikge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sXG4gICAgICAgICAgICBvbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgIGlmIChhZGRQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbixcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQb3MgJiYgb2xkUG9zIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICBpZiAoIWNhbkFkZCB8fCAoY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpKSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoOyAgIC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gYmUgc2FmZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodFxuICAgICAgICB8fCAodGhpcy5vcHRpb25zLmlnbm9yZUNhc2UgJiYgbGVmdC50b0xvd2VyQ2FzZSgpID09PSByaWdodC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9LFxuICBqb2luKGNoYXJzKSB7XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4odmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgfVxuICAgICAgbmV3UG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gQ29tbW9uIGNhc2VcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkKSB7XG4gICAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihvbGRTdHJpbmcuc2xpY2Uob2xkUG9zLCBvbGRQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkIChpLmUuIHdoaXRlc3BhY2UpLlxuICAvLyBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZSB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgLy8gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBmb3Igc3RyaW5nIG1vZGUuXG4gIGxldCBsYXN0Q29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAxXTtcbiAgaWYgKGNvbXBvbmVudExlbiA+IDFcbiAgICAgICYmIHR5cGVvZiBsYXN0Q29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iXX0= + + +/***/ }), +/* 2 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.characterDiff = undefined; + exports. /*istanbul ignore end*/diffChars = diffChars; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + function diffChars(oldStr, newStr, options) { + return characterDiff.diff(oldStr, newStr, options); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJkaWZmQ2hhcnMiLCJjaGFyYWN0ZXJEaWZmIiwib2xkU3RyIiwibmV3U3RyIiwib3B0aW9ucyIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBR2dCQSxTLEdBQUFBLFM7O0FBSGhCOzs7Ozs7dUJBRU8sSUFBTUMseUZBQWdCLHdFQUF0QjtBQUNBLFNBQVNELFNBQVQsQ0FBbUJFLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsT0FBbkMsRUFBNEM7QUFBRSxTQUFPSCxjQUFjSSxJQUFkLENBQW1CSCxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLE9BQW5DLENBQVA7QUFBcUQiLCJmaWxlIjoiY2hhcmFjdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19 + + +/***/ }), +/* 3 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.wordDiff = undefined; + exports. /*istanbul ignore end*/diffWords = diffWords; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/; + + /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/ // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode + // + // Ranges and exceptions: + // Latin-1 Supplement, 0080–00FF + // - U+00D7 × Multiplication sign + // - U+00F7 ÷ Division sign + // Latin Extended-A, 0100–017F + // Latin Extended-B, 0180–024F + // IPA Extensions, 0250–02AF + // Spacing Modifier Letters, 02B0–02FF + // - U+02C7 ˇ ˇ Caron + // - U+02D8 ˘ ˘ Breve + // - U+02D9 ˙ ˙ Dot Above + // - U+02DA ˚ ˚ Ring Above + // - U+02DB ˛ ˛ Ogonek + // - U+02DC ˜ ˜ Small Tilde + // - U+02DD ˝ ˝ Double Acute Accent + // Latin Extended Additional, 1E00–1EFF + var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/; + + var reWhitespace = /\S/; + + var wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + wordDiff.equals = function (left, right) { + if (this.options.ignoreCase) { + left = left.toLowerCase(); + right = right.toLowerCase(); + } + return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right); + }; + wordDiff.tokenize = function (value) { + var tokens = value.split(/(\s+|\b)/); + + // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set. + for (var i = 0; i < tokens.length - 1; i++) { + // If we have an empty string in the next field and we have only word chars before and after, merge + if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) { + tokens[i] += tokens[i + 2]; + tokens.splice(i + 1, 2); + i--; + } + } + + return tokens; + }; + + function diffWords(oldStr, newStr, options) { + options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(options, { ignoreWhitespace: true }); + return wordDiff.diff(oldStr, newStr, options); + } + + function diffWordsWithSpace(oldStr, newStr, options) { + return wordDiff.diff(oldStr, newStr, options); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsIm9wdGlvbnMiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJpZ25vcmVXaGl0ZXNwYWNlIiwidGVzdCIsInRva2VuaXplIiwidmFsdWUiLCJ0b2tlbnMiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzcGxpY2UiLCJvbGRTdHIiLCJuZXdTdHIiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7O2dDQW1EZ0JBLFMsR0FBQUEsUzt5REFLQUMsa0IsR0FBQUEsa0I7O0FBeERoQjs7Ozt1QkFDQTs7Ozt3QkFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxvQkFBb0IsK0RBQTFCOztBQUVBLElBQU1DLGVBQWUsSUFBckI7O0FBRU8sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1BBLFNBQVNDLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsV0FBT0EsS0FBS0ksV0FBTCxFQUFQO0FBQ0FILFlBQVFBLE1BQU1HLFdBQU4sRUFBUjtBQUNEO0FBQ0QsU0FBT0osU0FBU0MsS0FBVCxJQUFtQixLQUFLQyxPQUFMLENBQWFHLGdCQUFiLElBQWlDLENBQUNSLGFBQWFTLElBQWIsQ0FBa0JOLElBQWxCLENBQWxDLElBQTZELENBQUNILGFBQWFTLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDtBQU9BSCxTQUFTUyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsU0FBU0QsTUFBTUUsS0FBTixDQUFZLFVBQVosQ0FBYjs7QUFFQTtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixPQUFPRyxNQUFQLEdBQWdCLENBQXBDLEVBQXVDRCxHQUF2QyxFQUE0QztBQUMxQztBQUNBLFFBQUksQ0FBQ0YsT0FBT0UsSUFBSSxDQUFYLENBQUQsSUFBa0JGLE9BQU9FLElBQUksQ0FBWCxDQUFsQixJQUNLZixrQkFBa0JVLElBQWxCLENBQXVCRyxPQUFPRSxDQUFQLENBQXZCLENBREwsSUFFS2Ysa0JBQWtCVSxJQUFsQixDQUF1QkcsT0FBT0UsSUFBSSxDQUFYLENBQXZCLENBRlQsRUFFZ0Q7QUFDOUNGLGFBQU9FLENBQVAsS0FBYUYsT0FBT0UsSUFBSSxDQUFYLENBQWI7QUFDQUYsYUFBT0ksTUFBUCxDQUFjRixJQUFJLENBQWxCLEVBQXFCLENBQXJCO0FBQ0FBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FoQkQ7O0FBa0JPLFNBQVNmLFNBQVQsQ0FBbUJvQixNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNiLE9BQW5DLEVBQTRDO0FBQ2pEQSxZQUFVLDhFQUFnQkEsT0FBaEIsRUFBeUIsRUFBQ0csa0JBQWtCLElBQW5CLEVBQXpCLENBQVY7QUFDQSxTQUFPUCxTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEOztBQUVNLFNBQVNQLGtCQUFULENBQTRCbUIsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDYixPQUE1QyxFQUFxRDtBQUMxRCxTQUFPSixTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEIiwiZmlsZSI6IndvcmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODDigJMwMEZGXG4vLyAgLSBVKzAwRDcgIMOXIE11bHRpcGxpY2F0aW9uIHNpZ25cbi8vICAtIFUrMDBGNyAgw7cgRGl2aXNpb24gc2lnblxuLy8gTGF0aW4gRXh0ZW5kZWQtQSwgMDEwMOKAkzAxN0Zcbi8vIExhdGluIEV4dGVuZGVkLUIsIDAxODDigJMwMjRGXG4vLyBJUEEgRXh0ZW5zaW9ucywgMDI1MOKAkzAyQUZcbi8vIFNwYWNpbmcgTW9kaWZpZXIgTGV0dGVycywgMDJCMOKAkzAyRkZcbi8vICAtIFUrMDJDNyAgy4cgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICDLmCAmIzcyODsgIEJyZXZlXG4vLyAgLSBVKzAyRDkgIMuZICYjNzI5OyAgRG90IEFib3ZlXG4vLyAgLSBVKzAyREEgIMuaICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICDLmyAmIzczMTsgIE9nb25la1xuLy8gIC0gVSswMkRDICDLnCAmIzczMjsgIFNtYWxsIFRpbGRlXG4vLyAgLSBVKzAyREQgIMudICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMOKAkzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlKSB7XG4gICAgbGVmdCA9IGxlZnQudG9Mb3dlckNhc2UoKTtcbiAgICByaWdodCA9IHJpZ2h0LnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhcXHMrfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0= + + +/***/ }), +/* 4 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports. /*istanbul ignore end*/generateOptions = generateOptions; + function generateOptions(options, defaults) { + if (typeof options === 'function') { + defaults.callback = options; + } else if (options) { + for (var name in options) { + /* istanbul ignore else */ + if (options.hasOwnProperty(name)) { + defaults[name] = options[name]; + } + } + } + return defaults; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsZSxHQUFBQSxlO0FBQVQsU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsYUFBU0MsUUFBVCxHQUFvQkYsT0FBcEI7QUFDRCxHQUZELE1BRU8sSUFBSUEsT0FBSixFQUFhO0FBQ2xCLFNBQUssSUFBSUcsSUFBVCxJQUFpQkgsT0FBakIsRUFBMEI7QUFDeEI7QUFDQSxVQUFJQSxRQUFRSSxjQUFSLENBQXVCRCxJQUF2QixDQUFKLEVBQWtDO0FBQ2hDRixpQkFBU0UsSUFBVCxJQUFpQkgsUUFBUUcsSUFBUixDQUFqQjtBQUNEO0FBQ0Y7QUFDRjtBQUNELFNBQU9GLFFBQVA7QUFDRCIsImZpbGUiOiJwYXJhbXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0= + + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.lineDiff = undefined; + exports. /*istanbul ignore end*/diffLines = diffLines; + /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/; + + /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + lineDiff.tokenize = function (value) { + var retLines = [], + linesAndNewlines = value.split(/(\n|\r\n)/); + + // Ignore the final empty token that occurs if the string ends with a new line + if (!linesAndNewlines[linesAndNewlines.length - 1]) { + linesAndNewlines.pop(); + } + + // Merge the content and line separators into single tokens + for (var i = 0; i < linesAndNewlines.length; i++) { + var line = linesAndNewlines[i]; + + if (i % 2 && !this.options.newlineIsToken) { + retLines[retLines.length - 1] += line; + } else { + if (this.options.ignoreWhitespace) { + line = line.trim(); + } + retLines.push(line); + } + } + + return retLines; + }; + + function diffLines(oldStr, newStr, callback) { + return lineDiff.diff(oldStr, newStr, callback); + } + function diffTrimmedLines(oldStr, newStr, callback) { + var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true }); + return lineDiff.diff(oldStr, newStr, options); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImxpbmVEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBOEJnQkEsUyxHQUFBQSxTO3lEQUNBQyxnQixHQUFBQSxnQjs7QUEvQmhCOzs7O3VCQUNBOzs7O3VCQUVPLElBQU1DLCtFQUFXLHdFQUFqQjtBQUNQQSxTQUFTQyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsV0FBVyxFQUFmO0FBQUEsTUFDSUMsbUJBQW1CRixNQUFNRyxLQUFOLENBQVksV0FBWixDQUR2Qjs7QUFHQTtBQUNBLE1BQUksQ0FBQ0QsaUJBQWlCQSxpQkFBaUJFLE1BQWpCLEdBQTBCLENBQTNDLENBQUwsRUFBb0Q7QUFDbERGLHFCQUFpQkcsR0FBakI7QUFDRDs7QUFFRDtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSixpQkFBaUJFLE1BQXJDLEVBQTZDRSxHQUE3QyxFQUFrRDtBQUNoRCxRQUFJQyxPQUFPTCxpQkFBaUJJLENBQWpCLENBQVg7O0FBRUEsUUFBSUEsSUFBSSxDQUFKLElBQVMsQ0FBQyxLQUFLRSxPQUFMLENBQWFDLGNBQTNCLEVBQTJDO0FBQ3pDUixlQUFTQSxTQUFTRyxNQUFULEdBQWtCLENBQTNCLEtBQWlDRyxJQUFqQztBQUNELEtBRkQsTUFFTztBQUNMLFVBQUksS0FBS0MsT0FBTCxDQUFhRSxnQkFBakIsRUFBbUM7QUFDakNILGVBQU9BLEtBQUtJLElBQUwsRUFBUDtBQUNEO0FBQ0RWLGVBQVNXLElBQVQsQ0FBY0wsSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBeEJEOztBQTBCTyxTQUFTTCxTQUFULENBQW1CaUIsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxRQUFuQyxFQUE2QztBQUFFLFNBQU9qQixTQUFTa0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDtBQUNoRyxTQUFTbEIsZ0JBQVQsQ0FBMEJnQixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlQLFVBQVUsOEVBQWdCTyxRQUFoQixFQUEwQixFQUFDTCxrQkFBa0IsSUFBbkIsRUFBMUIsQ0FBZDtBQUNBLFNBQU9aLFNBQVNrQixJQUFULENBQWNILE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCTixPQUE5QixDQUFQO0FBQ0QiLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ== + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.sentenceDiff = undefined; + exports. /*istanbul ignore end*/diffSentences = diffSentences; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + sentenceDiff.tokenize = function (value) { + return value.split(/(\S.+?[.!?])(?=\s+|$)/); + }; + + function diffSentences(oldStr, newStr, callback) { + return sentenceDiff.diff(oldStr, newStr, callback); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbImRpZmZTZW50ZW5jZXMiLCJzZW50ZW5jZURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBUWdCQSxhLEdBQUFBLGE7O0FBUmhCOzs7Ozs7dUJBR08sSUFBTUMsdUZBQWUsd0VBQXJCO0FBQ1BBLGFBQWFDLFFBQWIsR0FBd0IsVUFBU0MsS0FBVCxFQUFnQjtBQUN0QyxTQUFPQSxNQUFNQyxLQUFOLENBQVksdUJBQVosQ0FBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0osYUFBVCxDQUF1QkssTUFBdkIsRUFBK0JDLE1BQS9CLEVBQXVDQyxRQUF2QyxFQUFpRDtBQUFFLFNBQU9OLGFBQWFPLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsImZpbGUiOiJzZW50ZW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ== + + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.cssDiff = undefined; + exports. /*istanbul ignore end*/diffCss = diffCss; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + cssDiff.tokenize = function (value) { + return value.split(/([{}:;,]|\s+)/); + }; + + function diffCss(oldStr, newStr, callback) { + return cssDiff.diff(oldStr, newStr, callback); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJkaWZmQ3NzIiwiY3NzRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsIm9sZFN0ciIsIm5ld1N0ciIsImNhbGxiYWNrIiwiZGlmZiJdLCJtYXBwaW5ncyI6Ijs7OztnQ0FPZ0JBLE8sR0FBQUEsTzs7QUFQaEI7Ozs7Ozt1QkFFTyxJQUFNQyw2RUFBVSx3RUFBaEI7QUFDUEEsUUFBUUMsUUFBUixHQUFtQixVQUFTQyxLQUFULEVBQWdCO0FBQ2pDLFNBQU9BLE1BQU1DLEtBQU4sQ0FBWSxlQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNKLE9BQVQsQ0FBaUJLLE1BQWpCLEVBQXlCQyxNQUF6QixFQUFpQ0MsUUFBakMsRUFBMkM7QUFBRSxTQUFPTixRQUFRTyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwiZmlsZSI6ImNzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjc3NEaWZmID0gbmV3IERpZmYoKTtcbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhbe306OyxdfFxccyspLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iXX0= + + +/***/ }), +/* 8 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.jsonDiff = undefined; + + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + + exports. /*istanbul ignore end*/diffJson = diffJson; + /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + /*istanbul ignore end*/var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/; + + /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/var objectPrototypeToString = Object.prototype.toString; + + var jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a + // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output: + jsonDiff.useLongestToken = true; + + jsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff /*istanbul ignore end*/.tokenize; + jsonDiff.castInput = function (value) { + /*istanbul ignore start*/var _options = /*istanbul ignore end*/this.options, + undefinedReplacement = _options.undefinedReplacement, + _options$stringifyRep = _options.stringifyReplacer, + stringifyReplacer = _options$stringifyRep === undefined ? function (k, v) /*istanbul ignore start*/{ + return (/*istanbul ignore end*/typeof v === 'undefined' ? undefinedReplacement : v + ); + } : _options$stringifyRep; + + + return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' '); + }; + jsonDiff.equals = function (left, right) { + return (/*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1')) + ); + }; + + function diffJson(oldObj, newObj, options) { + return jsonDiff.diff(oldObj, newObj, options); + } + + // This function handles the presence of circular references by bailing out when encountering an + // object that is already on the "stack" of items being processed. Accepts an optional replacer + function canonicalize(obj, stack, replacementStack, replacer, key) { + stack = stack || []; + replacementStack = replacementStack || []; + + if (replacer) { + obj = replacer(key, obj); + } + + var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/; + + for (i = 0; i < stack.length; i += 1) { + if (stack[i] === obj) { + return replacementStack[i]; + } + } + + var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/; + + if ('[object Array]' === objectPrototypeToString.call(obj)) { + stack.push(obj); + canonicalizedObj = new Array(obj.length); + replacementStack.push(canonicalizedObj); + for (i = 0; i < obj.length; i += 1) { + canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key); + } + stack.pop(); + replacementStack.pop(); + return canonicalizedObj; + } + + if (obj && obj.toJSON) { + obj = obj.toJSON(); + } + + if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) { + stack.push(obj); + canonicalizedObj = {}; + replacementStack.push(canonicalizedObj); + var sortedKeys = [], + _key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/; + for (_key in obj) { + /* istanbul ignore else */ + if (obj.hasOwnProperty(_key)) { + sortedKeys.push(_key); + } + } + sortedKeys.sort(); + for (i = 0; i < sortedKeys.length; i += 1) { + _key = sortedKeys[i]; + canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key); + } + stack.pop(); + replacementStack.pop(); + } else { + canonicalizedObj = obj; + } + return canonicalizedObj; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsiZGlmZkpzb24iLCJjYW5vbmljYWxpemUiLCJvYmplY3RQcm90b3R5cGVUb1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwianNvbkRpZmYiLCJ1c2VMb25nZXN0VG9rZW4iLCJ0b2tlbml6ZSIsImNhc3RJbnB1dCIsInZhbHVlIiwib3B0aW9ucyIsInVuZGVmaW5lZFJlcGxhY2VtZW50Iiwic3RyaW5naWZ5UmVwbGFjZXIiLCJrIiwidiIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjYWxsIiwicmVwbGFjZSIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztnQ0FxQmdCQSxRLEdBQUFBLFE7eURBSUFDLFksR0FBQUEsWTs7QUF6QmhCOzs7O3VCQUNBOzs7O3VCQUVBLElBQU1DLDBCQUEwQkMsT0FBT0MsU0FBUCxDQUFpQkMsUUFBakQ7O0FBR08sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1A7QUFDQTtBQUNBQSxTQUFTQyxlQUFULEdBQTJCLElBQTNCOztBQUVBRCxTQUFTRSxRQUFULEdBQW9CLGdFQUFTQSxRQUE3QjtBQUNBRixTQUFTRyxTQUFULEdBQXFCLFVBQVNDLEtBQVQsRUFBZ0I7QUFBQSxpRUFDK0UsS0FBS0MsT0FEcEY7QUFBQSxNQUM1QkMsb0JBRDRCLFlBQzVCQSxvQkFENEI7QUFBQSx1Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSx5Q0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQ0FBVSxPQUFPQSxDQUFQ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QUFLVCxJQUFJLENBQVQsRUFBWUEsSUFBSU8sV0FBV04sTUFBM0IsRUFBbUNELEtBQUssQ0FBeEMsRUFBMkM7QUFDekNELGFBQU1RLFdBQVdQLENBQVgsQ0FBTjtBQUNBRSx1QkFBaUJILElBQWpCLElBQXdCN0IsYUFBYXlCLElBQUlJLElBQUosQ0FBYixFQUF1QkgsS0FBdkIsRUFBOEJDLGdCQUE5QixFQUFnREMsUUFBaEQsRUFBMERDLElBQTFELENBQXhCO0FBQ0Q7QUFDREgsVUFBTVMsR0FBTjtBQUNBUixxQkFBaUJRLEdBQWpCO0FBQ0QsR0FuQkQsTUFtQk87QUFDTEgsdUJBQW1CUCxHQUFuQjtBQUNEO0FBQ0QsU0FBT08sZ0JBQVA7QUFDRCIsImZpbGUiOiJqc29uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0= + + +/***/ }), +/* 9 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports.arrayDiff = undefined; + exports. /*istanbul ignore end*/diffArrays = diffArrays; + + var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/var arrayDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/(); + arrayDiff.tokenize = function (value) { + return value.slice(); + }; + arrayDiff.join = arrayDiff.removeEmpty = function (value) { + return value; + }; + + function diffArrays(oldArr, newArr, callback) { + return arrayDiff.diff(oldArr, newArr, callback); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImRpZmZBcnJheXMiLCJhcnJheURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJvbGRBcnIiLCJuZXdBcnIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBVWdCQSxVLEdBQUFBLFU7O0FBVmhCOzs7Ozs7dUJBRU8sSUFBTUMsaUZBQVksd0VBQWxCO0FBQ1BBLFVBQVVDLFFBQVYsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUNuQyxTQUFPQSxNQUFNQyxLQUFOLEVBQVA7QUFDRCxDQUZEO0FBR0FILFVBQVVJLElBQVYsR0FBaUJKLFVBQVVLLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSCxVQUFULENBQW9CTyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1IsVUFBVVMsSUFBVixDQUFlSCxNQUFmLEVBQXVCQyxNQUF2QixFQUErQkMsUUFBL0IsQ0FBUDtBQUFrRCIsImZpbGUiOiJhcnJheS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBhcnJheURpZmYgPSBuZXcgRGlmZigpO1xuYXJyYXlEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKCk7XG59O1xuYXJyYXlEaWZmLmpvaW4gPSBhcnJheURpZmYucmVtb3ZlRW1wdHkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkFycmF5cyhvbGRBcnIsIG5ld0FyciwgY2FsbGJhY2spIHsgcmV0dXJuIGFycmF5RGlmZi5kaWZmKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjayk7IH1cbiJdfQ== + + +/***/ }), +/* 10 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports. /*istanbul ignore end*/applyPatch = applyPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches; + + var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_distanceIterator = __webpack_require__(12) /*istanbul ignore end*/; + + /*istanbul ignore start*/var _distanceIterator2 = _interopRequireDefault(_distanceIterator); + + function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } + + /*istanbul ignore end*/function applyPatch(source, uniDiff) { + /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + + if (typeof uniDiff === 'string') { + uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff); + } + + if (Array.isArray(uniDiff)) { + if (uniDiff.length > 1) { + throw new Error('applyPatch only works with a single input.'); + } + + uniDiff = uniDiff[0]; + } + + // Apply the diff to the input + var lines = source.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [], + hunks = uniDiff.hunks, + compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{ + return (/*istanbul ignore end*/line === patchContent + ); + }, + errorCount = 0, + fuzzFactor = options.fuzzFactor || 0, + minLine = 0, + offset = 0, + removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/, + addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/; + + /** + * Checks if the hunk exactly fits on the provided location + */ + function hunkFits(hunk, toPos) { + for (var j = 0; j < hunk.lines.length; j++) { + var line = hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line; + + if (operation === ' ' || operation === '-') { + // Context sanity check + if (!compareLine(toPos + 1, lines[toPos], operation, content)) { + errorCount++; + + if (errorCount > fuzzFactor) { + return false; + } + } + toPos++; + } + } + + return true; + } + + // Search best fit offsets for each hunk based on the previous ones + for (var i = 0; i < hunks.length; i++) { + var hunk = hunks[i], + maxLine = lines.length - hunk.oldLines, + localOffset = 0, + toPos = offset + hunk.oldStart - 1; + + var iterator = /*istanbul ignore start*/(0, _distanceIterator2['default']) /*istanbul ignore end*/(toPos, minLine, maxLine); + + for (; localOffset !== undefined; localOffset = iterator()) { + if (hunkFits(hunk, toPos + localOffset)) { + hunk.offset = offset += localOffset; + break; + } + } + + if (localOffset === undefined) { + return false; + } + + // Set lower text limit to end of the current hunk, so next ones don't try + // to fit over already patched text + minLine = hunk.offset + hunk.oldStart + hunk.oldLines; + } + + // Apply patch hunks + var diffOffset = 0; + for (var _i = 0; _i < hunks.length; _i++) { + var _hunk = hunks[_i], + _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1; + diffOffset += _hunk.newLines - _hunk.oldLines; + + if (_toPos < 0) { + // Creating a new file + _toPos = 0; + } + + for (var j = 0; j < _hunk.lines.length; j++) { + var line = _hunk.lines[j], + operation = line.length > 0 ? line[0] : ' ', + content = line.length > 0 ? line.substr(1) : line, + delimiter = _hunk.linedelimiters[j]; + + if (operation === ' ') { + _toPos++; + } else if (operation === '-') { + lines.splice(_toPos, 1); + delimiters.splice(_toPos, 1); + /* istanbul ignore else */ + } else if (operation === '+') { + lines.splice(_toPos, 0, content); + delimiters.splice(_toPos, 0, delimiter); + _toPos++; + } else if (operation === '\\') { + var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null; + if (previousOperation === '+') { + removeEOFNL = true; + } else if (previousOperation === '-') { + addEOFNL = true; + } + } + } + } + + // Handle EOFNL insertion/removal + if (removeEOFNL) { + while (!lines[lines.length - 1]) { + lines.pop(); + delimiters.pop(); + } + } else if (addEOFNL) { + lines.push(''); + delimiters.push('\n'); + } + for (var _k = 0; _k < lines.length - 1; _k++) { + lines[_k] = lines[_k] + delimiters[_k]; + } + return lines.join(''); + } + + // Wrapper that supports multiple file patches via callbacks. + function applyPatches(uniDiff, options) { + if (typeof uniDiff === 'string') { + uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff); + } + + var currentIndex = 0; + function processIndex() { + var index = uniDiff[currentIndex++]; + if (!index) { + return options.complete(); + } + + options.loadFile(index, function (err, data) { + if (err) { + return options.complete(err); + } + + var updatedContent = applyPatch(data, index, options); + options.patched(index, updatedContent, function (err) { + if (err) { + return options.complete(err); + } + + processIndex(); + }); + }); + } + processIndex(); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwiYXBwbHlQYXRjaGVzIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJFcnJvciIsImxpbmVzIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJodW5rcyIsImNvbXBhcmVMaW5lIiwibGluZU51bWJlciIsImxpbmUiLCJvcGVyYXRpb24iLCJwYXRjaENvbnRlbnQiLCJlcnJvckNvdW50IiwiZnV6ekZhY3RvciIsIm1pbkxpbmUiLCJvZmZzZXQiLCJyZW1vdmVFT0ZOTCIsImFkZEVPRk5MIiwiaHVua0ZpdHMiLCJodW5rIiwidG9Qb3MiLCJqIiwiY29udGVudCIsInN1YnN0ciIsImkiLCJtYXhMaW5lIiwib2xkTGluZXMiLCJsb2NhbE9mZnNldCIsIm9sZFN0YXJ0IiwiaXRlcmF0b3IiLCJ1bmRlZmluZWQiLCJkaWZmT2Zmc2V0IiwibmV3TGluZXMiLCJkZWxpbWl0ZXIiLCJsaW5lZGVsaW1pdGVycyIsInNwbGljZSIsInByZXZpb3VzT3BlcmF0aW9uIiwicG9wIiwicHVzaCIsIl9rIiwiam9pbiIsImN1cnJlbnRJbmRleCIsInByb2Nlc3NJbmRleCIsImluZGV4IiwiY29tcGxldGUiLCJsb2FkRmlsZSIsImVyciIsImRhdGEiLCJ1cGRhdGVkQ29udGVudCIsInBhdGNoZWQiXSwibWFwcGluZ3MiOiI7OztnQ0FHZ0JBLFUsR0FBQUEsVTt5REFvSUFDLFksR0FBQUEsWTs7QUF2SWhCOztBQUNBOzs7Ozs7dUJBRU8sU0FBU0QsVUFBVCxDQUFvQkUsTUFBcEIsRUFBNEJDLE9BQTVCLEVBQW1EO0FBQUEsc0RBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFDeEQsTUFBSSxPQUFPRCxPQUFQLEtBQW1CLFFBQXZCLEVBQWlDO0FBQy9CQSxjQUFVLHdFQUFXQSxPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRSxNQUFNQyxP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QUFZO0FBQ1YsYUFBTzlDLFFBQVErQyxRQUFSLEVBQVA7QUFDRDs7QUFFRC9DLFlBQVFnRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT2pELFFBQVErQyxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsaUJBQWlCdkQsV0FBV3NELElBQVgsRUFBaUJKLEtBQWpCLEVBQXdCOUMsT0FBeEIsQ0FBckI7QUFDQUEsY0FBUW9ELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9qRCxRQUFRK0MsUUFBUixDQUFpQkUsR0FBakIsQ0FBUDtBQUNEOztBQUVESjtBQUNELE9BTkQ7QUFPRCxLQWJEO0FBY0Q7QUFDREE7QUFDRCIsImZpbGUiOiJhcHBseS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGlmICh0b1BvcyA8IDApIHsgLy8gQ3JlYXRpbmcgYSBuZXcgZmlsZVxuICAgICAgdG9Qb3MgPSAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19 + + +/***/ }), +/* 11 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports. /*istanbul ignore end*/parsePatch = parsePatch; + function parsePatch(uniDiff) { + /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + + var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/), + delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [], + list = [], + i = 0; + + function parseIndex() { + var index = {}; + list.push(index); + + // Parse diff metadata + while (i < diffstr.length) { + var line = diffstr[i]; + + // File header found, end parsing diff metadata + if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) { + break; + } + + // Diff index + var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line); + if (header) { + index.index = header[1]; + } + + i++; + } + + // Parse file headers if they are defined. Unified diff requires them, but + // there's no technical issues to have an isolated hunk without file header + parseFileHeader(index); + parseFileHeader(index); + + // Parse hunks + index.hunks = []; + + while (i < diffstr.length) { + var _line = diffstr[i]; + + if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) { + break; + } else if (/^@@/.test(_line)) { + index.hunks.push(parseHunk()); + } else if (_line && options.strict) { + // Ignore unexpected content unless in strict mode + throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line)); + } else { + i++; + } + } + } + + // Parses the --- and +++ headers, if none are found, no lines + // are consumed. + function parseFileHeader(index) { + var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]); + if (fileHeader) { + var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new'; + var data = fileHeader[2].split('\t', 2); + var fileName = data[0].replace(/\\\\/g, '\\'); + if (/^".*"$/.test(fileName)) { + fileName = fileName.substr(1, fileName.length - 2); + } + index[keyPrefix + 'FileName'] = fileName; + index[keyPrefix + 'Header'] = (data[1] || '').trim(); + + i++; + } + } + + // Parses a hunk + // This assumes that we are at the start of a hunk. + function parseHunk() { + var chunkHeaderIndex = i, + chunkHeaderLine = diffstr[i++], + chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/); + + var hunk = { + oldStart: +chunkHeader[1], + oldLines: +chunkHeader[2] || 1, + newStart: +chunkHeader[3], + newLines: +chunkHeader[4] || 1, + lines: [], + linedelimiters: [] + }; + + var addCount = 0, + removeCount = 0; + for (; i < diffstr.length; i++) { + // Lines starting with '---' could be mistaken for the "remove line" operation + // But they could be the header for the next file. Therefore prune such cases out. + if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) { + break; + } + var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0]; + + if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') { + hunk.lines.push(diffstr[i]); + hunk.linedelimiters.push(delimiters[i] || '\n'); + + if (operation === '+') { + addCount++; + } else if (operation === '-') { + removeCount++; + } else if (operation === ' ') { + addCount++; + removeCount++; + } + } else { + break; + } + } + + // Handle the empty block count case + if (!addCount && hunk.newLines === 1) { + hunk.newLines = 0; + } + if (!removeCount && hunk.oldLines === 1) { + hunk.oldLines = 0; + } + + // Perform optional sanity checking + if (options.strict) { + if (addCount !== hunk.newLines) { + throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + if (removeCount !== hunk.oldLines) { + throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1)); + } + } + + return hunk; + } + + while (i < diffstr.length) { + parseIndex(); + } + + return list; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsVSxHQUFBQSxVO0FBQVQsU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQSxzREFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUNoRCxNQUFJQyxVQUFVRixRQUFRRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLGFBQWFKLFFBQVFLLEtBQVIsQ0FBYyxzQkFBZCxLQUF5QyxFQUQxRDtBQUFBLE1BRUlDLE9BQU8sRUFGWDtBQUFBLE1BR0lDLElBQUksQ0FIUjs7QUFLQSxXQUFTQyxVQUFULEdBQXNCO0FBQ3BCLFFBQUlDLFFBQVEsRUFBWjtBQUNBSCxTQUFLSSxJQUFMLENBQVVELEtBQVY7O0FBRUE7QUFDQSxXQUFPRixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6QixVQUFJQyxPQUFPVixRQUFR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QW9CO0FBQ2xCLFVBQUlxQixhQUFhUCxLQUFLSSxRQUF0QixFQUFnQztBQUM5QixjQUFNLElBQUlqQixLQUFKLENBQVUsc0RBQXNEVSxtQkFBbUIsQ0FBekUsQ0FBVixDQUFOO0FBQ0Q7QUFDRCxVQUFJVyxnQkFBZ0JSLEtBQUtFLFFBQXpCLEVBQW1DO0FBQ2pDLGNBQU0sSUFBSWYsS0FBSixDQUFVLHdEQUF3RFUsbUJBQW1CLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6Qkg7QUFDRDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgvXihcXC1cXC1cXC18XFwrXFwrXFwrfEBAKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gRGlmZiBpbmRleFxuICAgICAgbGV0IGhlYWRlciA9ICgvXig/OkluZGV4OnxkaWZmKD86IC1yIFxcdyspKylcXHMrKC4rPylcXHMqJC8pLmV4ZWMobGluZSk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGluZGV4LmluZGV4ID0gaGVhZGVyWzFdO1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgZmlsZSBoZWFkZXJzIGlmIHRoZXkgYXJlIGRlZmluZWQuIFVuaWZpZWQgZGlmZiByZXF1aXJlcyB0aGVtLCBidXRcbiAgICAvLyB0aGVyZSdzIG5vIHRlY2huaWNhbCBpc3N1ZXMgdG8gaGF2ZSBhbiBpc29sYXRlZCBodW5rIHdpdGhvdXQgZmlsZSBoZWFkZXJcbiAgICBwYXJzZUZpbGVIZWFkZXIoaW5kZXgpO1xuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBodW5rc1xuICAgIGluZGV4Lmh1bmtzID0gW107XG5cbiAgICB3aGlsZSAoaSA8IGRpZmZzdHIubGVuZ3RoKSB7XG4gICAgICBsZXQgbGluZSA9IGRpZmZzdHJbaV07XG5cbiAgICAgIGlmICgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoL15AQC8udGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKC9eXCIuKlwiJC8udGVzdChmaWxlTmFtZSkpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMSwgZmlsZU5hbWUubGVuZ3RoIC0gMik7XG4gICAgICB9XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnRmlsZU5hbWUnXSA9IGZpbGVOYW1lO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gKGRhdGFbMV0gfHwgJycpLnRyaW0oKTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogK2NodW5rSGVhZGVyWzJdIHx8IDEsXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6ICtjaHVua0hlYWRlcls0XSB8fCAxLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgbGluZWRlbGltaXRlcnM6IFtdXG4gICAgfTtcblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggJy0tLScgY291bGQgYmUgbWlzdGFrZW4gZm9yIHRoZSBcInJlbW92ZSBsaW5lXCIgb3BlcmF0aW9uXG4gICAgICAvLyBCdXQgdGhleSBjb3VsZCBiZSB0aGUgaGVhZGVyIGZvciB0aGUgbmV4dCBmaWxlLiBUaGVyZWZvcmUgcHJ1bmUgc3VjaCBjYXNlcyBvdXQuXG4gICAgICBpZiAoZGlmZnN0cltpXS5pbmRleE9mKCctLS0gJykgPT09IDBcbiAgICAgICAgICAgICYmIChpICsgMiA8IGRpZmZzdHIubGVuZ3RoKVxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMV0uaW5kZXhPZignKysrICcpID09PSAwXG4gICAgICAgICAgICAmJiBkaWZmc3RyW2kgKyAyXS5pbmRleE9mKCdAQCcpID09PSAwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsZXQgb3BlcmF0aW9uID0gKGRpZmZzdHJbaV0ubGVuZ3RoID09IDAgJiYgaSAhPSAoZGlmZnN0ci5sZW5ndGggLSAxKSkgPyAnICcgOiBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuICAgICAgICBodW5rLmxpbmVkZWxpbWl0ZXJzLnB1c2goZGVsaW1pdGVyc1tpXSB8fCAnXFxuJyk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgYmxvY2sgY291bnQgY2FzZVxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuICAgIGlmICghcmVtb3ZlQ291bnQgJiYgaHVuay5vbGRMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5vbGRMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBvcHRpb25hbCBzYW5pdHkgY2hlY2tpbmdcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIGlmIChhZGRDb3VudCAhPT0gaHVuay5uZXdMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZGVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1vdmVDb3VudCAhPT0gaHVuay5vbGRMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW92ZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodW5rO1xuICB9XG5cbiAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgIHBhcnNlSW5kZXgoKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuIl19 + + +/***/ }), +/* 12 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/"use strict"; + + exports.__esModule = true; + + exports["default"] = /*istanbul ignore end*/function (start, minLine, maxLine) { + var wantForward = true, + backwardExhausted = false, + forwardExhausted = false, + localOffset = 1; + + return function iterator() { + if (wantForward && !forwardExhausted) { + if (backwardExhausted) { + localOffset++; + } else { + wantForward = false; + } + + // Check if trying to fit beyond text length, and if not, check it fits + // after offset location (or desired location on first iteration) + if (start + localOffset <= maxLine) { + return localOffset; + } + + forwardExhausted = true; + } + + if (!backwardExhausted) { + if (!forwardExhausted) { + wantForward = true; + } + + // Check if trying to fit before text beginning, and if not, check it fits + // before offset location + if (minLine <= start - localOffset) { + return -localOffset++; + } + + backwardExhausted = true; + return iterator(); + } + + // We tried to fit hunk before text beginning and beyond text length, then + // hunk can't fit on the text. Return undefined + }; + }; + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7NENBR2UsVUFBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLGNBQWMsSUFBbEI7QUFBQSxNQUNJQyxvQkFBb0IsS0FEeEI7QUFBQSxNQUVJQyxtQkFBbUIsS0FGdkI7QUFBQSxNQUdJQyxjQUFjLENBSGxCOztBQUtBLFNBQU8sU0FBU0MsUUFBVCxHQUFvQjtBQUN6QixRQUFJSixlQUFlLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkU7QUFDRCxPQUZELE1BRU87QUFDTEgsc0JBQWMsS0FBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJSCxRQUFRTSxXQUFSLElBQXVCSixPQUEzQixFQUFvQztBQUNsQyxlQUFPSSxXQUFQO0FBQ0Q7O0FBRURELHlCQUFtQixJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsc0JBQWMsSUFBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJRixXQUFXRCxRQUFRTSxXQUF2QixFQUFvQztBQUNsQyxlQUFPLENBQUNBLGFBQVI7QUFDRDs7QUFFREYsMEJBQW9CLElBQXBCO0FBQ0EsYUFBT0csVUFBUDtBQUNEOztBQUVEO0FBQ0E7QUFDRCxHQWxDRDtBQW1DRCxDIiwiZmlsZSI6ImRpc3RhbmNlLWl0ZXJhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0= + + +/***/ }), +/* 13 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports. /*istanbul ignore end*/calcLineCount = calcLineCount; + /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = merge; + + var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/; + + var /*istanbul ignore start*/_array = __webpack_require__(15) /*istanbul ignore end*/; + + /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + + /*istanbul ignore end*/function calcLineCount(hunk) { + /*istanbul ignore start*/var _calcOldNewLineCount = /*istanbul ignore end*/calcOldNewLineCount(hunk.lines), + oldLines = _calcOldNewLineCount.oldLines, + newLines = _calcOldNewLineCount.newLines; + + if (oldLines !== undefined) { + hunk.oldLines = oldLines; + } else { + delete hunk.oldLines; + } + + if (newLines !== undefined) { + hunk.newLines = newLines; + } else { + delete hunk.newLines; + } + } + + function merge(mine, theirs, base) { + mine = loadPatch(mine, base); + theirs = loadPatch(theirs, base); + + var ret = {}; + + // For index we just let it pass through as it doesn't have any necessary meaning. + // Leaving sanity checks on this to the API consumer that may know more about the + // meaning in their own context. + if (mine.index || theirs.index) { + ret.index = mine.index || theirs.index; + } + + if (mine.newFileName || theirs.newFileName) { + if (!fileNameChanged(mine)) { + // No header or no change in ours, use theirs (and ours if theirs does not exist) + ret.oldFileName = theirs.oldFileName || mine.oldFileName; + ret.newFileName = theirs.newFileName || mine.newFileName; + ret.oldHeader = theirs.oldHeader || mine.oldHeader; + ret.newHeader = theirs.newHeader || mine.newHeader; + } else if (!fileNameChanged(theirs)) { + // No header or no change in theirs, use ours + ret.oldFileName = mine.oldFileName; + ret.newFileName = mine.newFileName; + ret.oldHeader = mine.oldHeader; + ret.newHeader = mine.newHeader; + } else { + // Both changed... figure it out + ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName); + ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName); + ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader); + ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader); + } + } + + ret.hunks = []; + + var mineIndex = 0, + theirsIndex = 0, + mineOffset = 0, + theirsOffset = 0; + + while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) { + var mineCurrent = mine.hunks[mineIndex] || { oldStart: Infinity }, + theirsCurrent = theirs.hunks[theirsIndex] || { oldStart: Infinity }; + + if (hunkBefore(mineCurrent, theirsCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(mineCurrent, mineOffset)); + mineIndex++; + theirsOffset += mineCurrent.newLines - mineCurrent.oldLines; + } else if (hunkBefore(theirsCurrent, mineCurrent)) { + // This patch does not overlap with any of the others, yay. + ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset)); + theirsIndex++; + mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines; + } else { + // Overlap, merge as best we can + var mergedHunk = { + oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart), + oldLines: 0, + newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset), + newLines: 0, + lines: [] + }; + mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines); + theirsIndex++; + mineIndex++; + + ret.hunks.push(mergedHunk); + } + } + + return ret; + } + + function loadPatch(param, base) { + if (typeof param === 'string') { + if (/^@@/m.test(param) || /^Index:/m.test(param)) { + return (/*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(param)[0] + ); + } + + if (!base) { + throw new Error('Must provide a base reference or pass in a patch'); + } + return (/*istanbul ignore start*/(0, _create.structuredPatch) /*istanbul ignore end*/(undefined, undefined, base, param) + ); + } + + return param; + } + + function fileNameChanged(patch) { + return patch.newFileName && patch.newFileName !== patch.oldFileName; + } + + function selectField(index, mine, theirs) { + if (mine === theirs) { + return mine; + } else { + index.conflict = true; + return { mine: mine, theirs: theirs }; + } + } + + function hunkBefore(test, check) { + return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart; + } + + function cloneHunk(hunk, offset) { + return { + oldStart: hunk.oldStart, oldLines: hunk.oldLines, + newStart: hunk.newStart + offset, newLines: hunk.newLines, + lines: hunk.lines + }; + } + + function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) { + // This will generally result in a conflicted hunk, but there are cases where the context + // is the only overlap where we can successfully merge the content here. + var mine = { offset: mineOffset, lines: mineLines, index: 0 }, + their = { offset: theirOffset, lines: theirLines, index: 0 }; + + // Handle any leading content + insertLeading(hunk, mine, their); + insertLeading(hunk, their, mine); + + // Now in the overlap content. Scan through and select the best changes from each. + while (mine.index < mine.lines.length && their.index < their.lines.length) { + var mineCurrent = mine.lines[mine.index], + theirCurrent = their.lines[their.index]; + + if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) { + // Both modified ... + mutualChange(hunk, mine, their); + } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') { + /*istanbul ignore start*/var _hunk$lines; + + /*istanbul ignore end*/ // Mine inserted + /*istanbul ignore start*/(_hunk$lines = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(mine))); + } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') { + /*istanbul ignore start*/var _hunk$lines2; + + /*istanbul ignore end*/ // Theirs inserted + /*istanbul ignore start*/(_hunk$lines2 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(their))); + } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') { + // Mine removed or edited + removal(hunk, mine, their); + } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') { + // Their removed or edited + removal(hunk, their, mine, true); + } else if (mineCurrent === theirCurrent) { + // Context identity + hunk.lines.push(mineCurrent); + mine.index++; + their.index++; + } else { + // Context mismatch + conflict(hunk, collectChange(mine), collectChange(their)); + } + } + + // Now push anything that may be remaining + insertTrailing(hunk, mine); + insertTrailing(hunk, their); + + calcLineCount(hunk); + } + + function mutualChange(hunk, mine, their) { + var myChanges = collectChange(mine), + theirChanges = collectChange(their); + + if (allRemoves(myChanges) && allRemoves(theirChanges)) { + // Special case for remove changes that are supersets of one another + if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) { + /*istanbul ignore start*/var _hunk$lines3; + + /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines3 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges)); + return; + } else if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) { + /*istanbul ignore start*/var _hunk$lines4; + + /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines4 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines4 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges)); + return; + } + } else if ( /*istanbul ignore start*/(0, _array.arrayEqual) /*istanbul ignore end*/(myChanges, theirChanges)) { + /*istanbul ignore start*/var _hunk$lines5; + + /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines5 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines5 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges)); + return; + } + + conflict(hunk, myChanges, theirChanges); + } + + function removal(hunk, mine, their, swap) { + var myChanges = collectChange(mine), + theirChanges = collectContext(their, myChanges); + if (theirChanges.merged) { + /*istanbul ignore start*/var _hunk$lines6; + + /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines6 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines6 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges.merged)); + } else { + conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges); + } + } + + function conflict(hunk, mine, their) { + hunk.conflict = true; + hunk.lines.push({ + conflict: true, + mine: mine, + theirs: their + }); + } + + function insertLeading(hunk, insert, their) { + while (insert.offset < their.offset && insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + insert.offset++; + } + } + function insertTrailing(hunk, insert) { + while (insert.index < insert.lines.length) { + var line = insert.lines[insert.index++]; + hunk.lines.push(line); + } + } + + function collectChange(state) { + var ret = [], + operation = state.lines[state.index][0]; + while (state.index < state.lines.length) { + var line = state.lines[state.index]; + + // Group additions that are immediately after subtractions and treat them as one "atomic" modify change. + if (operation === '-' && line[0] === '+') { + operation = '+'; + } + + if (operation === line[0]) { + ret.push(line); + state.index++; + } else { + break; + } + } + + return ret; + } + function collectContext(state, matchChanges) { + var changes = [], + merged = [], + matchIndex = 0, + contextChanges = false, + conflicted = false; + while (matchIndex < matchChanges.length && state.index < state.lines.length) { + var change = state.lines[state.index], + match = matchChanges[matchIndex]; + + // Once we've hit our add, then we are done + if (match[0] === '+') { + break; + } + + contextChanges = contextChanges || change[0] !== ' '; + + merged.push(match); + matchIndex++; + + // Consume any additions in the other block as a conflict to attempt + // to pull in the remaining context after this + if (change[0] === '+') { + conflicted = true; + + while (change[0] === '+') { + changes.push(change); + change = state.lines[++state.index]; + } + } + + if (match.substr(1) === change.substr(1)) { + changes.push(change); + state.index++; + } else { + conflicted = true; + } + } + + if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) { + conflicted = true; + } + + if (conflicted) { + return changes; + } + + while (matchIndex < matchChanges.length) { + merged.push(matchChanges[matchIndex++]); + } + + return { + merged: merged, + changes: changes + }; + } + + function allRemoves(changes) { + return changes.reduce(function (prev, change) { + return prev && change[0] === '-'; + }, true); + } + function skipRemoveSuperset(state, removeChanges, delta) { + for (var i = 0; i < delta; i++) { + var changeContent = removeChanges[removeChanges.length - delta + i].substr(1); + if (state.lines[state.index + i] !== ' ' + changeContent) { + return false; + } + } + + state.index += delta; + return true; + } + + function calcOldNewLineCount(lines) { + var oldLines = 0; + var newLines = 0; + + lines.forEach(function (line) { + if (typeof line !== 'string') { + var myCount = calcOldNewLineCount(line.mine); + var theirCount = calcOldNewLineCount(line.theirs); + + if (oldLines !== undefined) { + if (myCount.oldLines === theirCount.oldLines) { + oldLines += myCount.oldLines; + } else { + oldLines = undefined; + } + } + + if (newLines !== undefined) { + if (myCount.newLines === theirCount.newLines) { + newLines += myCount.newLines; + } else { + newLines = undefined; + } + } + } else { + if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) { + newLines++; + } + if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) { + oldLines++; + } + } + }); + + return { oldLines: oldLines, newLines: newLines }; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwibWVyZ2UiLCJodW5rIiwiY2FsY09sZE5ld0xpbmVDb3VudCIsImxpbmVzIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsInVuZGVmaW5lZCIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwiRXJyb3IiLCJwYXRjaCIsImNvbmZsaWN0IiwiY2hlY2siLCJvZmZzZXQiLCJtaW5lTGluZXMiLCJ0aGVpck9mZnNldCIsInRoZWlyTGluZXMiLCJ0aGVpciIsImluc2VydExlYWRpbmciLCJ0aGVpckN1cnJlbnQiLCJtdXR1YWxDaGFuZ2UiLCJjb2xsZWN0Q2hhbmdlIiwicmVtb3ZhbCIsImluc2VydFRyYWlsaW5nIiwibXlDaGFuZ2VzIiwidGhlaXJDaGFuZ2VzIiwiYWxsUmVtb3ZlcyIsInNraXBSZW1vdmVTdXBlcnNldCIsInN3YXAiLCJjb2xsZWN0Q29udGV4dCIsIm1lcmdlZCIsImluc2VydCIsImxpbmUiLCJzdGF0ZSIsIm9wZXJhdGlvbiIsIm1hdGNoQ2hhbmdlcyIsImNoYW5nZXMiLCJtYXRjaEluZGV4IiwiY29udGV4dENoYW5nZXMiLCJjb25mbGljdGVkIiwiY2hhbmdlIiwibWF0Y2giLCJzdWJzdHIiLCJyZWR1Y2UiLCJwcmV2IiwicmVtb3ZlQ2hhbmdlcyIsImRlbHRhIiwiaSIsImNoYW5nZUNvbnRlbnQiLCJmb3JFYWNoIiwibXlDb3VudCIsInRoZWlyQ291bnQiXSwibWFwcGluZ3MiOiI7OztnQ0FLZ0JBLGEsR0FBQUEsYTt5REFnQkFDLEssR0FBQUEsSzs7QUFyQmhCOztBQUNBOztBQUVBOzs7O3VCQUVPLFNBQVNELGFBQVQsQ0FBdUJFLElBQXZCLEVBQTZCO0FBQUEsNkVBQ0xDLG9CQUFvQkQsS0FBS0UsS0FBekIsQ0FESztBQUFBLE1BQzNCQyxRQUQyQix3QkFDM0JBLFFBRDJCO0FBQUEsTUFDakJDLFFBRGlCLHdCQUNqQkEsUUFEaUI7O0FBR2xDLE1BQUlELGFBQWFFLFNBQWpCLEVBQTRCO0FBQzFCTCxTQUFLRyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9ILEtBQUtHLFFBQVo7QUFDRDs7QUFFRCxNQUFJQyxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQkwsU0FBS0ksUUFBTCxHQUFnQkEsUUFBaEI7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPSixLQUFLSSxRQUFaO0FBQ0Q7QUFDRjs7QUFFTSxTQUFTTCxLQUFULENBQWVPLElBQWYsRUFBcUJDLE1BQXJCLEVBQTZCQyxJQUE3QixFQUFtQztBQUN4Q0YsU0FBT0csVUFBVUgsSUFBVixFQUFnQkUsSUFBaEIsQ0FBUDtBQUNBRCxXQUFTRSxVQUFVRixNQUFWLEVBQWtCQyxJQUFsQixDQUFUOztBQUVBLE1BQUlFLE1BQU0sRUFBVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFJSixLQUFLSyxLQUFMLElBQWNKLE9BQU9JLEtBQXpCLEVBQWdDO0FBQzlCRCxRQUFJQyxLQUFKLEdBQVlMLEtBQUtLLEtBQUwsSUFBY0osT0FBT0ksS0FBakM7QUFDRDs7QUFFRCxNQUFJTCxLQUFLTSxXQUFMLElBQW9CTCxPQUFPSyxXQUEvQixFQUE0QztBQUMxQyxRQUFJLENBQUNDLGdCQUFnQlAsSUFBaEIsQ0FBTCxF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Q0Q7QUFDRjs7QUFFRCxVQUFJRCxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJMEUsUUFBUTNFLFFBQVIsS0FBcUI0RSxXQUFXNUUsUUFBcEMsRUFBOEM7QUFDNUNBLHNCQUFZMkUsUUFBUTNFLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLHFCQUFXQyxTQUFYO0FBQ0Q7QUFDRjtBQUNGLEtBbkJELE1BbUJPO0FBQ0wsVUFBSUQsYUFBYUMsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEV6RDtBQUNEO0FBQ0QsVUFBSUQsYUFBYUUsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEUxRDtBQUNEO0FBQ0Y7QUFDRixHQTVCRDs7QUE4QkEsU0FBTyxFQUFDQSxrQkFBRCxFQUFXQyxrQkFBWCxFQUFQO0FBQ0QiLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGNvbnN0IHtvbGRMaW5lcywgbmV3TGluZXN9ID0gY2FsY09sZE5ld0xpbmVDb3VudChodW5rLmxpbmVzKTtcblxuICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsub2xkTGluZXMgPSBvbGRMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaHVuay5uZXdMaW5lcyA9IG5ld0xpbmVzO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBodW5rLm5ld0xpbmVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShtaW5lLCB0aGVpcnMsIGJhc2UpIHtcbiAgbWluZSA9IGxvYWRQYXRjaChtaW5lLCBiYXNlKTtcbiAgdGhlaXJzID0gbG9hZFBhdGNoKHRoZWlycywgYmFzZSk7XG5cbiAgbGV0IHJldCA9IHt9O1xuXG4gIC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG4gIGlmIChtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleCkge1xuICAgIHJldC5pbmRleCA9IG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4O1xuICB9XG5cbiAgaWYgKG1pbmUubmV3RmlsZU5hbWUgfHwgdGhlaXJzLm5ld0ZpbGVOYW1lKSB7XG4gICAgaWYgKCFmaWxlTmFtZUNoYW5nZWQobWluZSkpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gb3VycywgdXNlIHRoZWlycyAoYW5kIG91cnMgaWYgdGhlaXJzIGRvZXMgbm90IGV4aXN0KVxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gdGhlaXJzLm9sZEZpbGVOYW1lIHx8IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSB0aGVpcnMubmV3RmlsZU5hbWUgfHwgbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSB0aGVpcnMub2xkSGVhZGVyIHx8IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHRoZWlycy5uZXdIZWFkZXIgfHwgbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIGlmICghZmlsZU5hbWVDaGFuZ2VkKHRoZWlycykpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gdGhlaXJzLCB1c2Ugb3Vyc1xuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJvdGggY2hhbmdlZC4uLiBmaWd1cmUgaXQgb3V0XG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkRmlsZU5hbWUsIHRoZWlycy5vbGRGaWxlTmFtZSk7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3RmlsZU5hbWUsIHRoZWlycy5uZXdGaWxlTmFtZSk7XG4gICAgICByZXQub2xkSGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEhlYWRlciwgdGhlaXJzLm9sZEhlYWRlcik7XG4gICAgICByZXQubmV3SGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0hlYWRlciwgdGhlaXJzLm5ld0hlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0Lmh1bmtzID0gW107XG5cbiAgbGV0IG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fSxcbiAgICAgICAgdGhlaXJzQ3VycmVudCA9IHRoZWlycy5odW5rc1t0aGVpcnNJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX07XG5cbiAgICBpZiAoaHVua0JlZm9yZShtaW5lQ3VycmVudCwgdGhlaXJzQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsobWluZUN1cnJlbnQsIG1pbmVPZmZzZXQpKTtcbiAgICAgIG1pbmVJbmRleCsrO1xuICAgICAgdGhlaXJzT2Zmc2V0ICs9IG1pbmVDdXJyZW50Lm5ld0xpbmVzIC0gbWluZUN1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIGlmIChodW5rQmVmb3JlKHRoZWlyc0N1cnJlbnQsIG1pbmVDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayh0aGVpcnNDdXJyZW50LCB0aGVpcnNPZmZzZXQpKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lT2Zmc2V0ICs9IHRoZWlyc0N1cnJlbnQubmV3TGluZXMgLSB0aGVpcnNDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdmVybGFwLCBtZXJnZSBhcyBiZXN0IHdlIGNhblxuICAgICAgbGV0IG1lcmdlZEh1bmsgPSB7XG4gICAgICAgIG9sZFN0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCksXG4gICAgICAgIG9sZExpbmVzOiAwLFxuICAgICAgICBuZXdTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQubmV3U3RhcnQgKyBtaW5lT2Zmc2V0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0ICsgdGhlaXJzT2Zmc2V0KSxcbiAgICAgICAgbmV3TGluZXM6IDAsXG4gICAgICAgIGxpbmVzOiBbXVxuICAgICAgfTtcbiAgICAgIG1lcmdlTGluZXMobWVyZ2VkSHVuaywgbWluZUN1cnJlbnQub2xkU3RhcnQsIG1pbmVDdXJyZW50LmxpbmVzLCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50LmxpbmVzKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lSW5kZXgrKztcblxuICAgICAgcmV0Lmh1bmtzLnB1c2gobWVyZ2VkSHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbG9hZFBhdGNoKHBhcmFtLCBiYXNlKSB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKC9eQEAvbS50ZXN0KHBhcmFtKSB8fCAoL15JbmRleDovbS50ZXN0KHBhcmFtKSkpIHtcbiAgICAgIHJldHVybiBwYXJzZVBhdGNoKHBhcmFtKVswXTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgYmFzZSByZWZlcmVuY2Ugb3IgcGFzcyBpbiBhIHBhdGNoJyk7XG4gICAgfVxuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2godW5kZWZpbmVkLCB1bmRlZmluZWQsIGJhc2UsIHBhcmFtKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbTtcbn1cblxuZnVuY3Rpb24gZmlsZU5hbWVDaGFuZ2VkKHBhdGNoKSB7XG4gIHJldHVybiBwYXRjaC5uZXdGaWxlTmFtZSAmJiBwYXRjaC5uZXdGaWxlTmFtZSAhPT0gcGF0Y2gub2xkRmlsZU5hbWU7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZpZWxkKGluZGV4LCBtaW5lLCB0aGVpcnMpIHtcbiAgaWYgKG1pbmUgPT09IHRoZWlycykge1xuICAgIHJldHVybiBtaW5lO1xuICB9IGVsc2Uge1xuICAgIGluZGV4LmNvbmZsaWN0ID0gdHJ1ZTtcbiAgICByZXR1cm4ge21pbmUsIHRoZWlyc307XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVua0JlZm9yZSh0ZXN0LCBjaGVjaykge1xuICByZXR1cm4gdGVzdC5vbGRTdGFydCA8IGNoZWNrLm9sZFN0YXJ0XG4gICAgJiYgKHRlc3Qub2xkU3RhcnQgKyB0ZXN0Lm9sZExpbmVzKSA8IGNoZWNrLm9sZFN0YXJ0O1xufVxuXG5mdW5jdGlvbiBjbG9uZUh1bmsoaHVuaywgb2Zmc2V0KSB7XG4gIHJldHVybiB7XG4gICAgb2xkU3RhcnQ6IGh1bmsub2xkU3RhcnQsIG9sZExpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgIG5ld1N0YXJ0OiBodW5rLm5ld1N0YXJ0ICsgb2Zmc2V0LCBuZXdMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICBsaW5lczogaHVuay5saW5lc1xuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUxpbmVzKGh1bmssIG1pbmVPZmZzZXQsIG1pbmVMaW5lcywgdGhlaXJPZmZzZXQsIHRoZWlyTGluZXMpIHtcbiAgLy8gVGhpcyB3aWxsIGdlbmVyYWxseSByZXN1bHQgaW4gYSBjb25mbGljdGVkIGh1bmssIGJ1dCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIGNvbnRleHRcbiAgLy8gaXMgdGhlIG9ubHkgb3ZlcmxhcCB3aGVyZSB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IG1lcmdlIHRoZSBjb250ZW50IGhlcmUuXG4gIGxldCBtaW5lID0ge29mZnNldDogbWluZU9mZnNldCwgbGluZXM6IG1pbmVMaW5lcywgaW5kZXg6IDB9LFxuICAgICAgdGhlaXIgPSB7b2Zmc2V0OiB0aGVpck9mZnNldCwgbGluZXM6IHRoZWlyTGluZXMsIGluZGV4OiAwfTtcblxuICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgY29udGVudFxuICBpbnNlcnRMZWFkaW5nKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgaW5zZXJ0TGVhZGluZyhodW5rLCB0aGVpciwgbWluZSk7XG5cbiAgLy8gTm93IGluIHRoZSBvdmVybGFwIGNvbnRlbnQuIFNjYW4gdGhyb3VnaCBhbmQgc2VsZWN0IHRoZSBiZXN0IGNoYW5nZXMgZnJvbSBlYWNoLlxuICB3aGlsZSAobWluZS5pbmRleCA8IG1pbmUubGluZXMubGVuZ3RoICYmIHRoZWlyLmluZGV4IDwgdGhlaXIubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IG1pbmVDdXJyZW50ID0gbWluZS5saW5lc1ttaW5lLmluZGV4XSxcbiAgICAgICAgdGhlaXJDdXJyZW50ID0gdGhlaXIubGluZXNbdGhlaXIuaW5kZXhdO1xuXG4gICAgaWYgKChtaW5lQ3VycmVudFswXSA9PT0gJy0nIHx8IG1pbmVDdXJyZW50WzBdID09PSAnKycpXG4gICAgICAgICYmICh0aGVpckN1cnJlbnRbMF0gPT09ICctJyB8fCB0aGVpckN1cnJlbnRbMF0gPT09ICcrJykpIHtcbiAgICAgIC8vIEJvdGggbW9kaWZpZWQgLi4uXG4gICAgICBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnRbMF0gPT09ICcrJyAmJiB0aGVpckN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gTWluZSBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKG1pbmUpKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJysnICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlycyBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJy0nICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlyIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIHRoZWlyLCBtaW5lLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50ID09PSB0aGVpckN1cnJlbnQpIHtcbiAgICAgIC8vIENvbnRleHQgaWRlbnRpdHlcbiAgICAgIGh1bmsubGluZXMucHVzaChtaW5lQ3VycmVudCk7XG4gICAgICBtaW5lLmluZGV4Kys7XG4gICAgICB0aGVpci5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250ZXh0IG1pc21hdGNoXG4gICAgICBjb25mbGljdChodW5rLCBjb2xsZWN0Q2hhbmdlKG1pbmUpLCBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTm93IHB1c2ggYW55dGhpbmcgdGhhdCBtYXkgYmUgcmVtYWluaW5nXG4gIGluc2VydFRyYWlsaW5nKGh1bmssIG1pbmUpO1xuICBpbnNlcnRUcmFpbGluZyhodW5rLCB0aGVpcik7XG5cbiAgY2FsY0xpbmVDb3VudChodW5rKTtcbn1cblxuZnVuY3Rpb24gbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENoYW5nZSh0aGVpcik7XG5cbiAgaWYgKGFsbFJlbW92ZXMobXlDaGFuZ2VzKSAmJiBhbGxSZW1vdmVzKHRoZWlyQ2hhbmdlcykpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHJlbW92ZSBjaGFuZ2VzIHRoYXQgYXJlIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlclxuICAgIGlmIChhcnJheVN0YXJ0c1dpdGgobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpXG4gICAgICAgICYmIHNraXBSZW1vdmVTdXBlcnNldCh0aGVpciwgbXlDaGFuZ2VzLCBteUNoYW5nZXMubGVuZ3RoIC0gdGhlaXJDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gbXlDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGFycmF5U3RhcnRzV2l0aCh0aGVpckNoYW5nZXMsIG15Q2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KG1pbmUsIHRoZWlyQ2hhbmdlcywgdGhlaXJDaGFuZ2VzLmxlbmd0aCAtIG15Q2hhbmdlcy5sZW5ndGgpKSB7XG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIHRoZWlyQ2hhbmdlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9IGVsc2UgaWYgKGFycmF5RXF1YWwobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbmZsaWN0KGh1bmssIG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZhbChodW5rLCBtaW5lLCB0aGVpciwgc3dhcCkge1xuICBsZXQgbXlDaGFuZ2VzID0gY29sbGVjdENoYW5nZShtaW5lKSxcbiAgICAgIHRoZWlyQ2hhbmdlcyA9IGNvbGxlY3RDb250ZXh0KHRoZWlyLCBteUNoYW5nZXMpO1xuICBpZiAodGhlaXJDaGFuZ2VzLm1lcmdlZCkge1xuICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzLm1lcmdlZCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmxpY3QoaHVuaywgc3dhcCA/IHRoZWlyQ2hhbmdlcyA6IG15Q2hhbmdlcywgc3dhcCA/IG15Q2hhbmdlcyA6IHRoZWlyQ2hhbmdlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uZmxpY3QoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgaHVuay5jb25mbGljdCA9IHRydWU7XG4gIGh1bmsubGluZXMucHVzaCh7XG4gICAgY29uZmxpY3Q6IHRydWUsXG4gICAgbWluZTogbWluZSxcbiAgICB0aGVpcnM6IHRoZWlyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRMZWFkaW5nKGh1bmssIGluc2VydCwgdGhlaXIpIHtcbiAgd2hpbGUgKGluc2VydC5vZmZzZXQgPCB0aGVpci5vZmZzZXQgJiYgaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gICAgaW5zZXJ0Lm9mZnNldCsrO1xuICB9XG59XG5mdW5jdGlvbiBpbnNlcnRUcmFpbGluZyhodW5rLCBpbnNlcnQpIHtcbiAgd2hpbGUgKGluc2VydC5pbmRleCA8IGluc2VydC5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IGluc2VydC5saW5lc1tpbnNlcnQuaW5kZXgrK107XG4gICAgaHVuay5saW5lcy5wdXNoKGxpbmUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RDaGFuZ2Uoc3RhdGUpIHtcbiAgbGV0IHJldCA9IFtdLFxuICAgICAgb3BlcmF0aW9uID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdWzBdO1xuICB3aGlsZSAoc3RhdGUuaW5kZXggPCBzdGF0ZS5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XTtcblxuICAgIC8vIEdyb3VwIGFkZGl0aW9ucyB0aGF0IGFyZSBpbW1lZGlhdGVseSBhZnRlciBzdWJ0cmFjdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgb25lIFwiYXRvbWljXCIgbW9kaWZ5IGNoYW5nZS5cbiAgICBpZiAob3BlcmF0aW9uID09PSAnLScgJiYgbGluZVswXSA9PT0gJysnKSB7XG4gICAgICBvcGVyYXRpb24gPSAnKyc7XG4gICAgfVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gbGluZVswXSkge1xuICAgICAgcmV0LnB1c2gobGluZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gY29sbGVjdENvbnRleHQoc3RhdGUsIG1hdGNoQ2hhbmdlcykge1xuICBsZXQgY2hhbmdlcyA9IFtdLFxuICAgICAgbWVyZ2VkID0gW10sXG4gICAgICBtYXRjaEluZGV4ID0gMCxcbiAgICAgIGNvbnRleHRDaGFuZ2VzID0gZmFsc2UsXG4gICAgICBjb25mbGljdGVkID0gZmFsc2U7XG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aFxuICAgICAgICAmJiBzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBjaGFuZ2UgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF0sXG4gICAgICAgIG1hdGNoID0gbWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdO1xuXG4gICAgLy8gT25jZSB3ZSd2ZSBoaXQgb3VyIGFkZCwgdGhlbiB3ZSBhcmUgZG9uZVxuICAgIGlmIChtYXRjaFswXSA9PT0gJysnKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb250ZXh0Q2hhbmdlcyA9IGNvbnRleHRDaGFuZ2VzIHx8IGNoYW5nZVswXSAhPT0gJyAnO1xuXG4gICAgbWVyZ2VkLnB1c2gobWF0Y2gpO1xuICAgIG1hdGNoSW5kZXgrKztcblxuICAgIC8vIENvbnN1bWUgYW55IGFkZGl0aW9ucyBpbiB0aGUgb3RoZXIgYmxvY2sgYXMgYSBjb25mbGljdCB0byBhdHRlbXB0XG4gICAgLy8gdG8gcHVsbCBpbiB0aGUgcmVtYWluaW5nIGNvbnRleHQgYWZ0ZXIgdGhpc1xuICAgIGlmIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgY2hhbmdlID0gc3RhdGUubGluZXNbKytzdGF0ZS5pbmRleF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnN1YnN0cigxKSA9PT0gY2hhbmdlLnN1YnN0cigxKSkge1xuICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XSB8fCAnJylbMF0gPT09ICcrJ1xuICAgICAgJiYgY29udGV4dENoYW5nZXMpIHtcbiAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChjb25mbGljdGVkKSB7XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICB3aGlsZSAobWF0Y2hJbmRleCA8IG1hdGNoQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICBtZXJnZWQucHVzaChtYXRjaENoYW5nZXNbbWF0Y2hJbmRleCsrXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lcmdlZCxcbiAgICBjaGFuZ2VzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFsbFJlbW92ZXMoY2hhbmdlcykge1xuICByZXR1cm4gY2hhbmdlcy5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY2hhbmdlKSB7XG4gICAgcmV0dXJuIHByZXYgJiYgY2hhbmdlWzBdID09PSAnLSc7XG4gIH0sIHRydWUpO1xufVxuZnVuY3Rpb24gc2tpcFJlbW92ZVN1cGVyc2V0KHN0YXRlLCByZW1vdmVDaGFuZ2VzLCBkZWx0YSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhOyBpKyspIHtcbiAgICBsZXQgY2hhbmdlQ29udGVudCA9IHJlbW92ZUNoYW5nZXNbcmVtb3ZlQ2hhbmdlcy5sZW5ndGggLSBkZWx0YSArIGldLnN1YnN0cigxKTtcbiAgICBpZiAoc3RhdGUubGluZXNbc3RhdGUuaW5kZXggKyBpXSAhPT0gJyAnICsgY2hhbmdlQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmluZGV4ICs9IGRlbHRhO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lcykge1xuICBsZXQgb2xkTGluZXMgPSAwO1xuICBsZXQgbmV3TGluZXMgPSAwO1xuXG4gIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgIGlmICh0eXBlb2YgbGluZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBteUNvdW50ID0gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lLm1pbmUpO1xuICAgICAgbGV0IHRoZWlyQ291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUudGhlaXJzKTtcblxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQub2xkTGluZXMgPT09IHRoZWlyQ291bnQub2xkTGluZXMpIHtcbiAgICAgICAgICBvbGRMaW5lcyArPSBteUNvdW50Lm9sZExpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZExpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChteUNvdW50Lm5ld0xpbmVzID09PSB0aGVpckNvdW50Lm5ld0xpbmVzKSB7XG4gICAgICAgICAgbmV3TGluZXMgKz0gbXlDb3VudC5uZXdMaW5lcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdMaW5lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJysnIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgbmV3TGluZXMrKztcbiAgICAgIH1cbiAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnLScgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBvbGRMaW5lcysrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtvbGRMaW5lcywgbmV3TGluZXN9O1xufVxuIl19 + + +/***/ }), +/* 14 */ +/***/ (function(module, exports, __webpack_require__) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports. /*istanbul ignore end*/structuredPatch = structuredPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch; + /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch; + + var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/; + + /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } + + /*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + if (!options) { + options = {}; + } + if (typeof options.context === 'undefined') { + options.context = 4; + } + + var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr, options); + diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier + + function contextLines(lines) { + return lines.map(function (entry) { + return ' ' + entry; + }); + } + + var hunks = []; + var oldRangeStart = 0, + newRangeStart = 0, + curRange = [], + oldLine = 1, + newLine = 1; + + /*istanbul ignore start*/var _loop = function _loop( /*istanbul ignore end*/i) { + var current = diff[i], + lines = current.lines || current.value.replace(/\n$/, '').split('\n'); + current.lines = lines; + + if (current.added || current.removed) { + /*istanbul ignore start*/var _curRange; + + /*istanbul ignore end*/ // If we have previous context, start with that + if (!oldRangeStart) { + var prev = diff[i - 1]; + oldRangeStart = oldLine; + newRangeStart = newLine; + + if (prev) { + curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : []; + oldRangeStart -= curRange.length; + newRangeStart -= curRange.length; + } + } + + // Output our changes + /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) { + return (current.added ? '+' : '-') + entry; + }))); + + // Track the updated file position + if (current.added) { + newLine += lines.length; + } else { + oldLine += lines.length; + } + } else { + // Identical context lines. Track line changes + if (oldRangeStart) { + // Close out any changes that have been output (or join overlapping) + if (lines.length <= options.context * 2 && i < diff.length - 2) { + /*istanbul ignore start*/var _curRange2; + + /*istanbul ignore end*/ // Overlapping + /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines))); + } else { + /*istanbul ignore start*/var _curRange3; + + /*istanbul ignore end*/ // end the range and output + var contextSize = Math.min(lines.length, options.context); + /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize)))); + + var hunk = { + oldStart: oldRangeStart, + oldLines: oldLine - oldRangeStart + contextSize, + newStart: newRangeStart, + newLines: newLine - newRangeStart + contextSize, + lines: curRange + }; + if (i >= diff.length - 2 && lines.length <= options.context) { + // EOF is inside this hunk + var oldEOFNewline = /\n$/.test(oldStr); + var newEOFNewline = /\n$/.test(newStr); + if (lines.length == 0 && !oldEOFNewline) { + // special case: old has no eol and no trailing context; no-nl can end up before adds + curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file'); + } else if (!oldEOFNewline || !newEOFNewline) { + curRange.push('\\ No newline at end of file'); + } + } + hunks.push(hunk); + + oldRangeStart = 0; + newRangeStart = 0; + curRange = []; + } + } + oldLine += lines.length; + newLine += lines.length; + } + }; + + for (var i = 0; i < diff.length; i++) { + /*istanbul ignore start*/_loop( /*istanbul ignore end*/i); + } + + return { + oldFileName: oldFileName, newFileName: newFileName, + oldHeader: oldHeader, newHeader: newHeader, + hunks: hunks + }; + } + + function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) { + var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options); + + var ret = []; + if (oldFileName == newFileName) { + ret.push('Index: ' + oldFileName); + } + ret.push('==================================================================='); + ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader)); + ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader)); + + for (var i = 0; i < diff.hunks.length; i++) { + var hunk = diff.hunks[i]; + ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@'); + ret.push.apply(ret, hunk.lines); + } + + return ret.join('\n') + '\n'; + } + + function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) { + return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options); + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwic3BsaWNlIiwicmV0IiwiYXBwbHkiLCJqb2luIiwiZmlsZU5hbWUiXSwibWFwcGluZ3MiOiI7OztnQ0FFZ0JBLGUsR0FBQUEsZTt5REFpR0FDLG1CLEdBQUFBLG1CO3lEQXdCQUMsVyxHQUFBQSxXOztBQTNIaEI7Ozs7dUJBRU8sU0FBU0YsZUFBVCxDQUF5QkcsV0FBekIsRUFBc0NDLFdBQXRDLEVBQW1EQyxNQUFuRCxFQUEyREMsTUFBM0QsRUFBbUVDLFNBQW5FLEVBQThFQyxTQUE5RSxFQUF5RkMsT0FBekYsRUFBa0c7QUFDdkcsTUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDWkEsY0FBVSxFQUFWO0FBQ0Q7QUFDRCxNQUFJLE9BQU9BLFFBQVFDLE9BQWYsS0FBMkIsV0FBL0IsRUFBNEM7QUFDMUNELFlBQVFDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxN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QUEvQyxFQUEwREMsU0FBMUQsRUFBcUVDLE9BQXJFLEVBQThFO0FBQ25GLFNBQU9SLG9CQUFvQitDLFFBQXBCLEVBQThCQSxRQUE5QixFQUF3QzNDLE1BQXhDLEVBQWdEQyxNQUFoRCxFQUF3REMsU0FBeEQsRUFBbUVDLFNBQW5FLEVBQThFQyxPQUE5RSxDQUFQO0FBQ0QiLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgZGlmZi5wdXNoKHt2YWx1ZTogJycsIGxpbmVzOiBbXX0pOyAgIC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgvXFxuJC8udGVzdChvbGRTdHIpKTtcbiAgICAgICAgICAgIGxldCBuZXdFT0ZOZXdsaW5lID0gKC9cXG4kLy50ZXN0KG5ld1N0cikpO1xuICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAwICYmICFvbGRFT0ZOZXdsaW5lKSB7XG4gICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb2xkIGhhcyBubyBlb2wgYW5kIG5vIHRyYWlsaW5nIGNvbnRleHQ7IG5vLW5sIGNhbiBlbmQgdXAgYmVmb3JlIGFkZHNcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9sZEVPRk5ld2xpbmUgfHwgIW5ld0VPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgY3VyUmFuZ2UucHVzaCgnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGh1bmtzLnB1c2goaHVuayk7XG5cbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBjdXJSYW5nZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2xkRmlsZU5hbWU6IG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZTogbmV3RmlsZU5hbWUsXG4gICAgb2xkSGVhZGVyOiBvbGRIZWFkZXIsIG5ld0hlYWRlcjogbmV3SGVhZGVyLFxuICAgIGh1bmtzOiBodW5rc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID0gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcblxuICBjb25zdCByZXQgPSBbXTtcbiAgaWYgKG9sZEZpbGVOYW1lID09IG5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgb2xkRmlsZU5hbWUpO1xuICB9XG4gIHJldC5wdXNoKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gIHJldC5wdXNoKCctLS0gJyArIGRpZmYub2xkRmlsZU5hbWUgKyAodHlwZW9mIGRpZmYub2xkSGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm9sZEhlYWRlcikpO1xuICByZXQucHVzaCgnKysrICcgKyBkaWZmLm5ld0ZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm5ld0hlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5uZXdIZWFkZXIpKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYuaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBodW5rID0gZGlmZi5odW5rc1tpXTtcbiAgICByZXQucHVzaChcbiAgICAgICdAQCAtJyArIGh1bmsub2xkU3RhcnQgKyAnLCcgKyBodW5rLm9sZExpbmVzXG4gICAgICArICcgKycgKyBodW5rLm5ld1N0YXJ0ICsgJywnICsgaHVuay5uZXdMaW5lc1xuICAgICAgKyAnIEBAJ1xuICAgICk7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBodW5rLmxpbmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXQuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNyZWF0ZVR3b0ZpbGVzUGF0Y2goZmlsZU5hbWUsIGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xufVxuIl19 + + +/***/ }), +/* 15 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/"use strict"; + + exports.__esModule = true; + exports. /*istanbul ignore end*/arrayEqual = arrayEqual; + /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayStartsWith = arrayStartsWith; + function arrayEqual(a, b) { + if (a.length !== b.length) { + return false; + } + + return arrayStartsWith(a, b); + } + + function arrayStartsWith(array, start) { + if (start.length > array.length) { + return false; + } + + for (var i = 0; i < start.length; i++) { + if (start[i] !== array[i]) { + return false; + } + } + + return true; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhcnJheVN0YXJ0c1dpdGgiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCQSxVLEdBQUFBLFU7eURBUUFDLGUsR0FBQUEsZTtBQVJULFNBQVNELFVBQVQsQ0FBb0JFLENBQXBCLEVBQXVCQyxDQUF2QixFQUEwQjtBQUMvQixNQUFJRCxFQUFFRSxNQUFGLEtBQWFELEVBQUVDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9ILGdCQUFnQkMsQ0FBaEIsRUFBbUJDLENBQW5CLENBQVA7QUFDRDs7QUFFTSxTQUFTRixlQUFULENBQXlCSSxLQUF6QixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDNUMsTUFBSUEsTUFBTUYsTUFBTixHQUFlQyxNQUFNRCxNQUF6QixFQUFpQztBQUMvQixXQUFPLEtBQVA7QUFDRDs7QUFFRCxPQUFLLElBQUlHLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTUYsTUFBMUIsRUFBa0NHLEdBQWxDLEVBQXVDO0FBQ3JDLFFBQUlELE1BQU1DLENBQU4sTUFBYUYsTUFBTUUsQ0FBTixDQUFqQixFQUEyQjtBQUN6QixhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVELFNBQU8sSUFBUDtBQUNEIiwiZmlsZSI6ImFycmF5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFycmF5RXF1YWwoYSwgYikge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5U3RhcnRzV2l0aChhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5U3RhcnRzV2l0aChhcnJheSwgc3RhcnQpIHtcbiAgaWYgKHN0YXJ0Lmxlbmd0aCA+IGFycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RhcnRbaV0gIT09IGFycmF5W2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0= + + +/***/ }), +/* 16 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/"use strict"; + + exports.__esModule = true; + exports. /*istanbul ignore end*/convertChangesToDMP = convertChangesToDMP; + // See: http://code.google.com/p/google-diff-match-patch/wiki/API + function convertChangesToDMP(changes) { + var ret = [], + change = /*istanbul ignore start*/void 0 /*istanbul ignore end*/, + operation = /*istanbul ignore start*/void 0 /*istanbul ignore end*/; + for (var i = 0; i < changes.length; i++) { + change = changes[i]; + if (change.added) { + operation = 1; + } else if (change.removed) { + operation = -1; + } else { + operation = 0; + } + + ret.push([operation, change.value]); + } + return ret; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7OztnQ0FDZ0JBLG1CLEdBQUFBLG1CO0FBRGhCO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLE1BQU0sRUFBVjtBQUFBLE1BQ0lDLHdDQURKO0FBQUEsTUFFSUMsMkNBRko7QUFHQSxPQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUosUUFBUUssTUFBNUIsRUFBb0NELEdBQXBDLEVBQXlDO0FBQ3ZDRixhQUFTRixRQUFRSSxDQUFSLENBQVQ7QUFDQSxRQUFJRixPQUFPSSxLQUFYLEVBQWtCO0FBQ2hCSCxrQkFBWSxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE9BQU9LLE9BQVgsRUFBb0I7QUFDekJKLGtCQUFZLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxrQkFBWSxDQUFaO0FBQ0Q7O0FBRURGLFFBQUlPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE9BQU9PLEtBQW5CLENBQVQ7QUFDRDtBQUNELFNBQU9SLEdBQVA7QUFDRCIsImZpbGUiOiJkbXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWU6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtZGlmZi1tYXRjaC1wYXRjaC93aWtpL0FQSVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDaGFuZ2VzVG9ETVAoY2hhbmdlcykge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBjaGFuZ2UsXG4gICAgICBvcGVyYXRpb247XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgb3BlcmF0aW9uID0gMTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3BlcmF0aW9uID0gMDtcbiAgICB9XG5cbiAgICByZXQucHVzaChbb3BlcmF0aW9uLCBjaGFuZ2UudmFsdWVdKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19 + + +/***/ }), +/* 17 */ +/***/ (function(module, exports) { + + /*istanbul ignore start*/'use strict'; + + exports.__esModule = true; + exports. /*istanbul ignore end*/convertChangesToXML = convertChangesToXML; + function convertChangesToXML(changes) { + var ret = []; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + + ret.push(escapeHTML(change.value)); + + if (change.added) { + ret.push(''); + } else if (change.removed) { + ret.push(''); + } + } + return ret.join(''); + } + + function escapeHTML(s) { + var n = s; + n = n.replace(/&/g, '&'); + n = n.replace(//g, '>'); + n = n.replace(/"/g, '"'); + + return n; + } + //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsbUIsR0FBQUEsbUI7QUFBVCxTQUFTQSxtQkFBVCxDQUE2QkMsT0FBN0IsRUFBc0M7QUFDM0MsTUFBSUMsTUFBTSxFQUFWO0FBQ0EsT0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlGLFFBQVFHLE1BQTVCLEVBQW9DRCxHQUFwQyxFQUF5QztBQUN2QyxRQUFJRSxTQUFTSixRQUFRRSxDQUFSLENBQWI7QUFDQSxRQUFJRSxPQUFPQyxLQUFYLEVBQWtCO0FBQ2hCSixVQUFJSyxJQUFKLENBQVMsT0FBVDtBQUNELEtBRkQsTUFFTyxJQUFJRixPQUFPRyxPQUFYLEVBQW9CO0FBQ3pCTixVQUFJSyxJQUFKLENBQVMsT0FBVDtBQUNEOztBQUVETCxRQUFJSyxJQUFKLENBQVNFLFdBQVdKLE9BQU9LLEtBQWxCLENBQVQ7O0FBRUEsUUFBSUwsT0FBT0MsS0FBWCxFQUFrQjtBQUNoQkosVUFBSUssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsT0FBT0csT0FBWCxFQUFvQjtBQUN6Qk4sVUFBSUssSUFBSixDQUFTLFFBQVQ7QUFDRDtBQUNGO0FBQ0QsU0FBT0wsSUFBSVMsSUFBSixDQUFTLEVBQVQsQ0FBUDtBQUNEOztBQUVELFNBQVNGLFVBQVQsQ0FBb0JHLENBQXBCLEVBQXVCO0FBQ3JCLE1BQUlDLElBQUlELENBQVI7QUFDQUMsTUFBSUEsRUFBRUMsT0FBRixDQUFVLElBQVYsRUFBZ0IsT0FBaEIsQ0FBSjtBQUNBRCxNQUFJQSxFQUFFQyxPQUFGLENBQVUsSUFBVixFQUFnQixNQUFoQixDQUFKO0FBQ0FELE1BQUlBLEVBQUVDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsTUFBSUEsRUFBRUMsT0FBRixDQUFVLElBQVYsRUFBZ0IsUUFBaEIsQ0FBSjs7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJmaWxlIjoieG1sLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDaGFuZ2VzVG9YTUwoY2hhbmdlcykge1xuICBsZXQgcmV0ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBjaGFuZ2UgPSBjaGFuZ2VzW2ldO1xuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8aW5zPicpO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8ZGVsPicpO1xuICAgIH1cblxuICAgIHJldC5wdXNoKGVzY2FwZUhUTUwoY2hhbmdlLnZhbHVlKSk7XG5cbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICByZXQucHVzaCgnPC9pbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzwvZGVsPicpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0LmpvaW4oJycpO1xufVxuXG5mdW5jdGlvbiBlc2NhcGVIVE1MKHMpIHtcbiAgbGV0IG4gPSBzO1xuICBuID0gbi5yZXBsYWNlKC8mL2csICcmYW1wOycpO1xuICBuID0gbi5yZXBsYWNlKC88L2csICcmbHQ7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLz4vZywgJyZndDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvXCIvZywgJyZxdW90OycpO1xuXG4gIHJldHVybiBuO1xufVxuIl19 + + +/***/ }) +/******/ ]) +}); +; \ No newline at end of file diff --git a/report/html_report/diverged.js b/report/html_report/diverged.js new file mode 100644 index 0000000000..b96620eb8e --- /dev/null +++ b/report/html_report/diverged.js @@ -0,0 +1,340 @@ +'use strict'; +const noop = function (){}; +let LCS_DIFF_ARRAY_METHOD = undefined; +// debugger +if (typeof require !== 'undefined') { + LCS_DIFF_ARRAY_METHOD = require('diff').diffArrays; +} else { + try { + LCS_DIFF_ARRAY_METHOD = JsDiff.diffArrays; + } catch(err) { + console.error(err); + } +} + +const rowSpread = 1; + +const spread = 50; // range of adjacent pixels to aggregate when calculating diff +const IS_ADDED_WORD = '0_255_0_255'; +const IS_REMOVED_WORD = '255_0_0_255'; +const IS_ADDED_AND_REMOVED_WORD = '0_255_255_255'; +const IS_SAME_WORD = ''; +const OPACITY = '40'; // 0-255 range + +/** + * Applies Longest-Common-Subsequence-Diff algorithm to imageData formatted arrays + * + * @param {Uint8ClampedArray} [reference] baseline image + * @param {Uint8ClampedArray} [test] test image + * + * @returns {Uint8ClampedArray} diff image + * + */ +if (typeof module !== 'undefined') { + module.exports = diverged; +} + +function diverged(reference, test, h, w) { + console.time("diverged_total_time"); + + const spread = Math.floor(h / 80); //override + + console.log('spread:', spread); + + console.time("imgDataToWords"); + const img1wordArr = imgDataToWords(reference); + const img2wordArr = imgDataToWords(test); + console.timeEnd("imgDataToWords"); + + console.time("imgDataWordArrToColsAndRows"); + let cols_rows_ref = imgDataWordArrToColsAndRows(img1wordArr, h, w); + let cols_rows_test = imgDataWordArrToColsAndRows(img2wordArr, h, w); + console.timeEnd("imgDataWordArrToColsAndRows"); + + console.time("groupAdjacent"); + const columnRef = groupAdjacent(cols_rows_ref.columns, spread, h, w); + const columnTest = groupAdjacent(cols_rows_test.columns, spread, h, w); + console.timeEnd("groupAdjacent"); + + console.time("columnDiffRaw"); + const columnDiffRaw = diffArr(columnRef, columnTest, h, w); + console.timeEnd("columnDiffRaw"); + + console.time("reduceColumnDiffRaw"); + const reducedColumnDiff = reduceColumnDiffRaw(columnDiffRaw, h, w); + console.timeEnd("reduceColumnDiffRaw"); + // console.log("reducedColumnDiff>>>", reducedColumnDiff); + + console.time("unGroupAdjacent"); + const expandedColumns = ungroupAdjacent(reducedColumnDiff, spread, cols_rows_test.columns, h, w); + console.timeEnd("unGroupAdjacent"); + + console.time("columnWordDataToImgDataFormatAsWords"); + const convertedColumnDiffImgData = columnWordDataToImgDataFormatAsWords(expandedColumns, h, w); + console.timeEnd("columnWordDataToImgDataFormatAsWords"); + // console.log("convertedColumnDiffImgData>>>", convertedColumnDiffImgData); + + console.time("imgDataWordsToClampedImgData"); + const imgDataArr = convertImgDataWordsToClampedImgData(convertedColumnDiffImgData); + console.timeEnd("imgDataWordsToClampedImgData"); + // console.log("imgDataArr>>>", imgDataArr); + + console.timeEnd("diverged_total_time"); + return imgDataArr; +} + +/** + * ========= HELPERS ======== + */ + +function columnWordDataToImgDataFormatAsWords(columns, h, w) { + const imgDataWordsLength = w * h; + + let convertedArr = new Array(imgDataWordsLength); + for (var i = 0; i < imgDataWordsLength; i++) { + const {column, depth} = serialToColumnMap(i, h, w); + convertedArr[i] = columns[column][depth]; + } + return convertedArr; +} + +function convertImgDataWordsToClampedImgData(wordsArr) { + let convertedArr = new Uint8ClampedArray(wordsArr.length * 4); + for (var i = 0; i < wordsArr.length; i++) { + const convertedOffset = i * 4; + const segments = wordsArr[i].split('_'); + convertedArr[convertedOffset] = segments[0]; + convertedArr[convertedOffset+1] = segments[1]; + convertedArr[convertedOffset+2] = segments[2]; + convertedArr[convertedOffset+3] = segments[3]; + } + return convertedArr; +} + +function reduceColumnDiffRaw(columnDiffs, h, w) { + let reducedColumns = new Array(columnDiffs.length); + for (let columnIndex = 0; columnIndex < columnDiffs.length; columnIndex++) { + const columnDiff = columnDiffs[columnIndex]; + let resultColumn = new Array(); + let removedCounter = 0; + let resultClass = ''; + let segment = []; + let debug = false; + + for (let depthIndex = 0; depthIndex < columnDiff.length; depthIndex++) { + let segmentLength = 0; + + // Categorize the current segment + if (columnDiff[depthIndex].removed) { + segmentLength = columnDiff[depthIndex].count; + removedCounter += segmentLength; + resultClass = IS_REMOVED_WORD; + } else { + if (columnDiff[depthIndex].added) { + if (removedCounter) { + resultClass = IS_ADDED_AND_REMOVED_WORD; + } else { + resultClass = IS_ADDED_WORD; + } + } else { + resultClass = IS_SAME_WORD; + } + + segmentLength = columnDiff[depthIndex].count; + + if (removedCounter > 0) { + if (segmentLength > removedCounter) { + segmentLength -= removedCounter; + removedCounter = 0; + } else { + removedCounter -= segmentLength; + segmentLength = 0; + } + } + } + + // Limit segmentLength to total length of column + if (!segmentLength) { + continue; + } else { + segmentLength = Math.min(segmentLength, h - resultColumn.length); + } + + const printSampleMap = false; + if (!printSampleMap || resultClass !== IS_SAME_WORD){ + segment = new Array(segmentLength).fill(resultClass); + } else { + // reduced resolution image + segment = columnDiff[depthIndex].value.slice(0,segmentLength).map((value, i) => { + if (/|/.test(value)) { + return value.split('|')[0]; + } + return value; + }); + } + + + resultColumn = resultColumn.concat(segment); + + if (resultColumn.length > h) { + console.log('WARNING -- this value is out of bounds!') + } + } + + reducedColumns[columnIndex] = resultColumn; + } + + return reducedColumns; +} + +function diffArr(refArr, testArr, h, w) { + let rawResultArr = []; + for (let i = 0; i < refArr.length; i++) { + rawResultArr.push(LCS_DIFF_ARRAY_METHOD(refArr[i], testArr[i])); + } + return rawResultArr; +} + +function groupAdjacent(columns, spread, h, w) { + if (!spread) { + return columns; + } + + /** + * [getAdjacentArrayBounds retuns existing adjacent lower and upper column bounds] + * @param {[int]} pointer [current index] + * @param {[int]} spread [distance from index] + * @param {[int]} length [total length] + * @return {[array]} [0] lower bound, [1] upper bound + */ + function getAdjacentArrayBounds(pointer, spread, length) { + return [ + // Math.max(0, pointer - spread), + Math.max(0, pointer), + Math.min(length - 1, pointer + spread) + ] + } + + function getInterpolatedSequence(beginning, end) { + const interpolated = []; + for (let step = beginning; step <= end; step++) { + interpolated.push(step); + } + return interpolated; + } + + function getCompositeColumnDepthValues(columns, sequence, depth) { + return sequence.reduce((acc, column) => { + return acc.concat(columns[column][depth]); + }, []) + } + + function getCompositeRowIndexValues(groupedColumns, sequence, column) { + return sequence.reduce((acc, depth) => { + return acc.concat(groupedColumns[column][depth]); + }, []) + } + + const groupedColumns = new Array(); + let columnPointer = 0; + while (columnPointer < w) { + const adjacentColumnBounds = getAdjacentArrayBounds(columnPointer, spread, w); + const interpolatedColumns = getInterpolatedSequence(...adjacentColumnBounds); + + const columnComposite = new Array(); + for (var depth = 0; depth < h; depth++) { + columnComposite[depth] = getCompositeColumnDepthValues(columns, interpolatedColumns, depth).join('|'); + } + groupedColumns.push(columnComposite); + columnPointer += spread; + } + + const groupedRows = new Array(); + if (rowSpread > 1) { + for (var index = 0; index < groupedColumns.length; index++) { + const rowComposite = new Array(); + let depthPointer = 0; + while (depthPointer < h) { + const adjacentRowBounds = getAdjacentArrayBounds(depthPointer, rowSpread, h); + const interpolatedRows = getInterpolatedSequence(...adjacentRowBounds); + rowComposite.push(getCompositeRowIndexValues(groupedColumns, interpolatedRows, index).join(',')); + depthPointer += rowSpread; + } + groupedRows[index] = rowComposite; + } + } + return groupedRows.length ? groupedRows : groupedColumns ; +} + +function ungroupAdjacent(grouped, spread, columnUnderlay, h, w) { + if (!spread) { + return grouped; + } + + function mapUngroupedColumnIndexToGroupedIndex(index, spread) { + return Math.floor(index / spread); + } + + // expand columns + const ungrouped = new Array(w); + for (let index = 0; index < w; index++) { + if (!ungrouped[index]) { + ungrouped[index] = new Array(h); + } + + const groupedIndexMap = mapUngroupedColumnIndexToGroupedIndex(index, spread); + for (let depth = 0; depth < h; depth++) { + const groupedDepthMap = rowSpread > 1 ? mapUngroupedColumnIndexToGroupedIndex(depth, rowSpread) : depth; + const value = grouped[groupedIndexMap][groupedDepthMap].split('|')[0]; + ungrouped[index][depth] = value ? value : columnUnderlay[index][depth].replace(/\d+$/, OPACITY); + } + } + + return ungrouped +} + + + +function imgDataWordArrToColsAndRows(arr, h, w) { + let columns = new Array(w); + let rows = new Array(h); + + for (var i = 0; i < arr.length; i++) { + const word = arr[i]; + + var {column, depth} = serialToColumnMap(i, h, w); + if (!columns[column]) { + columns[column] = new Array(h); + } + columns[column][depth] = word; + + var {row, index} = serialToRowMap(i, h, w); + if (!rows[row]) { + rows[row] = new Array(w); + } + rows[row][index] = word; + } + return {columns, rows} +} + +function serialToColumnMap(index, h, w) { + return { + column: index % w, + depth: Math.floor(index / w) + } +} + +function serialToRowMap(index, h, w) { + return { + row: Math.floor(index / w), + index: index % w + } +} + +function imgDataToWords(arr) { + let result = []; + for (let i = 0; i < arr.length-1; i += 4) { + result.push(`${arr[i]}_${arr[i+1]}_${arr[i+2]}_${arr[i+3]}`) + } + return result; +} diff --git a/report/html_report/divergedWorker.js b/report/html_report/divergedWorker.js new file mode 100644 index 0000000000..c41d85e54b --- /dev/null +++ b/report/html_report/divergedWorker.js @@ -0,0 +1,6 @@ +importScripts('diff.js'); +importScripts('diverged.js'); +self.addEventListener('message', function(e) { + self.postMessage(diverged(...e.data.divergedInput)); + self.close(); +}, false); diff --git a/report/html_report/index.html b/report/html_report/index.html new file mode 100644 index 0000000000..688ed2f44e --- /dev/null +++ b/report/html_report/index.html @@ -0,0 +1,44 @@ + + + + + BackstopJS Report + + + + +

+ +
+ + + + + diff --git a/report/html_report/index_bundle.js b/report/html_report/index_bundle.js new file mode 100644 index 0000000000..6166eba97a --- /dev/null +++ b/report/html_report/index_bundle.js @@ -0,0 +1,3602 @@ +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = ""; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./compare/src/index.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./compare/src/actions/index.js": +/*!**************************************!*\ + !*** ./compare/src/actions/index.js ***! + \**************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar approveTest = exports.approveTest = function approveTest(id) {\n return {\n type: 'APPROVE_TEST',\n id: id\n };\n};\n\nvar filterTests = exports.filterTests = function filterTests(status) {\n return {\n type: 'FILTER_TESTS',\n status: status\n };\n};\n\nvar findTests = exports.findTests = function findTests(value) {\n return {\n type: 'SEARCH_TESTS',\n value: value\n };\n};\n\nvar updateSettings = exports.updateSettings = function updateSettings(id) {\n return {\n type: 'UPDATE_SETTINGS',\n id: id\n };\n};\n\nvar toggleAllImages = exports.toggleAllImages = function toggleAllImages(value) {\n return {\n type: 'TOGGLE_ALL_IMAGES',\n value: value\n };\n};\n\nvar openModal = exports.openModal = function openModal(value) {\n return {\n type: 'OPEN_SCRUBBER_MODAL',\n value: value\n };\n};\n\nvar closeModal = exports.closeModal = function closeModal(value) {\n return {\n type: 'CLOSE_SCRUBBER_MODAL',\n value: value\n };\n};\n\nvar showScrubberTestImage = exports.showScrubberTestImage = function showScrubberTestImage(value) {\n return {\n type: 'SHOW_SCRUBBER_TEST_IMAGE',\n value: value\n };\n};\n\nvar showScrubberRefImage = exports.showScrubberRefImage = function showScrubberRefImage(value) {\n return {\n type: 'SHOW_SCRUBBER_REF_IMAGE',\n value: value\n };\n};\n\nvar showScrubberDiffImage = exports.showScrubberDiffImage = function showScrubberDiffImage(value) {\n return {\n type: 'SHOW_SCRUBBER_DIFF_IMAGE',\n value: value\n };\n};\n\nvar showScrubberDivergedImage = exports.showScrubberDivergedImage = function showScrubberDivergedImage(value) {\n return {\n type: 'SHOW_SCRUBBER_DIVERGED_IMAGE',\n value: value\n };\n};\n\nvar showScrubber = exports.showScrubber = function showScrubber(value) {\n return {\n type: 'SHOW_SCRUBBER',\n value: value\n };\n};\n\n//# sourceURL=webpack:///./compare/src/actions/index.js?"); + +/***/ }), + +/***/ "./compare/src/assets/icons/close.png": +/*!********************************************!*\ + !*** ./compare/src/assets/icons/close.png ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAABGdBTUEAALGPC/xhBQAAAzZJREFUeAHlm89q20AQhyv5lBAo+FJCn6GF3nostm+GkIv7kPEll1yMMbnm2pBHKL0ZAkkKubjzE96yUSxpZ2dm9ccLQmtpd2e+T5JtVmz2gcpisTjZbrc/qXq22+2uN5vNbxwfWplMJp+zLLskrqfxeHy1XC7/Znv4OwL/AmBq8IhG6/X6Fp+HUmaz2Q9cXNo+gokYf5GE7zmuvIPHCTSg7QYd8HkIZQ9/4+DBRPWvYM+pflaGpJOnQ5HgwZ+WOcGeE+g1bvvyySFIqIMHM9hzfOHhmaftZUgSGuBfwFywO+iADvO+fDFyWDInAHtOR79fl+pchjcC+i6BCw/edwL6KiEGvlJA3yTEwtcK6IsECXyjgK5LkMIHCeiqBA34YAFdk6AFzxLQFQma8GwBbUvQho8S0JYEC/hoAaklWMGLBKSSYAkvFmAtwRpeRYCVhBTwagK0JaSCVxWgJSElvLoAqYTU8CYCYiW0AW8mgCuhLXhTAaES0A7vIDANj7pfMFNNm+lk7MEpMT8Jab3p6mL8tuAR21wAgtRJwPlySXHlXcwkAhAsVEJKeOSVTECIhNTwyAkvR4+6JLsDjvoRCIV3t2LKR8H8EaiD34M+O3C3x88i/hugrztmtTd9BALg5wADbFv/BcwEhMC71+2cttp3gomAGKCYPhoy1AVIQCR9Y2WoCtAA0BiDI0NNgGbimmM1yVARYJGwxZiHZIgFWCZqObaTIRKQIkHrGNECrBNzVwh7y1hRAiwT8sH9ulVMtgCrRHzYqrpFbJYAiwSqYKuOa+cQLEA7cBVgyHHNXIIEaAYMAQxpo5VTowCtQCFQ3DYaudUK0AjAheK2l+ZYKUA6MBdE0l6S60EBkgElIJK+sTm/ExA7kCR5rb4xub8REDOAVvJa43AZ/gvgdtRK2GIcDkshgNPBImGLMZuYRqPRZLVa3WX75aQPNC1drKj0k0n5gsKPq1VvkPCH4nzLCfJyiPCQiGl34pvjQpalEvM5Hb/Am6Gn8kl0QEc3b18+36fPDRJec6yiJth7B0V1LJ4eBLxjggQ888SF274oVMfi6aviS/BYls9Pp9NPBH5Bt/8r4LF8/h8bZl9WdQoucwAAAABJRU5ErkJggg==\"\n\n//# sourceURL=webpack:///./compare/src/assets/icons/close.png?"); + +/***/ }), + +/***/ "./compare/src/assets/icons/iconDown.png": +/*!***********************************************!*\ + !*** ./compare/src/assets/icons/iconDown.png ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAYAAADwdn+XAAAABGdBTUEAALGPC/xhBQAAAPdJREFUKBVjZMABEhISOB4/frwcJC0rKxu5YMGCH9iUMmIT9PPz4/369eum////P2NkZPwPVCPNzc3tt2nTps/o6pnQBXx9fUWAmvcBxa/t3bs3Zs+ePbEgNkgMJIeuHsUAJycn6W/fvh0C2roTqDkbZDsIQ9k7QXIgNciGMMM47u7uKkAn7wfyZwI1tMLEYfS9e/f2KSkpcQD5M9TU1LbevXv3HUgObICzs7Pev3//9gD5TUDNU0ES2MD9+/ePAw35AlS7CEjvAfJfMgI1WwIVrwfiHKDmNdg0oosB9YQAxaYAcSAoDKYxMTHFEasZZBhILUgPSC8A/Zdrp6hdBGQAAAAASUVORK5CYII=\"\n\n//# sourceURL=webpack:///./compare/src/assets/icons/iconDown.png?"); + +/***/ }), + +/***/ "./compare/src/assets/icons/search.png": +/*!*********************************************!*\ + !*** ./compare/src/assets/icons/search.png ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = \"data:image/png;base64,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\"\n\n//# sourceURL=webpack:///./compare/src/assets/icons/search.png?"); + +/***/ }), + +/***/ "./compare/src/assets/icons/settings.png": +/*!***********************************************!*\ + !*** ./compare/src/assets/icons/settings.png ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAQZJREFUWAndVEESgyAMLB1fxrF9bznyNQudsSq62QZisfWiZiEkm2XdBTze+0eCbgAOMcY7wFThq7AaHZ63SJiQcgsN29A6kjp1y0hiZlz+t35LDLTm/mj/QGYNkxgxEboy4JwbB6Rm1mGpDUgVAboykGujt4AxQRqksMRAQLvT7LJJ/cezMpmWlsh1htYtjUBbj2TPEKMi1FZRXk8mYksGtLW+1ldbsfY0wMSJrdiow3eaUhsT0F8DUyVWbzBrmN6Sgd+0bmjFtdYKuQaANAJonymXhIGj9sPUisvroxXZ/rFzVGJgXnXgV7UVGzFxYitmHZbaqJ1Sfw2wyhkTbD/DJQa+Yq1PGOtJ/BpD3bUAAAAASUVORK5CYII=\"\n\n//# sourceURL=webpack:///./compare/src/assets/icons/settings.png?"); + +/***/ }), + +/***/ "./compare/src/assets/images/logo.png": +/*!********************************************!*\ + !*** ./compare/src/assets/images/logo.png ***! + \********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("module.exports = __webpack_require__.p + \"a96f14595379b7c348d66e115ec65a93.png\";\n\n//# sourceURL=webpack:///./compare/src/assets/images/logo.png?"); + +/***/ }), + +/***/ "./compare/src/components/App.js": +/*!***************************************!*\ + !*** ./compare/src/components/App.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n padding: 0 30px;\\n'], ['\\n padding: 0 30px;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _reactSticky = __webpack_require__(/*! react-sticky */ \"./node_modules/react-sticky/lib/index.js\");\n\nvar _Header = __webpack_require__(/*! ./ecosystems/Header */ \"./compare/src/components/ecosystems/Header.js\");\n\nvar _Header2 = _interopRequireDefault(_Header);\n\nvar _List = __webpack_require__(/*! ./ecosystems/List */ \"./compare/src/components/ecosystems/List.js\");\n\nvar _List2 = _interopRequireDefault(_List);\n\nvar _ScrubberModal = __webpack_require__(/*! ./ecosystems/ScrubberModal */ \"./compare/src/components/ecosystems/ScrubberModal.js\");\n\nvar _ScrubberModal2 = _interopRequireDefault(_ScrubberModal);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n// ESLint\n/* eslint-disable no-unused-vars */\n\n\nvar Wrapper = _styledComponents2.default.section(_templateObject);\n\nvar App = function (_React$Component) {\n _inherits(App, _React$Component);\n\n function App() {\n _classCallCheck(this, App);\n\n return _possibleConstructorReturn(this, (App.__proto__ || Object.getPrototypeOf(App)).apply(this, arguments));\n }\n\n _createClass(App, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n _reactSticky.StickyContainer,\n null,\n _react2.default.createElement(_Header2.default, null),\n _react2.default.createElement(\n Wrapper,\n null,\n _react2.default.createElement(_List2.default, null)\n ),\n _react2.default.createElement(_ScrubberModal2.default, null)\n );\n }\n }]);\n\n return App;\n}(_react2.default.Component);\n\nexports.default = App;\n\n//# sourceURL=webpack:///./compare/src/components/App.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/ButtonFilter.js": +/*!******************************************************!*\ + !*** ./compare/src/components/atoms/ButtonFilter.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n font-size: 20px;\\n font-family: ', ';\\n flex: 0 0 auto;\\n margin: 0;\\n background-color: ', ';\\n border: none;\\n border-radius: 3px;\\n box-shadow: ', ';\\n color: ', ';\\n margin-right: 15px;\\n padding: 0px 30px;\\n opacity: ', ';\\n outline: none;\\n height: 100%;\\n transition: all 0.3s ease-in-out;\\n\\n &:hover {\\n cursor: pointer;\\n box-shadow: ', ';\\n }\\n\\n &.pass {\\n background-color: ', ';\\n color: ', ';\\n }\\n\\n &.fail {\\n background-color: ', ';\\n color: ', ';\\n }\\n'], ['\\n font-size: 20px;\\n font-family: ', ';\\n flex: 0 0 auto;\\n margin: 0;\\n background-color: ', ';\\n border: none;\\n border-radius: 3px;\\n box-shadow: ', ';\\n color: ', ';\\n margin-right: 15px;\\n padding: 0px 30px;\\n opacity: ', ';\\n outline: none;\\n height: 100%;\\n transition: all 0.3s ease-in-out;\\n\\n &:hover {\\n cursor: pointer;\\n box-shadow: ', ';\\n }\\n\\n &.pass {\\n background-color: ', ';\\n color: ', ';\\n }\\n\\n &.fail {\\n background-color: ', ';\\n color: ', ';\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Button = _styledComponents2.default.button(_templateObject, _styles.fonts.latoRegular, _styles.colors.white, function (props) {\n return props.selected ? 'none' : _styles.shadows.shadow01;\n}, _styles.colors.primaryText, function (props) {\n return props.selected ? '1' : '0.5';\n}, function (props) {\n return !props.selected ? _styles.shadows.shadow02 : '';\n}, _styles.colors.green, _styles.colors.white, _styles.colors.red, _styles.colors.white);\n\nvar ButtonFilter = function (_React$Component) {\n _inherits(ButtonFilter, _React$Component);\n\n function ButtonFilter() {\n _classCallCheck(this, ButtonFilter);\n\n return _possibleConstructorReturn(this, (ButtonFilter.__proto__ || Object.getPrototypeOf(ButtonFilter)).apply(this, arguments));\n }\n\n _createClass(ButtonFilter, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n count = _props.count,\n label = _props.label,\n status = _props.status;\n\n\n return _react2.default.createElement(\n Button,\n {\n onClick: this.props.onClick,\n selected: this.props.selected,\n className: status\n },\n status !== 'all' ? count : '',\n ' ',\n label\n );\n }\n }]);\n\n return ButtonFilter;\n}(_react2.default.Component);\n\nexports.default = ButtonFilter;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/ButtonFilter.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/ButtonSettings.js": +/*!********************************************************!*\ + !*** ./compare/src/components/atoms/ButtonSettings.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n border: none;\\n height: 100%;\\n border-radius: 3px;\\n background: ', ';\\n margin-left: 15px;\\n padding: 0 20px;\\n box-shadow: ', ';\\n transition: all 0.3s ease-in-out;\\n\\n &.active {\\n box-shadow: none;\\n opacity: 0.6;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n box-shadow: ', ';\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n .icon {\\n height: 18px;\\n width: 18px;\\n display: block;\\n background-image: url(', ');\\n background-size: 100%;\\n background-repeat: no-repeat;\\n background-position: center;\\n margin: 0 auto;\\n padding-bottom: 5px;\\n }\\n\\n .label {\\n font-family: ', ';\\n color: ', ';\\n }\\n'], ['\\n border: none;\\n height: 100%;\\n border-radius: 3px;\\n background: ', ';\\n margin-left: 15px;\\n padding: 0 20px;\\n box-shadow: ', ';\\n transition: all 0.3s ease-in-out;\\n\\n &.active {\\n box-shadow: none;\\n opacity: 0.6;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n box-shadow: ', ';\\n }\\n\\n &:focus {\\n outline: none;\\n }\\n\\n .icon {\\n height: 18px;\\n width: 18px;\\n display: block;\\n background-image: url(', ');\\n background-size: 100%;\\n background-repeat: no-repeat;\\n background-position: center;\\n margin: 0 auto;\\n padding-bottom: 5px;\\n }\\n\\n .label {\\n font-family: ', ';\\n color: ', ';\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nvar _settings = __webpack_require__(/*! ../../assets/icons/settings.png */ \"./compare/src/assets/icons/settings.png\");\n\nvar _settings2 = _interopRequireDefault(_settings);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Button = _styledComponents2.default.button(_templateObject, _styles.colors.lightGray, _styles.shadows.shadow01, function (props) {\n return !props.selected ? _styles.shadows.shadow02 : '';\n}, _settings2.default, _styles.fonts.latoRegular, _styles.colors.secondaryText);\n\nvar ButtonSettings = function (_React$Component) {\n _inherits(ButtonSettings, _React$Component);\n\n function ButtonSettings() {\n _classCallCheck(this, ButtonSettings);\n\n return _possibleConstructorReturn(this, (ButtonSettings.__proto__ || Object.getPrototypeOf(ButtonSettings)).apply(this, arguments));\n }\n\n _createClass(ButtonSettings, [{\n key: 'render',\n value: function render() {\n var isActive = this.props.active ? 'active' : '';\n\n return _react2.default.createElement(\n Button,\n { onClick: this.props.onClick, className: isActive },\n _react2.default.createElement('span', { className: 'icon' })\n );\n }\n }]);\n\n return ButtonSettings;\n}(_react2.default.Component);\n\nexports.default = ButtonSettings;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/ButtonSettings.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/DiffDetails.js": +/*!*****************************************************!*\ + !*** ./compare/src/components/atoms/DiffDetails.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 8px;\\n'], ['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 8px;\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 20px;\\n'], ['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 20px;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Label = _styledComponents2.default.span(_templateObject, _styles.fonts.latoRegular, _styles.colors.secondaryText);\n\nvar Value = _styledComponents2.default.span(_templateObject2, _styles.fonts.latoBold, _styles.colors.primaryText);\n\nvar DiffDetails = function (_React$Component) {\n _inherits(DiffDetails, _React$Component);\n\n function DiffDetails() {\n _classCallCheck(this, DiffDetails);\n\n return _possibleConstructorReturn(this, (DiffDetails.__proto__ || Object.getPrototypeOf(DiffDetails)).apply(this, arguments));\n }\n\n _createClass(DiffDetails, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n diff = _props.diff,\n suppress = _props.suppress;\n\n if (!diff || suppress) {\n return null;\n }\n\n return _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n Label,\n null,\n 'diff%: '\n ),\n _react2.default.createElement(\n Value,\n null,\n diff.misMatchPercentage,\n ' '\n ),\n _react2.default.createElement(\n Label,\n null,\n 'diff-x: '\n ),\n _react2.default.createElement(\n Value,\n null,\n diff.dimensionDifference.width,\n ' '\n ),\n _react2.default.createElement(\n Label,\n null,\n 'diff-y: '\n ),\n _react2.default.createElement(\n Value,\n null,\n diff.dimensionDifference.height,\n ' '\n )\n );\n }\n }]);\n\n return DiffDetails;\n}(_react2.default.Component);\n\nexports.default = DiffDetails;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/DiffDetails.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/ErrorMessages.js": +/*!*******************************************************!*\ + !*** ./compare/src/components/atoms/ErrorMessages.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n background: transparent;\\n display: ', ';\\n padding: 10px;\\n font-family: ', ';\\n color: ', ';\\n'], ['\\n background: transparent;\\n display: ', ';\\n padding: 10px;\\n font-family: ', ';\\n color: ', ';\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n word-wrap: break-word;\\n font-family: monospace;\\n background: rgb(251, 234, 234);\\n padding: 2ex;\\n color: brown;\\n display: ', ';\\n'], ['\\n word-wrap: break-word;\\n font-family: monospace;\\n background: rgb(251, 234, 234);\\n padding: 2ex;\\n color: brown;\\n display: ', ';\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar DetailsPanel = _styledComponents2.default.div(_templateObject, function (props) {\n return props.display ? 'block' : 'none';\n}, _styles.fonts.latoRegular, _styles.colors.secondaryText);\n\nvar ErrorMsg = _styledComponents2.default.p(_templateObject2, function (props) {\n return props.display ? 'block' : 'none';\n});\n\nvar ErrorMessages = function (_React$Component) {\n _inherits(ErrorMessages, _React$Component);\n\n function ErrorMessages(props) {\n _classCallCheck(this, ErrorMessages);\n\n var _this = _possibleConstructorReturn(this, (ErrorMessages.__proto__ || Object.getPrototypeOf(ErrorMessages)).call(this, props));\n\n _this.state = {};\n return _this;\n }\n\n _createClass(ErrorMessages, [{\n key: 'render',\n value: function render() {\n var backstopError = this.props.info.error;\n var engineError = this.props.info.engineErrorMsg;\n var display = !!engineError || !!backstopError;\n\n return _react2.default.createElement(\n DetailsPanel,\n { display: display },\n _react2.default.createElement(\n ErrorMsg,\n { display: engineError },\n 'ENGINE ERROR: ',\n engineError\n ),\n _react2.default.createElement(\n ErrorMsg,\n { display: backstopError },\n 'BACKSTOP ERROR: ',\n backstopError\n )\n );\n }\n }]);\n\n return ErrorMessages;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n settings: state.layoutSettings\n };\n};\n\nvar ErrorMessagesContainer = (0, _reactRedux.connect)(mapStateToProps)(ErrorMessages);\n\nexports.default = ErrorMessagesContainer;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/ErrorMessages.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/IdContainer.js": +/*!*****************************************************!*\ + !*** ./compare/src/components/atoms/IdContainer.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n font-size: 14px;\\n font-family: ', ';\\n font-weight: normal;\\n font-style: normal;\\n margin: 0;\\n color: ', ';\\n flex: 1 0 auto;\\n padding-left: 15px;\\n margin-left: 15px;\\n margin-top: 7px;\\n position: relative;\\n\\n :before {\\n content: \\'\\';\\n width: 2px;\\n height: 35px;\\n background: ', ';\\n display: block;\\n position: absolute;\\n left: 0;\\n top: -10px;\\n }\\n'], ['\\n font-size: 14px;\\n font-family: ', ';\\n font-weight: normal;\\n font-style: normal;\\n margin: 0;\\n color: ', ';\\n flex: 1 0 auto;\\n padding-left: 15px;\\n margin-left: 15px;\\n margin-top: 7px;\\n position: relative;\\n\\n :before {\\n content: \\'\\';\\n width: 2px;\\n height: 35px;\\n background: ', ';\\n display: block;\\n position: absolute;\\n left: 0;\\n top: -10px;\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar IdTitle = _styledComponents2.default.h3(_templateObject, _styles.fonts.arial, _styles.colors.secondaryText, _styles.colors.borderGray);\n\nvar IdConfig = function (_React$Component) {\n _inherits(IdConfig, _React$Component);\n\n function IdConfig() {\n _classCallCheck(this, IdConfig);\n\n return _possibleConstructorReturn(this, (IdConfig.__proto__ || Object.getPrototypeOf(IdConfig)).apply(this, arguments));\n }\n\n _createClass(IdConfig, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n IdTitle,\n null,\n this.props.idConfig\n );\n }\n }]);\n\n return IdConfig;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n idConfig: state.suiteInfo.idConfig\n };\n};\n\nvar IdContainer = (0, _reactRedux.connect)(mapStateToProps)(IdConfig);\n\nexports.default = IdContainer;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/IdContainer.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/ImagePreview.js": +/*!******************************************************!*\ + !*** ./compare/src/components/atoms/ImagePreview.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: auto;\\n max-width: 100%;\\n max-height: ', ';\\n\\n &:hover {\\n cursor: pointer;\\n }\\n'], ['\\n width: auto;\\n max-width: 100%;\\n max-height: ', ';\\n\\n &:hover {\\n cursor: pointer;\\n }\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n flex: 1 1 auto;\\n padding: 0 25px;\\n padding-top: ', ';\\n text-align: center;\\n'], ['\\n flex: 1 1 auto;\\n padding: 0 25px;\\n padding-top: ', ';\\n text-align: center;\\n']),\n _templateObject3 = _taggedTemplateLiteral(['\\n text-align: center;\\n font-family: ', ';\\n color: ', ';\\n display: block;\\n margin: 0 auto;\\n text-transform: uppercase;\\n padding: 5px 0;\\n padding-bottom: 15px;\\n font-size: 12px;\\n'], ['\\n text-align: center;\\n font-family: ', ';\\n color: ', ';\\n display: block;\\n margin: 0 auto;\\n text-transform: uppercase;\\n padding: 5px 0;\\n padding-bottom: 15px;\\n font-size: 12px;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _reactVisibilitySensor = __webpack_require__(/*! react-visibility-sensor */ \"./node_modules/react-visibility-sensor/visibility-sensor.js\");\n\nvar _reactVisibilitySensor2 = _interopRequireDefault(_reactVisibilitySensor);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar BASE64_PNG_STUB = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';\n\nvar Image = _styledComponents2.default.img(_templateObject, function (props) {\n return props.settings.textInfo ? '150px' : '400px';\n});\n\nvar Wrapper = _styledComponents2.default.div(_templateObject2, function (props) {\n return props.withText ? '10px' : '20px';\n});\n\nvar Label = _styledComponents2.default.span(_templateObject3, _styles.fonts.latoRegular, _styles.colors.secondaryText);\n\nvar visibilitySensorProps = {\n offset: {\n bottom: -400\n },\n partialVisibility: true\n};\n\nvar ImagePreview = function (_React$Component) {\n _inherits(ImagePreview, _React$Component);\n\n function ImagePreview(props) {\n _classCallCheck(this, ImagePreview);\n\n var _this = _possibleConstructorReturn(this, (ImagePreview.__proto__ || Object.getPrototypeOf(ImagePreview)).call(this, props));\n\n _this.state = {\n isVisible: false\n };\n _this.onLoadError = _this.onLoadError.bind(_this);\n _this.onChange = _this.onChange.bind(_this);\n return _this;\n }\n\n _createClass(ImagePreview, [{\n key: 'onChange',\n value: function onChange(isVisible) {\n if (isVisible && !this.state.isVisible) {\n console.log('setting state to visible');\n this.setState({\n isVisible: true\n });\n }\n }\n }, {\n key: 'onLoadError',\n value: function onLoadError() {\n this.setState({\n imgLoadError: true\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n hidden = _props.hidden,\n settings = _props.settings,\n label = _props.label,\n src = _props.src;\n\n if (!src || src === '../..' || this.state.imgLoadError) {\n src = BASE64_PNG_STUB;\n }\n if (this.state.isVisible) {\n return _react2.default.createElement(\n Wrapper,\n { hidden: hidden, withText: settings.textInfo },\n _react2.default.createElement(\n Label,\n null,\n label\n ),\n _react2.default.createElement(Image, _extends({}, this.props, { src: src, onError: this.onLoadError }))\n );\n }\n return _react2.default.createElement(_reactVisibilitySensor2.default, _extends({}, visibilitySensorProps, { onChange: this.onChange }));\n }\n }]);\n\n return ImagePreview;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n settings: state.layoutSettings\n };\n};\n\nvar ImagePreviewContainer = (0, _reactRedux.connect)(mapStateToProps)(ImagePreview);\n\nexports.default = ImagePreviewContainer;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/ImagePreview.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/ImageScrubber.js": +/*!*******************************************************!*\ + !*** ./compare/src/components/atoms/ImageScrubber.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n margin: 1em;\\n padding: 10px 16px;\\n height: 32px;\\n background-color: ', ';\\n color: ', ';\\n border-radius: 3px;\\n text-transform: uppercase;\\n font-family: ', ';\\n text-align: center;\\n font-size: 12px;\\n border: none;\\n box-shadow: ', ';\\n\\n transition: all 100ms ease-in-out;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n box-shadow: ', ';\\n }\\n\\n &.loadingDiverged {\\n animation: blink normal 1200ms infinite ease-in-out;\\n background-color: green;\\n }\\n @keyframes blink {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.75;\\n }\\n 100% {\\n opacity: 1;\\n }\\n }\\n'], ['\\n margin: 1em;\\n padding: 10px 16px;\\n height: 32px;\\n background-color: ', ';\\n color: ', ';\\n border-radius: 3px;\\n text-transform: uppercase;\\n font-family: ', ';\\n text-align: center;\\n font-size: 12px;\\n border: none;\\n box-shadow: ', ';\\n\\n transition: all 100ms ease-in-out;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n box-shadow: ', ';\\n }\\n\\n &.loadingDiverged {\\n animation: blink normal 1200ms infinite ease-in-out;\\n background-color: green;\\n }\\n @keyframes blink {\\n 0% {\\n opacity: 1;\\n }\\n 50% {\\n opacity: 0.75;\\n }\\n 100% {\\n opacity: 1;\\n }\\n }\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n cursor: ew-resize;\\n padding-bottom: 20px;\\n overflow: hidden;\\n\\n .testImage {\\n opacity: 1;\\n }\\n\\n .testImage,\\n .refImage {\\n max-width: 100%;\\n }\\n'], ['\\n cursor: ew-resize;\\n padding-bottom: 20px;\\n overflow: hidden;\\n\\n .testImage {\\n opacity: 1;\\n }\\n\\n .testImage,\\n .refImage {\\n max-width: 100%;\\n }\\n']),\n _templateObject3 = _taggedTemplateLiteral(['\\n display: flex;\\n justify-content: center;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n position: sticky;\\n top: 0;\\n z-index: 5;\\n background: white;\\n border-bottom: 1px solid #e4e4e4;\\n\\n'], ['\\n display: flex;\\n justify-content: center;\\n padding-top: 10px;\\n padding-bottom: 10px;\\n position: sticky;\\n top: 0;\\n z-index: 5;\\n background: white;\\n border-bottom: 1px solid #e4e4e4;\\n\\n']),\n _templateObject4 = _taggedTemplateLiteral(['\\n height: 100%;\\n width: 5px;\\n background: ', ';\\n transform: translate(-2.5px, 0);\\n'], ['\\n height: 100%;\\n width: 5px;\\n background: ', ';\\n transform: translate(-2.5px, 0);\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _backstopTwentytwenty = __webpack_require__(/*! backstop-twentytwenty */ \"./node_modules/backstop-twentytwenty/index.js\");\n\nvar _backstopTwentytwenty2 = _interopRequireDefault(_backstopTwentytwenty);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar ScrubberViewBtn = _styledComponents2.default.button(_templateObject, function (props) {\n return props.selected ? _styles.colors.secondaryText : _styles.colors.lightGray;\n}, function (props) {\n return props.selected ? _styles.colors.lightGray : _styles.colors.secondaryText;\n}, _styles.fonts.latoRegular, function (props) {\n return props.selected ? 'none' : _styles.shadows.shadow01;\n}, function (props) {\n return !props.selected ? _styles.shadows.shadow02 : '';\n});\n\nvar Wrapper = _styledComponents2.default.div(_templateObject2);\n\nvar WrapTitle = _styledComponents2.default.div(_templateObject3);\n\nvar SliderBar = _styledComponents2.default.div(_templateObject4, _styles.colors.red);\n\nvar ImageScrubber = function (_React$Component) {\n _inherits(ImageScrubber, _React$Component);\n\n function ImageScrubber(props) {\n _classCallCheck(this, ImageScrubber);\n\n var _this = _possibleConstructorReturn(this, (ImageScrubber.__proto__ || Object.getPrototypeOf(ImageScrubber)).call(this, props));\n\n _this.state = {\n dontUseScrubberView: false,\n isLoading: false\n };\n\n _this.handleLoadingError = _this.handleLoadingError.bind(_this);\n _this.loadingDiverge = _this.loadingDiverge.bind(_this);\n return _this;\n }\n\n _createClass(ImageScrubber, [{\n key: 'handleLoadingError',\n value: function handleLoadingError() {\n this.setState({\n dontUseScrubberView: true\n });\n }\n }, {\n key: 'loadingDiverge',\n value: function loadingDiverge(torf) {\n this.setState({\n isLoading: !!torf\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n scrubberModalMode = _props.scrubberModalMode,\n testImageType = _props.testImageType,\n position = _props.position,\n refImage = _props.refImage,\n testImage = _props.testImage,\n diffImage = _props.diffImage,\n divergedImage = _props.divergedImage,\n showButtons = _props.showButtons,\n showScrubberTestImage = _props.showScrubberTestImage,\n showScrubberRefImage = _props.showScrubberRefImage,\n showScrubberDiffImage = _props.showScrubberDiffImage,\n showScrubberDivergedImage = _props.showScrubberDivergedImage,\n showScrubber = _props.showScrubber;\n\n\n var scrubberTestImageSlug = this.props[testImageType];\n\n // only show the diverged option if the report comes from web server\n function showDivergedOption() {\n return (/remote/.test(location.search)\n );\n }\n\n // TODO: halp. i don't haz context.\n var that = this;\n\n function divergedWorker() {\n if (that.state.isLoading) {\n console.error('Diverged process is already running. Please hang on.');\n return;\n }\n\n if (divergedImage) {\n showScrubberDivergedImage(divergedImage);\n return;\n }\n\n showScrubberDivergedImage('');\n that.loadingDiverge(true);\n\n var refImg = document.images.isolatedRefImage;\n var testImg = document.images.isolatedTestImage;\n var h = refImg.height;\n var w = refImg.width;\n\n var worker = new Worker('divergedWorker.js');\n\n worker.addEventListener('message', function (result) {\n var divergedImgData = result.data;\n var clampedImgData = getEmptyImgData(h, w);\n for (var i = divergedImgData.length - 1; i >= 0; i--) {\n clampedImgData.data[i] = divergedImgData[i];\n }\n var lcsDiffResult = imageToCanvasContext(null, h, w);\n lcsDiffResult.putImageData(clampedImgData, 0, 0);\n\n var divergedImageResult = lcsDiffResult.canvas.toDataURL('image/png');\n showScrubberDivergedImage(divergedImageResult);\n that.loadingDiverge(false);\n }, false);\n\n worker.addEventListener('error', function (error) {\n showScrubberDivergedImage('');\n that.loadingDiverge(false);\n console.error(error);\n });\n\n worker.postMessage({\n divergedInput: [getImgDataDataFromContext(imageToCanvasContext(refImg)), getImgDataDataFromContext(imageToCanvasContext(testImg)), h, w]\n });\n }\n\n var dontUseScrubberView = this.state.dontUseScrubberView || !showButtons;\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n WrapTitle,\n null,\n showButtons && _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n ScrubberViewBtn,\n {\n selected: scrubberModalMode === 'SHOW_SCRUBBER_REF_IMAGE',\n onClick: showScrubberRefImage\n },\n 'REFERENCE'\n ),\n _react2.default.createElement(\n ScrubberViewBtn,\n {\n selected: scrubberModalMode === 'SHOW_SCRUBBER_TEST_IMAGE',\n onClick: showScrubberTestImage\n },\n 'TEST'\n ),\n _react2.default.createElement(\n ScrubberViewBtn,\n {\n selected: scrubberModalMode === 'SHOW_SCRUBBER_DIFF_IMAGE',\n onClick: showScrubberDiffImage\n },\n 'DIFF'\n ),\n _react2.default.createElement(\n ScrubberViewBtn,\n {\n selected: scrubberModalMode === 'SCRUB',\n onClick: showScrubber\n },\n 'SCRUBBER'\n ),\n _react2.default.createElement(\n ScrubberViewBtn,\n {\n selected: scrubberModalMode === 'SHOW_SCRUBBER_DIVERGED_IMAGE',\n onClick: divergedWorker,\n className: this.state.isLoading ? 'loadingDiverged' : '',\n style: {\n display: showDivergedOption() ? '' : 'none'\n }\n },\n this.state.isLoading ? 'DIVERGING!' : 'DIVERGED'\n )\n )\n ),\n _react2.default.createElement(\n Wrapper,\n null,\n _react2.default.createElement('img', {\n id: 'isolatedRefImage',\n src: refImage,\n style: {\n display: 'none'\n }\n }),\n _react2.default.createElement('img', {\n id: 'isolatedTestImage',\n className: 'testImage',\n src: testImage,\n style: {\n margin: 'auto',\n display: dontUseScrubberView ? 'block' : 'none'\n }\n }),\n _react2.default.createElement('img', {\n className: 'diffImage',\n src: diffImage,\n style: {\n margin: 'auto',\n display: dontUseScrubberView ? 'block' : 'none'\n }\n }),\n _react2.default.createElement(\n 'div',\n {\n style: {\n display: dontUseScrubberView ? 'none' : 'block'\n }\n },\n _react2.default.createElement(\n _backstopTwentytwenty2.default,\n {\n verticalAlign: 'top',\n minDistanceToBeginInteraction: 0,\n maxAngleToBeginInteraction: Infinity,\n initialPosition: position,\n newPosition: position\n },\n _react2.default.createElement('img', {\n id: 'scrubberRefImage',\n className: 'refImage',\n src: refImage,\n onError: this.handleLoadingError\n }),\n _react2.default.createElement('img', {\n id: 'scrubberTestImage',\n className: 'testImage',\n src: scrubberTestImageSlug\n }),\n _react2.default.createElement(SliderBar, { className: 'slider' })\n )\n )\n )\n );\n }\n }]);\n\n return ImageScrubber;\n}(_react2.default.Component);\n\n/**\n * ========= DIVERGED HELPERS ========\n */\n\n\nexports.default = ImageScrubber;\nfunction getImgDataDataFromContext(context) {\n return context.getImageData(0, 0, context.canvas.width, context.canvas.height).data;\n}\n\nfunction getEmptyImgData(h, w) {\n var o = imageToCanvasContext(null, h, w);\n return o.createImageData(w, h);\n}\n\nfunction imageToCanvasContext(_img, h, w) {\n var img = _img;\n if (!_img) {\n img = { height: h, width: w };\n }\n var canvas = document.createElement('canvas');\n canvas.width = img.width;\n canvas.height = img.height;\n var context = canvas.getContext('2d');\n if (_img) {\n context.drawImage(img, 0, 0);\n }\n return context;\n}\n\n//# sourceURL=webpack:///./compare/src/components/atoms/ImageScrubber.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/InputTextSearch.js": +/*!*********************************************************!*\ + !*** ./compare/src/components/atoms/InputTextSearch.js ***! + \*********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: block;\\n height: 100%;\\n border: none;\\n font-size: 16px;\\n background-color: ', ';\\n padding: 0 10px 0 55px;\\n font-family: ', ';\\n width: 100%;\\n box-sizing: border-box;\\n border-radius: 3px;\\n background-image: url(', ');\\n background-repeat: no-repeat;\\n background-position-x: 15px;\\n background-position-y: calc(100% / 2);\\n background-size: 22px;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &::placeholder {\\n font-family: ', ';\\n font-weight: 400;\\n font-style: italic;\\n color: ', ';\\n }\\n'], ['\\n display: block;\\n height: 100%;\\n border: none;\\n font-size: 16px;\\n background-color: ', ';\\n padding: 0 10px 0 55px;\\n font-family: ', ';\\n width: 100%;\\n box-sizing: border-box;\\n border-radius: 3px;\\n background-image: url(', ');\\n background-repeat: no-repeat;\\n background-position-x: 15px;\\n background-position-y: calc(100% / 2);\\n background-size: 22px;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &::placeholder {\\n font-family: ', ';\\n font-weight: 400;\\n font-style: italic;\\n color: ', ';\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nvar _search = __webpack_require__(/*! ../../assets/icons/search.png */ \"./compare/src/assets/icons/search.png\");\n\nvar _search2 = _interopRequireDefault(_search);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Input = _styledComponents2.default.input(_templateObject, _styles.colors.lightGray, _styles.fonts.latoRegular, _search2.default, _styles.fonts.arial, _styles.colors.secondaryText);\n\nvar ButtonFilter = function (_React$Component) {\n _inherits(ButtonFilter, _React$Component);\n\n function ButtonFilter() {\n _classCallCheck(this, ButtonFilter);\n\n return _possibleConstructorReturn(this, (ButtonFilter.__proto__ || Object.getPrototypeOf(ButtonFilter)).apply(this, arguments));\n }\n\n _createClass(ButtonFilter, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(Input, {\n placeholder: 'Filter tests with search...',\n onChange: this.props.onChange.bind(this)\n });\n }\n }]);\n\n return ButtonFilter;\n}(_react2.default.Component);\n\nexports.default = ButtonFilter;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/InputTextSearch.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/Logo.js": +/*!**********************************************!*\ + !*** ./compare/src/components/atoms/Logo.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: block;\\n height: 35px;\\n'], ['\\n display: block;\\n height: 35px;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _logo = __webpack_require__(/*! ../../assets/images/logo.png */ \"./compare/src/assets/images/logo.png\");\n\nvar _logo2 = _interopRequireDefault(_logo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar LogoImage = _styledComponents2.default.img(_templateObject);\n\nvar Logo = function (_React$Component) {\n _inherits(Logo, _React$Component);\n\n function Logo() {\n _classCallCheck(this, Logo);\n\n return _possibleConstructorReturn(this, (Logo.__proto__ || Object.getPrototypeOf(Logo)).apply(this, arguments));\n }\n\n _createClass(Logo, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n 'a',\n { href: 'https://garris.github.io/BackstopJS/', target: '_blank' },\n _react2.default.createElement(LogoImage, { src: _logo2.default })\n );\n }\n }]);\n\n return Logo;\n}(_react2.default.Component);\n\nexports.default = Logo;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/Logo.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/NavButtons.js": +/*!****************************************************!*\ + !*** ./compare/src/components/atoms/NavButtons.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n a {\\n display: inline-block;\\n text-align: right;\\n }\\n'], ['\\n a {\\n display: inline-block;\\n text-align: right;\\n }\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n background-color: ', ';\\n background-image: url(', ');\\n background-repeat: no-repeat;\\n background-position: center center;\\n color: ', ';\\n border-radius: 3px;\\n height: 32px;\\n width: 32px;\\n margin: 0 0px 0 5px;\\n transform: ', ';\\n opacity: ', ';\\n display: inline-block;\\n\\n &:hover {\\n cursor: ', ';\\n background-color: ', ';\\n }\\n'], ['\\n background-color: ', ';\\n background-image: url(', ');\\n background-repeat: no-repeat;\\n background-position: center center;\\n color: ', ';\\n border-radius: 3px;\\n height: 32px;\\n width: 32px;\\n margin: 0 0px 0 5px;\\n transform: ', ';\\n opacity: ', ';\\n display: inline-block;\\n\\n &:hover {\\n cursor: ', ';\\n background-color: ', ';\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _jump = __webpack_require__(/*! jump.js */ \"./node_modules/jump.js/dist/jump.module.js\");\n\nvar _jump2 = _interopRequireDefault(_jump);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nvar _iconDown = __webpack_require__(/*! ../../assets/icons/iconDown.png */ \"./compare/src/assets/icons/iconDown.png\");\n\nvar _iconDown2 = _interopRequireDefault(_iconDown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Wrapper = _styledComponents2.default.div(_templateObject);\n\nvar ButtonNav = _styledComponents2.default.div(_templateObject2, _styles.colors.lightGray, _iconDown2.default, _styles.colors.secondaryText, function (props) {\n return props.prev ? 'rotate(0)' : 'rotate(180deg)';\n}, function (props) {\n return props.disabled ? '0.2' : '1';\n}, function (props) {\n return props.disabled ? '' : 'pointer';\n}, function (props) {\n return props.disabled ? '' + _styles.colors.lightGray : '' + _styles.colors.medGray;\n});\n\nvar NavButtons = function (_React$Component) {\n _inherits(NavButtons, _React$Component);\n\n function NavButtons() {\n _classCallCheck(this, NavButtons);\n\n return _possibleConstructorReturn(this, (NavButtons.__proto__ || Object.getPrototypeOf(NavButtons)).apply(this, arguments));\n }\n\n _createClass(NavButtons, [{\n key: 'nextTest',\n value: function nextTest() {\n var dest = '#test' + (this.props.currentId + 1);\n this.jumpTo(dest);\n }\n }, {\n key: 'prevTest',\n value: function prevTest() {\n var dest = '#test' + (this.props.currentId - 1);\n this.jumpTo(dest);\n }\n }, {\n key: 'jumpTo',\n value: function jumpTo(dest) {\n (0, _jump2.default)(dest, {\n duration: 0,\n offset: -100\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n currentId = _props.currentId,\n lastId = _props.lastId;\n\n\n return _react2.default.createElement(\n Wrapper,\n null,\n currentId === 0 && _react2.default.createElement(ButtonNav, { onClick: this.prevTest.bind(this), prev: true, disabled: true }),\n currentId !== 0 && _react2.default.createElement(ButtonNav, { onClick: this.prevTest.bind(this), prev: true }),\n lastId !== currentId && _react2.default.createElement(ButtonNav, { onClick: this.nextTest.bind(this) }),\n lastId === currentId && _react2.default.createElement(ButtonNav, { onClick: this.nextTest.bind(this), disabled: true })\n );\n }\n }]);\n\n return NavButtons;\n}(_react2.default.Component);\n\nexports.default = NavButtons;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/NavButtons.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/SettingOption.js": +/*!*******************************************************!*\ + !*** ./compare/src/components/atoms/SettingOption.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 10px 0;\\n\\n span {\\n padding-right: 10px;\\n text-align: left;\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n }\\n'], ['\\n display: flex;\\n align-items: center;\\n justify-content: space-between;\\n padding: 10px 0;\\n\\n span {\\n padding-right: 10px;\\n text-align: left;\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _reactToggleButton = __webpack_require__(/*! react-toggle-button */ \"./node_modules/react-toggle-button/lib/index.js\");\n\nvar _reactToggleButton2 = _interopRequireDefault(_reactToggleButton);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar WrapperOption = _styledComponents2.default.div(_templateObject, _styles.fonts.latoRegular, _styles.colors.primaryText);\n\nvar SettingOption = function (_React$Component) {\n _inherits(SettingOption, _React$Component);\n\n function SettingOption() {\n _classCallCheck(this, SettingOption);\n\n return _possibleConstructorReturn(this, (SettingOption.__proto__ || Object.getPrototypeOf(SettingOption)).apply(this, arguments));\n }\n\n _createClass(SettingOption, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n label = _props.label,\n value = _props.value,\n onToggle = _props.onToggle;\n\n\n return _react2.default.createElement(\n WrapperOption,\n null,\n _react2.default.createElement(\n 'span',\n null,\n label\n ),\n _react2.default.createElement(_reactToggleButton2.default, { value: value || false, onToggle: onToggle })\n );\n }\n }]);\n\n return SettingOption;\n}(_react2.default.Component);\n\nexports.default = SettingOption;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/SettingOption.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/SuiteName.js": +/*!***************************************************!*\ + !*** ./compare/src/components/atoms/SuiteName.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n font-size: 26px;\\n font-family: ', ';\\n flex: 0 0 auto;\\n margin: 0;\\n color: ', ';\\n'], ['\\n font-size: 26px;\\n font-family: ', ';\\n flex: 0 0 auto;\\n margin: 0;\\n color: ', ';\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar SuiteNameTitle = _styledComponents2.default.h1(_templateObject, _styles.fonts.latoRegular, _styles.colors.primaryText);\n\nvar SuiteName = function (_React$Component) {\n _inherits(SuiteName, _React$Component);\n\n function SuiteName() {\n _classCallCheck(this, SuiteName);\n\n return _possibleConstructorReturn(this, (SuiteName.__proto__ || Object.getPrototypeOf(SuiteName)).apply(this, arguments));\n }\n\n _createClass(SuiteName, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n SuiteNameTitle,\n null,\n this.props.suiteName,\n ' Report'\n );\n }\n }]);\n\n return SuiteName;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n suiteName: state.suiteInfo.testSuiteName\n };\n};\n\nvar SuiteNameContainer = (0, _reactRedux.connect)(mapStateToProps)(SuiteName);\n\nexports.default = SuiteNameContainer;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/SuiteName.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/TextDetails.js": +/*!*****************************************************!*\ + !*** ./compare/src/components/atoms/TextDetails.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral([''], ['']),\n _templateObject2 = _taggedTemplateLiteral(['\\n padding: 5px 0;\\n'], ['\\n padding: 5px 0;\\n']),\n _templateObject3 = _taggedTemplateLiteral(['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 8px;\\n'], ['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 8px;\\n']),\n _templateObject4 = _taggedTemplateLiteral(['\\n font-family ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 20px;\\n'], ['\\n font-family ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 20px;\\n']),\n _templateObject5 = _taggedTemplateLiteral(['\\n display: ', ';\\n position: absolute;\\n background-color: ', ';\\n padding: 10px;\\n top: -28px;\\n left: 20px;\\n box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16);\\n z-index: 999;\\n'], ['\\n display: ', ';\\n position: absolute;\\n background-color: ', ';\\n padding: 10px;\\n top: -28px;\\n left: 20px;\\n box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.16);\\n z-index: 999;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _DiffDetails = __webpack_require__(/*! ./DiffDetails */ \"./compare/src/components/atoms/DiffDetails.js\");\n\nvar _DiffDetails2 = _interopRequireDefault(_DiffDetails);\n\nvar _UrlDetails = __webpack_require__(/*! ./UrlDetails */ \"./compare/src/components/atoms/UrlDetails.js\");\n\nvar _UrlDetails2 = _interopRequireDefault(_UrlDetails);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n// styled\nvar WrapperDetails = _styledComponents2.default.div(_templateObject);\n\nvar Row = _styledComponents2.default.div(_templateObject2);\n\nvar Label = _styledComponents2.default.span(_templateObject3, _styles.fonts.latoRegular, _styles.colors.secondaryText);\n\nvar Value = _styledComponents2.default.span(_templateObject4, _styles.fonts.latoBold, _styles.colors.primaryText);\n\nvar DetailsPanel = _styledComponents2.default.div(_templateObject5, function (props) {\n return props.showPanel ? 'block' : 'none';\n}, _styles.colors.white);\n\nvar TextDetails = function (_React$Component) {\n _inherits(TextDetails, _React$Component);\n\n function TextDetails(props) {\n _classCallCheck(this, TextDetails);\n\n var _this = _possibleConstructorReturn(this, (TextDetails.__proto__ || Object.getPrototypeOf(TextDetails)).call(this, props));\n\n _this.state = {\n showPanel: false\n };\n\n _this.showPanel = _this.showPanel.bind(_this);\n _this.hidePanel = _this.hidePanel.bind(_this);\n return _this;\n }\n\n _createClass(TextDetails, [{\n key: 'showPanel',\n value: function showPanel() {\n var settings = this.props.settings;\n\n if (!settings.textInfo) {\n this.setState({\n showPanel: true\n });\n }\n }\n }, {\n key: 'hidePanel',\n value: function hidePanel() {\n this.setState({\n showPanel: false\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _props$info = this.props.info,\n label = _props$info.label,\n fileName = _props$info.fileName,\n selector = _props$info.selector,\n diff = _props$info.diff,\n url = _props$info.url,\n referenceUrl = _props$info.referenceUrl;\n var settings = this.props.settings;\n var showPanel = this.state.showPanel;\n\n\n return _react2.default.createElement(\n WrapperDetails,\n null,\n _react2.default.createElement(\n Row,\n { hidden: !settings.textInfo },\n _react2.default.createElement(\n Label,\n null,\n 'label: '\n ),\n _react2.default.createElement(\n Value,\n null,\n label\n ),\n _react2.default.createElement(\n Label,\n null,\n 'selector: '\n ),\n _react2.default.createElement(\n Value,\n null,\n selector\n )\n ),\n _react2.default.createElement(\n Row,\n null,\n _react2.default.createElement(\n Label,\n null,\n 'filename: '\n ),\n _react2.default.createElement(\n Value,\n { onMouseOver: this.showPanel },\n fileName\n )\n ),\n _react2.default.createElement(_DiffDetails2.default, { suppress: !settings.textInfo, diff: diff }),\n _react2.default.createElement(\n DetailsPanel,\n _extends({ showPanel: showPanel }, { onMouseLeave: this.hidePanel }),\n _react2.default.createElement(\n Row,\n null,\n _react2.default.createElement(\n Label,\n null,\n 'label: '\n ),\n _react2.default.createElement(\n Value,\n null,\n label,\n ' '\n ),\n _react2.default.createElement(\n Label,\n null,\n 'selector: '\n ),\n _react2.default.createElement(\n Value,\n null,\n selector,\n ' '\n )\n ),\n _react2.default.createElement(\n Row,\n null,\n _react2.default.createElement(\n Label,\n null,\n 'filename: '\n ),\n _react2.default.createElement(\n Value,\n null,\n fileName,\n ' '\n )\n ),\n _react2.default.createElement(\n Row,\n null,\n _react2.default.createElement(_UrlDetails2.default, { url: url, referenceUrl: referenceUrl }),\n _react2.default.createElement(_DiffDetails2.default, { diff: diff })\n )\n )\n );\n }\n }]);\n\n return TextDetails;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n settings: state.layoutSettings\n };\n};\n\nvar TextDetailsContainer = (0, _reactRedux.connect)(mapStateToProps)(TextDetails);\n\nexports.default = TextDetailsContainer;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/TextDetails.js?"); + +/***/ }), + +/***/ "./compare/src/components/atoms/UrlDetails.js": +/*!****************************************************!*\ + !*** ./compare/src/components/atoms/UrlDetails.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 8px;\\n'], ['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 8px;\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 20px;\\n'], ['\\n font-family: ', ';\\n color: ', ';\\n font-size: 14px;\\n padding-right: 20px;\\n']),\n _templateObject3 = _taggedTemplateLiteral(['\\n &::before {\\n content: ', ';\\n margin: ', ';\\n }\\n'], ['\\n &::before {\\n content: ', ';\\n margin: ', ';\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar Label = _styledComponents2.default.span(_templateObject, _styles.fonts.latoRegular, _styles.colors.secondaryText);\n\nvar Value = _styledComponents2.default.span(_templateObject2, _styles.fonts.latoBold, _styles.colors.primaryText);\n\nvar Link = _styledComponents2.default.a(_templateObject3, function (props) {\n return props.withSeperator ? '\"|\"' : '';\n}, function (props) {\n return props.withSeperator ? '0 10px' : '';\n});\n\nvar DiffDetails = function (_React$Component) {\n _inherits(DiffDetails, _React$Component);\n\n function DiffDetails() {\n _classCallCheck(this, DiffDetails);\n\n return _possibleConstructorReturn(this, (DiffDetails.__proto__ || Object.getPrototypeOf(DiffDetails)).apply(this, arguments));\n }\n\n _createClass(DiffDetails, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n url = _props.url,\n referenceUrl = _props.referenceUrl;\n\n return _react2.default.createElement(\n 'span',\n null,\n _react2.default.createElement(\n Label,\n null,\n 'url: '\n ),\n _react2.default.createElement(\n Value,\n null,\n _react2.default.createElement(\n Link,\n { href: url, target: '_blank' },\n 'test'\n ),\n referenceUrl && _react2.default.createElement(\n Link,\n { withSeperator: true, href: referenceUrl, target: '_blank' },\n 'reference'\n )\n )\n );\n }\n }]);\n\n return DiffDetails;\n}(_react2.default.Component);\n\nexports.default = DiffDetails;\n\n//# sourceURL=webpack:///./compare/src/components/atoms/UrlDetails.js?"); + +/***/ }), + +/***/ "./compare/src/components/ecosystems/Header.js": +/*!*****************************************************!*\ + !*** ./compare/src/components/ecosystems/Header.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: 100%;\\n margin: 0 auto;\\n padding: 15px 0;\\n z-index: 999;\\n box-sizing: border-box;\\n position: relative;\\n'], ['\\n width: 100%;\\n margin: 0 auto;\\n padding: 15px 0;\\n z-index: 999;\\n box-sizing: border-box;\\n position: relative;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _reactSticky = __webpack_require__(/*! react-sticky */ \"./node_modules/react-sticky/lib/index.js\");\n\nvar _topbar = __webpack_require__(/*! ../organisms/topbar */ \"./compare/src/components/organisms/topbar.js\");\n\nvar _topbar2 = _interopRequireDefault(_topbar);\n\nvar _Toolbar = __webpack_require__(/*! ../organisms/Toolbar */ \"./compare/src/components/organisms/Toolbar.js\");\n\nvar _Toolbar2 = _interopRequireDefault(_Toolbar);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar HeaderWrapper = _styledComponents2.default.section(_templateObject);\n\nvar Header = function (_React$Component) {\n _inherits(Header, _React$Component);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n HeaderWrapper,\n { className: 'header' },\n _react2.default.createElement(_topbar2.default, null),\n _react2.default.createElement(\n _reactSticky.Sticky,\n { topOffset: 72 },\n function (_ref) {\n var isSticky = _ref.isSticky,\n wasSticky = _ref.wasSticky,\n style = _ref.style,\n distanceFromTop = _ref.distanceFromTop,\n distanceFromBottom = _ref.distanceFromBottom,\n calculatedHeight = _ref.calculatedHeight;\n\n return _react2.default.createElement(_Toolbar2.default, { style: style });\n }\n )\n );\n }\n }]);\n\n return Header;\n}(_react2.default.Component);\n\nexports.default = Header;\n\n//# sourceURL=webpack:///./compare/src/components/ecosystems/Header.js?"); + +/***/ }), + +/***/ "./compare/src/components/ecosystems/List.js": +/*!***************************************************!*\ + !*** ./compare/src/components/ecosystems/List.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: 100%;\\n margin: 0 auto;\\n margin-top: 20px;\\n z-index: 1;\\n'], ['\\n width: 100%;\\n margin: 0 auto;\\n margin-top: 20px;\\n z-index: 1;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _TestCard = __webpack_require__(/*! ../organisms/TestCard */ \"./compare/src/components/organisms/TestCard.js\");\n\nvar _TestCard2 = _interopRequireDefault(_TestCard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n// organisms\n\n\nvar ListWrapper = _styledComponents2.default.section(_templateObject);\n\nvar List = function (_React$Component) {\n _inherits(List, _React$Component);\n\n function List() {\n _classCallCheck(this, List);\n\n return _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).apply(this, arguments));\n }\n\n _createClass(List, [{\n key: 'render',\n value: function render() {\n var _props = this.props,\n tests = _props.tests,\n settings = _props.settings;\n\n var onlyText = !settings.refImage && !settings.testImage && !settings.diffImage;\n\n return _react2.default.createElement(\n ListWrapper,\n null,\n tests.map(function (test, i, arr) {\n return _react2.default.createElement(_TestCard2.default, {\n id: 'test' + i,\n numId: i,\n test: test,\n key: i,\n lastId: arr.length - 1,\n onlyText: onlyText\n });\n })\n );\n }\n }]);\n\n return List;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n tests: state.tests.filtered,\n settings: state.layoutSettings\n };\n};\n\nvar ListContainer = (0, _reactRedux.connect)(mapStateToProps)(List);\n\nexports.default = ListContainer;\n\n//# sourceURL=webpack:///./compare/src/components/ecosystems/List.js?"); + +/***/ }), + +/***/ "./compare/src/components/ecosystems/ScrubberModal.js": +/*!************************************************************!*\ + !*** ./compare/src/components/ecosystems/ScrubberModal.js ***! + \************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: block;\\n'], ['\\n display: block;\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n display: flex;\\n justify-content: space-between;\\n position: relative;\\n padding: 15px;\\n align-items: center;\\n'], ['\\n display: flex;\\n justify-content: space-between;\\n position: relative;\\n padding: 15px;\\n align-items: center;\\n']),\n _templateObject3 = _taggedTemplateLiteral(['\\n margin-right: 5px;\\n width: 30px;\\n height: 30px;\\n background-image: url(', ');\\n background-size: 100%;\\n background-repeat: no-repeat;\\n background-color: transparent;\\n border: none;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n }\\n'], ['\\n margin-right: 5px;\\n width: 30px;\\n height: 30px;\\n background-image: url(', ');\\n background-size: 100%;\\n background-repeat: no-repeat;\\n background-color: transparent;\\n border: none;\\n\\n &:focus {\\n outline: none;\\n }\\n\\n &:hover {\\n cursor: pointer;\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _reactModal = __webpack_require__(/*! react-modal */ \"./node_modules/react-modal/lib/index.js\");\n\nvar _reactModal2 = _interopRequireDefault(_reactModal);\n\nvar _actions = __webpack_require__(/*! ../../actions */ \"./compare/src/actions/index.js\");\n\nvar _close = __webpack_require__(/*! ../../assets/icons/close.png */ \"./compare/src/assets/icons/close.png\");\n\nvar _close2 = _interopRequireDefault(_close);\n\nvar _Logo = __webpack_require__(/*! ../atoms/Logo */ \"./compare/src/components/atoms/Logo.js\");\n\nvar _Logo2 = _interopRequireDefault(_Logo);\n\nvar _ImageScrubber = __webpack_require__(/*! ../atoms/ImageScrubber */ \"./compare/src/components/atoms/ImageScrubber.js\");\n\nvar _ImageScrubber2 = _interopRequireDefault(_ImageScrubber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n// styles & icons\n\n\n// atoms\n\n\nvar Wrapper = _styledComponents2.default.div(_templateObject);\n\nvar ModalHeader = _styledComponents2.default.div(_templateObject2);\n\nvar ButtonClose = _styledComponents2.default.button(_templateObject3, _close2.default);\n\nvar customStyles = {\n content: {\n width: '100%',\n height: '100%',\n top: '0',\n left: '0',\n border: 'none',\n borderRadius: 'none',\n padding: '0px',\n boxSizing: 'border-box'\n }\n};\n\nvar ScrubberModal = function (_React$Component) {\n _inherits(ScrubberModal, _React$Component);\n\n function ScrubberModal() {\n _classCallCheck(this, ScrubberModal);\n\n return _possibleConstructorReturn(this, (ScrubberModal.__proto__ || Object.getPrototypeOf(ScrubberModal)).apply(this, arguments));\n }\n\n _createClass(ScrubberModal, [{\n key: 'render',\n value: function render() {\n var _props$scrubber$test = this.props.scrubber.test,\n refImage = _props$scrubber$test.reference,\n testImage = _props$scrubber$test.test,\n diffImage = _props$scrubber$test.diffImage,\n divergedImage = _props$scrubber$test.divergedImage;\n var _props$scrubber = this.props.scrubber,\n visible = _props$scrubber.visible,\n position = _props$scrubber.position,\n testImageType = _props$scrubber.testImageType,\n scrubberModalMode = _props$scrubber.scrubberModalMode;\n var _props = this.props,\n closeModal = _props.closeModal,\n showScrubberTestImage = _props.showScrubberTestImage,\n showScrubberRefImage = _props.showScrubberRefImage,\n showScrubberDiffImage = _props.showScrubberDiffImage,\n showScrubberDivergedImage = _props.showScrubberDivergedImage,\n showScrubber = _props.showScrubber;\n\n\n return _react2.default.createElement(\n Wrapper,\n null,\n _react2.default.createElement(\n _reactModal2.default,\n {\n isOpen: visible\n /* onAfterOpen={this.afterOpenModal} */\n , onRequestClose: closeModal,\n style: customStyles,\n contentLabel: 'Example Modal'\n },\n _react2.default.createElement(\n ModalHeader,\n null,\n _react2.default.createElement(_Logo2.default, null),\n _react2.default.createElement(ButtonClose, { onClick: closeModal })\n ),\n _react2.default.createElement(_ImageScrubber2.default, {\n scrubberModalMode: scrubberModalMode,\n testImageType: testImageType,\n testImage: testImage,\n refImage: refImage,\n diffImage: diffImage,\n divergedImage: divergedImage,\n position: position,\n showButtons: diffImage && diffImage.length > 0,\n showScrubberTestImage: showScrubberTestImage,\n showScrubberRefImage: showScrubberRefImage,\n showScrubberDiffImage: showScrubberDiffImage,\n showScrubberDivergedImage: showScrubberDivergedImage,\n showScrubber: showScrubber\n })\n )\n );\n }\n }]);\n\n return ScrubberModal;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n scrubber: state.scrubber\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n closeModal: function closeModal() {\n dispatch((0, _actions.closeModal)(false));\n },\n showScrubberTestImage: function showScrubberTestImage(val) {\n dispatch((0, _actions.showScrubberTestImage)(val));\n },\n showScrubberRefImage: function showScrubberRefImage(val) {\n dispatch((0, _actions.showScrubberRefImage)(val));\n },\n showScrubberDiffImage: function showScrubberDiffImage(val) {\n dispatch((0, _actions.showScrubberDiffImage)(val));\n },\n showScrubberDivergedImage: function showScrubberDivergedImage(val) {\n dispatch((0, _actions.showScrubberDivergedImage)(val));\n },\n showScrubber: function showScrubber(val) {\n dispatch((0, _actions.showScrubber)(val));\n }\n };\n};\n\nvar ScrubberModalContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(ScrubberModal);\n\nexports.default = ScrubberModalContainer;\n\n//# sourceURL=webpack:///./compare/src/components/ecosystems/ScrubberModal.js?"); + +/***/ }), + +/***/ "./compare/src/components/molecules/ApproveButton.js": +/*!***********************************************************!*\ + !*** ./compare/src/components/molecules/ApproveButton.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n font-size: 12px;\\n line-height: auto;\\n font-family: ', ';\\n background-color: ', ';\\n border: none;\\n height: 32px;\\n border-radius: 3px;\\n color: ', ';\\n padding: 5px 5px;\\n\\n &:hover {\\n cursor: pointer;\\n background-color: ', ';\\n }\\n\\n &:disabled {\\n background-color: ', ';\\n color: ', ';\\n cursor: default;\\n }\\n'], ['\\n font-size: 12px;\\n line-height: auto;\\n font-family: ', ';\\n background-color: ', ';\\n border: none;\\n height: 32px;\\n border-radius: 3px;\\n color: ', ';\\n padding: 5px 5px;\\n\\n &:hover {\\n cursor: pointer;\\n background-color: ', ';\\n }\\n\\n &:disabled {\\n background-color: ', ';\\n color: ', ';\\n cursor: default;\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _actions = __webpack_require__(/*! ../../actions */ \"./compare/src/actions/index.js\");\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar REMOTE_HOST = 'http://127.0.0.1';\nvar REMOTE_PORT = 3000;\nvar APPROVE_STATUS_TO_LABEL_MAP = Object.freeze({\n INITIAL: 'Approve',\n PENDING: 'Pending...',\n FAILED: 'Approve'\n});\n\nvar Button = _styledComponents2.default.button(_templateObject, _styles.fonts.latoRegular, _styles.colors.borderGray, _styles.colors.white, _styles.colors.green, _styles.colors.bodyColor, _styles.colors.secondaryText);\n\n// const ErrorMsg = styled.div`\n// word-wrap: break-word;\n// font-family: monospace;\n// background: rgb(251, 234, 234);\n// color: brown;\n// line-height: 32px;\n// `;\n\nvar ApproveButton = function (_React$Component) {\n _inherits(ApproveButton, _React$Component);\n\n function ApproveButton(props) {\n _classCallCheck(this, ApproveButton);\n\n var _this = _possibleConstructorReturn(this, (ApproveButton.__proto__ || Object.getPrototypeOf(ApproveButton)).call(this, props));\n\n _this.approve = _this.approve.bind(_this);\n _this.state = {\n approveStatus: 'INITIAL',\n errorMsg: null\n };\n return _this;\n }\n\n _createClass(ApproveButton, [{\n key: 'approve',\n value: async function approve() {\n var fileName = this.props.fileName;\n\n var url = REMOTE_HOST + ':' + REMOTE_PORT + '/approve?filter=' + fileName;\n this.setState({ approveStatus: 'PENDING' });\n\n try {\n var response = await fetch(url, {\n method: 'POST'\n });\n\n if (response.ok) {\n this.setState({ approveStatus: 'INITIAL' });\n this.props.approveTest(fileName, this.props.filterStatus);\n } else {\n var body = await response.json();\n this.setState({ approveStatus: 'FAILED', errorMsg: body.error });\n }\n } catch (err) {\n this.setState({\n approveStatus: 'FAILED',\n errorMsg: err.message + '. \\uD83E\\uDDD0\\nLooks like the \"approve\" operation failed.\\nPlease check that backstopRemote is running.\\n ' });\n alert(this.state.errorMsg);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var approveStatus = this.state.approveStatus;\n\n\n return _react2.default.createElement(\n 'div',\n null,\n _react2.default.createElement(\n Button,\n { onClick: this.approve, disabled: approveStatus === 'APPROVED' || approveStatus === 'PENDING' },\n APPROVE_STATUS_TO_LABEL_MAP[this.state.approveStatus]\n )\n );\n }\n }]);\n\n return ApproveButton;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n filterStatus: state.tests.filterStatus\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n approveTest: function approveTest(id, filterStatus) {\n dispatch((0, _actions.approveTest)(id));\n dispatch((0, _actions.filterTests)(filterStatus));\n }\n };\n};\n\nvar ApproveButtonContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(ApproveButton);\nexports.default = ApproveButtonContainer;\n\n//# sourceURL=webpack:///./compare/src/components/molecules/ApproveButton.js?"); + +/***/ }), + +/***/ "./compare/src/components/molecules/FiltersSwitch.js": +/*!***********************************************************!*\ + !*** ./compare/src/components/molecules/FiltersSwitch.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: flex;\\n flex: 0 0 auto;\\n height: 100%;\\n'], ['\\n display: flex;\\n flex: 0 0 auto;\\n height: 100%;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _actions = __webpack_require__(/*! ../../actions */ \"./compare/src/actions/index.js\");\n\nvar _ButtonFilter = __webpack_require__(/*! ../atoms/ButtonFilter */ \"./compare/src/components/atoms/ButtonFilter.js\");\n\nvar _ButtonFilter2 = _interopRequireDefault(_ButtonFilter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar ButtonsWrapper = _styledComponents2.default.div(_templateObject);\n\nfunction ButtonsFilter(props) {\n var availableStatus = props.availableStatus;\n\n var ListButton = availableStatus.map(function (status) {\n return _react2.default.createElement(_ButtonFilter2.default, {\n status: status.id,\n key: status.id,\n label: status.label,\n selected: props.filterStatus === status.id,\n count: status.count,\n onClick: function onClick() {\n return props.onClick(status.id);\n }\n });\n });\n\n return (\n // change this with React16\n _react2.default.createElement(\n 'div',\n { style: { height: '100%' } },\n ListButton\n )\n );\n}\n\nvar FiltersSwitch = function (_React$Component) {\n _inherits(FiltersSwitch, _React$Component);\n\n function FiltersSwitch() {\n _classCallCheck(this, FiltersSwitch);\n\n return _possibleConstructorReturn(this, (FiltersSwitch.__proto__ || Object.getPrototypeOf(FiltersSwitch)).apply(this, arguments));\n }\n\n _createClass(FiltersSwitch, [{\n key: 'render',\n value: function render() {\n var tests = this.props.tests;\n var availableStatus = [{\n id: 'all',\n label: 'all',\n count: tests.all.length\n }, {\n id: 'pass',\n label: 'passed',\n count: tests.all.filter(function (e) {\n return e.status === 'pass';\n }).length\n }, {\n id: 'fail',\n label: 'failed',\n count: tests.all.filter(function (e) {\n return e.status === 'fail';\n }).length\n }];\n\n return _react2.default.createElement(\n ButtonsWrapper,\n null,\n _react2.default.createElement(ButtonsFilter, {\n availableStatus: availableStatus,\n onClick: this.props.onButtonClick,\n filterStatus: tests.filterStatus\n })\n );\n }\n }]);\n\n return FiltersSwitch;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n tests: state.tests\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onButtonClick: function onButtonClick(status) {\n dispatch((0, _actions.filterTests)(status));\n }\n };\n};\n\nvar FiltersSwitchContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(FiltersSwitch);\n\nexports.default = FiltersSwitchContainer;\n\n//# sourceURL=webpack:///./compare/src/components/molecules/FiltersSwitch.js?"); + +/***/ }), + +/***/ "./compare/src/components/molecules/SettingsContainer.js": +/*!***************************************************************!*\ + !*** ./compare/src/components/molecules/SettingsContainer.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n flex: 0 0 auto;\\n height: 100%;\\n'], ['\\n flex: 0 0 auto;\\n height: 100%;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _ButtonSettings = __webpack_require__(/*! ../atoms/ButtonSettings */ \"./compare/src/components/atoms/ButtonSettings.js\");\n\nvar _ButtonSettings2 = _interopRequireDefault(_ButtonSettings);\n\nvar _SettingsPopup = __webpack_require__(/*! ./SettingsPopup */ \"./compare/src/components/molecules/SettingsPopup.js\");\n\nvar _SettingsPopup2 = _interopRequireDefault(_SettingsPopup);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n// import { findTests } from '../../actions'\n\n// atoms\n\n\n// molecules\n\n\nvar SettingsWrapper = _styledComponents2.default.div(_templateObject);\n\nvar SettingsPanel = function (_React$Component) {\n _inherits(SettingsPanel, _React$Component);\n\n function SettingsPanel(props) {\n _classCallCheck(this, SettingsPanel);\n\n var _this = _possibleConstructorReturn(this, (SettingsPanel.__proto__ || Object.getPrototypeOf(SettingsPanel)).call(this, props));\n\n _this.state = {\n popup: false\n };\n return _this;\n }\n\n _createClass(SettingsPanel, [{\n key: 'onButtonClick',\n value: function onButtonClick() {\n this.setState({\n popup: !this.state.popup\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var popupVisible = this.state.popup;\n\n return _react2.default.createElement(\n SettingsWrapper,\n null,\n _react2.default.createElement(_ButtonSettings2.default, {\n onClick: this.onButtonClick.bind(this),\n active: this.state.popup\n }),\n popupVisible && _react2.default.createElement(_SettingsPopup2.default, null)\n );\n }\n }]);\n\n return SettingsPanel;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {};\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n // onChange: value => {\n // dispatch(findTests(value))\n // }\n };\n};\n\nvar SettingsContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SettingsPanel);\n\nexports.default = SettingsContainer;\n\n//# sourceURL=webpack:///./compare/src/components/molecules/SettingsContainer.js?"); + +/***/ }), + +/***/ "./compare/src/components/molecules/SettingsPopup.js": +/*!***********************************************************!*\ + !*** ./compare/src/components/molecules/SettingsPopup.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n display: block;\\n position: absolute;\\n width: auto;\\n min-height: 100px;\\n background-color: ', ';\\n box-shadow: ', ';\\n right: 38px;\\n margin-top: 20px;\\n border-radius: 3px;\\n padding: 10px 25px;\\n z-index: 10;\\n\\n /* @TODO: shadow on arrow */\\n &:before {\\n content: \\'\\';\\n display: block;\\n width: 0;\\n height: 0;\\n position: absolute;\\n\\n border-top: 8px solid transparent;\\n border-bottom: 8px solid ', ';\\n border-right: 8px solid transparent;\\n border-left: 8px solid transparent;\\n right: 30px;\\n top: -16px;\\n }\\n'], ['\\n display: block;\\n position: absolute;\\n width: auto;\\n min-height: 100px;\\n background-color: ', ';\\n box-shadow: ', ';\\n right: 38px;\\n margin-top: 20px;\\n border-radius: 3px;\\n padding: 10px 25px;\\n z-index: 10;\\n\\n /* @TODO: shadow on arrow */\\n &:before {\\n content: \\'\\';\\n display: block;\\n width: 0;\\n height: 0;\\n position: absolute;\\n\\n border-top: 8px solid transparent;\\n border-bottom: 8px solid ', ';\\n border-right: 8px solid transparent;\\n border-left: 8px solid transparent;\\n right: 30px;\\n top: -16px;\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _actions = __webpack_require__(/*! ../../actions */ \"./compare/src/actions/index.js\");\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nvar _SettingOption = __webpack_require__(/*! ../atoms/SettingOption */ \"./compare/src/components/atoms/SettingOption.js\");\n\nvar _SettingOption2 = _interopRequireDefault(_SettingOption);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar PopupWrapper = _styledComponents2.default.div(_templateObject, _styles.colors.lightGray, _styles.shadows.shadow01, _styles.colors.lightGray);\n\nvar SettingsPopup = function (_React$Component) {\n _inherits(SettingsPopup, _React$Component);\n\n function SettingsPopup(props) {\n _classCallCheck(this, SettingsPopup);\n\n var _this = _possibleConstructorReturn(this, (SettingsPopup.__proto__ || Object.getPrototypeOf(SettingsPopup)).call(this, props));\n\n _this.state = {\n hideAll: false\n };\n return _this;\n }\n\n _createClass(SettingsPopup, [{\n key: 'toggleAll',\n value: function toggleAll(val) {\n this.setState({\n hideAll: !val\n });\n\n this.props.toggleAll(val);\n }\n }, {\n key: 'onToggle',\n value: function onToggle(id, val) {\n if (!val) {\n this.setState({\n hideAll: false\n });\n }\n\n this.props.onToggle(id);\n }\n }, {\n key: 'render',\n value: function render() {\n var settings = this.props.settings;\n\n\n return _react2.default.createElement(\n PopupWrapper,\n null,\n _react2.default.createElement(_SettingOption2.default, {\n id: 'textInfo',\n label: 'Text info',\n value: settings.textInfo,\n onToggle: this.onToggle.bind(this, 'textInfo')\n }),\n _react2.default.createElement(_SettingOption2.default, {\n id: 'hideAll',\n label: 'Hide all images',\n value: this.state.hideAll,\n onToggle: this.toggleAll.bind(this)\n }),\n _react2.default.createElement(_SettingOption2.default, {\n id: 'refImage',\n label: 'Reference image',\n value: settings.refImage,\n onToggle: this.onToggle.bind(this, 'refImage')\n }),\n _react2.default.createElement(_SettingOption2.default, {\n id: 'testImage',\n label: 'Test image',\n value: settings.testImage,\n onToggle: this.onToggle.bind(this, 'testImage')\n }),\n _react2.default.createElement(_SettingOption2.default, {\n id: 'diffImage',\n label: 'Diff image',\n value: settings.diffImage,\n onToggle: this.onToggle.bind(this, 'diffImage')\n })\n );\n }\n }]);\n\n return SettingsPopup;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n settings: state.layoutSettings\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n onToggle: function onToggle(id) {\n dispatch((0, _actions.updateSettings)(id));\n },\n toggleAll: function toggleAll(value) {\n dispatch((0, _actions.toggleAllImages)(value));\n },\n toogleTextInfo: function toogleTextInfo(value) {\n dispatch((0, _actions.toggleTextInfo)(value));\n }\n };\n};\n\nvar PopupContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SettingsPopup);\n\nexports.default = PopupContainer;\n\n//# sourceURL=webpack:///./compare/src/components/molecules/SettingsPopup.js?"); + +/***/ }), + +/***/ "./compare/src/components/molecules/TestImages.js": +/*!********************************************************!*\ + !*** ./compare/src/components/molecules/TestImages.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n position: relative;\\n display: flex;\\n'], ['\\n position: relative;\\n display: flex;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _actions = __webpack_require__(/*! ../../actions */ \"./compare/src/actions/index.js\");\n\nvar _ImagePreview = __webpack_require__(/*! ../atoms/ImagePreview */ \"./compare/src/components/atoms/ImagePreview.js\");\n\nvar _ImagePreview2 = _interopRequireDefault(_ImagePreview);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n// atoms\n\n\nvar ImagesWrapper = _styledComponents2.default.div(_templateObject);\n\nvar TestImages = function (_React$Component) {\n _inherits(TestImages, _React$Component);\n\n function TestImages(props) {\n _classCallCheck(this, TestImages);\n\n var _this = _possibleConstructorReturn(this, (TestImages.__proto__ || Object.getPrototypeOf(TestImages)).call(this, props));\n\n _this.state = {\n images: []\n };\n return _this;\n }\n\n _createClass(TestImages, [{\n key: 'onImageClick',\n value: function onImageClick(img) {\n var openModal = this.props.openModal;\n\n this.props.info.targetImg = img;\n openModal(this.props.info);\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props$info = this.props.info,\n reference = _props$info.reference,\n test = _props$info.test;\n var _props = this.props,\n status = _props.status,\n settings = _props.settings;\n\n\n this.state.images = [{\n id: 'refImage',\n label: 'Reference',\n src: reference,\n visible: settings.refImage\n }, {\n id: 'testImage',\n label: 'Test',\n src: test,\n visible: settings.testImage\n }];\n\n if (status !== 'pass') {\n this.state.images.push({\n id: 'diffImage',\n label: 'Diff',\n src: this.props.info.diffImage,\n visible: settings.diffImage\n });\n }\n\n return _react2.default.createElement(\n ImagesWrapper,\n null,\n this.state.images.map(function (img, i) {\n return _react2.default.createElement(_ImagePreview2.default, {\n src: img.src,\n id: img.id,\n label: img.label,\n onClick: _this2.onImageClick.bind(_this2, img),\n key: i,\n hidden: !img.visible\n });\n })\n );\n }\n }]);\n\n return TestImages;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n settings: state.layoutSettings\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n openModal: function openModal(value) {\n dispatch((0, _actions.openModal)(value));\n }\n };\n};\n\nvar TestImagesContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(TestImages);\n\nexports.default = TestImagesContainer;\n\n//# sourceURL=webpack:///./compare/src/components/molecules/TestImages.js?"); + +/***/ }), + +/***/ "./compare/src/components/molecules/TextSearch.js": +/*!********************************************************!*\ + !*** ./compare/src/components/molecules/TextSearch.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n flex: 1 1 auto;\\n height: 100%;\\n'], ['\\n flex: 1 1 auto;\\n height: 100%;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _actions = __webpack_require__(/*! ../../actions */ \"./compare/src/actions/index.js\");\n\nvar _InputTextSearch = __webpack_require__(/*! ../atoms/InputTextSearch */ \"./compare/src/components/atoms/InputTextSearch.js\");\n\nvar _InputTextSearch2 = _interopRequireDefault(_InputTextSearch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar InputWrapper = _styledComponents2.default.div(_templateObject);\n\nvar TextSearch = function (_React$Component) {\n _inherits(TextSearch, _React$Component);\n\n function TextSearch() {\n _classCallCheck(this, TextSearch);\n\n return _possibleConstructorReturn(this, (TextSearch.__proto__ || Object.getPrototypeOf(TextSearch)).apply(this, arguments));\n }\n\n _createClass(TextSearch, [{\n key: 'onChange',\n value: function onChange(event) {\n var value = event.target.value;\n\n if (value.length > 0) {\n this.props.findTest(value);\n } else {\n this.props.filterTests(this.props.tests.filterStatus);\n }\n }\n }, {\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n InputWrapper,\n null,\n _react2.default.createElement(_InputTextSearch2.default, { onChange: this.onChange.bind(this) })\n );\n }\n }]);\n\n return TextSearch;\n}(_react2.default.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n tests: state.tests\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch) {\n return {\n findTest: function findTest(value) {\n dispatch((0, _actions.findTests)(value));\n },\n filterTests: function filterTests(status) {\n dispatch((0, _actions.filterTests)(status));\n }\n };\n};\n\nvar TextSearchContainer = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(TextSearch);\n\nexports.default = TextSearchContainer;\n\n//# sourceURL=webpack:///./compare/src/components/molecules/TextSearch.js?"); + +/***/ }), + +/***/ "./compare/src/components/organisms/TestCard.js": +/*!******************************************************!*\ + !*** ./compare/src/components/organisms/TestCard.js ***! + \******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n position: relative;\\n margin: 5px auto;\\n padding: 10px 30px;\\n background-color: ', ';\\n box-shadow: ', ';\\n min-height: 40px;\\n break-inside: avoid;\\n\\n &:before {\\n content: \\'\\';\\n display: block;\\n width: 8px;\\n height: 100%;\\n background-color: ', ';\\n position: absolute;\\n top: 0;\\n left: 0;\\n }\\n @media print {\\n box-shadow: none;\\n }\\n'], ['\\n position: relative;\\n margin: 5px auto;\\n padding: 10px 30px;\\n background-color: ', ';\\n box-shadow: ', ';\\n min-height: 40px;\\n break-inside: avoid;\\n\\n &:before {\\n content: \\'\\';\\n display: block;\\n width: 8px;\\n height: 100%;\\n background-color: ', ';\\n position: absolute;\\n top: 0;\\n left: 0;\\n }\\n @media print {\\n box-shadow: none;\\n }\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n position: absolute;\\n right: 10px;\\n display: flex;\\n'], ['\\n position: absolute;\\n right: 10px;\\n display: flex;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nvar _ErrorMessages = __webpack_require__(/*! ../atoms/ErrorMessages */ \"./compare/src/components/atoms/ErrorMessages.js\");\n\nvar _ErrorMessages2 = _interopRequireDefault(_ErrorMessages);\n\nvar _TextDetails = __webpack_require__(/*! ../atoms/TextDetails */ \"./compare/src/components/atoms/TextDetails.js\");\n\nvar _TextDetails2 = _interopRequireDefault(_TextDetails);\n\nvar _NavButtons = __webpack_require__(/*! ../atoms/NavButtons */ \"./compare/src/components/atoms/NavButtons.js\");\n\nvar _NavButtons2 = _interopRequireDefault(_NavButtons);\n\nvar _TestImages = __webpack_require__(/*! ../molecules/TestImages */ \"./compare/src/components/molecules/TestImages.js\");\n\nvar _TestImages2 = _interopRequireDefault(_TestImages);\n\nvar _ApproveButton = __webpack_require__(/*! ../molecules/ApproveButton */ \"./compare/src/components/molecules/ApproveButton.js\");\n\nvar _ApproveButton2 = _interopRequireDefault(_ApproveButton);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n// atoms\n\n\n// molecules\n\n\nvar CardWrapper = _styledComponents2.default.div(_templateObject, _styles.colors.cardWhite, _styles.shadows.shadow01, function (props) {\n return props.status === 'pass' ? _styles.colors.green : _styles.colors.red;\n});\n\nvar ButtonsWrapper = _styledComponents2.default.div(_templateObject2);\n\n// only show the diverged option if remote option is found\nfunction isRemoteOption() {\n return (/remote/.test(location.search)\n );\n}\n\nvar TestCard = function (_React$Component) {\n _inherits(TestCard, _React$Component);\n\n function TestCard() {\n _classCallCheck(this, TestCard);\n\n return _possibleConstructorReturn(this, (TestCard.__proto__ || Object.getPrototypeOf(TestCard)).apply(this, arguments));\n }\n\n _createClass(TestCard, [{\n key: 'render',\n value: function render() {\n var _props$test = this.props.test,\n info = _props$test.pair,\n status = _props$test.status;\n\n var onlyText = this.props.onlyText;\n\n return _react2.default.createElement(\n CardWrapper,\n { id: this.props.id, status: status },\n _react2.default.createElement(\n ButtonsWrapper,\n null,\n status === 'fail' && isRemoteOption() && _react2.default.createElement(_ApproveButton2.default, { fileName: info.fileName }),\n !onlyText && _react2.default.createElement(_NavButtons2.default, { currentId: this.props.numId, lastId: this.props.lastId })\n ),\n _react2.default.createElement(_TextDetails2.default, { info: info }),\n _react2.default.createElement(_TestImages2.default, { info: info, status: status }),\n _react2.default.createElement(_ErrorMessages2.default, { info: info, status: status })\n );\n }\n }]);\n\n return TestCard;\n}(_react2.default.Component);\n\nexports.default = TestCard;\n\n//# sourceURL=webpack:///./compare/src/components/organisms/TestCard.js?"); + +/***/ }), + +/***/ "./compare/src/components/organisms/Toolbar.js": +/*!*****************************************************!*\ + !*** ./compare/src/components/organisms/Toolbar.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: 100%;\\n padding: 10px 30px;\\n background: ', ';\\n height: 70px;\\n display: flex;\\n box-sizing: border-box;\\n\\n @media print {\\n display: none;\\n }\\n'], ['\\n width: 100%;\\n padding: 10px 30px;\\n background: ', ';\\n height: 70px;\\n display: flex;\\n box-sizing: border-box;\\n\\n @media print {\\n display: none;\\n }\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _FiltersSwitch = __webpack_require__(/*! ../molecules/FiltersSwitch */ \"./compare/src/components/molecules/FiltersSwitch.js\");\n\nvar _FiltersSwitch2 = _interopRequireDefault(_FiltersSwitch);\n\nvar _TextSearch = __webpack_require__(/*! ../molecules/TextSearch */ \"./compare/src/components/molecules/TextSearch.js\");\n\nvar _TextSearch2 = _interopRequireDefault(_TextSearch);\n\nvar _SettingsContainer = __webpack_require__(/*! ../molecules/SettingsContainer */ \"./compare/src/components/molecules/SettingsContainer.js\");\n\nvar _SettingsContainer2 = _interopRequireDefault(_SettingsContainer);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar ToolbarWrapper = _styledComponents2.default.section(_templateObject, _styles.colors.bodyColor);\n\nvar Toolbar = function (_React$Component) {\n _inherits(Toolbar, _React$Component);\n\n function Toolbar() {\n _classCallCheck(this, Toolbar);\n\n return _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).apply(this, arguments));\n }\n\n _createClass(Toolbar, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n ToolbarWrapper,\n { style: this.props.style },\n _react2.default.createElement(_FiltersSwitch2.default, null),\n _react2.default.createElement(_TextSearch2.default, null),\n _react2.default.createElement(_SettingsContainer2.default, null)\n );\n }\n }]);\n\n return Toolbar;\n}(_react2.default.Component);\n\nexports.default = Toolbar;\n\n//# sourceURL=webpack:///./compare/src/components/organisms/Toolbar.js?"); + +/***/ }), + +/***/ "./compare/src/components/organisms/topbar.js": +/*!****************************************************!*\ + !*** ./compare/src/components/organisms/topbar.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _templateObject = _taggedTemplateLiteral(['\\n width: 100%;\\n margin: 0 auto;\\n display: flex;\\n padding: 0 30px;\\n align-items: center;\\n box-sizing: border-box;\\n flex-wrap: wrap;\\n'], ['\\n width: 100%;\\n margin: 0 auto;\\n display: flex;\\n padding: 0 30px;\\n align-items: center;\\n box-sizing: border-box;\\n flex-wrap: wrap;\\n']),\n _templateObject2 = _taggedTemplateLiteral(['\\n width: 100%;\\n height: 3px;\\n background: ', ';\\n flex-basis: 100%;\\n margin: 10px 0;\\n'], ['\\n width: 100%;\\n height: 3px;\\n background: ', ';\\n flex-basis: 100%;\\n margin: 10px 0;\\n']);\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _styledComponents = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\nvar _styledComponents2 = _interopRequireDefault(_styledComponents);\n\nvar _styles = __webpack_require__(/*! ../../styles */ \"./compare/src/styles/index.js\");\n\nvar _SuiteName = __webpack_require__(/*! ../atoms/SuiteName */ \"./compare/src/components/atoms/SuiteName.js\");\n\nvar _SuiteName2 = _interopRequireDefault(_SuiteName);\n\nvar _IdContainer = __webpack_require__(/*! ../atoms/IdContainer */ \"./compare/src/components/atoms/IdContainer.js\");\n\nvar _IdContainer2 = _interopRequireDefault(_IdContainer);\n\nvar _Logo = __webpack_require__(/*! ../atoms/Logo */ \"./compare/src/components/atoms/Logo.js\");\n\nvar _Logo2 = _interopRequireDefault(_Logo);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nvar TopbarWrapper = _styledComponents2.default.section(_templateObject);\n\nvar Separator = _styledComponents2.default.div(_templateObject2, _styles.colors.borderGray);\n\nvar Topbar = function (_React$Component) {\n _inherits(Topbar, _React$Component);\n\n function Topbar() {\n _classCallCheck(this, Topbar);\n\n return _possibleConstructorReturn(this, (Topbar.__proto__ || Object.getPrototypeOf(Topbar)).apply(this, arguments));\n }\n\n _createClass(Topbar, [{\n key: 'render',\n value: function render() {\n return _react2.default.createElement(\n TopbarWrapper,\n null,\n _react2.default.createElement(_SuiteName2.default, null),\n _react2.default.createElement(_IdContainer2.default, null),\n _react2.default.createElement(_Logo2.default, null),\n _react2.default.createElement(Separator, null)\n );\n }\n }]);\n\n return Topbar;\n}(_react2.default.Component);\n\nexports.default = Topbar;\n\n//# sourceURL=webpack:///./compare/src/components/organisms/topbar.js?"); + +/***/ }), + +/***/ "./compare/src/index.js": +/*!******************************!*\ + !*** ./compare/src/index.js ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _reactRedux = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n\nvar _store = __webpack_require__(/*! ./store.js */ \"./compare/src/store.js\");\n\nvar _store2 = _interopRequireDefault(_store);\n\nvar _App = __webpack_require__(/*! ./components/App */ \"./compare/src/components/App.js\");\n\nvar _App2 = _interopRequireDefault(_App);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_reactDom2.default.render(_react2.default.createElement(\n _reactRedux.Provider,\n { store: _store2.default },\n _react2.default.createElement(_App2.default, null)\n), document.getElementById('root'));\n\n//# sourceURL=webpack:///./compare/src/index.js?"); + +/***/ }), + +/***/ "./compare/src/reducers/index.js": +/*!***************************************!*\ + !*** ./compare/src/reducers/index.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _redux = __webpack_require__(/*! redux */ \"./node_modules/redux/es/index.js\");\n\nvar _tests = __webpack_require__(/*! ./tests */ \"./compare/src/reducers/tests.js\");\n\nvar _tests2 = _interopRequireDefault(_tests);\n\nvar _suiteInfo = __webpack_require__(/*! ./suiteInfo */ \"./compare/src/reducers/suiteInfo.js\");\n\nvar _suiteInfo2 = _interopRequireDefault(_suiteInfo);\n\nvar _layoutSettings = __webpack_require__(/*! ./layoutSettings */ \"./compare/src/reducers/layoutSettings.js\");\n\nvar _layoutSettings2 = _interopRequireDefault(_layoutSettings);\n\nvar _scrubber = __webpack_require__(/*! ./scrubber */ \"./compare/src/reducers/scrubber.js\");\n\nvar _scrubber2 = _interopRequireDefault(_scrubber);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar rootReducer = (0, _redux.combineReducers)({\n suiteInfo: _suiteInfo2.default,\n tests: _tests2.default,\n scrubber: _scrubber2.default,\n layoutSettings: _layoutSettings2.default\n});\n\nexports.default = rootReducer;\n\n//# sourceURL=webpack:///./compare/src/reducers/index.js?"); + +/***/ }), + +/***/ "./compare/src/reducers/layoutSettings.js": +/*!************************************************!*\ + !*** ./compare/src/reducers/layoutSettings.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar visibilityFilter = function visibilityFilter() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case 'UPDATE_SETTINGS':\n return Object.assign({}, state, _defineProperty({}, action.id, !state[action.id]));\n\n case 'TOGGLE_ALL_IMAGES':\n return Object.assign({}, state, {\n refImage: action.value,\n testImage: action.value,\n diffImage: action.value\n });\n\n default:\n return state;\n }\n};\n\nexports.default = visibilityFilter;\n\n//# sourceURL=webpack:///./compare/src/reducers/layoutSettings.js?"); + +/***/ }), + +/***/ "./compare/src/reducers/scrubber.js": +/*!******************************************!*\ + !*** ./compare/src/reducers/scrubber.js ***! + \******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nfunction getPosFromImgId(imgId) {\n switch (imgId) {\n case 'refImage':\n return 100; // just passed the right border\n case 'testImage':\n return 0; // just passed the left border\n case 'diffImage':\n return 0; // just passed the left border\n default:\n return 50; // in the middle\n }\n}\n\nfunction getModeFromImgId(imgId) {\n switch (imgId) {\n case 'refImage':\n return 'SHOW_SCRUBBER_REF_IMAGE';\n case 'testImage':\n return 'SHOW_SCRUBBER_TEST_IMAGE';\n case 'diffImage':\n return 'SHOW_SCRUBBER_DIFF_IMAGE';\n default:\n return 'SCRUB';\n }\n}\n\nvar scrubber = function scrubber() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case 'OPEN_SCRUBBER_MODAL':\n var targetImgId = '';\n try {\n targetImgId = action.value.targetImg.id;\n } catch (err) {}\n\n return Object.assign({}, state, {\n position: getPosFromImgId(targetImgId),\n visible: true,\n test: action.value,\n testImageType: targetImgId,\n scrubberModalMode: getModeFromImgId(targetImgId)\n });\n\n case 'CLOSE_SCRUBBER_MODAL':\n return Object.assign({}, state, {\n visible: false,\n test: {}\n });\n\n case 'SHOW_SCRUBBER_TEST_IMAGE':\n return Object.assign({}, state, {\n position: getPosFromImgId('testImage'),\n scrubberModalMode: action.type,\n testImageType: 'testImage'\n });\n\n case 'SHOW_SCRUBBER_REF_IMAGE':\n return Object.assign({}, state, {\n position: getPosFromImgId('refImage'),\n scrubberModalMode: action.type\n });\n\n case 'SHOW_SCRUBBER_DIFF_IMAGE':\n return Object.assign({}, state, {\n position: getPosFromImgId('diffImage'),\n scrubberModalMode: action.type,\n testImageType: 'diffImage'\n });\n\n case 'SHOW_SCRUBBER_DIVERGED_IMAGE':\n return Object.assign({}, state, {\n position: getPosFromImgId('diffImage'),\n scrubberModalMode: action.type,\n testImageType: 'divergedImage',\n test: Object.assign({}, state.test, { divergedImage: action.value })\n });\n\n case 'SHOW_SCRUBBER':\n return Object.assign({}, state, {\n position: getPosFromImgId(),\n scrubberModalMode: 'SCRUB'\n });\n\n default:\n return state;\n }\n};\n\nexports.default = scrubber;\n\n//# sourceURL=webpack:///./compare/src/reducers/scrubber.js?"); + +/***/ }), + +/***/ "./compare/src/reducers/suiteInfo.js": +/*!*******************************************!*\ + !*** ./compare/src/reducers/suiteInfo.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar suiteInfo = function suiteInfo() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case 'SET_VISIBILITY_FILTER':\n return action.filter;\n default:\n return state;\n }\n};\n\nexports.default = suiteInfo;\n\n//# sourceURL=webpack:///./compare/src/reducers/suiteInfo.js?"); + +/***/ }), + +/***/ "./compare/src/reducers/tests.js": +/*!***************************************!*\ + !*** ./compare/src/reducers/tests.js ***! + \***************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar tests = function tests() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments[1];\n\n switch (action.type) {\n case 'APPROVE_TEST':\n return Object.assign({}, state, {\n all: state.all.map(function (test) {\n if (test.pair && test.pair.fileName === action.id) {\n return Object.assign({}, test, { status: 'pass' });\n }\n return test;\n })\n });\n case 'FILTER_TESTS':\n if (action.status !== 'all') {\n return Object.assign({}, state, {\n filtered: state.all.filter(function (e) {\n return e.status === action.status;\n }),\n filterStatus: action.status\n });\n } else {\n return Object.assign({}, state, {\n filtered: state.all,\n filterStatus: action.status\n });\n }\n\n // @TODO: to optimize\n case 'SEARCH_TESTS':\n if (action.value.length > 0) {\n return Object.assign({}, state, {\n filtered: state.all.filter(function (e) {\n var fileName = e.pair.fileName.toLowerCase();\n var label = e.pair.label.toLowerCase();\n\n if (state.filterStatus !== 'all') {\n if (e.status === state.filterStatus && (label.indexOf(action.value.toLowerCase()) !== -1 || fileName.indexOf(action.value.toLowerCase()) !== -1)) {\n return true;\n }\n } else {\n if (label.indexOf(action.value.toLowerCase()) !== -1 || fileName.indexOf(action.value.toLowerCase()) !== -1) {\n return true;\n }\n }\n })\n });\n }\n return state;\n\n default:\n return state;\n }\n};\n\nexports.default = tests;\n\n//# sourceURL=webpack:///./compare/src/reducers/tests.js?"); + +/***/ }), + +/***/ "./compare/src/store.js": +/*!******************************!*\ + !*** ./compare/src/store.js ***! + \******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _redux = __webpack_require__(/*! redux */ \"./node_modules/redux/es/index.js\");\n\nvar _reducers = __webpack_require__(/*! ./reducers */ \"./compare/src/reducers/index.js\");\n\nvar _reducers2 = _interopRequireDefault(_reducers);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar defaultState = {\n suiteInfo: {\n testSuiteName: window.tests.testSuite,\n idConfig: window.tests.id\n },\n tests: {\n all: window.tests.tests,\n filtered: window.tests.tests,\n filterStatus: 'all'\n },\n scrubber: {\n visible: false,\n mode: 'scrub',\n test: {}\n },\n layoutSettings: {\n textInfo: false,\n refImage: true,\n testImage: true,\n diffImage: true\n }\n};\n\nvar store = (0, _redux.createStore)(_reducers2.default, defaultState, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());\n\nexports.default = store;\n\n//# sourceURL=webpack:///./compare/src/store.js?"); + +/***/ }), + +/***/ "./compare/src/styles/index.js": +/*!*************************************!*\ + !*** ./compare/src/styles/index.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar colors = exports.colors = {\n primaryText: '#4A4A4A',\n bodyColor: '#E2E7EA',\n secondaryText: '#787878',\n borderGray: '#D1D9DD',\n green: '#8BC34A',\n red: '#F44336',\n white: '#FFFFFF',\n cardWhite: '#FAFAFA',\n lightGray: '#EEEEEE',\n medGray: '#999999'\n};\n\nvar fonts = exports.fonts = {\n latoRegular: 'latoregular',\n latoBold: 'latobold',\n arial: 'Arial'\n};\n\nvar shadows = exports.shadows = {\n shadow01: '0 3px 6px 0 rgba(0,0,0,0.16)',\n shadow02: '0 4px 5px 0 rgba(0,0,0,0.14), 0 1px 10px 0 rgba(0,0,0,0.12), 0 2px 4px -1px rgba(0,0,0,0.3)'\n};\n\n//# sourceURL=webpack:///./compare/src/styles/index.js?"); + +/***/ }), + +/***/ "./node_modules/backstop-twentytwenty/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/backstop-twentytwenty/index.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar DEGREES_IN_RADIAN = 180 / Math.PI;\n\nvar TwentyTwenty = function (_Component) {\n _inherits(TwentyTwenty, _Component);\n\n function TwentyTwenty(props) {\n _classCallCheck(this, TwentyTwenty);\n\n var _this = _possibleConstructorReturn(this, (TwentyTwenty.__proto__ || Object.getPrototypeOf(TwentyTwenty)).call(this, props));\n\n _this.state = {\n startX: NaN,\n startY: NaN,\n isDragging: false,\n position: props.initialPosition\n };\n\n _this.beginDrag = _this.beginDrag.bind(_this);\n _this.endDrag = _this.endDrag.bind(_this);\n _this.onDragMove = _this.onDragMove.bind(_this);\n return _this;\n }\n\n _createClass(TwentyTwenty, [{\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.endDrag();\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(_ref) {\n var newPosition = _ref.newPosition;\n\n this.setState({ position: newPosition });\n }\n }, {\n key: 'onDragMove',\n value: function onDragMove(e) {\n if (!this.props.isDraggingEnabled) return;\n\n var isDragging = this.state.isDragging;\n\n var isTouch = 'touches' in e;\n\n var _ref2 = isTouch ? e.touches[0] : e,\n pageX = _ref2.pageX,\n pageY = _ref2.pageY;\n\n if (!isDragging && isTouch) {\n var _props = this.props,\n maxAngleToBeginInteraction = _props.maxAngleToBeginInteraction,\n minDistanceToBeginInteraction = _props.minDistanceToBeginInteraction;\n var _state = this.state,\n startX = _state.startX,\n startY = _state.startY;\n\n\n var dx = startX - pageX;\n var dy = startY - pageY;\n\n var angle = Math.atan(dy / dx) * DEGREES_IN_RADIAN;\n var distance = Math.sqrt(dx * dx + dy * dy);\n isDragging = distance >= minDistanceToBeginInteraction;\n\n if (isDragging && Math.abs(angle) > maxAngleToBeginInteraction) {\n // They're trying to scroll vertically\n this.endDrag();\n return;\n } else if (!isDragging) {\n return;\n }\n }\n\n var _refs$component$getBo = this.refs.component.getBoundingClientRect(),\n left = _refs$component$getBo.left,\n width = _refs$component$getBo.width;\n\n var position = 100 * (pageX - left) / width;\n position = Math.max(Math.min(position, 100), 0);\n this.setState({ position: position, isDragging: isDragging });\n }\n }, {\n key: 'beginDrag',\n value: function beginDrag(e) {\n if (e) e.preventDefault();\n if (!this.props.isDraggingEnabled) return;\n\n var _ref3 = 'touches' in e ? e.touches[0] : e,\n pageX = _ref3.pageX,\n pageY = _ref3.pageY;\n\n this.setState({ startX: pageX, startY: pageY });\n\n document.addEventListener('mousemove', this.onDragMove);\n document.addEventListener('mouseup', this.endDrag);\n document.addEventListener('touchmove', this.onDragMove);\n document.addEventListener('touchend', this.endDrag);\n }\n }, {\n key: 'endDrag',\n value: function endDrag() {\n document.removeEventListener('mousemove', this.onDragMove);\n document.removeEventListener('mouseup', this.endDrag);\n document.removeEventListener('touchmove', this.onDragMove);\n document.removeEventListener('touchend', this.endDrag);\n\n this.setState({ isDragging: false, startY: NaN, endY: NaN });\n }\n }, {\n key: 'render',\n value: function render() {\n var position = this.state.position;\n var _props2 = this.props,\n children = _props2.children,\n verticalAlign = _props2.verticalAlign,\n leftHorizontalAlign = _props2.leftHorizontalAlign,\n rightHorizontalAlign = _props2.rightHorizontalAlign;\n\n\n if (children.length !== 2 && children.length !== 3) {\n console.warn('Expected exactly two or three children'); // eslint-disable-line\n return null;\n }\n\n return _react2.default.createElement(\n 'div',\n {\n ref: 'component',\n style: { position: 'relative', overflow: 'hidden', whiteSpace: 'nowrap' },\n onMouseDown: this.beginDrag,\n onTouchStart: this.beginDrag\n },\n _react2.default.createElement(\n 'div',\n {\n style: {\n position: 'absolute',\n left: position + '%',\n height: '100%',\n width: 0,\n zIndex: 1\n }\n },\n children[2]\n ),\n _react2.default.createElement(\n 'div',\n {\n style: {\n display: 'inline-block',\n width: '100%',\n position: 'relative',\n verticalAlign: verticalAlign,\n left: position - 100 + '%',\n overflow: 'hidden'\n }\n },\n _react2.default.createElement(\n 'div',\n {\n style: {\n position: 'relative',\n right: position - 100 + '%',\n textAlign: leftHorizontalAlign\n }\n },\n children[0]\n )\n ),\n _react2.default.createElement(\n 'div',\n {\n style: {\n display: 'inline-block',\n width: '100%',\n position: 'relative',\n verticalAlign: verticalAlign,\n left: position - 100 + '%',\n overflow: 'hidden'\n }\n },\n _react2.default.createElement(\n 'div',\n {\n style: {\n position: 'relative',\n right: position + '%',\n textAlign: rightHorizontalAlign\n }\n },\n children[1]\n )\n )\n );\n }\n }]);\n\n return TwentyTwenty;\n}(_react.Component);\n\nexports.default = TwentyTwenty;\n\n\nTwentyTwenty.propTypes = {\n children: _react.PropTypes.array,\n verticalAlign: _react.PropTypes.string,\n leftHorizontalAlign: _react.PropTypes.string,\n rightHorizontalAlign: _react.PropTypes.string,\n minDistanceToBeginInteraction: _react.PropTypes.number,\n maxAngleToBeginInteraction: _react.PropTypes.number,\n initialPosition: _react.PropTypes.number,\n isDraggingEnabled: _react.PropTypes.bool\n};\n\nTwentyTwenty.defaultProps = {\n verticalAlign: 'middle',\n leftHorizontalAlign: 'center',\n rightHorizontalAlign: 'center',\n minDistanceToBeginInteraction: 15,\n maxAngleToBeginInteraction: 30,\n initialPosition: 50,\n isDraggingEnabled: true\n};\n\n\n//# sourceURL=webpack:///./node_modules/backstop-twentytwenty/index.js?"); + +/***/ }), + +/***/ "./node_modules/create-react-class/factory.js": +/*!****************************************************!*\ + !*** ./node_modules/create-react-class/factory.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar _assign = __webpack_require__(/*! object-assign */ \"./node_modules/create-react-class/node_modules/object-assign/index.js\");\n\nvar emptyObject = __webpack_require__(/*! fbjs/lib/emptyObject */ \"./node_modules/fbjs/lib/emptyObject.js\");\nvar _invariant = __webpack_require__(/*! fbjs/lib/invariant */ \"./node_modules/fbjs/lib/invariant.js\");\n\nif (true) {\n var warning = __webpack_require__(/*! fbjs/lib/warning */ \"./node_modules/fbjs/lib/warning.js\");\n}\n\nvar MIXINS_KEY = 'mixins';\n\n// Helper function to allow the creation of anonymous functions which do not\n// have .name set to the name of the variable being assigned to.\nfunction identity(fn) {\n return fn;\n}\n\nvar ReactPropTypeLocationNames;\nif (true) {\n ReactPropTypeLocationNames = {\n prop: 'prop',\n context: 'context',\n childContext: 'child context'\n };\n} else {}\n\nfunction factory(ReactComponent, isValidElement, ReactNoopUpdateQueue) {\n /**\n * Policies that describe methods in `ReactClassInterface`.\n */\n\n var injectedMixins = [];\n\n /**\n * Composite components are higher-level components that compose other composite\n * or host components.\n *\n * To create a new type of `ReactClass`, pass a specification of\n * your new class to `React.createClass`. The only requirement of your class\n * specification is that you implement a `render` method.\n *\n * var MyComponent = React.createClass({\n * render: function() {\n * return
Hello World
;\n * }\n * });\n *\n * The class specification supports a specific protocol of methods that have\n * special meaning (e.g. `render`). See `ReactClassInterface` for\n * more the comprehensive protocol. Any other properties and methods in the\n * class specification will be available on the prototype.\n *\n * @interface ReactClassInterface\n * @internal\n */\n var ReactClassInterface = {\n /**\n * An array of Mixin objects to include when defining your component.\n *\n * @type {array}\n * @optional\n */\n mixins: 'DEFINE_MANY',\n\n /**\n * An object containing properties and methods that should be defined on\n * the component's constructor instead of its prototype (static methods).\n *\n * @type {object}\n * @optional\n */\n statics: 'DEFINE_MANY',\n\n /**\n * Definition of prop types for this component.\n *\n * @type {object}\n * @optional\n */\n propTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types for this component.\n *\n * @type {object}\n * @optional\n */\n contextTypes: 'DEFINE_MANY',\n\n /**\n * Definition of context types this component sets for its children.\n *\n * @type {object}\n * @optional\n */\n childContextTypes: 'DEFINE_MANY',\n\n // ==== Definition methods ====\n\n /**\n * Invoked when the component is mounted. Values in the mapping will be set on\n * `this.props` if that prop is not specified (i.e. using an `in` check).\n *\n * This method is invoked before `getInitialState` and therefore cannot rely\n * on `this.state` or use `this.setState`.\n *\n * @return {object}\n * @optional\n */\n getDefaultProps: 'DEFINE_MANY_MERGED',\n\n /**\n * Invoked once before the component is mounted. The return value will be used\n * as the initial value of `this.state`.\n *\n * getInitialState: function() {\n * return {\n * isOn: false,\n * fooBaz: new BazFoo()\n * }\n * }\n *\n * @return {object}\n * @optional\n */\n getInitialState: 'DEFINE_MANY_MERGED',\n\n /**\n * @return {object}\n * @optional\n */\n getChildContext: 'DEFINE_MANY_MERGED',\n\n /**\n * Uses props from `this.props` and state from `this.state` to render the\n * structure of the component.\n *\n * No guarantees are made about when or how often this method is invoked, so\n * it must not have side effects.\n *\n * render: function() {\n * var name = this.props.name;\n * return
Hello, {name}!
;\n * }\n *\n * @return {ReactComponent}\n * @required\n */\n render: 'DEFINE_ONCE',\n\n // ==== Delegate methods ====\n\n /**\n * Invoked when the component is initially created and about to be mounted.\n * This may have side effects, but any external subscriptions or data created\n * by this method must be cleaned up in `componentWillUnmount`.\n *\n * @optional\n */\n componentWillMount: 'DEFINE_MANY',\n\n /**\n * Invoked when the component has been mounted and has a DOM representation.\n * However, there is no guarantee that the DOM node is in the document.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been mounted (initialized and rendered) for the first time.\n *\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidMount: 'DEFINE_MANY',\n\n /**\n * Invoked before the component receives new props.\n *\n * Use this as an opportunity to react to a prop transition by updating the\n * state using `this.setState`. Current props are accessed via `this.props`.\n *\n * componentWillReceiveProps: function(nextProps, nextContext) {\n * this.setState({\n * likesIncreasing: nextProps.likeCount > this.props.likeCount\n * });\n * }\n *\n * NOTE: There is no equivalent `componentWillReceiveState`. An incoming prop\n * transition may cause a state change, but the opposite is not true. If you\n * need it, you are probably looking for `componentWillUpdate`.\n *\n * @param {object} nextProps\n * @optional\n */\n componentWillReceiveProps: 'DEFINE_MANY',\n\n /**\n * Invoked while deciding if the component should be updated as a result of\n * receiving new props, state and/or context.\n *\n * Use this as an opportunity to `return false` when you're certain that the\n * transition to the new props/state/context will not require a component\n * update.\n *\n * shouldComponentUpdate: function(nextProps, nextState, nextContext) {\n * return !equal(nextProps, this.props) ||\n * !equal(nextState, this.state) ||\n * !equal(nextContext, this.context);\n * }\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @return {boolean} True if the component should update.\n * @optional\n */\n shouldComponentUpdate: 'DEFINE_ONCE',\n\n /**\n * Invoked when the component is about to update due to a transition from\n * `this.props`, `this.state` and `this.context` to `nextProps`, `nextState`\n * and `nextContext`.\n *\n * Use this as an opportunity to perform preparation before an update occurs.\n *\n * NOTE: You **cannot** use `this.setState()` in this method.\n *\n * @param {object} nextProps\n * @param {?object} nextState\n * @param {?object} nextContext\n * @param {ReactReconcileTransaction} transaction\n * @optional\n */\n componentWillUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component's DOM representation has been updated.\n *\n * Use this as an opportunity to operate on the DOM when the component has\n * been updated.\n *\n * @param {object} prevProps\n * @param {?object} prevState\n * @param {?object} prevContext\n * @param {DOMElement} rootNode DOM element representing the component.\n * @optional\n */\n componentDidUpdate: 'DEFINE_MANY',\n\n /**\n * Invoked when the component is about to be removed from its parent and have\n * its DOM representation destroyed.\n *\n * Use this as an opportunity to deallocate any external resources.\n *\n * NOTE: There is no `componentDidUnmount` since your component will have been\n * destroyed by that point.\n *\n * @optional\n */\n componentWillUnmount: 'DEFINE_MANY',\n\n // ==== Advanced methods ====\n\n /**\n * Updates the component's currently mounted DOM representation.\n *\n * By default, this implements React's rendering and reconciliation algorithm.\n * Sophisticated clients may wish to override this.\n *\n * @param {ReactReconcileTransaction} transaction\n * @internal\n * @overridable\n */\n updateComponent: 'OVERRIDE_BASE'\n };\n\n /**\n * Mapping from class specification keys to special processing functions.\n *\n * Although these are declared like instance properties in the specification\n * when defining classes using `React.createClass`, they are actually static\n * and are accessible on the constructor instead of the prototype. Despite\n * being static, they must be defined outside of the \"statics\" key under\n * which all other static methods are defined.\n */\n var RESERVED_SPEC_KEYS = {\n displayName: function(Constructor, displayName) {\n Constructor.displayName = displayName;\n },\n mixins: function(Constructor, mixins) {\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n mixSpecIntoComponent(Constructor, mixins[i]);\n }\n }\n },\n childContextTypes: function(Constructor, childContextTypes) {\n if (true) {\n validateTypeDef(Constructor, childContextTypes, 'childContext');\n }\n Constructor.childContextTypes = _assign(\n {},\n Constructor.childContextTypes,\n childContextTypes\n );\n },\n contextTypes: function(Constructor, contextTypes) {\n if (true) {\n validateTypeDef(Constructor, contextTypes, 'context');\n }\n Constructor.contextTypes = _assign(\n {},\n Constructor.contextTypes,\n contextTypes\n );\n },\n /**\n * Special case getDefaultProps which should move into statics but requires\n * automatic merging.\n */\n getDefaultProps: function(Constructor, getDefaultProps) {\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps = createMergedResultFunction(\n Constructor.getDefaultProps,\n getDefaultProps\n );\n } else {\n Constructor.getDefaultProps = getDefaultProps;\n }\n },\n propTypes: function(Constructor, propTypes) {\n if (true) {\n validateTypeDef(Constructor, propTypes, 'prop');\n }\n Constructor.propTypes = _assign({}, Constructor.propTypes, propTypes);\n },\n statics: function(Constructor, statics) {\n mixStaticSpecIntoComponent(Constructor, statics);\n },\n autobind: function() {}\n };\n\n function validateTypeDef(Constructor, typeDef, location) {\n for (var propName in typeDef) {\n if (typeDef.hasOwnProperty(propName)) {\n // use a warning instead of an _invariant so components\n // don't show up in prod but only in __DEV__\n if (true) {\n warning(\n typeof typeDef[propName] === 'function',\n '%s: %s type `%s` is invalid; it must be a function, usually from ' +\n 'React.PropTypes.',\n Constructor.displayName || 'ReactClass',\n ReactPropTypeLocationNames[location],\n propName\n );\n }\n }\n }\n }\n\n function validateMethodOverride(isAlreadyDefined, name) {\n var specPolicy = ReactClassInterface.hasOwnProperty(name)\n ? ReactClassInterface[name]\n : null;\n\n // Disallow overriding of base class methods unless explicitly allowed.\n if (ReactClassMixin.hasOwnProperty(name)) {\n _invariant(\n specPolicy === 'OVERRIDE_BASE',\n 'ReactClassInterface: You are attempting to override ' +\n '`%s` from your class specification. Ensure that your method names ' +\n 'do not overlap with React methods.',\n name\n );\n }\n\n // Disallow defining methods more than once unless explicitly allowed.\n if (isAlreadyDefined) {\n _invariant(\n specPolicy === 'DEFINE_MANY' || specPolicy === 'DEFINE_MANY_MERGED',\n 'ReactClassInterface: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be due ' +\n 'to a mixin.',\n name\n );\n }\n }\n\n /**\n * Mixin helper which handles policy validation and reserved\n * specification keys when building React classes.\n */\n function mixSpecIntoComponent(Constructor, spec) {\n if (!spec) {\n if (true) {\n var typeofSpec = typeof spec;\n var isMixinValid = typeofSpec === 'object' && spec !== null;\n\n if (true) {\n warning(\n isMixinValid,\n \"%s: You're attempting to include a mixin that is either null \" +\n 'or not an object. Check the mixins included by the component, ' +\n 'as well as any mixins they include themselves. ' +\n 'Expected object but got %s.',\n Constructor.displayName || 'ReactClass',\n spec === null ? null : typeofSpec\n );\n }\n }\n\n return;\n }\n\n _invariant(\n typeof spec !== 'function',\n \"ReactClass: You're attempting to \" +\n 'use a component class or function as a mixin. Instead, just use a ' +\n 'regular object.'\n );\n _invariant(\n !isValidElement(spec),\n \"ReactClass: You're attempting to \" +\n 'use a component as a mixin. Instead, just use a regular object.'\n );\n\n var proto = Constructor.prototype;\n var autoBindPairs = proto.__reactAutoBindPairs;\n\n // By handling mixins before any other properties, we ensure the same\n // chaining order is applied to methods with DEFINE_MANY policy, whether\n // mixins are listed before or after these methods in the spec.\n if (spec.hasOwnProperty(MIXINS_KEY)) {\n RESERVED_SPEC_KEYS.mixins(Constructor, spec.mixins);\n }\n\n for (var name in spec) {\n if (!spec.hasOwnProperty(name)) {\n continue;\n }\n\n if (name === MIXINS_KEY) {\n // We have already handled mixins in a special case above.\n continue;\n }\n\n var property = spec[name];\n var isAlreadyDefined = proto.hasOwnProperty(name);\n validateMethodOverride(isAlreadyDefined, name);\n\n if (RESERVED_SPEC_KEYS.hasOwnProperty(name)) {\n RESERVED_SPEC_KEYS[name](Constructor, property);\n } else {\n // Setup methods on prototype:\n // The following member methods should not be automatically bound:\n // 1. Expected ReactClass methods (in the \"interface\").\n // 2. Overridden methods (that were mixed in).\n var isReactClassMethod = ReactClassInterface.hasOwnProperty(name);\n var isFunction = typeof property === 'function';\n var shouldAutoBind =\n isFunction &&\n !isReactClassMethod &&\n !isAlreadyDefined &&\n spec.autobind !== false;\n\n if (shouldAutoBind) {\n autoBindPairs.push(name, property);\n proto[name] = property;\n } else {\n if (isAlreadyDefined) {\n var specPolicy = ReactClassInterface[name];\n\n // These cases should already be caught by validateMethodOverride.\n _invariant(\n isReactClassMethod &&\n (specPolicy === 'DEFINE_MANY_MERGED' ||\n specPolicy === 'DEFINE_MANY'),\n 'ReactClass: Unexpected spec policy %s for key %s ' +\n 'when mixing in component specs.',\n specPolicy,\n name\n );\n\n // For methods which are defined more than once, call the existing\n // methods before calling the new property, merging if appropriate.\n if (specPolicy === 'DEFINE_MANY_MERGED') {\n proto[name] = createMergedResultFunction(proto[name], property);\n } else if (specPolicy === 'DEFINE_MANY') {\n proto[name] = createChainedFunction(proto[name], property);\n }\n } else {\n proto[name] = property;\n if (true) {\n // Add verbose displayName to the function, which helps when looking\n // at profiling tools.\n if (typeof property === 'function' && spec.displayName) {\n proto[name].displayName = spec.displayName + '_' + name;\n }\n }\n }\n }\n }\n }\n }\n\n function mixStaticSpecIntoComponent(Constructor, statics) {\n if (!statics) {\n return;\n }\n for (var name in statics) {\n var property = statics[name];\n if (!statics.hasOwnProperty(name)) {\n continue;\n }\n\n var isReserved = name in RESERVED_SPEC_KEYS;\n _invariant(\n !isReserved,\n 'ReactClass: You are attempting to define a reserved ' +\n 'property, `%s`, that shouldn\\'t be on the \"statics\" key. Define it ' +\n 'as an instance property instead; it will still be accessible on the ' +\n 'constructor.',\n name\n );\n\n var isInherited = name in Constructor;\n _invariant(\n !isInherited,\n 'ReactClass: You are attempting to define ' +\n '`%s` on your component more than once. This conflict may be ' +\n 'due to a mixin.',\n name\n );\n Constructor[name] = property;\n }\n }\n\n /**\n * Merge two objects, but throw if both contain the same key.\n *\n * @param {object} one The first object, which is mutated.\n * @param {object} two The second object\n * @return {object} one after it has been mutated to contain everything in two.\n */\n function mergeIntoWithNoDuplicateKeys(one, two) {\n _invariant(\n one && two && typeof one === 'object' && typeof two === 'object',\n 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.'\n );\n\n for (var key in two) {\n if (two.hasOwnProperty(key)) {\n _invariant(\n one[key] === undefined,\n 'mergeIntoWithNoDuplicateKeys(): ' +\n 'Tried to merge two objects with the same key: `%s`. This conflict ' +\n 'may be due to a mixin; in particular, this may be caused by two ' +\n 'getInitialState() or getDefaultProps() methods returning objects ' +\n 'with clashing keys.',\n key\n );\n one[key] = two[key];\n }\n }\n return one;\n }\n\n /**\n * Creates a function that invokes two functions and merges their return values.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createMergedResultFunction(one, two) {\n return function mergedResult() {\n var a = one.apply(this, arguments);\n var b = two.apply(this, arguments);\n if (a == null) {\n return b;\n } else if (b == null) {\n return a;\n }\n var c = {};\n mergeIntoWithNoDuplicateKeys(c, a);\n mergeIntoWithNoDuplicateKeys(c, b);\n return c;\n };\n }\n\n /**\n * Creates a function that invokes two functions and ignores their return vales.\n *\n * @param {function} one Function to invoke first.\n * @param {function} two Function to invoke second.\n * @return {function} Function that invokes the two argument functions.\n * @private\n */\n function createChainedFunction(one, two) {\n return function chainedFunction() {\n one.apply(this, arguments);\n two.apply(this, arguments);\n };\n }\n\n /**\n * Binds a method to the component.\n *\n * @param {object} component Component whose method is going to be bound.\n * @param {function} method Method to be bound.\n * @return {function} The bound method.\n */\n function bindAutoBindMethod(component, method) {\n var boundMethod = method.bind(component);\n if (true) {\n boundMethod.__reactBoundContext = component;\n boundMethod.__reactBoundMethod = method;\n boundMethod.__reactBoundArguments = null;\n var componentName = component.constructor.displayName;\n var _bind = boundMethod.bind;\n boundMethod.bind = function(newThis) {\n for (\n var _len = arguments.length,\n args = Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n\n // User is trying to bind() an autobound method; we effectively will\n // ignore the value of \"this\" that the user is trying to use, so\n // let's warn.\n if (newThis !== component && newThis !== null) {\n if (true) {\n warning(\n false,\n 'bind(): React component methods may only be bound to the ' +\n 'component instance. See %s',\n componentName\n );\n }\n } else if (!args.length) {\n if (true) {\n warning(\n false,\n 'bind(): You are binding a component method to the component. ' +\n 'React does this for you automatically in a high-performance ' +\n 'way, so you can safely remove this call. See %s',\n componentName\n );\n }\n return boundMethod;\n }\n var reboundMethod = _bind.apply(boundMethod, arguments);\n reboundMethod.__reactBoundContext = component;\n reboundMethod.__reactBoundMethod = method;\n reboundMethod.__reactBoundArguments = args;\n return reboundMethod;\n };\n }\n return boundMethod;\n }\n\n /**\n * Binds all auto-bound methods in a component.\n *\n * @param {object} component Component whose method is going to be bound.\n */\n function bindAutoBindMethods(component) {\n var pairs = component.__reactAutoBindPairs;\n for (var i = 0; i < pairs.length; i += 2) {\n var autoBindKey = pairs[i];\n var method = pairs[i + 1];\n component[autoBindKey] = bindAutoBindMethod(component, method);\n }\n }\n\n var IsMountedPreMixin = {\n componentDidMount: function() {\n this.__isMounted = true;\n }\n };\n\n var IsMountedPostMixin = {\n componentWillUnmount: function() {\n this.__isMounted = false;\n }\n };\n\n /**\n * Add more to the ReactClass base class. These are all legacy features and\n * therefore not already part of the modern ReactComponent.\n */\n var ReactClassMixin = {\n /**\n * TODO: This will be deprecated because state should always keep a consistent\n * type signature and the only use case for this, is to avoid that.\n */\n replaceState: function(newState, callback) {\n this.updater.enqueueReplaceState(this, newState, callback);\n },\n\n /**\n * Checks whether or not this composite component is mounted.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function() {\n if (true) {\n warning(\n this.__didWarnIsMounted,\n '%s: isMounted is deprecated. Instead, make sure to clean up ' +\n 'subscriptions and pending requests in componentWillUnmount to ' +\n 'prevent memory leaks.',\n (this.constructor && this.constructor.displayName) ||\n this.name ||\n 'Component'\n );\n this.__didWarnIsMounted = true;\n }\n return !!this.__isMounted;\n }\n };\n\n var ReactClassComponent = function() {};\n _assign(\n ReactClassComponent.prototype,\n ReactComponent.prototype,\n ReactClassMixin\n );\n\n /**\n * Creates a composite component class given a class specification.\n * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass\n *\n * @param {object} spec Class specification (which must define `render`).\n * @return {function} Component constructor function.\n * @public\n */\n function createClass(spec) {\n // To keep our warnings more understandable, we'll use a little hack here to\n // ensure that Constructor.name !== 'Constructor'. This makes sure we don't\n // unnecessarily identify a class without displayName as 'Constructor'.\n var Constructor = identity(function(props, context, updater) {\n // This constructor gets overridden by mocks. The argument is used\n // by mocks to assert on what gets mounted.\n\n if (true) {\n warning(\n this instanceof Constructor,\n 'Something is calling a React component directly. Use a factory or ' +\n 'JSX instead. See: https://fb.me/react-legacyfactory'\n );\n }\n\n // Wire up auto-binding\n if (this.__reactAutoBindPairs.length) {\n bindAutoBindMethods(this);\n }\n\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n\n this.state = null;\n\n // ReactClasses doesn't have constructors. Instead, they use the\n // getInitialState and componentWillMount methods for initialization.\n\n var initialState = this.getInitialState ? this.getInitialState() : null;\n if (true) {\n // We allow auto-mocks to proceed as if they're returning null.\n if (\n initialState === undefined &&\n this.getInitialState._isMockFunction\n ) {\n // This is probably bad practice. Consider warning here and\n // deprecating this convenience.\n initialState = null;\n }\n }\n _invariant(\n typeof initialState === 'object' && !Array.isArray(initialState),\n '%s.getInitialState(): must return an object or null',\n Constructor.displayName || 'ReactCompositeComponent'\n );\n\n this.state = initialState;\n });\n Constructor.prototype = new ReactClassComponent();\n Constructor.prototype.constructor = Constructor;\n Constructor.prototype.__reactAutoBindPairs = [];\n\n injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));\n\n mixSpecIntoComponent(Constructor, IsMountedPreMixin);\n mixSpecIntoComponent(Constructor, spec);\n mixSpecIntoComponent(Constructor, IsMountedPostMixin);\n\n // Initialize the defaultProps property after all mixins have been merged.\n if (Constructor.getDefaultProps) {\n Constructor.defaultProps = Constructor.getDefaultProps();\n }\n\n if (true) {\n // This is a tag to indicate that the use of these method names is ok,\n // since it's used with createClass. If it's not, then it's likely a\n // mistake so we'll warn you to use the static property, property\n // initializer or constructor respectively.\n if (Constructor.getDefaultProps) {\n Constructor.getDefaultProps.isReactClassApproved = {};\n }\n if (Constructor.prototype.getInitialState) {\n Constructor.prototype.getInitialState.isReactClassApproved = {};\n }\n }\n\n _invariant(\n Constructor.prototype.render,\n 'createClass(...): Class specification must implement a `render` method.'\n );\n\n if (true) {\n warning(\n !Constructor.prototype.componentShouldUpdate,\n '%s has a method called ' +\n 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' +\n 'The name is phrased as a question because the function is ' +\n 'expected to return a value.',\n spec.displayName || 'A component'\n );\n warning(\n !Constructor.prototype.componentWillRecieveProps,\n '%s has a method called ' +\n 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?',\n spec.displayName || 'A component'\n );\n }\n\n // Reduce time spent doing lookups by setting these on the prototype.\n for (var methodName in ReactClassInterface) {\n if (!Constructor.prototype[methodName]) {\n Constructor.prototype[methodName] = null;\n }\n }\n\n return Constructor;\n }\n\n return createClass;\n}\n\nmodule.exports = factory;\n\n\n//# sourceURL=webpack:///./node_modules/create-react-class/factory.js?"); + +/***/ }), + +/***/ "./node_modules/create-react-class/index.js": +/*!**************************************************!*\ + !*** ./node_modules/create-react-class/index.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/react.js\");\nvar factory = __webpack_require__(/*! ./factory */ \"./node_modules/create-react-class/factory.js\");\n\nif (typeof React === 'undefined') {\n throw Error(\n 'create-react-class could not find the React object. If you are using script tags, ' +\n 'make sure that React is being loaded before create-react-class.'\n );\n}\n\n// Hack to grab NoopUpdateQueue from isomorphic React\nvar ReactNoopUpdateQueue = new React.Component().updater;\n\nmodule.exports = factory(\n React.Component,\n React.isValidElement,\n ReactNoopUpdateQueue\n);\n\n\n//# sourceURL=webpack:///./node_modules/create-react-class/index.js?"); + +/***/ }), + +/***/ "./node_modules/create-react-class/node_modules/object-assign/index.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/create-react-class/node_modules/object-assign/index.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n\n\n//# sourceURL=webpack:///./node_modules/create-react-class/node_modules/object-assign/index.js?"); + +/***/ }), + +/***/ "./node_modules/exenv/index.js": +/*!*************************************!*\ + !*** ./node_modules/exenv/index.js ***! + \*************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("var __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2015 Jed Watson.\n Based on code that is Copyright 2013-2015, Facebook, Inc.\n All rights reserved.\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar canUseDOM = !!(\n\t\ttypeof window !== 'undefined' &&\n\t\twindow.document &&\n\t\twindow.document.createElement\n\t);\n\n\tvar ExecutionEnvironment = {\n\n\t\tcanUseDOM: canUseDOM,\n\n\t\tcanUseWorkers: typeof Worker !== 'undefined',\n\n\t\tcanUseEventListeners:\n\t\t\tcanUseDOM && !!(window.addEventListener || window.attachEvent),\n\n\t\tcanUseViewport: canUseDOM && !!window.screen\n\n\t};\n\n\tif (true) {\n\t\t!(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n\t\t\treturn ExecutionEnvironment;\n\t\t}).call(exports, __webpack_require__, exports, module),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n\t} else {}\n\n}());\n\n\n//# sourceURL=webpack:///./node_modules/exenv/index.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/EventListener.js": +/*!************************************************!*\ + !*** ./node_modules/fbjs/lib/EventListener.js ***! + \************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar emptyFunction = __webpack_require__(/*! ./emptyFunction */ \"./node_modules/fbjs/lib/emptyFunction.js\");\n\n/**\n * Upstream version of event listener. Does not take into account specific\n * nature of platform.\n */\nvar EventListener = {\n /**\n * Listen to DOM events during the bubble phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n listen: function listen(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, false);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, false);\n }\n };\n } else if (target.attachEvent) {\n target.attachEvent('on' + eventType, callback);\n return {\n remove: function remove() {\n target.detachEvent('on' + eventType, callback);\n }\n };\n }\n },\n\n /**\n * Listen to DOM events during the capture phase.\n *\n * @param {DOMEventTarget} target DOM element to register listener on.\n * @param {string} eventType Event type, e.g. 'click' or 'mouseover'.\n * @param {function} callback Callback function.\n * @return {object} Object with a `remove` method.\n */\n capture: function capture(target, eventType, callback) {\n if (target.addEventListener) {\n target.addEventListener(eventType, callback, true);\n return {\n remove: function remove() {\n target.removeEventListener(eventType, callback, true);\n }\n };\n } else {\n if (true) {\n console.error('Attempted to listen to events during the capture phase on a ' + 'browser that does not support the capture phase. Your application ' + 'will not receive some events.');\n }\n return {\n remove: emptyFunction\n };\n }\n },\n\n registerDefault: function registerDefault() {}\n};\n\nmodule.exports = EventListener;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/EventListener.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/ExecutionEnvironment.js": +/*!*******************************************************!*\ + !*** ./node_modules/fbjs/lib/ExecutionEnvironment.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\n/**\n * Simple, lightweight module assisting with the detection and context of\n * Worker. Helps avoid circular dependencies and allows code to reason about\n * whether or not they are in a Worker, even if they never include the main\n * `ReactWorker` dependency.\n */\nvar ExecutionEnvironment = {\n\n canUseDOM: canUseDOM,\n\n canUseWorkers: typeof Worker !== 'undefined',\n\n canUseEventListeners: canUseDOM && !!(window.addEventListener || window.attachEvent),\n\n canUseViewport: canUseDOM && !!window.screen,\n\n isInWorker: !canUseDOM // For now, this is true - might change in the future.\n\n};\n\nmodule.exports = ExecutionEnvironment;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/ExecutionEnvironment.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/camelize.js": +/*!*******************************************!*\ + !*** ./node_modules/fbjs/lib/camelize.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar _hyphenPattern = /-(.)/g;\n\n/**\n * Camelcases a hyphenated string, for example:\n *\n * > camelize('background-color')\n * < \"backgroundColor\"\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelize(string) {\n return string.replace(_hyphenPattern, function (_, character) {\n return character.toUpperCase();\n });\n}\n\nmodule.exports = camelize;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/camelize.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/camelizeStyleName.js": +/*!****************************************************!*\ + !*** ./node_modules/fbjs/lib/camelizeStyleName.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n\n\nvar camelize = __webpack_require__(/*! ./camelize */ \"./node_modules/fbjs/lib/camelize.js\");\n\nvar msPattern = /^-ms-/;\n\n/**\n * Camelcases a hyphenated CSS property name, for example:\n *\n * > camelizeStyleName('background-color')\n * < \"backgroundColor\"\n * > camelizeStyleName('-moz-transition')\n * < \"MozTransition\"\n * > camelizeStyleName('-ms-transition')\n * < \"msTransition\"\n *\n * As Andi Smith suggests\n * (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix\n * is converted to lowercase `ms`.\n *\n * @param {string} string\n * @return {string}\n */\nfunction camelizeStyleName(string) {\n return camelize(string.replace(msPattern, 'ms-'));\n}\n\nmodule.exports = camelizeStyleName;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/camelizeStyleName.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/containsNode.js": +/*!***********************************************!*\ + !*** ./node_modules/fbjs/lib/containsNode.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n\nvar isTextNode = __webpack_require__(/*! ./isTextNode */ \"./node_modules/fbjs/lib/isTextNode.js\");\n\n/*eslint-disable no-bitwise */\n\n/**\n * Checks if a given DOM node contains or is another DOM node.\n */\nfunction containsNode(outerNode, innerNode) {\n if (!outerNode || !innerNode) {\n return false;\n } else if (outerNode === innerNode) {\n return true;\n } else if (isTextNode(outerNode)) {\n return false;\n } else if (isTextNode(innerNode)) {\n return containsNode(outerNode, innerNode.parentNode);\n } else if ('contains' in outerNode) {\n return outerNode.contains(innerNode);\n } else if (outerNode.compareDocumentPosition) {\n return !!(outerNode.compareDocumentPosition(innerNode) & 16);\n } else {\n return false;\n }\n}\n\nmodule.exports = containsNode;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/containsNode.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/createArrayFromMixed.js": +/*!*******************************************************!*\ + !*** ./node_modules/fbjs/lib/createArrayFromMixed.js ***! + \*******************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\nvar invariant = __webpack_require__(/*! ./invariant */ \"./node_modules/fbjs/lib/invariant.js\");\n\n/**\n * Convert array-like objects to arrays.\n *\n * This API assumes the caller knows the contents of the data type. For less\n * well defined inputs use createArrayFromMixed.\n *\n * @param {object|function|filelist} obj\n * @return {array}\n */\nfunction toArray(obj) {\n var length = obj.length;\n\n // Some browsers builtin objects can report typeof 'function' (e.g. NodeList\n // in old versions of Safari).\n !(!Array.isArray(obj) && (typeof obj === 'object' || typeof obj === 'function')) ? true ? invariant(false, 'toArray: Array-like object expected') : undefined : void 0;\n\n !(typeof length === 'number') ? true ? invariant(false, 'toArray: Object needs a length property') : undefined : void 0;\n\n !(length === 0 || length - 1 in obj) ? true ? invariant(false, 'toArray: Object should have keys for indices') : undefined : void 0;\n\n !(typeof obj.callee !== 'function') ? true ? invariant(false, 'toArray: Object can\\'t be `arguments`. Use rest params ' + '(function(...args) {}) or Array.from() instead.') : undefined : void 0;\n\n // Old IE doesn't give collections access to hasOwnProperty. Assume inputs\n // without method will throw during the slice call and skip straight to the\n // fallback.\n if (obj.hasOwnProperty) {\n try {\n return Array.prototype.slice.call(obj);\n } catch (e) {\n // IE < 9 does not support Array#slice on collections objects\n }\n }\n\n // Fall back to copying key by key. This assumes all keys have a value,\n // so will not preserve sparsely populated inputs.\n var ret = Array(length);\n for (var ii = 0; ii < length; ii++) {\n ret[ii] = obj[ii];\n }\n return ret;\n}\n\n/**\n * Perform a heuristic test to determine if an object is \"array-like\".\n *\n * A monk asked Joshu, a Zen master, \"Has a dog Buddha nature?\"\n * Joshu replied: \"Mu.\"\n *\n * This function determines if its argument has \"array nature\": it returns\n * true if the argument is an actual array, an `arguments' object, or an\n * HTMLCollection (e.g. node.childNodes or node.getElementsByTagName()).\n *\n * It will return false for other array-like objects like Filelist.\n *\n * @param {*} obj\n * @return {boolean}\n */\nfunction hasArrayNature(obj) {\n return (\n // not null/false\n !!obj && (\n // arrays are objects, NodeLists are functions in Safari\n typeof obj == 'object' || typeof obj == 'function') &&\n // quacks like an array\n 'length' in obj &&\n // not window\n !('setInterval' in obj) &&\n // no DOM node should be considered an array-like\n // a 'select' element has 'length' and 'item' properties on IE8\n typeof obj.nodeType != 'number' && (\n // a real array\n Array.isArray(obj) ||\n // arguments\n 'callee' in obj ||\n // HTMLCollection/NodeList\n 'item' in obj)\n );\n}\n\n/**\n * Ensure that the argument is an array by wrapping it in an array if it is not.\n * Creates a copy of the argument if it is already an array.\n *\n * This is mostly useful idiomatically:\n *\n * var createArrayFromMixed = require('createArrayFromMixed');\n *\n * function takesOneOrMoreThings(things) {\n * things = createArrayFromMixed(things);\n * ...\n * }\n *\n * This allows you to treat `things' as an array, but accept scalars in the API.\n *\n * If you need to convert an array-like object, like `arguments`, into an array\n * use toArray instead.\n *\n * @param {*} obj\n * @return {array}\n */\nfunction createArrayFromMixed(obj) {\n if (!hasArrayNature(obj)) {\n return [obj];\n } else if (Array.isArray(obj)) {\n return obj.slice();\n } else {\n return toArray(obj);\n }\n}\n\nmodule.exports = createArrayFromMixed;\n\n//# sourceURL=webpack:///./node_modules/fbjs/lib/createArrayFromMixed.js?"); + +/***/ }), + +/***/ "./node_modules/fbjs/lib/createNodesFromMarkup.js": +/*!********************************************************!*\ + !*** ./node_modules/fbjs/lib/createNodesFromMarkup.js ***! + \********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @typechecks\n */\n\n/*eslint-disable fb-www/unsafe-html*/\n\nvar ExecutionEnvironment = __webpack_require__(/*! ./ExecutionEnvironment */ \"./node_modules/fbjs/lib/ExecutionEnvironment.js\");\n\nvar createArrayFromMixed = __webpack_require__(/*! ./createArrayFromMixed */ \"./node_modules/fbjs/lib/createArrayFromMixed.js\");\nvar getMarkupWrap = __webpack_require__(/*! ./getMarkupWrap */ \"./node_modules/fbjs/lib/getMarkupWrap.js\");\nvar invariant = __webpack_require__(/*! ./invariant */ \"./node_modules/fbjs/lib/invariant.js\");\n\n/**\n * Dummy container used to render all markup.\n */\nvar dummyNode = ExecutionEnvironment.canUseDOM ? document.createElement('div') : null;\n\n/**\n * Pattern used by `getNodeName`.\n */\nvar nodeNamePattern = /^\\s*<(\\w+)/;\n\n/**\n * Extracts the `nodeName` of the first element in a string of markup.\n *\n * @param {string} markup String of markup.\n * @return {?string} Node name of the supplied markup.\n */\nfunction getNodeName(markup) {\n var nodeNameMatch = markup.match(nodeNamePattern);\n return nodeNameMatch && nodeNameMatch[1].toLowerCase();\n}\n\n/**\n * Creates an array containing the nodes rendered from the supplied markup. The\n * optionally supplied `handleScript` function will be invoked once for each\n *