From 5489c2bca649f04644ab26bc6fe7d5974f58ad99 Mon Sep 17 00:00:00 2001 From: Igor Malinovskyi Date: Fri, 9 Aug 2024 16:00:55 +0200 Subject: [PATCH] Remove ascii docs and maven profile --- pom.xml | 124 +- src/main/asciidoc/advanced-usage.asciidoc | 74 - src/main/asciidoc/faq.asciidoc | 5 - src/main/asciidoc/getting-started.asciidoc | 48 - src/main/asciidoc/ha-sharding.asciidoc | 30 - .../asciidoc/images/apple-touch-icon-144.png | Bin 18372 -> 0 bytes .../asciidoc/images/apple-touch-icon-180.png | Bin 19515 -> 0 bytes .../asciidoc/images/lettuce-green-text@2x.png | Bin 11672 -> 0 bytes .../asciidoc/images/touch-icon-192x192.png | Bin 19800 -> 0 bytes src/main/asciidoc/index-docinfo.html | 5 - src/main/asciidoc/index.asciidoc | 33 - .../asciidoc/integration-extension.asciidoc | 10 - src/main/asciidoc/kotlin-api.asciidoc | 79 - src/main/asciidoc/new-features.adoc | 94 - src/main/asciidoc/overview.asciidoc | 83 - .../redis-command-interfaces.asciidoc | 4 - .../asciidoc/scripting-and-functions.asciidoc | 4 - src/main/asciidoc/stylesheets/golo.css | 1990 ----------------- 18 files changed, 1 insertion(+), 2582 deletions(-) delete mode 100644 src/main/asciidoc/advanced-usage.asciidoc delete mode 100644 src/main/asciidoc/faq.asciidoc delete mode 100644 src/main/asciidoc/getting-started.asciidoc delete mode 100644 src/main/asciidoc/ha-sharding.asciidoc delete mode 100644 src/main/asciidoc/images/apple-touch-icon-144.png delete mode 100644 src/main/asciidoc/images/apple-touch-icon-180.png delete mode 100644 src/main/asciidoc/images/lettuce-green-text@2x.png delete mode 100644 src/main/asciidoc/images/touch-icon-192x192.png delete mode 100644 src/main/asciidoc/index-docinfo.html delete mode 100644 src/main/asciidoc/index.asciidoc delete mode 100644 src/main/asciidoc/integration-extension.asciidoc delete mode 100644 src/main/asciidoc/kotlin-api.asciidoc delete mode 100644 src/main/asciidoc/new-features.adoc delete mode 100644 src/main/asciidoc/overview.asciidoc delete mode 100644 src/main/asciidoc/redis-command-interfaces.asciidoc delete mode 100644 src/main/asciidoc/scripting-and-functions.asciidoc delete mode 100644 src/main/asciidoc/stylesheets/golo.css diff --git a/pom.xml b/pom.xml index c1c5f9215f..1bd0368b50 100644 --- a/pom.xml +++ b/pom.xml @@ -893,7 +893,7 @@ org.apache.maven.plugins maven-release-plugin - sonatype-oss-release,documentation + sonatype-oss-release deploy true @{project.version} @@ -1238,128 +1238,6 @@ - - - documentation - - - - - - - org.apache.maven.plugins - maven-antrun-plugin - - - - rename-reference-docs - process-resources - - - - - - - run - - - - - - - - org.asciidoctor - asciidoctor-maven-plugin - 2.2.4 - - - org.asciidoctor - asciidoctorj-pdf - 2.3.9 - - - - - - html - generate-resources - - process-asciidoc - - - html5 - - ${project.build.directory}/site/reference/html - - book - - true - true - stylesheets - golo.css - - - - - - pdf - generate-resources - - process-asciidoc - - - pdf - - - - - - - src/main/asciidoc - index.asciidoc - book - - ${project.version} - true - 3 - true - - https://raw.githubusercontent.com/wiki/lettuce-io/lettuce-core/ - - - - - font - coderay - - - - - - org.apache.maven.plugins - maven-assembly-plugin - - - docs - package - - single - - - - src/assembly/docs.xml - - gnu - true - - - - - - - - - diff --git a/src/main/asciidoc/advanced-usage.asciidoc b/src/main/asciidoc/advanced-usage.asciidoc deleted file mode 100644 index 50b657e54b..0000000000 --- a/src/main/asciidoc/advanced-usage.asciidoc +++ /dev/null @@ -1,74 +0,0 @@ -:auto-reconnect-link: <> -:client-options-link: <> -:client-resources-link: <> - -:custom-commands-command-output-link: <> -:custom-commands-command-exec-model-link: <> - -[[advanced-usage]] -== Advanced usage - -[[client-resources]] -=== Configuring Client resources -include::{ext-doc}/Configuring-Client-resources.asciidoc[leveloffset=+2] - -[[client-options]] -=== Client Options -include::{ext-doc}/Client-Options.asciidoc[leveloffset=+2] - -[[ssl]] -=== SSL Connections -include::{ext-doc}/SSL-Connections.asciidoc[leveloffset=+2] - -[[native-transports]] -=== Native Transports -include::{ext-doc}/Native-Transports.asciidoc[leveloffset=+2] - -[[unix-domain-sockets]] -=== Unix Domain Sockets -include::{ext-doc}/Unix-Domain-Sockets.asciidoc[leveloffset=+2] - -[[streaming-api]] -=== Streaming API -include::{ext-doc}/Streaming-API.asciidoc[leveloffset=+1] - -[[events]] -=== Events -include::{ext-doc}/Connection-Events.asciidoc[leveloffset=+2] - -[[observability]] -=== Observability - -The following section explains Lettuces metrics and tracing capabilities. - -[[observability.metrics]] -==== Metrics - -include::{ext-doc}/Command-Latency-Metrics.asciidoc[leveloffset=+2] - -[[observability.tracing]] -==== Tracing - -include::{ext-doc}/Tracing.asciidoc[leveloffset=+2] - -=== Pipelining and command flushing - -include::{ext-doc}/Pipelining-and-command-flushing.asciidoc[leveloffset=+2] - -=== Connection Pooling - -include::{ext-doc}/Connection-Pooling.asciidoc[leveloffset=+2] - -=== Custom commands - -include::{ext-doc}/Custom-commands%2C-outputs-and-command-mechanics.asciidoc[leveloffset=+2] - -=== Graal Native Image - -include::{ext-doc}/Using-Lettuce-with-Native-Images.asciidoc[leveloffset=+2] - -[[command-execution-reliability]] -=== Command execution reliability - -include::{ext-doc}/Command-execution-reliability.asciidoc[leveloffset=+2] - diff --git a/src/main/asciidoc/faq.asciidoc b/src/main/asciidoc/faq.asciidoc deleted file mode 100644 index 1793a75438..0000000000 --- a/src/main/asciidoc/faq.asciidoc +++ /dev/null @@ -1,5 +0,0 @@ -:client-options-link: <> - -[[faq]] -== Frequently Asked Questions -include::{ext-doc}/Frequently-Asked-Questions.asciidoc[leveloffset=+1] diff --git a/src/main/asciidoc/getting-started.asciidoc b/src/main/asciidoc/getting-started.asciidoc deleted file mode 100644 index 54f166c867..0000000000 --- a/src/main/asciidoc/getting-started.asciidoc +++ /dev/null @@ -1,48 +0,0 @@ -:ssl-link: <> -:uds-link: <> -:native-transport-link: <> -:basic-synchronous-link: <> -:asynchronous-api-link: <> -:reactive-api-link: <> -:asynchronous-link: <> -:reactive-link: <> - -[[getting-started]] -== Getting Started -include::{ext-doc}/Getting-started.asciidoc[leveloffset=+1] - -[[connecting-redis]] -== Connecting Redis -include::{ext-doc}/Redis-URI-and-connection-details.asciidoc[] - -[[basic-usage]] -=== Basic Usage -include::{ext-doc}/Basic-usage.asciidoc[leveloffset=+1] - -[[asynchronous-api]] -=== Asynchronous API - -include::{ext-doc}/Asynchronous-API.asciidoc[leveloffset=+2] - -[[reactive-api]] -=== Reactive API - -include::{ext-doc}/Reactive-API.asciidoc[leveloffset=+2] - -[[kotlin]] -=== Kotlin API - -include::kotlin-api.asciidoc[leveloffset=+2] - -=== Publish/Subscribe - -include::{ext-doc}/Pub-Sub.asciidoc[leveloffset=+1] - -=== Transactions/Multi - -include::{ext-doc}/Transactions.asciidoc[leveloffset=+1] - -[[scripting-and-functions]] -=== Scripting and Functions - -include::scripting-and-functions.asciidoc[] diff --git a/src/main/asciidoc/ha-sharding.asciidoc b/src/main/asciidoc/ha-sharding.asciidoc deleted file mode 100644 index aacd855bf3..0000000000 --- a/src/main/asciidoc/ha-sharding.asciidoc +++ /dev/null @@ -1,30 +0,0 @@ -:redis-sentinel-link: <> -:upstream-replica-api-link: <> -:cco-up-to-5-times: <> -:cco-link: <> -:cco-periodic-link: <> -:cco-adaptive-link: <> - -[[ha-sharding]] -== High-Availability and Sharding - -[[master-slave]] -[[master-replica]] -[[upstream-replica]] -=== Master/Replica - -include::{ext-doc}/Master-Replica.asciidoc[leveloffset=+2] - -[[redis-sentinel]] -=== Redis Sentinel - -include::{ext-doc}/Redis-Sentinel.asciidoc[leveloffset=+2] - -[[redis-cluster]] -=== Redis Cluster -include::{ext-doc}/Redis-Cluster.asciidoc[leveloffset=+2] - -[[readfrom-settings]] -=== ReadFrom Settings -include::{ext-doc}/ReadFrom-Settings.asciidoc[leveloffset=+2] - diff --git a/src/main/asciidoc/images/apple-touch-icon-144.png b/src/main/asciidoc/images/apple-touch-icon-144.png deleted file mode 100644 index 8adb9fff097aa835424a0fb1c0fea7797fef91a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18372 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 diff --git a/src/main/asciidoc/images/apple-touch-icon-180.png b/src/main/asciidoc/images/apple-touch-icon-180.png deleted file mode 100644 index d0928b5316ed19c37568eb4af5e8053277f8c269..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19515 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 Q^WS@!n^+lF!MtMr2cS_A=Kufz diff --git a/src/main/asciidoc/images/lettuce-green-text@2x.png b/src/main/asciidoc/images/lettuce-green-text@2x.png deleted file mode 100644 index adff15525a19361a304f718107bcb8bf12b9a458..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11672 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 OQB&6Xt6b4KPkEJadMLQ%F< zF@B97vob&oFbIf%e$xaS7f>2o~ z004rvIIJ`C$XI^!u3-Ljeip>TJn&I)?%@CcmRf#;YRLzx0Ki}^*~N|OX1~#h5E`t7 zCx-fww4#G4Of>*tOrt4y!VVG@?neqBhZrL!uHHbv$wXtsRy})^J;jm~NXEs6kv7LV zxDaA@5DbY3QxhmA+K8DTm_)_Hql1G&!i}Ph5nuBfG2`WCBm(|bLfv7EFkdbRce8hb zTZV>_;Cfp6ngq0t0eqdI7Fy5HKwDP>u8l(LBTN(si8eGeM545j+S-~-g=Tn62o)c#84|Ai zEy-Vbu%vK87@0yPhlaqH^WyzNBdEp*#B!k@ukY6tO!-kLB>X!&CPid4o`OVcp^(2b z5eYv$l!&mPuct;NAW1=_U{VM*oasaV)<+2prG|zFhW<;*AKm|2m^mi)_CIR>_I!hb ze_J}7Y8A;u@Ez%Io#8Gq6cW;z6doE8Mj%;5GA~8>cUMm(`~MuAzhzqP`PXwNMU(%< zw%qg0_H`!m`iAAkjb}M=JXdrxTWRttXcATNC5L?|k?bGy`y9G@tT|Ye zzvf`BAR?ZM|F5#JYFY9S2}b^*VZnH+2{{-aKtfVN0x-y*jV#I^^UBCFG$=HTd0HeB z9Srh!%`C33bIr&$B%F#5A&_jbCd>vcGMQ+ktEa7p(!m>Oq6j+vnz{sSf~KLKo{pxD zt~P;)ChGbd5d6PFw6|xq|06Xvln}AJUcRR${x4Ir*#D8*F^tUI>+nG=n&q?q-y=igiZ>Ifo#-IXZ#uyE4ynlncHwdj6qV?TDOWzW~O zYlJ5(?`I~2%r#puVO0s`~dN;i3N2 zD0~>nJb*bT{=3!wE$`orzZSqCmp=i5$bTP-Z>@hHp}*$rKSva^ys;TEX9M%h@Lxv( zjY0mS?Puk0dbj0K4T|`t*U{70(MO_D%-44-Yxl2K_y25V?f%vJ)9D&QrkZGful7qb zi)(rJ{kAb|X5J`}O!S#+Sr3E!wfR?v6FHg`kFAu|>ox;NW7V!8YdLVvC4Xz`?~zgKf;g#TF5(fP;&b2HTi} zi!CBn0S6Z=4Yn}{7h6QE0uC-#8f;?@F1CnR1sq(gG}y)*Tx=1s3OKk}X|RnsxY#0M z6>xB|(qJ2NaIrC<8j01~CPSaX-?zEQ6i8GW}N7)L&j`huXX1Q~!^ zCtNhw?Q7w?7zSw-mC2%A5%sJ&7?r}Sfk0s=6L{y1OCxf}PTVt9$;p^?+2lQVWifS@ zS~w1~zcDxURv5Cc;?*^Qcr#wO2rmc%R-&1~AtJnq061R63@!rZg;)Upxs#zb|EM*8 zThJpB+9GJ~30;PfydYP3_FhLbT88Ug^_;_vPK%py-j2nk<&fyNbLtr><<8T-ZPO>! z1W#7UUYcw6?joD^{X-LTLJul4{msxanItQQD!(#L0aCaT)~Mdw5}L)652Y zoRq!unmbSPDhOQg3;6;=uLGuIQ1iD6tj?Ae1)zxcN&@QAcp3MlpS;6>0tb|XFLs@4 zt3TUQG~(QMHUQrIK5s`ycBSw2SU(teEH=({U-b&<~r z&KjPM#TT)ca~}jSQrAK*?%cFJaMN0N$7LVK;!7d}4d#L%3^>}|vDm%i{Qh#C;8&h5?eJvpZi*ObPnQ#@8t7r{G+_R)KRJ#DW~^tX@r2zjN z_GyptA+VBJ#Gh0Aj2PoXv!n4mhLY(Xct?fUEVVmQ9(rn)iWfbt*UblL&#!K4E@|+P zOxkWgxWE0PpXj6y(Dq4J7798q>dQC4PkZ}GH*d#_N&sUR-LZe@U_9@+m&owNLQSPe z?#ffser3+hvrk`tEbY{3I!NBRcx{J_2)aAtxfAjj$Qtm8y}lG7>ZkdZ&Nvb!LE3PK4(%V~xJk^e?ec6jo+D59L$Q*kv z+`8(7I%-vml3VUh<3rgJ@}9Y7^Yy)J_q@F(uBCckChC35RT!#SMeNctDNlchnC2ofbZ=#$EPJ1M=$w}g_jaKBZ6y%2O{3e zx-#PBKQt&dzYKxE?-&;I$F<8aR_lG5+pQ|__!wb!lUSr`9|vgB7wxc z=2a_SlthBlKiH%uBTMV`(y~>aQnue(Pa2(=Sed4>-(hr7Kd|nEc$UE`x$T!F&lsYf zYne)pwK&lM^ak1e2$pO=nTbqoXB* zl^L1qy}1#YHzg}VE3E4OP-#~M&|_-Dv-o)94|5tWUS6OE#F~v$=|?0EKyRLSdH>VR zW5npNdeMVHFl>zT*@Z z14OQ{+tK8`hS%;MxBGadQMKk-7az>t^}NUcV0m?=-&29T$7CK<(D$!jzg^zTvqLgX z#jaV*`UQQrS}>{#9|=2!jmp~y?rvT@RO_{^71vOEneR;Bapxia$%ciDYWj;)DocmN zALM@^KPN-=hC7wb&Y$zvJNMvvsCpXib3@lydo&M1LVtIdOZe>cw)w`z5ev(%!MN## zrPm!zjV%;%O_z8&tnUy=bbiLK?2ii{6~_8%PM^NiA^ot+kqktNmQ~+X#;O$%aFq%xeo%d7g>5 z_wSHf+fVGYM)sR%?lges0`DWfQouaEvbBa8RQ;aju z2y_ZmBI$)0Jb{CyPj`~QRQDz6Cf<%th5XbIBBG#XT`kl4o6>p|J4CXRm*^0|UI(7gaQA7g*0&|z;UCya2aA>96xiP;$SA(MO2{tLPsvQJo9iN)N;kE2)_}Z& zu0Tc655vct_5<=wH>VG(Uc({(WN@o}o^dfzNCXxKQ%Dv8tNvufB?*d&)s*}92gsSd zmUE*h=6sCj$}HgCC#%wZ&Noo>8FGz~pmX5<&Wd($2WZlr@2fW?FwEBwlV0I%#9vu@F{fyE&K{(=);QkxNdk2Zq|O8^5biLb z9SJNJIX>0f>5EG$7P5{{TG(?upf-*q_m2Pet_ssH=>p|v@5S}yM7l3N|CkuP|Frzt z!(gxXZzH=4ViXOl8Llc$L&aJppunr^b`N=IMQTD(mWn$z0B3m3c#M?ECi>GZ;0RH# zyWDj}WeELzJ#o3I)n+#h4xX@;n8Yo$x$=p)6P-qzd{-xfBW-(~Z%To&J=VZ$vI2b5 zfEf25LfCPf9qqtLZ>gI89V7(fv?}DC^P-r{b&o4w_Ra+H9bTIW1c=duzLd0yp>KUU zhMbjGV?66lF1e$ zCRFa~=2(2lYN^MXCdz;AuJGxX&!22=<3+uiexWo#$(OH zjP7(JDe&c1(c`)Euvb+sahunHs4!ikEB7(AmR60t2sC(F;}Lw~+6}A4(OZqzJ(2(_ zLpsIAJtmu{k(v&vmP+HQy?XNC+BMba$Mh5JJh0O$!hvT5`bJ2>c~dZoyNfy~(CTIG zJnu6zn{^x;w)QVX#UQ&bZ|?JG#^T;c8G$5l;a&-i+9t zf6W_oBb$C)P&O{6{JHCxaC!l1QU#i-G0_oOUf$g+!nX&Ou(iK1FG;xK!{SlCld#yX zVo!zy_ZE3&M)w2km%#4DPNUJWJR$UOa-o2vlC;k?ooi}W-@8dT6^QwET#j=(FmvM| zuyH)+6m19n5toOeV?x8Q2xyi*;gIGtb=PS|_`UPWp3l5?g75F4){mZQ z=TDNm@rE(rxeJ$VnHZ%Cz-FVe3L-DZPth{f6u6DD_+_%`b*U3Uce-R4o9Q}NV<6qH z?*?9SH3uEu6=h7erC$}}rmt8tvi;T7%MzO2?;FO;_!zOynu4Tz6U>#!pa`4W@OIA( z8NH=fy-k#J4emOhZPK(Y%YXA*3+Xf6_q#W#V%PZ}Xp;&Z$(v4gdzBx%7>nWhEsb~k(FPhB)?MV9r*|OB|9LQuJqt?Xl~{}Z~RECl3I-T@BDE`1HQcVqzp1q?1_D5dn7 z1KCcq4*QB!TCc2J3g4XNbytK2i;?1sOv~^MsXrWWY2;R`X)9^Xt^Byq9gx-7eV=s0 zI_hGNH1f=wyerxh5+ARh%eA{kCJsy3wQleRKj>h(StrahFL|M+_k1@6sSYS&j$yCS z)8>*ZCyD}RJGlpMtORXHhXa!xN|rI6L9Rh=>m`_f%*#|AF=~M^Yzn$%b(iM*rDqol z)N0ddBV*~93+m#Vlz~fl6J^bry|kyDY7Q$5oz*_$-has$X^o2l%ZT~p_ovyOZ8##g zbhY>V(U*^I<%H!pQmQ>=t8dJVY>e#qLhzq2N@*1aCKl)a9K4-X6d!wAb~U1H-2s93 zNklyYvF@=+<{7w;Ttk0lY<dIuGu8Mzaka`cr4I|oi)+2?jCg>( z+fFqlr;dfzd1$-p;R=LT3@R$0o5u8t`6#FSE3;#^<+Lj>o;?`ZHo7M2{_DX?aF2YB zK;PuX3o4@Ehc*zci0gyFT>Gb^Bp1eSS|W6n4tpQXP7YeyQtyz^fj$! zaIq%#-jh`wH~1(}xITLzdt#LNb;N5P&o>hGm=u}J5h9LsKUH;U|NDgdVv_zpDeY5C=m>prK z`KHff@1oj94C!whaY~TD!n48aH+y2PW5(Tq!{?YK^5z|b;(0SgRDzdfS(UWS#VIdAu!_ViWPjZ?5lmEoiR^TT1Sp`bz+6GG&Y2%NLW4A zAG_af73Lt|%}dc!n$5e6yH;^$upb<7D2VKG@Tu-5Rmi0JwrRnBBh?L?Cg0%?A`WP+ qy1@Lh@1%d@F{S_OcY*8YmjDRjTvzgIRr>P(KC`uQz*boJ?)x8RXh1#y diff --git a/src/main/asciidoc/index-docinfo.html b/src/main/asciidoc/index-docinfo.html deleted file mode 100644 index d47a3c38a1..0000000000 --- a/src/main/asciidoc/index-docinfo.html +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/main/asciidoc/index.asciidoc b/src/main/asciidoc/index.asciidoc deleted file mode 100644 index 1bde6343e5..0000000000 --- a/src/main/asciidoc/index.asciidoc +++ /dev/null @@ -1,33 +0,0 @@ -= Lettuce Reference Guide -Mark Paluch ; -:ext-doc: https://raw.githubusercontent.com/wiki/lettuce-io/lettuce-core -{version} -:doctype: book -:icons: font -:toc: -:sectnums: -:sectanchors: -:docinfo: -ifdef::backend-pdf[] -:title-logo-image: images/lettuce-green-text@2x.png -endif::[] - -ifdef::backend-html5[] -image::images/lettuce-green-text@2x.png[width=50%,link=https://lettuce.io] -endif::[] - -include::overview.asciidoc[] - -include::new-features.adoc[leveloffset=+1] - -include::getting-started.asciidoc[] - -include::ha-sharding.asciidoc[] - -include::redis-command-interfaces.asciidoc[] - -include::advanced-usage.asciidoc[] - -include::integration-extension.asciidoc[] - -include::faq.asciidoc[] diff --git a/src/main/asciidoc/integration-extension.asciidoc b/src/main/asciidoc/integration-extension.asciidoc deleted file mode 100644 index 4839d122f8..0000000000 --- a/src/main/asciidoc/integration-extension.asciidoc +++ /dev/null @@ -1,10 +0,0 @@ -[[integration-extension]] -== Integration and Extension - -[[codecs]] -=== Codecs -include::{ext-doc}/Codecs.asciidoc[leveloffset=+1] - -[[cdi-support]] -=== CDI Support -include::{ext-doc}/CDI-Support.asciidoc[leveloffset=+1] diff --git a/src/main/asciidoc/kotlin-api.asciidoc b/src/main/asciidoc/kotlin-api.asciidoc deleted file mode 100644 index e630347ce4..0000000000 --- a/src/main/asciidoc/kotlin-api.asciidoc +++ /dev/null @@ -1,79 +0,0 @@ -Kotlin Coroutines are using Kotlin lightweight threads allowing to write non-blocking code in an imperative way. -On language side, suspending functions provides an abstraction for asynchronous operations while on library side kotlinx.coroutines provides functions like `async { }` and types like `Flow`. - -Lettuce ships with extensions to provide support for idiomatic Kotlin use. - -== Dependencies - -Coroutines support is available when `kotlinx-coroutines-core` and `kotlinx-coroutines-reactive` dependencies are on the classpath: - -.pom.xml -==== -[source,xml] ----- - - org.jetbrains.kotlinx - kotlinx-coroutines-core - ${kotlinx-coroutines.version} - - - org.jetbrains.kotlinx - kotlinx-coroutines-reactive - ${kotlinx-coroutines.version} - ----- -==== - -== How does Reactive translate to Coroutines? - -`Flow` is an equivalent to `Flux` in Coroutines world, suitable for hot or cold streams, finite or infinite streams, with the following main differences: - -* `Flow` is push-based while `Flux` is a push-pull hybrid -* Backpressure is implemented via suspending functions -* `Flow` has only a single suspending collect method and operators are implemented as extensions -* Operators are easy to implement thanks to Coroutines -* Extensions allow to add custom operators to Flow -* Collect operations are suspending functions -* `map` operator supports asynchronous operations (no need for `flatMap`) since it takes a suspending function parameter - -== Coroutines API based on reactive operations - -Example for retrieving commands and using it: - -[source,kotlin] ----- -val api: RedisCoroutinesCommands = connection.coroutines() - -val foo1 = api.set("foo", "bar") -val foo2 = api.keys("fo*") ----- - -NOTE: Coroutine Extensions are experimental and require opt-in using `@ExperimentalLettuceCoroutinesApi`. -The API ships with a reduced feature set. -Deprecated methods and `StreamingChannel` are left out intentionally. -Expect evolution towards a `Flow`-based API to consume large Redis responses. - -== Extensions for existing APIs - -=== Transactions DSL - -Example for the synchronous API: - -[source,kotlin] ----- -val result: TransactionResult = connection.sync().multi { - set("foo", "bar") - get("foo") -} ----- - -Example for async with coroutines: - -[source,kotlin] ----- -val result: TransactionResult = connection.async().multi { - set("foo", "bar") - get("foo") -} ----- - diff --git a/src/main/asciidoc/new-features.adoc b/src/main/asciidoc/new-features.adoc deleted file mode 100644 index 795df139bb..0000000000 --- a/src/main/asciidoc/new-features.adoc +++ /dev/null @@ -1,94 +0,0 @@ -[[new-features]] -= New & Noteworthy - -[[new-features.6-3-0]] -== What's new in Lettuce 6.3 - -* <<_redis_functions,Redis Function support>> (`fcall` and `FUNCTION` commands). -* Support for Library Name and Version through `LettuceVersion`. -Automated registration of the Lettuce library version upon connection handshake. -* Support for Micrometer Tracing to trace observations (distributed tracing and metrics). - -[[new-features.6-2-0]] -== What's new in Lettuce 6.2 - -* <> abstraction to externalize credentials and credentials rotation. -* Retrieval of Redis Cluster node connections using `ConnectionIntent` to obtain read-only connections. -* Master/Replica now uses `SENTINEL REPLICAS` to discover replicas instead of `SENTINEL SLAVES`. - -[[new-features.6-1-0]] -== What's new in Lettuce 6.1 - -* Kotlin Coroutines support for `SCAN`/`HSCAN`/`SSCAN`/`ZSCAN` through `ScanFlow`. -* Command Listener API through `RedisClient.addListener(CommandListener)`. -* <> through `MicrometerCommandLatencyRecorder`. -* <>. -* Configuration of extended Keep-Alive options through `KeepAliveOptions` (only available for some transports/Java versions). -* Configuration of netty's `AddressResolverGroup` through `ClientResources`. -Uses `DnsAddressResolverGroup` when `netty-resolver-dns` is on the classpath. -* Add support for Redis ACL commands. -* <> - -[[new-features.6-0-0]] -== What's new in Lettuce 6.0 - -* Support for RESP3 usage with Redis 6 along with RESP2/RESP3 handshake and protocol version discovery. -* ACL authentication using username and password or password-only authentication. -* Cluster topology refresh is now non-blocking. -* <>. -* RxJava 3 support. -* Refined Scripting API accepting the Lua script either as `byte[]` or `String`. -* Connection and Queue failures now no longer throw an exception but properly associate the failure with the Future handle. -* Removal of deprecated API including timeout methods accepting `TimeUnit`. -Use methods accepting `Duration` instead. -* Lots of internal refinements. -* `xpending` methods return now `List` and `PendingMessages` -* Spring support removed. -Use Spring Data Redis for a seamless Spring integration with Lettuce. -* `AsyncConnectionPoolSupport.createBoundedObjectPool(…)` methods are now blocking to await pool initialization. -* `DecodeBufferPolicy` for fine-grained memory reclaim control. -* `RedisURI.toString()` renders masked password. -* `ClientResources.commandLatencyCollector(…)` refactored into `ClientResources.commandLatencyRecorder(…)` returning `CommandLatencyRecorder`. - -[[new-features.5-3-0]] -== What's new in Lettuce 5.3 - -* Improved SSL configuration supporting Cipher suite selection and PEM-encoded certificates. -* Fixed method signature for `randomkey()`. -* Un-deprecated `ClientOptions.pingBeforeActivateConnection` to allow connection verification during connection handshake. - -[[new-features.5-2-0]] -== What's new in Lettuce 5.2 - -* Allow randomization of read candidates using Redis Cluster. -* SSL support for Redis Sentinel. - -[[new-features.5-1-0]] -== What's new in Lettuce 5.1 - -* Add support for `ZPOPMIN`, `ZPOPMAX`, `BZPOPMIN`, `BZPOPMAX` commands. -* Add support for Redis Command Tracing through Brave, see <>. -* Add support for https://redis.io/topics/streams-intro[Redis Streams]. -* Asynchronous `connect()` for Master/Replica connections. -* <> through `AsyncConnectionPoolSupport` and `AsyncPool`. -* Dedicated exceptions for Redis `LOADING`, `BUSY`, and `NOSCRIPT` responses. -* Commands in at-most-once mode (auto-reconnect disabled) are now canceled already on disconnect. -* Global command timeouts (also for reactive and asynchronous API usage) configurable through <>. -* Host and port mappers for Lettuce usage behind connection tunnels/proxies through `SocketAddressResolver`, see <>. -* `SCRIPT LOAD` dispatch to all cluster nodes when issued through `RedisAdvancedClusterCommands`. -* Reactive `ScanStream` to iterate over the keyspace using `SCAN` commands. -* Transactions using Master/Replica connections are bound to the master node. - -[[new-features.5-0-0]] -== What's new in Lettuce 5.0 - -* New artifact coordinates: `io.lettuce:lettuce-core` and packages moved from `com.lambdaworks.redis` to `io.lettuce.core`. -* <> now Reactive Streams-based using https://projectreactor.io/[Project Reactor]. -* <> supporting dynamic command invocation and Redis Modules. -* Enhanced, immutable Key-Value objects. -* Asynchronous Cluster connect. -* Native transport support for Kqueue on macOS systems. -* Removal of support for Guava. -* Removal of deprecated `RedisConnection` and `RedisAsyncConnection` interfaces. -* Java 9 compatibility. -* HTML and PDF reference documentation along with a new project website: https://lettuce.io. diff --git a/src/main/asciidoc/overview.asciidoc b/src/main/asciidoc/overview.asciidoc deleted file mode 100644 index 83b4f5e771..0000000000 --- a/src/main/asciidoc/overview.asciidoc +++ /dev/null @@ -1,83 +0,0 @@ -[[overview]] -== Overview - -This document is the reference guide for Lettuce. It explains how to use Lettuce, its concepts, semantics, and the syntax. - -You can read this reference guide in a linear fashion, or you can skip sections if something does not interest you. - -This section provides some basic introduction to Redis. The rest of the document refers only to Lettuce features and assumes the user is familiar with Redis concepts. - -[[overview.redis]] -=== Knowing Redis - -NoSQL stores have taken the storage world by storm. -It is a vast domain with a plethora of solutions, terms and patterns (to make things worse even the term itself has multiple https://www.google.com/search?q=nosql+acronym[meanings]). -While some of the principles are common, it is crucial that the user is familiar to some degree with Redis. -The best way to get acquainted to these solutions is to read and follow their documentation - it usually doesn't take more than 5-10 minutes to go through them and if you are coming from an RDMBS-only background many times these exercises can be an eye-opener. - -The jumping off ground for learning about Redis is https://www.redis.io/[redis.io]. -Here is a list of other useful resources: - -* The https://try.redis.io/[interactive tutorial] introduces Redis. -* The https://redis.io/commands[command references] explains Redis commands and contains links to getting started guides, reference documentation and tutorials. - -=== Project Reactor - -https://projectreactor.io[Reactor] is a highly optimized reactive library for building efficient, non-blocking applications on the JVM based on the https://github.com/reactive-streams/reactive-streams-jvm[Reactive Streams Specification]. -Reactor based applications can sustain very high throughput message rates and operate with a very low memory footprint, making it suitable for building efficient event-driven applications using the microservices architecture. - -Reactor implements two publishers https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html[Flux] and -https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Mono.html[Mono], both of which support non-blocking back-pressure. -This enables exchange of data between threads with well-defined memory usage, avoiding unnecessary intermediate buffering or blocking. - -=== Non-blocking API for Redis - -Lettuce is a scalable thread-safe Redis client based on https://netty.io[netty] and Reactor. -Lettuce provides <>, <> and <> APIs to interact with Redis. - -[[overview.requirements]] -=== Requirements - -Lettuce 4.x and 5.x binaries require JDK level 8.0 and above. - -In terms of https://redis.io/[Redis], at least 2.6. - -=== Additional Help Resources - -Learning a new framework is not always straight forward.In this section, we try to provide what we think is an easy-to-follow guide for starting with Lettuce. However, if you encounter issues or you are just looking for an advice, feel free to use one of the links below: - -[[overview.support]] -==== Support - -There are a few support options available: - -* Lettuce on Stackoverflow https://stackoverflow.com/questions/tagged/lettuce[Stackoverflow] is a tag for all Lettuce users to share information and help each other.Note that registration is needed *only* for posting. -* Get in touch with the community on https://gitter.im/lettuce-io/Lobby[Gitter]. -* GitHub Discussions: https://github.com/lettuce-io/lettuce-core/discussions -* Report bugs (or ask questions) in GitHub issues https://github.com/lettuce-io/lettuce-core/issues. - -[[overview.development]] -==== Following Development - -For information on the Lettuce source code repository, nightly builds and snapshot artifacts please see the https://lettuce.io[Lettuce homepage]. -You can help make lettuce best serve the needs of the lettuce community by interacting with developers through the Community on https://stackoverflow.com/questions/tagged/lettuce[Stackoverflow]. -If you encounter a bug or want to suggest an improvement, please create a ticket on the lettuce issue https://github.com/lettuce-io/lettuce-core/issues[tracker]. - -==== Project Metadata - -* Version Control – https://github.com/lettuce-io/lettuce-core -* Releases and Binary Packages – https://github.com/lettuce-io/lettuce-core/releases -* Issue tracker – https://github.com/lettuce-io/lettuce-core/issues -* Release repository – https://repo1.maven.org/maven2/ (Maven Central) -* Snapshot repository – https://oss.sonatype.org/content/repositories/snapshots/ (OSS Sonatype Snapshots) - -=== Where to go from here - -* Head to <> if you feel like jumping straight into the code. -* Go to <> for Master/Replica ("Master/Slave"), Redis Sentinel and Redis Cluster topics. -* In order to dig deeper into the core features of Reactor: -** If you’re looking for client configuration options, performance related behavior and how to use various transports, go to <>. -** See <> for extending Lettuce with codecs or integrate it in your CDI/Spring application. -** You want to know more about *at-least-once* and *at-most-once*? -Take a look into <>. - diff --git a/src/main/asciidoc/redis-command-interfaces.asciidoc b/src/main/asciidoc/redis-command-interfaces.asciidoc deleted file mode 100644 index ae5b750bf6..0000000000 --- a/src/main/asciidoc/redis-command-interfaces.asciidoc +++ /dev/null @@ -1,4 +0,0 @@ - -[[redis-command-interfaces]] -include::{ext-doc}/Redis-Command-Interfaces.asciidoc[leveloffset=+1] - diff --git a/src/main/asciidoc/scripting-and-functions.asciidoc b/src/main/asciidoc/scripting-and-functions.asciidoc deleted file mode 100644 index 73c7f66345..0000000000 --- a/src/main/asciidoc/scripting-and-functions.asciidoc +++ /dev/null @@ -1,4 +0,0 @@ -:command-interfaces-link: <> -[[redis-scripting-and-functions]] -include::{ext-doc}/Scripting-and-Functions.asciidoc[leveloffset=+2] - diff --git a/src/main/asciidoc/stylesheets/golo.css b/src/main/asciidoc/stylesheets/golo.css deleted file mode 100644 index b7699baf53..0000000000 --- a/src/main/asciidoc/stylesheets/golo.css +++ /dev/null @@ -1,1990 +0,0 @@ -@import url('https://fonts.googleapis.com/css?family=Raleway:300:400:700'); -@import url(https://cdnjs.cloudflare.com/ajax/libs/semantic-ui/1.6.2/semantic.min.css); - - -#header .details br+span.author:before { - content: "\00a0\0026\00a0"; - color: rgba(0,0,0,.85); -} - -#header .details br+span.email:before { - content: "("; -} - -#header .details br+span.email:after { - content: ")"; -} - -/*! normalize.css v2.1.2 | MIT License | git.io/normalize */ -/* ========================================================================== HTML5 display definitions ========================================================================== */ -/** Correct `block` display not defined in IE 8/9. */ -@import url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/3.2.1/css/font-awesome.css); - -article, aside, details, figcaption, figure, footer, header, hgroup, main, nav, section, summary { - display: block; -} - -/** Correct `inline-block` display not defined in IE 8/9. */ -audio, canvas, video { - display: inline-block; -} - -/** Prevent modern browsers from displaying `audio` without controls. Remove excess height in iOS 5 devices. */ -audio:not([controls]) { - display: none; - height: 0; -} - -/** Address `[hidden]` styling not present in IE 8/9. Hide the `template` element in IE, Safari, and Firefox < 22. */ -[hidden], template { - display: none; -} - -script { - display: none !important; -} - -/* ========================================================================== Base ========================================================================== */ -/** 1. Set default font family to sans-serif. 2. Prevent iOS text size adjust after orientation change, without disabling user zoom. */ -html { - font-family: sans-serif; /* 1 */ - -ms-text-size-adjust: 100%; /* 2 */ - -webkit-text-size-adjust: 100%; /* 2 */ -} - -/** Remove default margin. */ -body { - margin: 0; -} - -/* ========================================================================== Links ========================================================================== */ -/** Remove the gray background color from active links in IE 10. */ -a { - background: transparent; -} - -/** Address `outline` inconsistency between Chrome and other browsers. */ -a:focus { - outline: thin dotted; -} - -/** Improve readability when focused and also mouse hovered in all browsers. */ -a:active, a:hover { - outline: 0; -} - -/* ========================================================================== Typography ========================================================================== */ -/** Address variable `h1` font-size and margin within `section` and `article` contexts in Firefox 4+, Safari 5, and Chrome. */ -h1 { - font-size: 2em; - margin: 1.2em 0; -} - -/** Address styling not present in IE 8/9, Safari 5, and Chrome. */ -abbr[title] { - border-bottom: 1px dotted; -} - -/** Address style set to `bolder` in Firefox 4+, Safari 5, and Chrome. */ -b, strong { - font-weight: bold; -} - -/** Address styling not present in Safari 5 and Chrome. */ -dfn { - font-style: italic; -} - -/** Address differences between Firefox and other browsers. */ -hr { - -moz-box-sizing: content-box; - box-sizing: content-box; - height: 0; -} - -/** Address styling not present in IE 8/9. */ -mark { - background: #ff0; - color: #000; -} - -/** Correct font family set oddly in Safari 5 and Chrome. */ -code, kbd, pre, samp { - font-family: Menlo, Monaco, 'Liberation Mono', Consolas, monospace; - font-size: 1em; -} - -/** Improve readability of pre-formatted text in all browsers. */ -pre { - white-space: pre-wrap; -} - -/** Set consistent quote types. */ -q { - quotes: "\201C" "\201D" "\2018" "\2019"; -} - -/** Address inconsistent and variable font size in all browsers. */ -small { - font-size: 80%; -} - -/** Prevent `sub` and `sup` affecting `line-height` in all browsers. */ -sub, sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sup { - top: -0.5em; -} - -sub { - bottom: -0.25em; -} - -/* ========================================================================== Embedded content ========================================================================== */ -/** Remove border when inside `a` element in IE 8/9. */ -img { - border: 0; -} - -/** Correct overflow displayed oddly in IE 9. */ -svg:not(:root) { - overflow: hidden; -} - -/* ========================================================================== Figures ========================================================================== */ -/** Address margin not present in IE 8/9 and Safari 5. */ -figure { - margin: 0; -} - -/* ========================================================================== Forms ========================================================================== */ -/** Define consistent border, margin, and padding. */ -fieldset { - border: 1px solid #c0c0c0; - margin: 0 2px; - padding: 0.35em 0.625em 0.75em; -} - -/** 1. Correct `color` not being inherited in IE 8/9. 2. Remove padding so people aren't caught out if they zero out fieldsets. */ -legend { - border: 0; /* 1 */ - padding: 0; /* 2 */ -} - -/** 1. Correct font family not being inherited in all browsers. 2. Correct font size not being inherited in all browsers. 3. Address margins set differently in Firefox 4+, Safari 5, and Chrome. */ -button, input, select, textarea { - font-family: inherit; /* 1 */ - font-size: 100%; /* 2 */ - margin: 0; /* 3 */ -} - -/** Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet. */ -button, input { - line-height: normal; -} - -/** Address inconsistent `text-transform` inheritance for `button` and `select`. All other form control elements do not inherit `text-transform` values. Correct `button` style inheritance in Chrome, Safari 5+, and IE 8+. Correct `select` style inheritance in Firefox 4+ and Opera. */ -button, select { - text-transform: none; -} - -/** 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls. 2. Correct inability to style clickable `input` types in iOS. 3. Improve usability and consistency of cursor style between image-type `input` and others. */ -button, html input[type="button"], input[type="reset"], input[type="submit"] { - -webkit-appearance: button; /* 2 */ - cursor: pointer; /* 3 */ -} - -/** Re-set default cursor for disabled elements. */ -button[disabled], html input[disabled] { - cursor: default; -} - -/** 1. Address box sizing set to `content-box` in IE 8/9. 2. Remove excess padding in IE 8/9. */ -input[type="checkbox"], input[type="radio"] { - box-sizing: border-box; /* 1 */ - padding: 0; /* 2 */ -} - -/** 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome. 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome (include `-moz` to future-proof). */ -input[type="search"] { - -webkit-appearance: textfield; /* 1 */ - -moz-box-sizing: content-box; - -webkit-box-sizing: content-box; /* 2 */ - box-sizing: content-box; -} - -/** Remove inner padding and search cancel button in Safari 5 and Chrome on OS X. */ -input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { - -webkit-appearance: none; -} - -/** Remove inner padding and border in Firefox 4+. */ -button::-moz-focus-inner, input::-moz-focus-inner { - border: 0; - padding: 0; -} - -/** 1. Remove default vertical scrollbar in IE 8/9. 2. Improve readability and alignment in all browsers. */ -textarea { - overflow: auto; /* 1 */ - vertical-align: top; /* 2 */ -} - -/* ========================================================================== Tables ========================================================================== */ -/** Remove most spacing between table cells. */ -table { - border-collapse: collapse; - border-spacing: 0; -} - -meta.foundation-mq-small { - font-family: "only screen and (min-width: 768px)"; - width: 768px; -} - -meta.foundation-mq-medium { - font-family: "only screen and (min-width:1280px)"; - width: 1280px; -} - -meta.foundation-mq-large { - font-family: "only screen and (min-width:1440px)"; - width: 1440px; -} - -*, *:before, *:after { - -moz-box-sizing: border-box; - -webkit-box-sizing: border-box; - box-sizing: border-box; -} - -html, body { - font-size: 100%; -} - -body { - background: white; - color: #34302d; - padding: 0; - margin: 0; - font-family: "Helvetica Neue", "Helvetica", Helvetica, Arial, sans-serif; - font-weight: 400; - font-style: normal; - line-height: 1.8em; - position: relative; - cursor: auto; -} - -#content, #content p { - line-height: 1.8em; - margin-top: 1.5em; -} - -#content li p { - margin-top: 0.25em; -} - -a:hover { - cursor: pointer; -} - -img, object, embed { - max-width: 100%; - height: auto; -} - -object, embed { - height: 100%; -} - -img { - -ms-interpolation-mode: bicubic; -} - -#map_canvas img, #map_canvas embed, #map_canvas object, .map_canvas img, .map_canvas embed, .map_canvas object { - max-width: none !important; -} - -.left { - float: left !important; -} - -.right { - float: right !important; -} - -.text-left { - text-align: left !important; -} - -.text-right { - text-align: right !important; -} - -.text-center { - text-align: center !important; -} - -.text-justify { - text-align: justify !important; -} - -.hide { - display: none; -} - -.antialiased, body { - -webkit-font-smoothing: antialiased; -} - -img { - display: inline-block; - vertical-align: middle; -} - -textarea { - height: auto; - min-height: 50px; -} - -select { - width: 100%; -} - -p.lead, .paragraph.lead > p, #preamble > .sectionbody > .paragraph:first-of-type p { - font-size: 1.21875em; -} - -.subheader, #content #toctitle, .admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .mathblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title, .tableblock > caption { - color: #6db33f; - font-weight: 300; - margin-top: 0.2em; - margin-bottom: 0.5em; -} - -/* Typography resets */ -div, dl, dt, dd, ul, ol, li, h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6, pre, form, p, blockquote, th, td { - margin: 0; - padding: 0; - direction: ltr; -} - -/* Default Link Styles */ -a { - color: #6db33f; - line-height: inherit; - text-decoration: none; -} - -a:hover, a:focus { - color: #6db33f; - text-decoration: underline; -} - -a img { - border: none; -} - -/* Default paragraph styles */ -p { - font-family: inherit; - font-weight: normal; - font-size: 1em; - margin-bottom: 1.25em; - text-rendering: optimizeLegibility; -} - -p aside { - font-size: 0.875em; - font-style: italic; -} - -/* Default header styles */ -h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { - font-family: "Raleway", Arial, sans-serif; - font-weight: normal; - font-style: normal; - color: #34302d; - text-rendering: optimizeLegibility; - margin-top: 1.6em; - margin-bottom: 0.6em; -} - -h1 small, h2 small, h3 small, #toctitle small, .sidebarblock > .content > .title small, h4 small, h5 small, h6 small { - font-size: 60%; - color: #6db33f; - line-height: 0; -} - -h1 { - font-size: 2.125em; - line-height: 2em; -} - -h2 { - font-size: 1.6875em; - line-height: 1.5em; -} - -h3, #toctitle, .sidebarblock > .content > .title { - font-size: 1.375em; - line-height: 1.3em; -} - -h4 { - font-size: 1.125em; -} - -h5 { - font-size: 1.125em; -} - -h6 { - font-size: 1em; -} - -hr { - border: solid #dcd2c9; - border-width: 1px 0 0; - clear: both; - margin: 1.25em 0 1.1875em; - height: 0; -} - -/* Helpful Typography Defaults */ -em, i { - font-style: italic; - line-height: inherit; -} - -strong, b { - font-weight: bold; - line-height: inherit; -} - -small { - font-size: 60%; - line-height: inherit; -} - -code { - font-family: Consolas, "Liberation Mono", Courier, monospace; - font-weight: bold; - color: #305CB5; -} - -/* Lists */ -ul, ol, dl { - font-size: 1em; - margin-bottom: 1.25em; - list-style-position: outside; - font-family: inherit; -} - -ul, ol { - margin-left: 1.5em; -} - -ul.no-bullet, ol.no-bullet { - margin-left: 1.5em; -} - -/* Unordered Lists */ -ul li ul, ul li ol { - margin-left: 1.25em; - margin-bottom: 0; - font-size: 1em; /* Override nested font-size change */ -} - -ul.square li ul, ul.circle li ul, ul.disc li ul { - list-style: inherit; -} - -ul.square { - list-style-type: square; -} - -ul.circle { - list-style-type: circle; -} - -ul.disc { - list-style-type: disc; -} - -ul.no-bullet { - list-style: none; -} - -/* Ordered Lists */ -ol li ul, ol li ol { - margin-left: 1.25em; - margin-bottom: 0; -} - -/* Definition Lists */ -dl dt { - margin-bottom: 0.3125em; - font-weight: bold; -} - -dl dd { - margin-bottom: 1.25em; -} - -/* Abbreviations */ -abbr, acronym { - text-transform: uppercase; - font-size: 90%; - color: #34302d; - border-bottom: 1px dotted #dddddd; - cursor: help; -} - -abbr { - text-transform: none; -} - -/* Blockquotes */ -blockquote { - margin: 0 0 1.25em; - padding: 0.5625em 1.25em 0 1.1875em; - border-left: 1px solid #dddddd; -} - -blockquote cite { - display: block; - font-size: 0.8125em; - color: #655241; -} - -blockquote cite:before { - content: "\2014 \0020"; -} - -blockquote cite a, blockquote cite a:visited { - color: #655241; -} - -blockquote, blockquote p { - color: #34302d; -} - -/* Microformats */ -.vcard { - display: inline-block; - margin: 0 0 1.25em 0; - border: 1px solid #dddddd; - padding: 0.625em 0.75em; -} - -.vcard li { - margin: 0; - display: block; -} - -.vcard .fn { - font-weight: bold; - font-size: 0.9375em; -} - -.vevent .summary { - font-weight: bold; -} - -.vevent abbr { - cursor: auto; - text-decoration: none; - font-weight: bold; - border: none; - padding: 0 0.0625em; -} - -@media only screen and (min-width: 768px) { - h1, h2, h3, #toctitle, .sidebarblock > .content > .title, h4, h5, h6 { - } - - h1 { - font-size: 2.75em; - } - - h2 { - font-size: 2.3125em; - } - - h3, #toctitle, .sidebarblock > .content > .title { - font-size: 1.6875em; - } - - h4 { - font-size: 1.4375em; - } -} - -/* Print styles. Inlined to avoid required HTTP connection: www.phpied.com/delay-loading-your-print-css/ Credit to Paul Irish and HTML5 Boilerplate (html5boilerplate.com) -*/ -.print-only { - display: none !important; -} - -@media print { - * { - background: transparent !important; - color: #000 !important; /* Black prints faster: h5bp.com/s */ - box-shadow: none !important; - text-shadow: none !important; - } - - a, a:visited { - text-decoration: underline; - } - - a[href]:after { - content: " (" attr(href) ")"; - } - - abbr[title]:after { - content: " (" attr(title) ")"; - } - - .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { - content: ""; - } - - pre, blockquote { - border: 1px solid #999; - page-break-inside: avoid; - } - - thead { - display: table-header-group; /* h5bp.com/t */ - } - - tr, img { - page-break-inside: avoid; - } - - img { - max-width: 100% !important; - } - - @page { - margin: 0.5cm; - } - - p, h2, h3, #toctitle, .sidebarblock > .content > .title { - orphans: 3; - widows: 3; - } - - h2, h3, #toctitle, .sidebarblock > .content > .title { - page-break-after: avoid; - } - - .hide-on-print { - display: none !important; - } - - .print-only { - display: block !important; - } - - .hide-for-print { - display: none !important; - } - - .show-for-print { - display: inherit !important; - } -} - -/* Tables */ -table { - background: white; - margin-bottom: 1.25em; - border: solid 1px #34302d; -} - -table thead, table tfoot { - font-weight: bold; -} - -table thead tr th, table thead tr td, table tfoot tr th, table tfoot tr td { - padding: 0.5em 0.625em 0.625em; - font-size: inherit; - color: #34302d; - text-align: left; -} - -table thead tr th { - color: white; - background: #34302d; -} - -table tr th, table tr td { - padding: 0.5625em 0.625em; - font-size: inherit; - color: #34302d; - border: 0 none; -} - -table tr.even, table tr.alt, table tr:nth-of-type(even) { - background: #f2F2F2; -} - -table thead tr th, table tfoot tr th, table tbody tr td, table tr td, table tfoot tr td { - display: table-cell; -} - -.clearfix:before, .clearfix:after, .float-group:before, .float-group:after { - content: " "; - display: table; -} - -.clearfix:after, .float-group:after { - clear: both; -} - -*:not(pre) > code { - font-size: inherit; - padding: 0; - white-space: nowrap; - background-color: inherit; - border: 0 solid #dddddd; - -webkit-border-radius: 6px; - border-radius: 6px; - text-shadow: none; -} - -pre, pre > code { - color: black; - font-family: monospace, serif; - font-weight: normal; -} - -.keyseq { - color: #774417; -} - -kbd:not(.keyseq) { - display: inline-block; - color: #211306; - font-size: 0.75em; - background-color: #F7F7F7; - border: 1px solid #ccc; - -webkit-border-radius: 3px; - border-radius: 3px; - -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; - box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), 0 0 0 2px white inset; - margin: -0.15em 0.15em 0 0.15em; - padding: 0.2em 0.6em 0.2em 0.5em; - vertical-align: middle; - white-space: nowrap; -} - -.keyseq kbd:first-child { - margin-left: 0; -} - -.keyseq kbd:last-child { - margin-right: 0; -} - -.menuseq, .menu { - color: black; -} - -b.button:before, b.button:after { - position: relative; - top: -1px; - font-weight: normal; -} - -b.button:before { - content: "["; - padding: 0 3px 0 2px; -} - -b.button:after { - content: "]"; - padding: 0 2px 0 3px; -} - -p a > code:hover { - color: #541312; -} - -#header, #content, #footnotes, #footer { - width: 100%; - margin-left: auto; - margin-right: auto; - margin-top: 0; - margin-bottom: 0; - max-width: 62.5em; - *zoom: 1; - position: relative; - padding-left: 4em; - padding-right: 4em; -} - -#header:before, #header:after, #content:before, #content:after, #footnotes:before, #footnotes:after, #footer:before, #footer:after { - content: " "; - display: table; -} - -#header:after, #content:after, #footnotes:after, #footer:after { - clear: both; -} - -#header { - margin-bottom: 2.5em; -} - -#header > h1 { - color: #34302d; - font-weight: 400; -} - -#header span { - color: #34302d; -} - -#header #revnumber { - text-transform: capitalize; -} - -#header br { - display: none; -} - -#header br + span { -} - -#revdate { - display: block; -} - -#toc { - border-bottom: 1px solid #e6dfd8; - padding-bottom: 1.25em; -} - -#toc > ul { - margin-left: 0.25em; -} - -#toc ul.sectlevel0 > li > a { - font-style: italic; -} - -#toc ul.sectlevel0 ul.sectlevel1 { - margin-left: 0; - margin-top: 0.5em; - margin-bottom: 0.5em; -} - -#toc ul { - list-style-type: none; -} - -#toctitle { - color: #385dbd; -} - -@media only screen and (min-width: 768px) { - body.toc2 { - padding-left: 15em; - padding-right: 0; - } - - #toc.toc2 { - position: fixed; - width: 15em; - left: 0; - border-bottom: 0; - z-index: 1000; - padding: 1em; - height: 100%; - top: 0px; - background: #F1F1F1; - overflow: auto; - - -moz-transition-property: top; - -o-transition-property: top; - -webkit-transition-property: top; - transition-property: top; - -moz-transition-duration: 0.4s; - -o-transition-duration: 0.4s; - -webkit-transition-duration: 0.4s; - transition-duration: 0.4s; - } - - #reactor-header { - position: fixed; - top: -75px; - left: 0; - right: 0; - height: 75px; - - - -moz-transition-property: top; - -o-transition-property: top; - -webkit-transition-property: top; - transition-property: top; - -moz-transition-duration: 0.4s; - -o-transition-duration: 0.4s; - -webkit-transition-duration: 0.4s; - transition-duration: 0.4s; - } - - body.head-show #toc.toc2 { - top: 75px; - } - body.head-show #reactor-header { - top: 0; - } - - #toc.toc2 a { - color: #34302d; - font-family: "Raleway", Arial, sans-serif; - } - - #toc.toc2 #toctitle { - margin-top: 0; - font-size: 1.2em; - } - - #toc.toc2 > ul { - font-size: .90em; - } - - #toc.toc2 ul ul { - margin-left: 0; - padding-left: 0.4em; - } - - #toc.toc2 ul.sectlevel0 ul.sectlevel1 { - padding-left: 0; - margin-top: 0.5em; - margin-bottom: 0.5em; - } - - body.toc2.toc-right { - padding-left: 0; - padding-right: 15em; - } - - body.toc2.toc-right #toc.toc2 { - border-right: 0; - border-left: 1px solid #e6dfd8; - left: auto; - right: 0; - } -} - -@media only screen and (min-width: 1280px) { - body.toc2 { - padding-left: 20em; - padding-right: 0; - } - - #toc.toc2 { - width: 20em; - } - - #toc.toc2 #toctitle { - font-size: 1.375em; - } - - #toc.toc2 > ul { - font-size: 0.95em; - } - - #toc.toc2 ul ul { - padding-left: 1.25em; - } - - body.toc2.toc-right { - padding-left: 0; - padding-right: 20em; - } -} - -#content #toc { - border-style: solid; - border-width: 1px; - border-color: #d9d9d9; - margin-bottom: 1.25em; - padding: 1.25em; - background: #f2f2f2; - border-width: 0; - -webkit-border-radius: 6px; - border-radius: 6px; -} - -#content #toc > :first-child { - margin-top: 0; -} - -#content #toc > :last-child { - margin-bottom: 0; -} - -#content #toc a { - text-decoration: none; -} - -#content #toctitle { - font-weight: bold; - font-family: "Raleway", Arial, sans-serif; - font-size: 1em; - padding-left: 0.125em; -} - -#footer { - max-width: 100%; - background-color: white; - padding: 1.25em; - color: #CCC; - border-top: 3px solid #F1F1F1; -} - -#footer-text { - color: #444; - line-height: 1.44; -} - -.sect1 { - padding-bottom: 1.25em; -} - -.sect1 + .sect1 { - border-top: 1px solid #e6dfd8; -} - -#content h1 > a.anchor, h2 > a.anchor, h3 > a.anchor, #toctitle > a.anchor, .sidebarblock > .content > .title > a.anchor, h4 > a.anchor, h5 > a.anchor, h6 > a.anchor { - position: absolute; - width: 1em; - margin-left: -1em; - display: block; - text-decoration: none; - visibility: hidden; - text-align: center; - font-weight: normal; -} - -#content h1 > a.anchor:before, h2 > a.anchor:before, h3 > a.anchor:before, #toctitle > a.anchor:before, .sidebarblock > .content > .title > a.anchor:before, h4 > a.anchor:before, h5 > a.anchor:before, h6 > a.anchor:before { - content: '\00A7'; - font-size: .85em; - vertical-align: text-top; - display: block; - margin-top: 0.05em; -} - -#content h1:hover > a.anchor, #content h1 > a.anchor:hover, h2:hover > a.anchor, h2 > a.anchor:hover, h3:hover > a.anchor, #toctitle:hover > a.anchor, .sidebarblock > .content > .title:hover > a.anchor, h3 > a.anchor:hover, #toctitle > a.anchor:hover, .sidebarblock > .content > .title > a.anchor:hover, h4:hover > a.anchor, h4 > a.anchor:hover, h5:hover > a.anchor, h5 > a.anchor:hover, h6:hover > a.anchor, h6 > a.anchor:hover { - visibility: visible; -} - -#content h1 > a.link, h2 > a.link, h3 > a.link, #toctitle > a.link, .sidebarblock > .content > .title > a.link, h4 > a.link, h5 > a.link, h6 > a.link { - color: #34302d; - text-decoration: none; -} - -#content h1 > a.link:hover, h2 > a.link:hover, h3 > a.link:hover, #toctitle > a.link:hover, .sidebarblock > .content > .title > a.link:hover, h4 > a.link:hover, h5 > a.link:hover, h6 > a.link:hover { - color: #34302d; -} - -.imageblock, .literalblock, .listingblock, .mathblock, .verseblock, .videoblock { - margin-bottom: 1.25em; - margin-top: 1.25em; -} - -.admonitionblock td.content > .title, .exampleblock > .title, .imageblock > .title, .listingblock > .title, .literalblock > .title, .mathblock > .title, .openblock > .title, .paragraph > .title, .quoteblock > .title, .sidebarblock > .title, .tableblock > .title, .verseblock > .title, .videoblock > .title, .dlist > .title, .olist > .title, .ulist > .title, .qlist > .title, .hdlist > .title { - text-align: left; - font-weight: bold; -} - -.tableblock > caption { - text-align: left; - font-weight: bold; - white-space: nowrap; - overflow: visible; - max-width: 0; -} - -table.tableblock #preamble > .sectionbody > .paragraph:first-of-type p { - font-size: inherit; -} - -.admonitionblock > table { - border: 0; - background: none; - width: 100%; -} - -.admonitionblock > table td.icon { - text-align: center; - width: 80px; -} - -.admonitionblock > table td.icon img { - max-width: none; -} - -.admonitionblock > table td.icon .title { - font-weight: bold; - text-transform: uppercase; -} - -.admonitionblock > table td.content { - padding-left: 1.125em; - padding-right: 1.25em; - border-left: 1px solid #dcd2c9; - color: #34302d; -} - -.admonitionblock > table td.content > :last-child > :last-child { - margin-bottom: 0; -} - -.exampleblock > .content { - border-top: 1px solid #6db33f; - border-bottom: 1px solid #6db33f; - margin-bottom: 1.25em; - padding: 1.25em; - background: white; -} - -.exampleblock > .content > :first-child { - margin-top: 0; -} - -.exampleblock > .content > :last-child { - margin-bottom: 0; -} - -.exampleblock > .content h1, .exampleblock > .content h2, .exampleblock > .content h3, .exampleblock > .content #toctitle, .sidebarblock.exampleblock > .content > .title, .exampleblock > .content h4, .exampleblock > .content h5, .exampleblock > .content h6, .exampleblock > .content p { - color: #333333; -} - -.exampleblock > .content h1, .exampleblock > .content h2, .exampleblock > .content h3, .exampleblock > .content #toctitle, .sidebarblock.exampleblock > .content > .title, .exampleblock > .content h4, .exampleblock > .content h5, .exampleblock > .content h6 { - margin-bottom: 0.625em; -} - -.exampleblock > .content h1.subheader, .exampleblock > .content h2.subheader, .exampleblock > .content h3.subheader, .exampleblock > .content .subheader#toctitle, .sidebarblock.exampleblock > .content > .subheader.title, .exampleblock > .content h4.subheader, .exampleblock > .content h5.subheader, .exampleblock > .content h6.subheader { -} - -.exampleblock.result > .content { - -webkit-box-shadow: 0 1px 8px #d9d9d9; - box-shadow: 0 1px 8px #d9d9d9; -} - -.sidebarblock { - padding: 1.25em 2em; - background: #F1F1F1; - margin: 2em -2em; - -} - -.sidebarblock > :first-child { - margin-top: 0; -} - -.sidebarblock > :last-child { - margin-bottom: 0; -} - -.sidebarblock h1, .sidebarblock h2, .sidebarblock h3, .sidebarblock #toctitle, .sidebarblock > .content > .title, .sidebarblock h4, .sidebarblock h5, .sidebarblock h6, .sidebarblock p { - color: #333333; -} - -.sidebarblock h1, .sidebarblock h2, .sidebarblock h3, .sidebarblock #toctitle, .sidebarblock > .content > .title, .sidebarblock h4, .sidebarblock h5, .sidebarblock h6 { - margin-bottom: 0.625em; -} - -.sidebarblock h1.subheader, .sidebarblock h2.subheader, .sidebarblock h3.subheader, .sidebarblock .subheader#toctitle, .sidebarblock > .content > .subheader.title, .sidebarblock h4.subheader, .sidebarblock h5.subheader, .sidebarblock h6.subheader { -} - -.sidebarblock > .content > .title { - color: #6db33f; - margin-top: 0; - font-size: 1.2em; -} - -.exampleblock > .content > :last-child > :last-child, .exampleblock > .content .olist > ol > li:last-child > :last-child, .exampleblock > .content .ulist > ul > li:last-child > :last-child, .exampleblock > .content .qlist > ol > li:last-child > :last-child, .sidebarblock > .content > :last-child > :last-child, .sidebarblock > .content .olist > ol > li:last-child > :last-child, .sidebarblock > .content .ulist > ul > li:last-child > :last-child, .sidebarblock > .content .qlist > ol > li:last-child > :last-child { - margin-bottom: 0; -} - -.literalblock pre:not([class]), .listingblock pre:not([class]) { - background-color:#f2f2f2; -} - -.literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { - border-width: 1px; - border-style: solid; - border-color: rgba(21, 35, 71, 0.1); - -webkit-border-radius: 6px; - border-radius: 6px; - padding: 0.8em; - word-wrap: break-word; -} - -.literalblock pre.nowrap, .literalblock pre[class].nowrap, .listingblock pre.nowrap, .listingblock pre[class].nowrap { - overflow-x: auto; - white-space: pre; - word-wrap: normal; -} - -.literalblock pre > code, .literalblock pre[class] > code, .listingblock pre > code, .listingblock pre[class] > code { - display: block; -} - -@media only screen { - .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { - font-size: 0.72em; - } -} - -@media only screen and (min-width: 768px) { - .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { - font-size: 0.81em; - } -} - -@media only screen and (min-width: 1280px) { - .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] { - font-size: 0.9em; - } -} - -.listingblock pre.highlight { - padding: 0; - line-height: 1.4em; -} - -.listingblock pre.highlight > code { - padding: 0.8em; -} - -.listingblock > .content { - position: relative; -} - -.listingblock:hover code[class*=" language-"]:before { - text-transform: uppercase; - font-size: 0.9em; - color: #999; - position: absolute; - top: 0.375em; - right: 0.375em; -} - -.listingblock:hover code.asciidoc:before { - content: "asciidoc"; -} - -.listingblock:hover code.clojure:before { - content: "clojure"; -} - -.listingblock:hover code.css:before { - content: "css"; -} - -.listingblock:hover code.groovy:before { - content: "groovy"; -} - -.listingblock:hover code.html:before { - content: "html"; -} - -.listingblock:hover code.java:before { - content: "java"; -} - -.listingblock:hover code.javascript:before { - content: "javascript"; -} - -.listingblock:hover code.python:before { - content: "python"; -} - -.listingblock:hover code.ruby:before { - content: "ruby"; -} - -.listingblock:hover code.sass:before { - content: "sass"; -} - -.listingblock:hover code.scss:before { - content: "scss"; -} - -.listingblock:hover code.xml:before { - content: "xml"; -} - -.listingblock:hover code.yaml:before { - content: "yaml"; -} - -.listingblock.terminal pre .command:before { - content: attr(data-prompt); - padding-right: 0.5em; - color: #999; -} - -.listingblock.terminal pre .command:not([data-prompt]):before { - content: '$'; -} - -table.pyhltable { - border: 0; - margin-bottom: 0; -} - -table.pyhltable td { - vertical-align: top; - padding-top: 0; - padding-bottom: 0; -} - -table.pyhltable td.code { - padding-left: .75em; - padding-right: 0; -} - -.highlight.pygments .lineno, table.pyhltable td:not(.code) { - color: #999; - padding-left: 0; - padding-right: .5em; - border-right: 1px solid #dcd2c9; -} - -.highlight.pygments .lineno { - display: inline-block; - margin-right: .25em; -} - -table.pyhltable .linenodiv { - background-color: transparent !important; - padding-right: 0 !important; -} - -.quoteblock { - margin: 0 0 1.25em; - padding: 0.5625em 1.25em 0 1.1875em; - border-left: 3px solid #dddddd; -} - -.quoteblock blockquote { - margin: 0 0 1.25em 0; - padding: 0 0 0.5625em 0; - border: 0; -} - -.quoteblock blockquote > .paragraph:last-child p { - margin-bottom: 0; -} - -.quoteblock .attribution { - margin-top: -.25em; - padding-bottom: 0.5625em; - font-size: 0.8125em; -} - -.quoteblock .attribution br { - display: none; -} - -.quoteblock .attribution cite { - display: block; - margin-bottom: 0.625em; -} - -table thead th, table tfoot th { - font-weight: bold; -} - -table.tableblock.grid-all { - border-collapse: separate; - border-radius: 6px; - border-top: 1px solid #34302d; - border-bottom: 1px solid #34302d; -} - -table.tableblock.frame-topbot, table.tableblock.frame-none { - border-left: 0; - border-right: 0; -} - -table.tableblock.frame-sides, table.tableblock.frame-none { - border-top: 0; - border-bottom: 0; -} - -table.tableblock td .paragraph:last-child p > p:last-child, table.tableblock th > p:last-child, table.tableblock td > p:last-child { - margin-bottom: 0; -} - -th.tableblock.halign-left, td.tableblock.halign-left { - text-align: left; -} - -th.tableblock.halign-right, td.tableblock.halign-right { - text-align: right; -} - -th.tableblock.halign-center, td.tableblock.halign-center { - text-align: center; -} - -th.tableblock.valign-top, td.tableblock.valign-top { - vertical-align: top; -} - -th.tableblock.valign-bottom, td.tableblock.valign-bottom { - vertical-align: bottom; -} - -th.tableblock.valign-middle, td.tableblock.valign-middle { - vertical-align: middle; -} - -tbody tr th { - display: table-cell; - background: rgba(105, 60, 22, 0.25); -} - -tbody tr th, tbody tr th p, tfoot tr th, tfoot tr th p { - color: #211306; - font-weight: bold; -} - -td > div.verse { - white-space: pre; -} - -ol { - margin-left: 1.75em; -} - -ul li ol { - margin-left: 1.5em; -} - -dl dd { - margin-left: 1.125em; -} - -dl dd:last-child, dl dd:last-child > :last-child { - margin-bottom: 0; -} - -ol > li p, ul > li p, ul dd, ol dd, .olist .olist, .ulist .ulist, .ulist .olist, .olist .ulist { - margin-bottom: 0.625em; -} - -ul.unstyled, ol.unnumbered, ul.checklist, ul.none { - list-style-type: none; -} - -ul.unstyled, ol.unnumbered, ul.checklist { - margin-left: 0.625em; -} - -ul.checklist li > p:first-child > i[class^="icon-check"]:first-child, ul.checklist li > p:first-child > input[type="checkbox"]:first-child { - margin-right: 0.25em; -} - -ul.checklist li > p:first-child > input[type="checkbox"]:first-child { - position: relative; - top: 1px; -} - -ul.inline { - margin: 0 auto 0.625em auto; - margin-left: -1.375em; - margin-right: 0; - padding: 0; - list-style: none; - overflow: hidden; -} - -ul.inline > li { - list-style: none; - float: left; - margin-left: 1.375em; - display: block; -} - -ul.inline > li > * { - display: block; -} - -.unstyled dl dt { - font-weight: normal; - font-style: normal; -} - -ol.arabic { - list-style-type: decimal; -} - -ol.decimal { - list-style-type: decimal-leading-zero; -} - -ol.loweralpha { - list-style-type: lower-alpha; -} - -ol.upperalpha { - list-style-type: upper-alpha; -} - -ol.lowerroman { - list-style-type: lower-roman; -} - -ol.upperroman { - list-style-type: upper-roman; -} - -ol.lowergreek { - list-style-type: lower-greek; -} - -.hdlist > table, .colist > table { - border: 0; - background: none; -} - -.hdlist > table > tbody > tr, .colist > table > tbody > tr { - background: none; -} - -td.hdlist1 { - padding-right: .75em; - font-weight: bold; -} - -td.hdlist1, td.hdlist2 { - vertical-align: top; -} - -.literalblock + .colist, .listingblock + .colist { - margin-top: -0.5em; -} - -.colist > table tr > td:first-of-type { - padding: 0 .75em; -} - -.colist > table tr > td:last-of-type { - padding: 0.25em 0; -} - -.qanda > ol > li > p > em:only-child { - color: #063f40; -} - -.thumb, .th { - line-height: 0; - display: inline-block; - border: solid 4px white; - -webkit-box-shadow: 0 0 0 1px #dddddd; - box-shadow: 0 0 0 1px #dddddd; -} - -.imageblock.left, .imageblock[style*="float: left"] { - margin: 0.25em 0.625em 1.25em 0; -} - -.imageblock.right, .imageblock[style*="float: right"] { - margin: 0.25em 0 1.25em 0.625em; -} - -.imageblock > .title { - margin-bottom: 0; -} - -.imageblock.thumb, .imageblock.th { - border-width: 6px; -} - -.imageblock.thumb > .title, .imageblock.th > .title { - padding: 0 0.125em; -} - -.image.left, .image.right { - margin-top: 0.25em; - margin-bottom: 0.25em; - display: inline-block; - line-height: 0; -} - -.image.left { - margin-right: 0.625em; -} - -.image.right { - margin-left: 0.625em; -} - -a.image { - text-decoration: none; -} - -span.footnote, span.footnoteref { - vertical-align: super; - font-size: 0.875em; -} - -span.footnote a, span.footnoteref a { - text-decoration: none; -} - -#footnotes { - padding-top: 0.75em; - padding-bottom: 0.75em; - margin-bottom: 0.625em; -} - -#footnotes hr { - width: 20%; - min-width: 6.25em; - margin: -.25em 0 .75em 0; - border-width: 1px 0 0 0; -} - -#footnotes .footnote { - padding: 0 0.375em; - font-size: 0.875em; - margin-left: 1.2em; - text-indent: -1.2em; - margin-bottom: .2em; -} - -#footnotes .footnote a:first-of-type { - font-weight: bold; - text-decoration: none; -} - -#footnotes .footnote:last-of-type { - margin-bottom: 0; -} - -#content #footnotes { - margin-top: -0.625em; - margin-bottom: 0; - padding: 0.75em 0; -} - -.gist .file-data > table { - border: none; - background: #fff; - width: 100%; - margin-bottom: 0; -} - -.gist .file-data > table td.line-data { - width: 99%; -} - -div.unbreakable { - page-break-inside: avoid; -} - -.big { - font-size: larger; -} - -.small { - font-size: smaller; -} - -.underline { - text-decoration: underline; -} - -.overline { - text-decoration: overline; -} - -.line-through { - text-decoration: line-through; -} - -.aqua { - color: #00bfbf; -} - -.aqua-background { - background-color: #00fafa; -} - -.black { - color: black; -} - -.black-background { - background-color: black; -} - -.blue { - color: #0000bf; -} - -.blue-background { - background-color: #0000fa; -} - -.fuchsia { - color: #bf00bf; -} - -.fuchsia-background { - background-color: #fa00fa; -} - -.gray { - color: #606060; -} - -.gray-background { - background-color: #7d7d7d; -} - -.green { - color: #006000; -} - -.green-background { - background-color: #007d00; -} - -.lime { - color: #00bf00; -} - -.lime-background { - background-color: #00fa00; -} - -.maroon { - color: #600000; -} - -.maroon-background { - background-color: #7d0000; -} - -.navy { - color: #000060; -} - -.navy-background { - background-color: #00007d; -} - -.olive { - color: #606000; -} - -.olive-background { - background-color: #7d7d00; -} - -.purple { - color: #600060; -} - -.purple-background { - background-color: #7d007d; -} - -.red { - color: #bf0000; -} - -.red-background { - background-color: #fa0000; -} - -.silver { - color: #909090; -} - -.silver-background { - background-color: #bcbcbc; -} - -.teal { - color: #006060; -} - -.teal-background { - background-color: #007d7d; -} - -.white { - color: #bfbfbf; -} - -.white-background { - background-color: #fafafa; -} - -.yellow { - color: #bfbf00; -} - -.yellow-background { - background-color: #fafa00; -} - -span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { - cursor: default; -} - -.admonitionblock td.icon [class^="icon-"]:before { - font-size: 2.5em; - text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5); - cursor: default; -} - -.admonitionblock td.icon .icon-note:before { - content: "\f05a"; - color: #095557; - color: #064042; -} - -.admonitionblock td.icon .icon-tip:before { - content: "\f0eb"; - text-shadow: 1px 1px 2px rgba(155, 155, 0, 0.8); - color: #111; -} - -.admonitionblock td.icon .icon-warning:before { - content: "\f071"; - color: #bf6900; -} - -.admonitionblock td.icon .icon-caution:before { - content: "\f06d"; - color: #bf3400; -} - -.admonitionblock td.icon .icon-important:before { - content: "\f06a"; - color: #bf0000; -} - -.conum { - display: inline-block; - color: white !important; - background-color: #211306; - -webkit-border-radius: 100px; - border-radius: 100px; - text-align: center; - width: 20px; - height: 20px; - font-size: 12px; - font-weight: bold; - line-height: 20px; - font-family: Arial, sans-serif; - font-style: normal; - position: relative; - top: -2px; - letter-spacing: -1px; -} - -.conum * { - color: white !important; -} - -.conum + b { - display: none; -} - -.conum:after { - content: attr(data-value); -} - -.conum:not([data-value]):empty { - display: none; -} - -body { - padding-top: 60px; -} - -#toc.toc2 ul ul { - padding-left: 1em; -} -#toc.toc2 ul ul.sectlevel2 { -} - -#toctitle { - color: #34302d; - display: none; -} - -#header h1 { - font-weight: bold; - position: relative; - left: -0.0625em; -} - -#header h1 span.lo { - color: #dc9424; -} - -#content h2, #content h3, #content #toctitle, #content .sidebarblock > .content > .title, #content h4, #content h5, #content #toctitle { - font-weight: normal; - position: relative; - left: -0.0625em; -} - -#content h2 { - font-weight: bold; -} - -.literalblock .content pre.highlight, .listingblock .content pre.highlight { - background-color:#f2f2f2; -} - -.admonitionblock > table td.content { - border-color: #e6dfd8; -} - -table.tableblock.grid-all { - -webkit-border-radius: 0; - border-radius: 0; -} - -#footer { - background-color: #while; - color: #34302d; -} - -.imageblock .title { - text-align: center; -} - -#content h1.sect0 { - font-size: 48px; -} - -#toc > ul > li > a { - font-size: large; -}