Skip to content
Browse files

Squashed 'docs/docbook/' content from commit 98184ed

git-subtree-dir: docs/docbook
git-subtree-split: 98184ed6a1333abb5c73567c93c4ce1042fa2ac7
  • Loading branch information...
0 parents commit 3756675d91a417d79ed2566037fa6d168f62c3f2 @b1v1r b1v1r committed May 11, 2012
Showing with 36,892 additions and 0 deletions.
  1. +35 −0 .gitignore
  2. +1 −0 COPYING
  3. +6 −0 INSTALL
  4. +202 −0 LICENSE
  5. +9 −0 Makefile.am
  6. +11 −0 NOTICE
  7. +1 −0 README
  8. +10 −0 autogen.sh
  9. +33 −0 configure.ac
  10. +296 −0 documents/ironbee-documents.xpr
  11. +357 −0 documents/ironbee-logo.svg
  12. +470 −0 documents/ironbee-whitepaper.xml
  13. +569 −0 documents/pdf.xsl
  14. +10 −0 manual/Makefile.am
  15. +8 −0 manual/ch00-preface.xml
  16. +347 −0 manual/ch01-introduction.xml
  17. +677 −0 manual/ch02-directives.xml
  18. +280 −0 manual/ch03-variables.xml
  19. +119 −0 manual/ch04-operators.xml
  20. +37 −0 manual/ch05-modifiers.xml
  21. +44 −0 manual/ch06-transformation-functions.xml
  22. +733 −0 manual/chXX-extending-ironbee.xml
  23. +570 −0 manual/chXX-installation.xml
  24. +5 −0 manual/config-examples/apache-config.txt
  25. +2 −0 manual/config-examples/apache-load-config.txt
  26. +68 −0 manual/config-examples/ironbee-config.txt
  27. +61 −0 manual/docbook-xsl-ns-1.76.1/.CatalogManager.properties.example
  28. +1 −0 manual/docbook-xsl-ns-1.76.1/.urilist
  29. +4 −0 manual/docbook-xsl-ns-1.76.1/AUTHORS
  30. +21 −0 manual/docbook-xsl-ns-1.76.1/BUGS
  31. +47 −0 manual/docbook-xsl-ns-1.76.1/COPYING
  32. +88 −0 manual/docbook-xsl-ns-1.76.1/INSTALL
  33. +89 −0 manual/docbook-xsl-ns-1.76.1/Makefile
  34. +139 −0 manual/docbook-xsl-ns-1.76.1/NEWS
  35. +25 −0 manual/docbook-xsl-ns-1.76.1/NEWS.html
  36. +145 −0 manual/docbook-xsl-ns-1.76.1/NEWS.xml
  37. +166 −0 manual/docbook-xsl-ns-1.76.1/README
  38. +8,353 −0 manual/docbook-xsl-ns-1.76.1/RELEASE-NOTES.html
  39. BIN manual/docbook-xsl-ns-1.76.1/RELEASE-NOTES.pdf
  40. +8,575 −0 manual/docbook-xsl-ns-1.76.1/RELEASE-NOTES.txt
  41. +10,327 −0 manual/docbook-xsl-ns-1.76.1/RELEASE-NOTES.xml
  42. +23 −0 manual/docbook-xsl-ns-1.76.1/TODO
  43. +115 −0 manual/docbook-xsl-ns-1.76.1/VERSION
  44. +8 −0 manual/docbook-xsl-ns-1.76.1/catalog.xml
  45. +118 −0 manual/docbook-xsl-ns-1.76.1/common/addns.xsl
  46. +1,229 −0 manual/docbook-xsl-ns-1.76.1/common/af.xml
  47. +1,229 −0 manual/docbook-xsl-ns-1.76.1/common/am.xml
  48. +1,229 −0 manual/docbook-xsl-ns-1.76.1/common/ar.xml
Sorry, we could not display the entire diff because too many files (1,592) changed.
35 .gitignore
@@ -0,0 +1,35 @@
+# Editor files
+*~
+*.swp
+
+# Git files
+*.patch
+
+# Autotools generated files:
+*_config_auto.h
+*_config_auto.h.in
+aclocal.m4
+config.log
+config.status
+config.guess
+config.sub
+configure.in
+configure
+libtool
+stamp-h1
+depcomp
+install-sh
+ltmain.sh
+missing
+Makefile
+Makefile.in
+acinclude/libtool*
+acinclude/lt*
+autom4te.cache/
+.deps/
+.libs/
+
+# Build Generated files:
+manual/output/
+libs/luajit-2.0-ironbee/
+
1 COPYING
@@ -0,0 +1 @@
+Please refer to the NOTICE and LICENSE files included this work.
6 INSTALL
@@ -0,0 +1,6 @@
+This is intended to be used as a submodule, but you can also use it by itself.
+You will need java and autotools installed.
+
+./autogen.sh
+./configure
+make manual
202 LICENSE
@@ -0,0 +1,202 @@
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
9 Makefile.am
@@ -0,0 +1,9 @@
+SUBDIRS = manual
+
+clean-local:
+ rm -rf output
+
+manual:
+ @(cd manual && $(MAKE) output)
+
+.PHONY: doxygen-pdf manual
11 NOTICE
@@ -0,0 +1,11 @@
+IronBee (www.ironbee.com)
+Copyright 2010-2011 Qualys, Inc.
+
+This product includes software developed at
+Qualys, Inc. (http://www.qualys.com/)
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+LibHTP (http://www.libhtp.org) code is included with
+permission from the author, Ivan Ristic <ivanr@webkreator.com>.
1 README
@@ -0,0 +1 @@
+Documentation for IronBee.
10 autogen.sh
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+# Cleanup
+rm -rf autom4te.cache
+
+# Generate
+set -x
+aclocal
+autoconf
+automake --add-missing --force --copy --foreign
33 configure.ac
@@ -0,0 +1,33 @@
+dnl
+dnl Qualys WAF
+dnl
+
+AC_PREREQ(2.59)
+
+AC_INIT([ironbee-documentation], [0.2], [brectanus@qualys.com])
+
+AC_CONFIG_MACRO_DIR([acinclude])
+AC_CONFIG_SRCDIR([README])
+AC_PREFIX_DEFAULT([/usr/local/ironbee])
+
+AM_INIT_AUTOMAKE([foreign])
+
+### Java
+AC_ARG_WITH([java],
+ [ --with-java=PROG java executable],
+ [java="$withval"],[java=no])
+
+if test "$java" != "no"; then
+ AC_MSG_NOTICE([Using java: $java])
+else
+ AC_PATH_PROGS([java],[java],[])
+fi
+
+JAVA=$java
+
+dnl Substitutions
+AC_SUBST(JAVA)
+AC_CONFIG_FILES([Makefile])
+AC_CONFIG_FILES([manual/Makefile])
+
+AC_OUTPUT
296 documents/ironbee-documents.xpr
@@ -0,0 +1,296 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="13.2">
+ <meta>
+ <filters directoryPatterns="" filePatterns="" positiveFilePatterns="" showHiddenFiles="false"/>
+ <options>
+ <serialized version="13.2" xml:space="preserve">
+ <map>
+ <entry>
+ <String>scenario.associations</String>
+ <scenarioAssociation-array>
+ <scenarioAssociation>
+ <field name="name">
+ <String>Docbook PDF duplicate</String>
+ </field>
+ <field name="type">
+ <String>XSL</String>
+ </field>
+ <field name="url">
+ <String>ironbee-whitepaper.xml</String>
+ </field>
+ </scenarioAssociation>
+ </scenarioAssociation-array>
+ </entry>
+ <entry>
+ <String>scenarios</String>
+ <scenario-array>
+ <scenario>
+ <field name="advancedOptionsMap">
+ <null/>
+ </field>
+ <field name="name">
+ <String>Docbook PDF duplicate</String>
+ </field>
+ <field name="baseURL">
+ <String></String>
+ </field>
+ <field name="footerURL">
+ <String></String>
+ </field>
+ <field name="fOPMethod">
+ <String>pdf</String>
+ </field>
+ <field name="fOProcessorName">
+ <String>Apache FOP</String>
+ </field>
+ <field name="headerURL">
+ <String></String>
+ </field>
+ <field name="inputXSLURL">
+ <String>${cfdu}/pdf.xsl</String>
+ </field>
+ <field name="inputXMLURL">
+ <String>${currentFileURL}</String>
+ </field>
+ <field name="defaultScenario">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="isFOPPerforming">
+ <Boolean>true</Boolean>
+ </field>
+ <field name="type">
+ <String>XSL</String>
+ </field>
+ <field name="saveAs">
+ <Boolean>true</Boolean>
+ </field>
+ <field name="openInBrowser">
+ <Boolean>true</Boolean>
+ </field>
+ <field name="outputFile">
+ <File>${cfd}/${cfn}.pdf</File>
+ </field>
+ <field name="openOtherLocationInBrowser">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="locationToOpenInBrowserURL">
+ <null/>
+ </field>
+ <field name="openInEditor">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="showInHTMLPane">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="showInXMLPane">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="showInSVGPane">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="showInResultSetPane">
+ <Boolean>false</Boolean>
+ </field>
+ <field name="useXSLTInput">
+ <Boolean>true</Boolean>
+ </field>
+ <field name="xsltParams">
+ <list>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>admon.graphics</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>1</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>admon.graphics.path</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>${frameworks}/docbook/xsl/images/</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>draft.mode</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>no</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>fop.extensions</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>0</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>fop1.extensions</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>1</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>highlight.source</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>1</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>highlight.xslthl.config</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>${frameworks}/docbook/xsl/highlighting/xslthl-config.xml</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ <transformationParameter>
+ <field name="paramDescription">
+ <paramDescriptor>
+ <field name="localName">
+ <String>paper.type</String>
+ </field>
+ <field name="prefix">
+ <null/>
+ </field>
+ <field name="namespace">
+ <null/>
+ </field>
+ </paramDescriptor>
+ </field>
+ <field name="value">
+ <String>A4</String>
+ </field>
+ <field name="hasXPathValue">
+ <Boolean>false</Boolean>
+ </field>
+ </transformationParameter>
+ </list>
+ </field>
+ <field name="cascadingStylesheets">
+ <String-array/>
+ </field>
+ <field name="xslTransformer">
+ <String>Saxon6.5.5</String>
+ </field>
+ <field name="extensionURLs">
+ <String-array>
+ <String>${frameworks}/docbook/xsl/extensions/xslthl-2.0.1.jar</String>
+ <String>${frameworks}/docbook/xsl/extensions/saxon65.jar</String>
+ </String-array>
+ </field>
+ </scenario>
+ </scenario-array>
+ </entry>
+ <entry>
+ <String>scenarios.load.from.project</String>
+ <Boolean>true</Boolean>
+ </entry>
+ </map>
+ </serialized>
+ </options>
+ </meta>
+ <projectTree name="ironbee-documents.xpr">
+ <file name="ironbee-whitepaper.xml"/>
+ <file name="pdf.xsl"/>
+ </projectTree>
+</project>
357 documents/ironbee-logo.svg
@@ -0,0 +1,357 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="392px"
+ height="290px" viewBox="0 0 392 290" enable-background="new 0 0 392 290" xml:space="preserve">
+<g id="Guides_For_Artboard">
+</g>
+<g id="Layer_1">
+
+ <linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="530.6152" y1="-113.7095" x2="504.0982" y2="-119.462" gradientTransform="matrix(0.9333 0.3591 -0.3591 0.9333 -338.9569 8.6603)">
+ <stop offset="0.0569" style="stop-color:#3D3533"/>
+ <stop offset="0.2704" style="stop-color:#403937"/>
+ <stop offset="0.4702" style="stop-color:#4A4442"/>
+ <stop offset="0.6648" style="stop-color:#5B5655"/>
+ <stop offset="0.8547" style="stop-color:#72706F"/>
+ <stop offset="1" style="stop-color:#898989"/>
+ </linearGradient>
+ <path fill="url(#SVGID_1_)" d="M191.121,79.137c-5.039-4.734-6.693-3.657-9.403-2.918c-6.305,2.082-12.105,9.286-12.105,9.286
+ s14.024-4.735,27.856,7.01C198.375,87.459,196.008,83.729,191.121,79.137z"/>
+ <g>
+
+ <linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="894.8301" y1="-353.3623" x2="877.9732" y2="-322.9518" gradientTransform="matrix(0.6594 0.7518 -0.7518 0.6594 -672.1237 -402.3874)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.0852" style="stop-color:#433B39"/>
+ <stop offset="0.62" style="stop-color:#6C625E"/>
+ <stop offset="0.8815" style="stop-color:#7E7370"/>
+ </linearGradient>
+ <path fill="url(#SVGID_2_)" d="M179.699,70.576c-0.355-0.573,0.524-48.714,0.524-48.714S160.968,11.454,159.5,10.581
+ c-1.471-0.874-5.063,1.746-5.063,1.746l-7.17,21.615l1.785,6.201l22.518,25L179.699,70.576z"/>
+
+ <linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="897.1289" y1="-332.9951" x2="914.3975" y2="-332.9951" gradientTransform="matrix(0.6594 0.7518 -0.7518 0.6594 -672.1237 -402.3874)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <polygon fill="url(#SVGID_3_)" points="177.239,68.932 170.92,54.266 179.697,55.829 179.706,55.187 168.781,53.381
+ 168.396,53.718 170.495,54.094 176.896,68.542 175.777,67.786 175.81,67.976 "/>
+
+ <linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="858.709" y1="-340.5225" x2="902.7803" y2="-340.5225" gradientTransform="matrix(0.6594 0.7518 -0.7518 0.6594 -672.1237 -402.3874)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <path fill="url(#SVGID_4_)" d="M171.949,58.12l-8.037-1.477l-8.167-25.896l5.775-5.065l-0.684-2.043l7.451-6.533l-9.047-5.096
+ c0,0-3.535,0.631-4.231,2.945c-0.697,2.313-1.976,5.225-1.976,5.225l0.536,0.125c0,0,1.722-5.07,2.638-6.314
+ c0.915-1.245,3.004-1.528,3.004-1.528l8.492,4.729l-7.317,6.418l0.684,2.041l-10.381,8.85l1.095,4.063l0.289-0.253l-0.938-3.691
+ l4.229-3.624l7.823,24.821l8.284,1.506L171.949,58.12z"/>
+
+ <linearGradient id="SVGID_5_" gradientUnits="userSpaceOnUse" x1="870.6523" y1="-357.3442" x2="881.2754" y2="-357.3442" gradientTransform="matrix(0.6594 0.7518 -0.7518 0.6594 -672.1237 -402.3874)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <polygon fill="url(#SVGID_5_)" points="169.305,17.703 179.207,22.444 179.296,23.07 168.721,18.215 "/>
+
+ <linearGradient id="SVGID_6_" gradientUnits="userSpaceOnUse" x1="887.2305" y1="-356.3599" x2="882.026" y2="-336.9366" gradientTransform="matrix(0.6594 0.7518 -0.7518 0.6594 -672.1237 -402.3874)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1205" style="stop-color:#5A5757"/>
+ <stop offset="0.205" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="1" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <polygon fill="url(#SVGID_6_)" points="162.683,23.512 169.529,52.2 170.141,52.187 165.398,32.502 179.335,34.639
+ 179.089,26.124 178.894,25.95 178.978,34.202 165.297,32.122 164.048,26.993 171.506,20.125 168.37,18.524 "/>
+ </g>
+ <g>
+ <g>
+ <g>
+
+ <linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="311.2373" y1="-8.5762" x2="261.0825" y2="42.4192" gradientTransform="matrix(0.9991 0.0432 -0.0432 0.9991 -64.9669 23.6911)">
+ <stop offset="0.7062" style="stop-color:#3D3533"/>
+ <stop offset="0.7345" style="stop-color:#433B39"/>
+ <stop offset="0.9128" style="stop-color:#6C625E"/>
+ <stop offset="1" style="stop-color:#7E7370"/>
+ </linearGradient>
+ <path fill="url(#SVGID_7_)" d="M222.145,61.414c-1.814-6.035-7.271-8.478-8.619-8.748c-1.025-0.605-2.098-0.967-2.498-1.186
+ c1.441-1.497,10.33-9.282,14.4-12.302c4.336-3.218,8.863-4.764,14.805-6.055c5.779-1.258,9.951-3.427,5.16-4.207
+ c-4.785-0.775-12.553,1.516-20.205,7.926c-4.938,4.135-16.338,13.739-16.707,13.599c-18.619-7.084-25.982,5.384-21.629,16.903
+ c3.615,9.573,13.809,14.764,22.666,15.924c0.668-0.604-0.633-3.711,0.002-3.928c0.883,2.745,3.211,4.193,4.207,4.175
+ c4.863-0.088,8.801-1.571,10.168-4.375C225.971,74.877,226.094,68.013,222.145,61.414z"/>
+
+ <linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="1212.4092" y1="-1351.3789" x2="1216.7153" y2="-1329.1655" gradientTransform="matrix(0.5303 0.8478 -0.8478 0.5303 -1544.183 -271.5078)">
+ <stop offset="0.7062" style="stop-color:#3D3533"/>
+ <stop offset="0.7345" style="stop-color:#433B39"/>
+ <stop offset="0.9128" style="stop-color:#6C625E"/>
+ <stop offset="1" style="stop-color:#7E7370"/>
+ </linearGradient>
+ <path fill="url(#SVGID_8_)" d="M236.273,43.065c7.615-0.44,7.463-2.014,13.16,2.172c3.504,2.572-0.48,4.021-2.379,2.312
+ c-1.898-1.714-1.287-2.164-4.748-2.235c-9.693-0.192-22.52,3.293-21.129,2.416C222.572,46.856,228.656,43.508,236.273,43.065z"
+ />
+ </g>
+ </g>
+ </g>
+
+ <linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="267.7539" y1="26.0239" x2="286.0508" y2="26.0239" gradientTransform="matrix(0.9991 0.0432 -0.0432 0.9991 -64.9669 23.6911)">
+ <stop offset="0" style="stop-color:#DEB408"/>
+ <stop offset="1" style="stop-color:#FFFFFF"/>
+ </linearGradient>
+ <path fill="url(#SVGID_9_)" d="M215.117,69.763c1.443-0.197,2.865-1.116,3.389-1.792c1.523-1.97,3.277-10.763-8.135-14.124
+ c-4.301-1.267-8.67,1.124-8.824,4.524C201.125,67.599,210.836,70.348,215.117,69.763z"/>
+
+ <linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="-81.1016" y1="-21.6123" x2="-103.3969" y2="18.6095" gradientTransform="matrix(0.9582 -0.2858 0.2858 0.9582 221.0641 48.5358)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <path fill="url(#SVGID_10_)" d="M175.494,73.772c-0.781,0.097-44.988-21.109-56.285-26.536c-1.657-0.796-3.238-0.776-4.302,0.022
+ c-5.408,4.067-21.99,16.531-23.56,17.615c-1.88,1.299-0.7,7.125-0.7,7.125l22.265,20.757l8.528,1.292l42.925-13.428L175.494,73.772
+ z"/>
+
+ <linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="-77.7905" y1="5.1831" x2="-54.7061" y2="5.1831" gradientTransform="matrix(0.9582 -0.2858 0.2858 0.9582 221.0641 48.5358)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <polygon fill="url(#SVGID_11_)" points="172.126,75.844 150.787,75.346 157.579,65.553 156.802,65.186 148.519,77.452
+ 148.714,78.108 150.34,75.766 171.461,76.043 169.918,76.981 170.169,77.049 "/>
+
+ <linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="-129.1509" y1="-4.8799" x2="-70.2339" y2="-4.8799" gradientTransform="matrix(0.9582 -0.2858 0.2858 0.9582 221.0641 48.5358)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <path fill="url(#SVGID_12_)" d="M156.043,76.245l-6.274,8.941l-36.015-4.509l-2.935-9.843l-2.861-0.308l-3.786-12.694
+ l-11.233,8.154c0,0-1.204,4.646,1.219,6.781c2.423,2.134,5.248,5.312,5.248,5.312l0.45-0.581c0,0-5.201-4.918-6.204-6.724
+ c-1.001-1.806-0.181-4.501-0.181-4.501l10.48-7.682l3.719,12.467l2.861,0.308l4.966,17.544l5.547,0.935l-0.146-0.492l-5.008-0.918
+ l-2.046-7.159l34.516,4.328l6.448-9.225L156.043,76.245z"/>
+
+ <linearGradient id="SVGID_13_" gradientUnits="userSpaceOnUse" x1="-113.186" y1="-27.3667" x2="-98.9844" y2="-27.3667" gradientTransform="matrix(0.9582 -0.2858 0.2858 0.9582 221.0641 48.5358)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1875" style="stop-color:#5A5757"/>
+ <stop offset="0.3189" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <polygon fill="url(#SVGID_13_)" points="105.465,56.93 116.742,47.542 117.555,47.782 105.761,57.925 "/>
+
+ <linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="-91.0239" y1="-26.0503" x2="-97.981" y2="-0.0863" gradientTransform="matrix(0.9582 -0.2858 0.2858 0.9582 221.0641 48.5358)">
+ <stop offset="0" style="stop-color:#3D3533"/>
+ <stop offset="0.1205" style="stop-color:#5A5757"/>
+ <stop offset="0.205" style="stop-color:#6B6B6B"/>
+ <stop offset="0.3622" style="stop-color:#7E7370"/>
+ <stop offset="1" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <polygon fill="url(#SVGID_14_)" points="108.832,68.214 147.502,75.885 147.827,75.134 121.27,69.925 131.632,54.184
+ 121.15,49.737 120.829,49.877 130.899,54.373 120.749,69.834 113.82,68.495 109.636,55.606 105.941,58.525 "/>
+ <linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="210.1592" y1="68.4004" x2="213.729" y2="59.9904">
+ <stop offset="0.7062" style="stop-color:#3D3533"/>
+ <stop offset="0.7345" style="stop-color:#433B39"/>
+ <stop offset="0.9128" style="stop-color:#6C625E"/>
+ <stop offset="1" style="stop-color:#7E7370"/>
+ </linearGradient>
+ <path fill="url(#SVGID_15_)" d="M216.574,64.862c0,2.587-2.281,4.756-4.783,4.102c-2.584-0.677-4.686-2.098-4.686-4.686
+ c0-2.587,1.668-4.878,4.686-4.684C215.488,59.833,216.574,62.275,216.574,64.862z"/>
+ <ellipse fill="#FFFFFF" cx="211.429" cy="61.412" rx="1.909" ry="1.527"/>
+
+ <linearGradient id="SVGID_16_" gradientUnits="userSpaceOnUse" x1="164.9692" y1="147.2114" x2="211.5769" y2="105.2457" gradientTransform="matrix(0.9986 0.0538 -0.0538 0.9986 2.2152 -10.8616)">
+ <stop offset="0" style="stop-color:#7E7370"/>
+ <stop offset="0.0071" style="stop-color:#867D7A"/>
+ <stop offset="0.0267" style="stop-color:#979190"/>
+ <stop offset="0.0498" style="stop-color:#A5A1A1"/>
+ <stop offset="0.0784" style="stop-color:#AEADAC"/>
+ <stop offset="0.1186" style="stop-color:#B4B3B3"/>
+ <stop offset="0.2301" style="stop-color:#B5B5B5"/>
+ <stop offset="0.8998" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <path fill="url(#SVGID_16_)" d="M211.914,110.673c-8.443-5.121-24.33-4.432-33.278,2.921c-10.75,6.862-16.178,21.421-18.18,33.187
+ c0,0,16.679-3.398,31.765-13.125C200.854,128.09,211.258,117.191,211.914,110.673z"/>
+
+ <linearGradient id="SVGID_17_" gradientUnits="userSpaceOnUse" x1="184.3574" y1="137.3916" x2="218.8447" y2="137.3916" gradientTransform="matrix(0.9986 0.0538 -0.0538 0.9986 2.2152 -10.8616)">
+ <stop offset="0" style="stop-color:#F7EA8E"/>
+ <stop offset="0.672" style="stop-color:#CD9C0D"/>
+ </linearGradient>
+ <path fill="url(#SVGID_17_)" d="M177.957,154.984l2.842-0.729c0,0.002,33.42-30.363,33.506-33.639
+ c0.049-1.779-17.922-4.516-26.973,7.977C179.16,136.324,177.957,150.8,177.957,154.984z"/>
+ <linearGradient id="SVGID_18_" gradientUnits="userSpaceOnUse" x1="188.3047" y1="153.1621" x2="214.7422" y2="131.8145">
+ <stop offset="0" style="stop-color:#7E7370"/>
+ <stop offset="0.0071" style="stop-color:#867D7A"/>
+ <stop offset="0.0267" style="stop-color:#979190"/>
+ <stop offset="0.0498" style="stop-color:#A5A1A1"/>
+ <stop offset="0.0784" style="stop-color:#AEADAC"/>
+ <stop offset="0.1186" style="stop-color:#B4B3B3"/>
+ <stop offset="0.2301" style="stop-color:#B5B5B5"/>
+ <stop offset="0.8064" style="stop-color:#3D3533"/>
+ </linearGradient>
+ <path fill="url(#SVGID_18_)" d="M192.221,158.012c0,0,6.297-4.165,13.445-12.099c7.146-7.937,8.689-14.577,8.689-14.577
+ s-10.637-1.361-16.709,6.695C191.373,146.353,192.221,158.012,192.221,158.012z"/>
+
+ <linearGradient id="SVGID_19_" gradientUnits="userSpaceOnUse" x1="555.5498" y1="-77.6055" x2="521.2972" y2="-50.9937" gradientTransform="matrix(0.962 0.273 -0.273 0.962 -337.9556 53.7417)">
+ <stop offset="0" style="stop-color:#898989"/>
+ <stop offset="0.3622" style="stop-color:#3D3533"/>
+ <stop offset="0.5065" style="stop-color:#403937"/>
+ <stop offset="0.6417" style="stop-color:#4A4442"/>
+ <stop offset="0.7733" style="stop-color:#5B5655"/>
+ <stop offset="0.9018" style="stop-color:#72706F"/>
+ <stop offset="1" style="stop-color:#898989"/>
+ </linearGradient>
+ <path fill="url(#SVGID_19_)" d="M213.789,121.147c-23.49-5.054-34.198,14.144-33.362,33.205c0.008,0.18,1.037,0.457,1.75,0.633
+ c3.018,0.748,10.041,3.594,10.043,3.027c-0.029-6.959,1.5-27.776,22.135-26.676C214.49,126.382,213.992,122.621,213.789,121.147z"
+ />
+ <linearGradient id="SVGID_20_" gradientUnits="userSpaceOnUse" x1="147.27" y1="124.1538" x2="190.9173" y2="84.8536">
+ <stop offset="0.7494" style="stop-color:#DEB408"/>
+ <stop offset="0.9248" style="stop-color:#FFF568"/>
+ </linearGradient>
+ <path fill="url(#SVGID_20_)" d="M202.623,98.348c0,0-8.678-14.306-26.127-14.308c-20.452-0.001-35.947,21.48-29.221,40.119
+ c8.857-14.49,14.701-23.121,25.759-26.906C183.582,93.644,190.631,92.755,202.623,98.348z"/>
+ <linearGradient id="SVGID_21_" gradientUnits="userSpaceOnUse" x1="164.1802" y1="147.77" x2="208.6477" y2="107.7313">
+ <stop offset="0.7494" style="stop-color:#DEB408"/>
+ <stop offset="0.9248" style="stop-color:#FFF568"/>
+ </linearGradient>
+ <path fill="url(#SVGID_21_)" d="M164.159,147.589c-0.538-0.408-1.258-1.139-1.221-1.439c0.746-6.143,3.916-22.729,16.79-31.527
+ c15.999-10.937,31.875-3.608,31.875-3.608s0.938,3.48,2.711,9.485c-14.234-2.955-21.705,2.051-26.971,7.977
+ c-5.137,5.782-8.983,15.879-9.374,26.391C177.96,155.156,167.283,149.957,164.159,147.589z"/>
+ <linearGradient id="SVGID_22_" gradientUnits="userSpaceOnUse" x1="217.1934" y1="138.3994" x2="190.8082" y2="151.2683">
+ <stop offset="0" style="stop-color:#FFF568"/>
+ <stop offset="0.6492" style="stop-color:#DEB408"/>
+ </linearGradient>
+ <path fill="url(#SVGID_22_)" d="M193.641,157.076c0,0-0.771-10.977,3.965-17.809c4.738-6.83,12.258-7.605,16.426-7.351
+ c1.004,9.415-2.678,20.245-2.678,20.245S202.158,157.959,193.641,157.076z"/>
+
+ <linearGradient id="SVGID_23_" gradientUnits="userSpaceOnUse" x1="542.0918" y1="-98.8765" x2="486.701" y2="-60.436" gradientTransform="matrix(0.962 0.273 -0.273 0.962 -337.9556 53.7417)">
+ <stop offset="0" style="stop-color:#898989"/>
+ <stop offset="0.3394" style="stop-color:#3D3533"/>
+ <stop offset="0.4889" style="stop-color:#403937"/>
+ <stop offset="0.6289" style="stop-color:#4A4442"/>
+ <stop offset="0.7652" style="stop-color:#5B5655"/>
+ <stop offset="0.8983" style="stop-color:#72706F"/>
+ <stop offset="1" style="stop-color:#898989"/>
+ </linearGradient>
+ <path fill="url(#SVGID_23_)" d="M169.386,123.344c8.444-12.665,26.587-20.452,42.528-12.671c0,0-2.221-7.556-8.324-11.832
+ c-25.463-13.458-48.229,4.289-56.28,23.439c-1.09,2.73-0.705,6.42,0.107,7.996c3.469,6.734,7.601,12.459,13.04,16.504
+ C161.578,139.816,164.288,130.442,169.386,123.344z"/>
+ <g>
+ <path fill="#333333" d="M20.307,230.557v-43.506c0-0.475,0.454-0.883,0.984-0.883h10.147c0.53,0,0.985,0.408,0.985,0.883v43.506
+ c0,0.475-0.455,0.883-0.985,0.883H21.291C20.761,231.439,20.307,231.031,20.307,230.557z"/>
+ <path fill="#333333" d="M74.982,208.838l15.751,20.564c0.228,0.34,0.379,0.68,0.379,1.018c0,0.611-0.53,1.02-1.288,1.02H78.314
+ c-0.303,0-0.606-0.137-0.833-0.408l-14.162-19.953h-2.12v19.479c0,0.475-0.455,0.883-0.985,0.883H50.067
+ c-0.53,0-0.984-0.408-0.984-0.883v-43.506c0-0.475,0.454-0.883,0.984-0.883h18.781c6.437,0,9.693,0.814,12.647,3.055
+ c2.726,2.037,3.938,4.684,3.938,8.484C85.433,204.02,81.797,207.955,74.982,208.838z M61.199,204.834h3.559
+ c5.907,0,8.558-1.969,8.558-6.244c0-4.209-2.499-6.178-7.649-6.178h-4.467V204.834z"/>
+ <path fill="#333333" d="M98.645,209.041c0-7.262,2.651-13.709,7.27-17.781c4.468-3.869,10.072-5.635,18.175-5.635
+ c7.952,0,13.556,1.766,17.796,5.498c4.922,4.344,7.497,10.588,7.497,18.055c0,14.66-9.39,23.414-24.991,23.414
+ c-8.406,0-13.783-1.695-18.326-5.633C101.295,222.818,98.645,216.303,98.645,209.041z M111.14,209.109
+ c0,6.313,1.136,9.977,3.862,12.488c2.196,2.035,5.149,3.055,8.785,3.055c8.633,0,13.101-5.023,13.101-14.729
+ c0-7.127-1.061-10.859-3.938-13.439c-2.196-1.967-5.149-2.918-8.86-2.918c-3.787,0-6.967,1.086-9.087,2.986
+ C112.2,199.199,111.14,202.729,111.14,209.109z"/>
+ <path fill="#333333" d="M171.722,199.676v30.881c0,0.475-0.455,0.883-0.984,0.883h-7.119c-0.53,0-0.984-0.408-0.984-0.883v-43.506
+ c0-0.475,0.454-0.883,0.984-0.883h11.208c0.378,0,0.757,0.205,0.909,0.477l18.706,31.898v-31.492c0-0.475,0.453-0.883,0.984-0.883
+ h7.119c0.529,0,0.984,0.408,0.984,0.883V231.1c0,0.475-0.455,0.883-0.984,0.883h-10.982c-0.379,0-0.682-0.137-0.832-0.408
+ L171.722,199.676z"/>
+ <path fill="#333333" d="M246.691,207.48c7.572,1.086,11.738,5.09,11.738,11.537c0,4.209-2.121,7.738-5.982,9.91
+ c-3.408,1.969-6.135,2.512-12.799,2.512H221.17c-0.529,0-0.984-0.408-0.984-0.883v-43.506c0-0.475,0.455-0.883,0.984-0.883h17.115
+ c7.422,0,10.299,0.543,13.178,2.512c1.666,1.018,2.877,2.443,3.709,4.141c0.758,1.561,1.213,3.326,1.213,5.021
+ C256.385,203.137,253.053,206.463,246.691,207.48z M232.303,204.834h3.559c5.301,0,7.801-1.969,7.801-6.178
+ c0-4.275-2.424-6.244-7.877-6.244h-3.482V204.834z M232.303,225.195h4.695c5.83,0,8.936-2.443,8.936-7.127
+ c0-4.615-3.029-6.99-9.088-6.99h-4.543V225.195z"/>
+ <path fill="#333333" d="M284.553,194.109v9.639h14.92c0.529,0,0.984,0.406,0.984,0.881v6.109c0,0.475-0.455,0.883-0.984,0.883
+ h-14.92v11.877h20.221c0.529,0,0.984,0.406,0.984,0.883v6.176c0,0.475-0.455,0.883-0.984,0.883h-31.352
+ c-0.531,0-0.984-0.408-0.984-0.883v-43.506c0-0.475,0.453-0.883,0.984-0.883h29.836c0.531,0,0.986,0.408,0.986,0.883v6.176
+ c0,0.477-0.455,0.883-0.986,0.883H284.553z"/>
+ <path fill="#333333" d="M331.504,194.109v9.639h14.918c0.531,0,0.984,0.406,0.984,0.881v6.109c0,0.475-0.453,0.883-0.984,0.883
+ h-14.918v11.877h20.219c0.531,0,0.984,0.406,0.984,0.883v6.176c0,0.475-0.453,0.883-0.984,0.883h-31.352
+ c-0.529,0-0.984-0.408-0.984-0.883v-43.506c0-0.475,0.455-0.883,0.984-0.883h29.838c0.529,0,0.984,0.408,0.984,0.883v6.176
+ c0,0.477-0.455,0.883-0.984,0.883H331.504z"/>
+ <g opacity="0.48">
+ <path fill="#333333" d="M30.389,261.643c0-7.535,4.072-11.834,11.264-11.834c7.154,0,11.112,4.23,11.112,11.938
+ c0,7.469-4.034,11.664-11.188,11.664C34.46,273.41,30.389,269.146,30.389,261.643z M32.71,261.576
+ c0,6.514,3.158,10.094,8.905,10.094c5.708,0,8.829-3.58,8.829-10.061s-3.159-10.061-8.791-10.061
+ C35.906,251.549,32.71,255.096,32.71,261.576z"/>
+ <path fill="#333333" d="M62.313,272.113l-0.267-0.102c-0.114-0.035-0.152-0.035-0.19-0.035c-0.229,0-0.266,0.104-0.266,0.41
+ v7.195c0,0.238-0.229,0.443-0.533,0.443h-1.294c-0.267,0-0.495-0.205-0.495-0.443v-23.293c0-0.238,0.228-0.443,0.495-0.443h0.989
+ c0.305,0,0.418,0.102,0.418,0.41v0.17c0,0.17,0.114,0.273,0.267,0.273s0.229,0,0.571-0.172c1.294-0.646,2.778-0.955,4.453-0.955
+ c5.404,0,8.981,3.41,8.981,8.596c0,5.115-3.729,8.934-8.715,8.934c-1.142,0-2.549-0.238-3.387-0.578L62.313,272.113z
+ M61.59,259.223v10.094c0,1.5,1.712,2.354,4.757,2.354c4.148,0,6.774-2.865,6.774-7.4c0-4.467-2.702-7.264-7.002-7.264
+ C63.264,257.006,61.59,257.824,61.59,259.223z"/>
+ <path fill="#333333" d="M83.163,263.895c0.038,2.83,0.342,4.059,1.37,5.389c0.571,0.75,1.37,1.33,2.208,1.705
+ c1.027,0.477,2.245,0.682,3.501,0.682c1.636,0,3.501-0.477,4.566-1.193c0.267-0.137,0.533-0.273,0.685-0.273
+ c0.229,0,0.343,0.17,0.343,0.443v0.613c0,0.955-2.778,1.842-5.785,1.842c-5.67,0-9.247-3.342-9.247-8.662
+ c0-5.217,3.539-8.867,8.524-8.867c4.376,0,7.687,2.967,7.687,6.992v0.887c0,0.273-0.229,0.443-0.495,0.443H83.163z
+ M83.163,262.463h11.531c-0.114-3.344-2.246-5.457-5.556-5.457C85.941,257.006,83.505,259.256,83.163,262.463z"/>
+ <path fill="#333333" d="M103.139,272.387v-16.098c0-0.238,0.228-0.443,0.495-0.443h0.951c0.305,0,0.457,0.137,0.457,0.41v0.238
+ c0,0.102,0.152,0.205,0.305,0.205c0.076,0,0.19,0,0.304-0.068l0.419-0.172c1.598-0.613,3.083-0.887,4.681-0.887
+ c2.169,0,4.034,0.547,5.176,1.535c1.332,1.16,1.865,2.627,1.865,5.32v9.959c0,0.238-0.229,0.443-0.533,0.443h-1.294
+ c-0.266,0-0.495-0.205-0.495-0.443v-10.436c0-3.344-1.636-4.945-5.099-4.945c-2.968,0-4.909,0.887-4.909,2.25v13.131
+ c0,0.238-0.229,0.443-0.533,0.443h-1.294C103.367,272.83,103.139,272.625,103.139,272.387z"/>
+ <path fill="#333333" d="M135.913,271.328v-1.021c0-0.342,0.152-0.547,0.495-0.547c0.152,0,0.266,0.035,0.609,0.273
+ c1.408,0.852,3.539,1.432,5.366,1.432c3.083,0,5.061-1.568,5.061-4.023c0-1.842-0.533-2.559-3.311-4.332l-4.567-2.898
+ c-2.245-1.467-3.272-2.967-3.272-4.877c0-1.568,0.571-2.83,1.789-3.818c1.37-1.16,2.854-1.604,5.442-1.604
+ c3.121,0,5.48,0.682,5.48,1.568v0.887c0,0.342-0.152,0.479-0.457,0.479c-0.114,0-0.19-0.035-0.457-0.172
+ c-1.255-0.682-3.196-1.227-4.643-1.227c-2.892,0-4.871,1.432-4.871,3.479c0,1.33,0.761,2.352,2.436,3.443l4.833,3.104
+ c1.789,1.125,2.131,1.398,2.74,2.184c0.799,0.988,1.18,2.113,1.18,3.41c0,3.615-3.121,6.035-7.801,6.035
+ c-1.827,0-3.844-0.375-5.442-1.057C136.027,271.875,135.913,271.705,135.913,271.328z"/>
+ <path fill="#333333" d="M155.127,264.508c0-5.764,3.007-8.936,8.449-8.936c5.404,0,8.524,3.207,8.524,8.766
+ c0,5.934-2.931,9.072-8.486,9.072C158.134,273.41,155.127,270.238,155.127,264.508z M157.449,264.475
+ c0,4.74,2.283,7.502,6.203,7.502c3.881,0,6.126-2.729,6.126-7.4c0-4.842-2.169-7.57-6.126-7.57
+ C159.694,257.006,157.449,259.699,157.449,264.475z"/>
+ <path fill="#333333" d="M180.545,256.289v10.914c0,2.863,1.826,4.467,5.06,4.467c3.273,0,4.986-0.818,4.986-2.455v-12.926
+ c0-0.238,0.229-0.443,0.494-0.443h1.295c0.303,0,0.531,0.205,0.531,0.443v16.098c0,0.238-0.229,0.443-0.531,0.443h-0.914
+ c-0.342,0-0.494-0.137-0.494-0.375v-0.205c0-0.17-0.152-0.307-0.344-0.307c-0.037,0-0.113,0-0.229,0.033
+ c-0.113,0.035-0.189,0.068-0.227,0.068c-0.039,0.035-0.152,0.035-0.268,0.104c-2.359,0.715-3.729,0.953-5.289,0.953
+ c-1.789,0-3.349-0.408-4.453-1.227c-1.408-0.99-1.902-2.217-1.902-4.502v-11.084c0-0.238,0.229-0.443,0.494-0.443h1.294
+ C180.355,255.846,180.545,256.051,180.545,256.289z"/>
+ <path fill="#333333" d="M200.559,272.387v-16.098c0-0.238,0.229-0.443,0.494-0.443h0.951c0.305,0,0.457,0.137,0.457,0.375v0.375
+ c0,0.273,0.113,0.41,0.342,0.41c0.076,0,0.191-0.035,0.305-0.104c1.18-0.578,3.234-1.057,4.795-1.057h0.723
+ c0.572,0,0.801,0.17,0.801,0.682v0.75c0,0.41-0.191,0.58-0.572,0.58c-0.113,0-0.266,0-0.418-0.033
+ c-1.027-0.17-2.17-0.307-2.701-0.307c-2.018,0-2.855,0.75-2.855,2.455v12.414c0,0.238-0.229,0.443-0.531,0.443h-1.295
+ C200.787,272.83,200.559,272.625,200.559,272.387z"/>
+ <path fill="#333333" d="M227.906,270.885v0.717c0,0.854-2.588,1.535-5.746,1.535c-5.785,0-9.285-3.24-9.285-8.561
+ c0-5.525,3.615-9.037,9.248-9.037c3.158,0,5.783,0.785,5.783,1.738v0.58c0,0.273-0.152,0.443-0.418,0.443
+ c-0.115,0-0.191-0.033-0.57-0.203c-1.789-0.82-3.008-1.092-4.605-1.092c-4.377,0-7.115,2.83-7.115,7.434
+ c0,4.537,2.701,7.23,7.305,7.23c1.637,0,3.313-0.375,4.682-1.023c0.152-0.068,0.305-0.137,0.381-0.137
+ C227.793,270.51,227.906,270.646,227.906,270.885z"/>
+ <path fill="#333333" d="M234.867,263.895c0.039,2.83,0.344,4.059,1.371,5.389c0.57,0.75,1.369,1.33,2.207,1.705
+ c1.027,0.477,2.244,0.682,3.5,0.682c1.637,0,3.502-0.477,4.566-1.193c0.268-0.137,0.533-0.273,0.686-0.273
+ c0.229,0,0.342,0.17,0.342,0.443v0.613c0,0.955-2.777,1.842-5.783,1.842c-5.67,0-9.248-3.342-9.248-8.662
+ c0-5.217,3.539-8.867,8.525-8.867c4.375,0,7.686,2.967,7.686,6.992v0.887c0,0.273-0.227,0.443-0.494,0.443H234.867z
+ M234.867,262.463h11.531c-0.115-3.344-2.246-5.457-5.557-5.457C237.646,257.006,235.211,259.256,234.867,262.463z"/>
+ <path fill="#333333" d="M280.375,252.402l-5.67,19.678c-0.266,0.887-0.418,1.021-1.064,1.021h-1.447
+ c-0.646,0-0.76-0.102-1.104-1.021l-6.734-21.316c-0.039-0.102-0.039-0.203-0.039-0.271c0-0.273,0.229-0.41,0.686-0.41h1.256
+ c0.305,0,0.418,0.068,0.457,0.238l0.076,0.273l6.316,20.326l5.785-20.395c0.189-0.58,0.418-0.717,1.18-0.717h0.951
+ c0.723,0,0.951,0.172,1.141,0.717l5.898,20.395l6.051-20.395c0.115-0.375,0.191-0.443,0.572-0.443h1.027
+ c0.494,0,0.646,0.104,0.646,0.41c0,0.102-0.039,0.238-0.076,0.443l-6.697,21.178c-0.305,0.922-0.42,0.988-0.951,0.988h-1.523
+ c-0.646,0-0.76-0.102-1.027-0.988L280.375,252.402z"/>
+ <path fill="#333333" d="M312.723,263.895h-9.363l-3.311,8.629c-0.113,0.238-0.189,0.307-0.494,0.307h-0.875
+ c-0.494,0-0.686-0.137-0.686-0.443c0-0.068,0.039-0.238,0.076-0.375l8.068-20.838l0.229-0.613
+ c0.189-0.58,0.531-0.752,1.332-0.752h0.836c0.686,0,0.838,0.035,1.027,0.172c0.152,0.137,0.268,0.307,0.344,0.512
+ c0.076,0.137,0.152,0.375,0.305,0.682l8.182,20.871c0.037,0.104,0.076,0.273,0.076,0.342c0,0.307-0.229,0.443-0.686,0.443h-1.219
+ c-0.266,0-0.379-0.068-0.455-0.307L312.723,263.895z M312.037,262.189l-4.109-10.607l-3.92,10.607H312.037z"/>
+ <path fill="#333333" d="M326.113,251.822v8.047h8.334c0.305,0,0.533,0.205,0.533,0.443v0.854c0,0.238-0.229,0.443-0.533,0.443
+ h-8.334v10.777c0,0.238-0.229,0.443-0.533,0.443h-1.293c-0.266,0-0.494-0.205-0.494-0.443v-21.826
+ c0-0.273,0.229-0.479,0.494-0.479h12.102c0.266,0,0.494,0.205,0.494,0.479v0.818c0,0.238-0.229,0.443-0.494,0.443H326.113z"/>
+ </g>
+ <g>
+ <path d="M362.226,188.127h-2.243c-0.084,0-0.155-0.07-0.155-0.154v-1.092c0-0.084,0.071-0.156,0.155-0.156h6.404
+ c0.084,0,0.156,0.072,0.156,0.156v1.092c0,0.084-0.072,0.154-0.156,0.154h-2.242v6.441c0,0.084-0.072,0.156-0.156,0.156h-1.607
+ c-0.083,0-0.155-0.072-0.155-0.156V188.127z"/>
+ <path d="M372.736,192.889l2.015-5.984c0.048-0.145,0.097-0.18,0.323-0.18h2.004c0.084,0,0.156,0.072,0.156,0.156v7.688
+ c0,0.084-0.072,0.156-0.156,0.156h-1.607c-0.084,0-0.156-0.072-0.156-0.156v-5.758l-1.967,5.721
+ c-0.048,0.145-0.119,0.193-0.287,0.193h-1.176c-0.216,0-0.3-0.049-0.359-0.24l-1.848-5.674v5.758
+ c0,0.084-0.072,0.156-0.156,0.156h-1.127c-0.084,0-0.156-0.072-0.156-0.156v-7.688c0-0.084,0.072-0.156,0.156-0.156h2.123
+ c0.203,0,0.287,0.049,0.324,0.168L372.736,192.889z"/>
+ </g>
+ </g>
+</g>
+</svg>
470 documents/ironbee-whitepaper.xml
@@ -0,0 +1,470 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?oxygen RNGSchema="http://www.oasis-open.org/docbook/xml/5.0/rng/docbookxi.rng" type="xml"?>
+<article xmlns="http://docbook.org/ns/docbook" xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0">
+ <info>
+ <title>IronBee Open Source Web Application Firewall</title>
+ <subtitle>Building a universal web application firewall engine</subtitle>
+ <copyright>
+ <year>2011-2012</year>
+ <holder>Qualys</holder>
+ </copyright>
+ </info>
+ <section>
+ <title>Introduction</title>
+ <para>Qualys is announcing the development of IronBee, a new open source project to build a
+ universal web application security sensor. Our desire is not only to build the code and
+ the rules, but also to focus on building a community around the project. In fact, we
+ believe that building the community is the most important aspect of the project and the
+ only way to ensure that it has a long life.</para>
+ </section>
+ <section>
+ <title>The Need for Web Application Security Monitoring</title>
+ <para>Why do we need to monitor our web applications and provide additional protection
+ measures? Because software today is inherently
+ insecure<?oxy_insert_start author="nancy" timestamp="20110208T121442-0500"?>,<?oxy_insert_end?>
+ and we need to manage the situation. Consider the following contributing factors:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Software engineering is immature</term>
+ <listitem>
+ <para>We still have a long way to go until we learn how to build robust software
+ in a predictable and repeatable way. We are making good progress when it
+ comes to best practices, but the average developer still struggles.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Technology moves at a very fast pace</term>
+ <listitem>
+ <para>Innovation drives companies forward, but features often come first, and
+ security is an afterthought. We are playing catch-up all the time.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Businesses must move quickly</term>
+ <listitem>
+ <para>Security plays a relatively minor role in the success of a business, with
+ many other factors having far greater influence. There&#x2019;s a fine
+ balance between security, usability, and time to market. Businesses
+ generally focus on reaching the market as soon as possible, adopting a
+ <emphasis>we&#x2019;ll secure it if it succeeds</emphasis>
+ attitude.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Legacy applications</term>
+ <listitem>
+ <para>Not only do we have a large backlog of existing applications, but because
+ of the very fast pace of development, our new applications become old
+ virtually as soon as we deploy them.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>But what does <emphasis>manage the situation</emphasis> mean? The answer depends on
+ whom you ask. These are some of the common use cases for application security monitoring
+ and defense:</para>
+ <itemizedlist>
+ <listitem>
+ <para>Compliance</para>
+ </listitem>
+ <listitem>
+ <para>Virtual patching (usually for custom applications)</para>
+ </listitem>
+ <listitem>
+ <para>Protection against known exploits (usually for well-known applications)</para>
+ </listitem>
+ <listitem>
+ <para>Application hardening (raising the bar)</para>
+ </listitem>
+ <listitem>
+ <para>Real-time application security monitoring (also known as situational
+ awareness)</para>
+ </listitem>
+ <listitem>
+ <para>Passive continuous vulnerability assessment</para>
+ </listitem>
+ </itemizedlist>
+ </section>
+ <section>
+ <title>Toward a Universal Web Application Security Sensor</title>
+ <para>We are proposing that the security community design, build, and deploy a universal
+ application security sensor. We envision a flexible framework that will be used as a
+ foundational building block by all those concerned with application security
+ monitoring.</para>
+ <para>Standardization will bring the following advantages:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Higher quality and development cost savings</term>
+ <listitem>
+ <para>Developing an application security monitoring sensor is not a trivial job.
+ It requires substantial understanding of the key concepts, sustained
+ development effort, and security knowledge, as well as years of making and
+ fixing mistakes. It is an effort that requires extensive collaboration with
+ everyone in the security community. It is a job that is too big to do more
+ than once.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Universal availability</term>
+ <listitem>
+ <para>Organizations often incorporate diverse components into their
+ infrastructures using different software products. They also outsource parts
+ of their infrastructure to others. Having the same application security
+ framework available across the board is the most efficient way for an
+ organization to retain security control.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Portability of security logic</term>
+ <listitem>
+ <para>With universal availability of a common framework, we can approach the
+ ideal of <emphasis>write once, use everywhere</emphasis>. For example, a
+ rule that defends against a known problem in a popular web application can
+ be deployed everywhere, no matter what platform the application is deployed
+ on.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Information exchange</term>
+ <listitem>
+ <para>By being able to target a single platform and freely exchange information
+ on application security attacks and defenses, we hope to create a thriving
+ ecosystem for information exchange.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section>
+ <title>It&#x2019;s All About the Community</title>
+ <para>The success of IronBee depends on our ability to create the right conditions for the
+ community to form&#8212;and to inspire others to join it. If we succeed, IronBee will
+ flourish.</para>
+ <para>There are two key aspects to this success:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Liberal open source license</term>
+ <listitem>
+ <para>For a community to form and grow, everyone must be equal. Viral open
+ source licenses often exclude those with commercial interests and create
+ inequality (for example, when copyright assignment is required in order for
+ some code to become part of the official distribution). IronBee uses the
+ business-friendly Apache 2.0 software license and requires no copyright
+ assignment.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Sustainable community</term>
+ <listitem>
+ <para>The license makes us community-ready, but we are also taking the next step
+ toward making the project fully public and transparent, as a proper open
+ source project should be. Furthermore, we are structuring the project to
+ support a variety of challenges and implementation tasks designed to match
+ the variety of interests and skills of the community&#8212;providing
+ opportunities for everyone.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section>
+ <title>Key Technical Directions</title>
+ <para>These are our key technical directions:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Diversity of deployment modes</term>
+ <listitem>
+ <para>There is no best way to deploy an application security sensor. Some people
+ love the embedded sensor approach for its scalability; others accept only
+ the reverse proxy approach because it provides full isolation. There are
+ many reasons why different deployment modes exist&#8212;some technical, some
+ philosophical. The truth is that the real world is messy and that we must
+ deal with it. IronBee will look at a variety of deployment modes: passive,
+ embedded, reverse proxy, command-line (for batch processing), and
+ out-of-process (in which traffic is shipped for inspection outside the
+ process or server of origin).</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Portability</term>
+ <listitem>
+ <para>We use abstractions to make the bulk of the code independent from
+ environmental variations. Porting IronBee to a new environment (e.g., web
+ server or proxy) should require only the implementation of a very small
+ interface layer that deals with data acquisition.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Modularity</term>
+ <listitem>
+ <para>Modularity is important for two reasons. First, new developers should be
+ able to implement their ideas quickly, without having to understand how the
+ project as a whole works. We will enable this ease of usage with good APIs
+ and documentation. Second, deployment-time modularity allows end-users and
+ packagers to customize the sensor to perform well in their own
+ environments.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Powerful functionality</term>
+ <listitem>
+ <para>We are not forgetting the users. After all, the product must address the
+ core user needs in order to be successful. We are going to do this by
+ offering a range of features, each suitable for a particular requirement. We
+ will equally address security and usability needs with an easy-to-use
+ configuration language, advanced features for advanced users, and many
+ time-saving features on a high level of abstraction.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Technical quality</term>
+ <listitem>
+ <para>At the end of the day, it is very important that the sensor is of high
+ quality&#8212;secure, robust, and efficient. Our source code is just that,
+ with fully automated cross-platform builds and unit and regression
+ testing.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </section>
+ <section>
+ <title>Key Functional Directions</title>
+ <para>IronBee implements a robust framework for application security monitoring and defense.
+ It provides a layered set of features at different levels of abstraction, enabling its
+ users to choose the approach that works best for the work they need to
+ accomplish.</para>
+ <para>What follows is our vision of the operation of the framework, which we will use as a
+ starting point for determining the exact features we will implement:</para>
+ <orderedlist>
+ <?dbfo label-width="0.25in"?>
+ <listitem>
+ <para>Flexible data acquisition options (i.e., deployment modes)</para>
+ </listitem>
+ <listitem>
+ <para>Personality-based data processing that matches the parsing quirks in the
+ back-end</para>
+ </listitem>
+ <listitem>
+ <para>A persistent data model that mirrors real-life entities such as applications,
+ sessions, users, and IP addresses and that allows both short-term and long-term
+ activity tracking</para>
+ </listitem>
+ <listitem>
+ <para>Aggregation of historical data (from the internal data store) as well as the
+ information from external data sources, such as:</para>
+ <orderedlist>
+ <listitem>
+ <para>Geolocation information</para>
+ </listitem>
+ <listitem>
+ <para>IP address reputation</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ <listitem>
+ <para>User agent profiling</para>
+ </listitem>
+ <listitem>
+ <para>An efficient data retrieval and transformation engine that provides
+ transparent optimization and rule prequalification, ensuring that no time is
+ spent on needless or repetitive work</para>
+ </listitem>
+ <listitem>
+ <para>Multiple pattern matchers and support for streaming inspection</para>
+ </listitem>
+ <listitem>
+ <para>A choice of approaches to implement custom security logic:</para>
+ <orderedlist>
+ <listitem>
+ <para>Flexible rule language suitable for 80% of all work</para>
+ </listitem>
+ <listitem>
+ <para>A high-performing scripting platform (based on Lua) for the next
+ 19%</para>
+ </listitem>
+ <listitem>
+ <para>Support for compiled modules for the 1% of cases in which performance
+ is of the highest importance</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ <listitem>
+ <para>Inbound and outbound traffic analysis of:</para>
+ <orderedlist>
+ <listitem>
+ <para>Protocol compliance (blacklisting and whitelisting)</para>
+ </listitem>
+ <listitem>
+ <para>Common attack techniques</para>
+ </listitem>
+ <listitem>
+ <para>Evasion techniques (on the protocol and application levels)</para>
+ </listitem>
+ <listitem>
+ <para>Known exploits</para>
+ </listitem>
+ <listitem>
+ <para>Protection for vulnerabilities in popular applications (via
+ whitelisting)</para>
+ </listitem>
+ <listitem>
+ <para>Virtual patching (via whitelisting)</para>
+ </listitem>
+ <listitem>
+ <para>Information leakage</para>
+ </listitem>
+ <listitem>
+ <para>Error message detection</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ <listitem>
+ <para>Higher-level security modules:</para>
+ <orderedlist>
+ <listitem>
+ <para>Behavioral monitoring of IP addresses, sessions, and users </para>
+ </listitem>
+ <listitem>
+ <para>Brute force detection</para>
+ </listitem>
+ <listitem>
+ <para>DoS and DDoS detection</para>
+ </listitem>
+ <listitem>
+ <para>Cookie encryption and signing</para>
+ </listitem>
+ <listitem>
+ <para>Content security policy enforcement</para>
+ </listitem>
+ <listitem>
+ <para>Passive vulnerabilty scanning</para>
+ </listitem>
+ <listitem>
+ <para>User experience monitoring</para>
+ </listitem>
+ <listitem>
+ <para>XML parsing and validation</para>
+ </listitem>
+ </orderedlist>
+ </listitem>
+ <listitem>
+ <para>Policy decisions</para>
+ </listitem>
+ <listitem>
+ <para>Tailored defense</para>
+ </listitem>
+ <listitem>
+ <para>Interaction with external security systems (e.g., firewalls) and data
+ exchange</para>
+ </listitem>
+ </orderedlist>
+ </section>
+ <section>
+ <title>Rules</title>
+ <para>Having a good framework is great, but it is important to couple the framework with an
+ effective rule set that brings value to users across a broad spectrum:</para>
+ <variablelist>
+ <varlistentry>
+ <term>Complete security coverage </term>
+ <listitem>
+ <para>Rules should provide reasonably complete coverage of application security
+ issues.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Effectiveness</term>
+ <listitem>
+ <para>Rules should achieve their targets of detecting and preventing attacks,
+ making it impossible (in some cases) or substantially more difficult (in
+ others) for attackers to succeed.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Low rate of false positives</term>
+ <listitem>
+ <para>There should be a minimal and tolerable number of false positives to
+ handle.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Ease of use</term>
+ <listitem>
+ <para>Choosing what rules to run, how to respond to events, and how to create
+ exceptions should not be a burden on administrators.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Documentation</term>
+ <listitem>
+ <para>All rules should be well documented, with their purpose, coverage, and
+ side effects clearly explained.</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>Traceability</term>
+ <listitem>
+ <para>Every rule must be traced back to a need, which will allow users to make
+ an informed decision about whether that rule is needed in their
+ environment.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <para>Whenever possible, we will aim to remain compatible with existing solutions.</para>
+ </section>
+ <section>
+ <title>Status and Next Steps</title>
+ <para>At this time, we are looking for early adopters and those who wish to participate in
+ shaping the project:</para>
+ <itemizedlist>
+ <listitem>
+ <para><emphasis role="bold">Developers</emphasis> to work on the IronBee core and on
+ the security modules</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Application defenders</emphasis> to tell us what they
+ need and to provide feedback on our proposed solutions (e.g., configuration
+ language, signature language)</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Application security researchers</emphasis> to exchange
+ attack information, to write signatures and rules, and to design new detection
+ and protection techniques</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Web server and proxy developers</emphasis> to help us
+ make IronBee work in their environments</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Distribution maintainers</emphasis> to package IronBee
+ to run on their systems</para>
+ </listitem>
+ <listitem>
+ <para><emphasis role="bold">Infrastructure and cloud providers</emphasis> to help
+ make IronBee effective for embedding into their infrastructures</para>
+ </listitem>
+ </itemizedlist>
+ <para>We are very excited to have this opportunity to work on a critical piece of security
+ infrastructure in partnership with other members of the security community. We hope that
+ you will share our enthusiasm and join us.</para>
+ </section>
+ <section>
+ <title>Schedule</title>
+ <para>Our development roadmap is located in the IronBee wiki. We are not assigning deadlines
+ to milestones, but, roughly, we are working toward a goal is to have a robust version
+ ready by the mid-2012.</para>
+ </section>
+ <section>
+ <title>About Qualys</title>
+ <para>Qualys, Inc. (<link xlink:href="http://www.qualys.com">www.qualys.com</link>) is the
+ leading provider of on-demand IT security risk and compliance management solutions
+ delivered as a service. Qualys&#x2019;s Software-as-a-Service solutions are deployed in a matter
+ of hours anywhere in the world, providing customers with an immediate and continuous
+ view of their security and compliance postures. The QualysGuard&#8482; service is used today by
+ more than 3,500 organizations in 85 countries, including 40 of the Fortune Global 100;
+ QualysGuard performs more than 200 million IP audits per year. Qualys has the largest
+ vulnerability management deployment in the world at a Fortune Global 50 company. Qualys
+ has established strategic agreements with leading managed service providers and
+ consulting organizations, including BT, Etisalat, Fujitsu, IBM, I(TS)2, LAC,
+ SecureWorks, Symantec, Tata Communications, TELUS, and VeriSign.</para>
+ <para><emphasis>Copyright &#xa9; 2011-2012 Qualys, Inc. All rights
+ reserved.</emphasis></para>
+ </section>
+</article>
569 documents/pdf.xsl
@@ -0,0 +1,569 @@
+<?xml version="1.0"?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:d="http://docbook.org/ns/docbook"
+ exclude-result-prefixes="d" version="1.0">
+
+ <xsl:import href="../manual/docbook-xsl-ns-1.76.1/fo/docbook.xsl"/>
+
+ <!-- Specify font families for the entire document -->
+ <xsl:param name="fd.mono.font.family">Courier</xsl:param>
+ <xsl:param name="fd.body.font.family">PT Serif</xsl:param>
+ <xsl:param name="fd.title.font.family">Arimo</xsl:param>
+
+ <xsl:param name="admon.graphics" select="0"></xsl:param>
+
+ <!-- The following must be enabled to prevent a FOP exception, not sure why -->
+ <xsl:param name="fop1.extensions">1</xsl:param>
+
+ <xsl:param name="draft.mode">0</xsl:param>
+ <xsl:param name="draft.watermark.image"></xsl:param>
+
+ <!-- Page formatting -->
+ <xsl:param name="paper.type">A4</xsl:param>
+
+ <xsl:param name="page.margin.inner">1.0in</xsl:param>
+ <xsl:param name="page.margin.outer">1.0in</xsl:param>
+
+ <xsl:param name="page.margin.top">2.4cm</xsl:param>
+ <xsl:param name="body.margin.top">0.4cm</xsl:param>
+ <xsl:param name="region.before.extent">0cm</xsl:param>
+
+ <xsl:param name="region.after.extent">0.4cm</xsl:param>
+ <xsl:param name="body.margin.bottom">0.6cm</xsl:param>
+ <xsl:param name="page.margin.bottom">2.4cm</xsl:param>
+
+ <xsl:param name="double.sided">0</xsl:param>
+
+ <!-- Body text -->
+ <xsl:param name="body.font.family">
+ <xsl:value-of select="$fd.body.font.family" />
+ </xsl:param>
+ <xsl:param name="body.font.master">10</xsl:param>
+ <xsl:param name="body.start.indent">0pt</xsl:param>
+ <xsl:param name="body.space-before.optimum">10pt</xsl:param>
+ <xsl:param name="line-height">1.4</xsl:param>
+
+ <xsl:param name="default.table.width">100%</xsl:param>
+
+ <xsl:param name="xref.with.number.and.title" select="0"></xsl:param>
+
+ <!-- Titles -->
+ <xsl:param name="title.font.family">
+ <xsl:value-of select="$fd.title.font.family" />
+ </xsl:param>
+
+ <!-- Monospaced text -->
+ <xsl:attribute-set name="monospace.verbatim.properties">
+ <xsl:attribute name="font-family">
+ <xsl:value-of select="$fd.mono.font.family" />
+ </xsl:attribute>
+ <xsl:attribute name="font-size">9pt</xsl:attribute>
+ <xsl:attribute name="start-indent">0.15in</xsl:attribute>
+ <xsl:attribute name="end-indent">0.05in</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Quotations -->
+ <xsl:attribute-set name="blockquote.properties">
+ <xsl:attribute name="font-style">italic</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Variable lists: render as blocks -->
+ <xsl:param name="variablelist.term.break.after">0</xsl:param>
+ <xsl:param name="variablelist.as.blocks">1</xsl:param>
+
+ <!-- Variable lists: make the term bold -->
+ <xsl:template match="d:varlistentry/d:term">
+ <fo:inline font-weight="bold">
+ <xsl:call-template name="simple.xlink">
+ <xsl:with-param name="content">
+ <xsl:apply-templates />
+ </xsl:with-param>
+ </xsl:call-template>
+ </fo:inline>
+ <xsl:choose>
+ <xsl:when test="not(following-sibling::term)" />
+ <!-- do nothing -->
+ <xsl:otherwise>
+ <!-- * if we have multiple terms in the same varlistentry, generate -->
+ <!-- * a separator (", " by default) and/or an additional line -->
+ <!-- * break after each one except the last -->
+ <fo:inline>
+ <xsl:value-of select="$variablelist.term.separator" />
+ </fo:inline>
+ <xsl:if test="not($variablelist.term.break.after = '0')">
+ <fo:block />
+ </xsl:if>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:template>
+
+ <!-- Side bar -->
+ <xsl:attribute-set name="sidebar.properties" use-attribute-sets="formal.object.properties">
+ <xsl:attribute name="border-style">solid</xsl:attribute>
+ <xsl:attribute name="border-width">0.5pt</xsl:attribute>
+ <xsl:attribute name="border-color">black</xsl:attribute>
+ <xsl:attribute name="background-color">#ffffff</xsl:attribute>
+ <xsl:attribute name="padding-left">12pt</xsl:attribute>
+ <xsl:attribute name="padding-right">12pt</xsl:attribute>
+ <xsl:attribute name="padding-top">6pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">6pt</xsl:attribute>
+ <xsl:attribute name="margin-left">0pt</xsl:attribute>
+ <xsl:attribute name="margin-right">0pt</xsl:attribute>
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="list.block.properties">
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="sidebar.title.properties">
+ <xsl:attribute name="font-size">14pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="text-align">center</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.2cm</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0.2cm</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.2cm</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.2cm</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.2cm</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.2cm</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- User input -->
+ <xsl:template match="d:userinput">
+ <xsl:param name="content">
+ <xsl:apply-templates />
+ </xsl:param>
+ <fo:inline font-family="{$fd.mono.font.family}" font-weight="bold" font-size="100%">
+ <xsl:copy-of select="$content" />
+ </fo:inline>
+ </xsl:template>
+
+ <!-- Inline -->
+ <xsl:template name="inline.monoseq">
+ <xsl:param name="content">
+ <xsl:apply-templates />
+ </xsl:param>
+ <fo:inline font-family="{$fd.mono.font.family}" font-size="90%">
+ <xsl:copy-of select="$content" />
+ </fo:inline>
+ </xsl:template>
+
+ <!-- Header column widths. -->
+ <xsl:param name="footer.column.widths">1 1 1</xsl:param>
+
+ <!-- Remove whitespace after blockquote elements, because it
+ always contains a <para>, which has its own whitespace. -->
+ <xsl:attribute-set name="blockquote.properties">
+ <xsl:attribute name="margin-left">0.5in</xsl:attribute>
+ <xsl:attribute name="margin-right">0.5in</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Paragraph spacing. -->
+ <xsl:attribute-set name="normal.para.spacing">
+ <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.0em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.0em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.0em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- List item spacing -->
+ <xsl:attribute-set name="list.item.spacing">
+ <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.0em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.0em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.0em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- List block spacing -->
+ <xsl:attribute-set name="list.block.spacing">
+ <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="margin-left">0.15in</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Section spacing -->
+ <xsl:attribute-set name="section.title.properties">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="keep-with-next.within-column">always</xsl:attribute>
+ <xsl:attribute name="text-align">left</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">1.4em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.4em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.2em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.2em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.2em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="section.title.level1.properties">
+ <xsl:attribute name="font-size">17pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">1.4em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.4em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="section.title.level2.properties">
+ <xsl:attribute name="font-size">16pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.2em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0.2em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="section.title.level3.properties">
+ <xsl:attribute name="font-size">14pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.2em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0.2em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.2em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="section.title.level4.properties">
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">1.0em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">1.0em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Change admonition font -->
+ <xsl:attribute-set name="admonition.title.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$fd.title.font.family" /></xsl:attribute>
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0pt</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="admonition.properties">
+ <xsl:attribute name="font-size">11pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Add rules to admonitions -->
+ <xsl:template name="nongraphical.admonition">
+ <xsl:variable name="id">
+ <xsl:call-template name="object.id" />
+ </xsl:variable>
+
+ <fo:block space-before.minimum="1em" space-before.optimum="1em" space-before.maximum="1em"
+ start-indent="0.50in" end-indent="0.50in"
+ border-left="4pt solid #808080" padding-left="8pt" padding-top="2pt" padding-bottom="0pt"
+ space-after.minimum="1em" space-after.optimum="1em" space-after.maximum="1em" id="{$id}">
+ <xsl:if test="$admon.textlabel != 0 or title">
+ <fo:block keep-with-next="always"
+ xsl:use-attribute-sets="admonition.title.properties">
+ <xsl:apply-templates select="." mode="object.title.markup" />
+ </fo:block>
+ </xsl:if>
+
+ <fo:block xsl:use-attribute-sets="admonition.properties">
+ <xsl:apply-templates />
+ </fo:block>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Added to prevent chapters to have a TOC when standalone. -->
+ <xsl:param name="generate.toc">nop</xsl:param>
+
+ <!-- Table cell padding -->
+ <xsl:attribute-set name="table.cell.padding">
+ <xsl:attribute name="padding-left">6pt</xsl:attribute>
+ <xsl:attribute name="padding-right">6pt</xsl:attribute>
+ <xsl:attribute name="padding-top">3pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">3pt</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Table and figure title -->
+ <xsl:attribute-set name="formal.title.properties">
+ <xsl:attribute name="font-family"><xsl:value-of select="$fd.title.font.family" /></xsl:attribute>
+ <xsl:attribute name="font-size">10pt</xsl:attribute>
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.minimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.4em</xsl:attribute>
+ <xsl:attribute name="space-after.maximum">0.4em</xsl:attribute>
+ <xsl:attribute name="keep-together">always</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:attribute-set name="formal.object.properties">
+ <xsl:attribute name="keep-together.within-page">always</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Table text at 9pt, headings bold. -->
+ <xsl:template name="table.cell.block.properties">
+ <xsl:if test="ancestor::d:thead or ancestor::d:tfoot">
+ <xsl:attribute name="font-weight">bold</xsl:attribute>
+ </xsl:if>
+ <xsl:attribute name="font-size">9pt</xsl:attribute>
+ <xsl:attribute name="font-family"><xsl:value-of select="$fd.title.font.family" /></xsl:attribute>
+ </xsl:template>
+
+ <xsl:param name="default.table.frame">topbot</xsl:param>
+ <xsl:param name="table.frame.border.thickness">0.5pt</xsl:param>
+
+ <!-- Modified the template below to fix cell borders -->
+ <xsl:template name="table.cell.properties">
+ <xsl:param name="bgcolor.pi" select="''"/>
+ <xsl:param name="rowsep.inherit" select="1"/>
+ <xsl:param name="colsep.inherit" select="1"/>
+ <xsl:param name="col" select="1"/>
+ <xsl:param name="valign.inherit" select="''"/>
+ <xsl:param name="align.inherit" select="''"/>
+ <xsl:param name="char.inherit" select="''"/>
+
+ <!-- Added -->
+ <xsl:attribute name="border">0.0pt solid black</xsl:attribute>
+ <xsl:if test="ancestor::d:thead or ancestor::d:tfoot">
+ <xsl:attribute name="border-bottom">0.5pt solid black</xsl:attribute>
+ <xsl:attribute name="padding-top">5pt</xsl:attribute>
+ <xsl:attribute name="padding-bottom">5pt</xsl:attribute>
+ </xsl:if>
+ <!-- /Added -->
+
+ <xsl:choose>
+ <xsl:when test="ancestor::d:tgroup">
+ <!-- Removed
+ <xsl:if test="$bgcolor.pi != ''">
+ <xsl:attribute name="background-color">
+ <xsl:value-of select="$bgcolor.pi"/>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:if test="$rowsep.inherit &gt; 0">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'bottom'"/>
+ </xsl:call-template>
+ </xsl:if>
+
+ <xsl:if test="$colsep.inherit &gt; 0 and
+ $col &lt; (ancestor::d:tgroup/@cols|ancestor::d:entrytbl/@cols)[last()]">
+ <xsl:call-template name="border">
+ <xsl:with-param name="side" select="'right'"/>
+ </xsl:call-template>
+ </xsl:if>
+ -->
+
+ <xsl:if test="$valign.inherit != ''">
+ <xsl:attribute name="display-align">
+ <xsl:choose>
+ <xsl:when test="$valign.inherit='top'">before</xsl:when>
+ <xsl:when test="$valign.inherit='middle'">center</xsl:when>
+ <xsl:when test="$valign.inherit='bottom'">after</xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ <xsl:text>Unexpected valign value: </xsl:text>
+ <xsl:value-of select="$valign.inherit"/>
+ <xsl:text>, center used.</xsl:text>
+ </xsl:message>
+ <xsl:text>center</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ </xsl:if>
+
+ <xsl:choose>
+ <xsl:when test="$align.inherit = 'char' and $char.inherit != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$char.inherit"/>
+ </xsl:attribute>
+ </xsl:when>
+ <xsl:when test="$align.inherit != ''">
+ <xsl:attribute name="text-align">
+ <xsl:value-of select="$align.inherit"/>
+ </xsl:attribute>
+ </xsl:when>
+ </xsl:choose>
+
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- HTML table -->
+ <!-- Removed
+ <xsl:variable name="border"
+ select="(ancestor::d:table |
+ ancestor::d:informaltable)[last()]/@border"/>
+ <xsl:if test="$border != '' and $border != 0">
+ <xsl:attribute name="border">
+ <xsl:value-of select="$table.cell.border.thickness"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$table.cell.border.style"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$table.cell.border.color"/>
+ </xsl:attribute>
+ </xsl:if>
+ -->
+ </xsl:otherwise>
+ </xsl:choose>
+
+ </xsl:template>
+
+ <!-- Adjust index dividing title properties: no bold, more space after. -->
+ <xsl:attribute-set name="index.div.title.properties">
+ <xsl:attribute name="font-weight">normal</xsl:attribute>
+ <xsl:attribute name="space-after.optimum">0.5em</xsl:attribute>
+ </xsl:attribute-set>
+
+ <xsl:template match="processing-instruction('linebreak')">
+ <fo:block/>
+ </xsl:template>
+
+ <xsl:template name="header.content">
+ <!-- No page headers -->
+ </xsl:template>
+
+ <xsl:template name="head.sep.rule">
+ <!-- No head rule -->
+ </xsl:template>
+
+ <xsl:template name="foot.sep.rule">
+ <!-- No foot rule -->
+ </xsl:template>
+
+ <xsl:template name="footer.content">
+ <xsl:param name="pageclass" select="''"/>
+ <xsl:param name="sequence" select="''"/>
+ <xsl:param name="position" select="''"/>
+ <xsl:param name="gentext-key" select="''"/>
+
+ <fo:block>
+ <!-- pageclass can be front, body, back (and 'lot', apparently ?!)-->
+ <!-- sequence can be odd, even, first, blank -->
+ <!-- position can be left, center, right -->
+ <xsl:choose>
+ <xsl:when test="($pageclass = 'titlepage') or ($pageclass = 'body' and $sequence = 'first')">
+ <!-- nop; no footer on title pages -->
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and $sequence = 'even' and $position='left'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or sequence = 'first') and $position = 'left'">
+ <fo:retrieve-marker retrieve-class-name="section.head.marker"
+ retrieve-position="first-including-carryover"
+ retrieve-boundary="page-sequence"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first') and $position = 'right'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided != 0 and ($sequence = 'even' or $sequence = 'first') and $position = 'right' and $pageclass != 'lot'">
+ <xsl:apply-templates select="." mode="object.title.markup"/>
+ </xsl:when>
+
+ <xsl:when test="$double.sided = 0 and $position='center'">
+ <fo:page-number/>
+ </xsl:when>
+
+ <xsl:when test="$sequence = 'blank'">
+ <xsl:choose>
+ <xsl:when test="$double.sided != 0 and $position = 'left'">
+ <fo:page-number/>
+ </xsl:when>
+ <xsl:when test="$double.sided = 0 and $position = 'center'">
+ <fo:page-number/>
+ </xsl:when>
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:when>
+
+ <xsl:otherwise>
+ <!-- nop -->
+ </xsl:otherwise>
+ </xsl:choose>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Break after TOC. -->
+ <xsl:template name="component.toc.separator">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page" />
+ </xsl:template>
+
+ <!-- Style the article abstract. -->
+ <xsl:template match="d:abstract" mode="article.titlepage.recto.auto.mode">
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" xsl:use-attribute-sets="article.titlepage.recto.style"
+ space-before="5.0em" space-after="1.0em" text-align="justify"
+ margin-left="0.5in" margin-right="0.5in" font-family="{$body.fontset}"
+ >
+ <xsl:apply-templates select="." mode="article.titlepage.recto.mode"/>
+ </fo:block>
+ </xsl:template>
+
+ <!-- Image at the bottom of the cover -->
+ <xsl:template name="article.titlepage.before.verso">
+ <fo:block-container absolute-position="fixed" top="200mm">
+ <fo:table table-layout="fixed" width="100%" break-after="page">
+ <fo:table-column column-width="proportional-column-width(1)"/>
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell display-align="center">
+ <fo:block text-align="center" font-size="60pt" line-height="50pt">
+ <fo:basic-link external-destination="url(https://www.ironbee.com)">
+ <fo:external-graphic content-width="6.5cm"
+ src="url(ironbee-logo.svg)"/>
+ </fo:basic-link>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ <fo:table-row>
+ <fo:table-cell display-align="center">
+ <fo:block text-align="center">
+ <fo:basic-link external-destination="url(https://www.ironbee.com)"
+ >www.ironbee.com</fo:basic-link>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+ </fo:block-container>
+
+ <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format" break-after="page"/>
+
+ </xsl:template>
+
+ <!-- Do not show the URLs we link to. -->
+ <xsl:param name="ulink.show" select="0"></xsl:param>
+
+ <xsl:attribute-set name="xref.properties">
+ <xsl:attribute name="text-decoration">underline</xsl:attribute>
+ </xsl:attribute-set>
+
+ <!-- Cover title -->
+ <xsl:template name="article.titlepage.recto">
+ <fo:block-container absolute-position="fixed" top="80mm">
+ <fo:table margin-left="20mm" margin-right="20mm">
+ <fo:table-body>
+ <fo:table-row>
+ <fo:table-cell>
+ <fo:block text-align="center" font-size="28pt" line-height="36pt"
+ font-weight="bold" font-family="Arimo">
+ <xsl:apply-templates mode="titlepage.mode"
+ select="d:info/d:title"/>
+ </fo:block>
+
+ <fo:block text-align="center" font-size="14pt" line-height="20pt"
+ font-family="Arimo" padding-before="20pt">
+ <xsl:apply-templates mode="titlepage.mode"
+ select="d:info/d:subtitle"/>
+ </fo:block>
+ </fo:table-cell>
+ </fo:table-row>
+ </fo:table-body>
+ </fo:table>
+
+ </fo:block-container>
+ </xsl:template>
+
+</xsl:stylesheet>
10 manual/Makefile.am
@@ -0,0 +1,10 @@
+clean-local:
+ rm -rf output
+
+output: *.xml *.xsl *.xpr *.sh
+ @echo "Building docbook manual..."; \
+ if test -n "$(JAVA)"; then \
+ ./generate-docs.sh \
+ else \
+ echo "You need java installed to build the manual."; \
+ fi;
8 manual/ch00-preface.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<preface version="5.0" xmlns="http://docbook.org/ns/docbook"
+ xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xi="http://www.w3.org/2001/XInclude"
+ xmlns:svg="http://www.w3.org/2000/svg" xmlns:m="http://www.w3.org/1998/Math/MathML"
+ xmlns:html="http://www.w3.org/1999/xhtml" xml:id="preface">
+ <title>Preface</title>
+ <para>...</para>
+</preface>
347 manual/ch01-introduction.xml