You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@storm.apache.org by pt...@apache.org on 2016/01/15 17:22:59 UTC

[01/24] storm git commit: STORM-1468: remove {master}/docs

Repository: storm
Updated Branches:
  refs/heads/master bc9e73505 -> be8f3eea5


http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/storm_logo_tagline_color copy.png
----------------------------------------------------------------------
diff --git a/docs/images/storm_logo_tagline_color copy.png b/docs/images/storm_logo_tagline_color copy.png
deleted file mode 100644
index 8fe0895..0000000
Binary files a/docs/images/storm_logo_tagline_color copy.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/storm_logo_tagline_color.png
----------------------------------------------------------------------
diff --git a/docs/images/storm_logo_tagline_color.png b/docs/images/storm_logo_tagline_color.png
deleted file mode 100644
index 56233ea..0000000
Binary files a/docs/images/storm_logo_tagline_color.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/top_bg.gif
----------------------------------------------------------------------
diff --git a/docs/images/top_bg.gif b/docs/images/top_bg.gif
deleted file mode 100644
index fb13d3f..0000000
Binary files a/docs/images/top_bg.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/topology.png
----------------------------------------------------------------------
diff --git a/docs/images/topology.png b/docs/images/topology.png
deleted file mode 100644
index 3b29bfb..0000000
Binary files a/docs/images/topology.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/topology.svg
----------------------------------------------------------------------
diff --git a/docs/images/topology.svg b/docs/images/topology.svg
deleted file mode 100644
index 0f4f58f..0000000
--- a/docs/images/topology.svg
+++ /dev/null
@@ -1,1044 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="535.52631"
-   height="319.73685"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="topology.svg"
-   inkscape:export-filename="/Users/evans/src/storm/docs/images/topology.png"
-   inkscape:export-xdpi="107.52592"
-   inkscape:export-ydpi="107.52592">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="386.38"
-       y1="81.633003"
-       gradientTransform="translate(28.11,-1.7569)"
-       x2="433.48999"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="130.03"
-       id="linearGradient3686" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="244.60001"
-       y1="81.633003"
-       gradientTransform="translate(-28.11,1.7569)"
-       x2="288.82001"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="178.42999"
-       id="linearGradient3684" />
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3129"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3131"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="36.732106"
-     inkscape:cy="116.46518"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1347"
-     inkscape:window-height="874"
-     inkscape:window-x="29"
-     inkscape:window-y="90"
-     inkscape:window-maximized="0"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-14.473684,-670.78326)">
-    <g
-       id="g3240"
-       inkscape:export-filename="/Users/evans/storm_images/images/topology.png"
-       inkscape:export-xdpi="121.52501"
-       inkscape:export-ydpi="121.52501">
-      <g
-         id="g3352"
-         transform="matrix(0.36856045,0,0,0.36857838,-88.928261,602.61314)">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3354"
-           width="160"
-           height="160"
-           x="362.52631"
-           y="345.02008" />
-        <rect
-           transform="matrix(-0.00975266,0.99995244,-0.9999666,-0.00817331,0,0)"
-           y="-492.97839"
-           x="447.45413"
-           height="21.696198"
-           width="24.347038"
-           id="rect3356"
-           style="fill:url(#linearGradient3129);fill-opacity:1;stroke:none" />
-        <path
-           sodipodi:nodetypes="cccccccccccc"
-           inkscape:connector-curvature="0"
-           id="path3358"
-           d="m 393.00281,403.51244 41.45112,-0.39622 0.88112,-14.12176 -17.03772,-1.04253 0.3336,-10.06427 43.6265,0.74442 -0.37641,10.73252 -14.97353,-0.0513 -0.39461,14.50865 c 41.37718,-0.98045 45.3577,0.18812 43.51217,47.03851 l -24.58416,0.68261 c 0.38224,-23.64611 8.10402,-20.71225 -73.3201,-19.97252"
-           style="fill:none;stroke:#000000;stroke-width:5.34683466;stroke-miterlimit:4;stroke-opacity:1" />
-      </g>
-      <g
-         transform="matrix(0.36585686,0,0,0.36559428,197.08396,682.25518)"
-         id="g3380">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3382"
-           width="160"
-           height="160"
-           x="127"
-           y="294.36218" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="path3384"
-           sodipodi:cx="156"
-           sodipodi:cy="321.36218"
-           sodipodi:rx="67"
-           sodipodi:ry="67"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           transform="translate(52,51)" />
-        <path
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           inkscape:transform-center-x="12.504614"
-           inkscape:transform-center-y="21.9744"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           id="path3386"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccc" />
-      </g>
-      <g
-         id="g3396"
-         transform="matrix(0.36585686,0,0,0.36559428,402.29449,620.41307)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3398"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3400"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3402"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-      <g
-         transform="matrix(0.36585686,0,0,0.36559428,412.16292,790.8078)"
-         id="g3404">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3406"
-           width="160"
-           height="160"
-           x="127"
-           y="294.36218" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="path3408"
-           sodipodi:cx="156"
-           sodipodi:cy="321.36218"
-           sodipodi:rx="67"
-           sodipodi:ry="67"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           transform="translate(52,51)" />
-        <path
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           inkscape:transform-center-x="12.504614"
-           inkscape:transform-center-y="21.9744"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           id="path3410"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccc" />
-      </g>
-      <g
-         id="g3444"
-         transform="matrix(0.49617624,0,0,0.49617624,298.85114,709.03251)">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3446"
-           width="305.80826"
-           height="41.785706"
-           x="13.139097"
-           y="418.80951" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3448"
-           width="284.24814"
-           height="3.2142835"
-           x="22.424812"
-           y="450.59521" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3450"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.4794213,0,0,1,-776.39922,215.06087)" />
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3452"
-           width="90.913727"
-           height="19.697975"
-           x="19.944036"
-           y="423.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="38.242294"
-           y="438.92831"
-           id="text3454"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3456"
-             x="38.242294"
-             y="438.92831">Tuple</tspan></text>
-        <rect
-           y="422.31183"
-           x="122.94403"
-           height="19.697975"
-           width="90.913727"
-           id="rect3458"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3460"
-           y="437.92831"
-           x="141.24231"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="437.92831"
-             x="141.24231"
-             id="tspan3462"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3464"
-           width="90.913727"
-           height="19.697975"
-           x="222.94405"
-           y="422.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="241.24231"
-           y="437.92831"
-           id="text3466"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3468"
-             x="241.24231"
-             y="437.92831">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3470"
-         transform="matrix(0.43594488,-0.19758848,0.19758848,0.43594488,224.74712,663.19646)">
-        <rect
-           y="362.88846"
-           x="15.112782"
-           height="41.785706"
-           width="305.80826"
-           id="rect3472"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="394.67416"
-           x="24.398497"
-           height="3.2142835"
-           width="284.24814"
-           id="rect3474"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.4794213,0,0,1,-774.42554,159.13982)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3476"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           y="367.39078"
-           x="21.917721"
-           height="19.697975"
-           width="90.913727"
-           id="rect3478"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3480"
-           y="383.00726"
-           x="40.215977"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="383.00726"
-             x="40.215977"
-             id="tspan3482"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3484"
-           width="90.913727"
-           height="19.697975"
-           x="124.91772"
-           y="366.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="143.21599"
-           y="382.00726"
-           id="text3486"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3488"
-             x="143.21599"
-             y="382.00726">Tuple</tspan></text>
-        <rect
-           y="366.39078"
-           x="224.91772"
-           height="19.697975"
-           width="90.913727"
-           id="rect3490"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3492"
-           y="382.00726"
-           x="243.21599"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="382.00726"
-             x="243.21599"
-             id="tspan3494"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.43661378,-0.19610597,0.19610597,0.43661378,25.256319,713.34855)"
-         id="g3496">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3498"
-           width="305.80826"
-           height="41.785706"
-           x="15.112782"
-           y="362.88846" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3500"
-           width="284.24814"
-           height="3.2142835"
-           x="24.398497"
-           y="394.67416" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3502"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.4794213,0,0,1,-774.42554,159.13982)" />
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3504"
-           width="90.913727"
-           height="19.697975"
-           x="21.917721"
-           y="367.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="40.215977"
-           y="383.00726"
-           id="text3506"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3508"
-             x="40.215977"
-             y="383.00726">Tuple</tspan></text>
-        <rect
-           y="366.39078"
-           x="124.91772"
-           height="19.697975"
-           width="90.913727"
-           id="rect3510"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3512"
-           y="382.00726"
-           x="143.21599"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="382.00726"
-             x="143.21599"
-             id="tspan3514"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3516"
-           width="90.913727"
-           height="19.697975"
-           x="224.91772"
-           y="366.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="243.21599"
-           y="382.00726"
-           id="text3518"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3520"
-             x="243.21599"
-             y="382.00726">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.48017674,0.12498463,-0.12498463,0.48017674,149.88483,684.78836)"
-         id="g3522">
-        <rect
-           y="418.80951"
-           x="13.139097"
-           height="41.785706"
-           width="305.80826"
-           id="rect3524"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="450.59521"
-           x="22.424812"
-           height="3.2142835"
-           width="284.24814"
-           id="rect3526"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.4794213,0,0,1,-776.39922,215.06087)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3528"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           y="423.31183"
-           x="19.944036"
-           height="19.697975"
-           width="90.913727"
-           id="rect3530"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3532"
-           y="438.92831"
-           x="38.242294"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="438.92831"
-             x="38.242294"
-             id="tspan3534"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3536"
-           width="90.913727"
-           height="19.697975"
-           x="122.94403"
-           y="422.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="141.24231"
-           y="437.92831"
-           id="text3538"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3540"
-             x="141.24231"
-             y="437.92831">Tuple</tspan></text>
-        <rect
-           y="422.31183"
-           x="222.94405"
-           height="19.697975"
-           width="90.913727"
-           id="rect3542"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3544"
-           y="437.92831"
-           x="241.24231"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="437.92831"
-             x="241.24231"
-             id="tspan3546"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.36856045,0,0,0.36857838,-88.928261,733.29735)"
-         id="g3362">
-        <rect
-           y="345.02008"
-           x="362.52631"
-           height="160"
-           width="160"
-           id="rect3364"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient3131);fill-opacity:1;stroke:none"
-           id="rect3366"
-           width="24.347038"
-           height="21.696198"
-           x="447.45413"
-           y="-492.97839"
-           transform="matrix(-0.00975266,0.99995244,-0.9999666,-0.00817331,0,0)" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5.34683466;stroke-miterlimit:4;stroke-opacity:1"
-           d="m 393.00281,403.51244 41.45112,-0.39622 0.88112,-14.12176 -17.03772,-1.04253 0.3336,-10.06427 43.6265,0.74442 -0.37641,10.73252 -14.97353,-0.0513 -0.39461,14.50865 c 41.37718,-0.98045 45.3577,0.18812 43.51217,47.03851 l -24.58416,0.68261 c 0.38224,-23.64611 8.10402,-20.71225 -73.3201,-19.97252"
-           id="path3368"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccccccc" />
-      </g>
-      <g
-         id="g3388"
-         transform="matrix(0.36585686,0,0,0.36559428,202.3208,790.14991)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3390"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3392"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3394"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-      <g
-         id="g3592"
-         transform="matrix(0.53224467,-0.19709421,0.19709421,0.53224467,-226.54789,504.58613)">
-        <rect
-           y="605.64807"
-           x="394.59216"
-           height="35.238228"
-           width="253.96045"
-           id="rect3594"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="632.45319"
-           x="397.81766"
-           height="2.7106316"
-           width="240.3839"
-           id="rect3596"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.2476081,0,0,0.84330818,-276.27173,433.82517)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3598"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3600"
-           width="76.668289"
-           height="16.611464"
-           x="398.37579"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="413.80685"
-           y="621.77112"
-           id="text3602"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3604"
-             x="413.80685"
-             y="621.77112">Tuple</tspan></text>
-        <rect
-           y="608.60162"
-           x="482.7066"
-           height="16.611464"
-           width="76.668289"
-           id="rect3606"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3608"
-           y="621.77112"
-           x="498.1377"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="498.1377"
-             id="tspan3610"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3612"
-           width="76.668289"
-           height="16.611464"
-           x="567.88074"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="583.31177"
-           y="621.77112"
-           id="text3614"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3616"
-             x="583.31177"
-             y="621.77112">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.55323305,0.1267427,-0.1267427,0.55323305,164.99997,312.07406)"
-         id="g3664">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3666"
-           width="253.96045"
-           height="35.238228"
-           x="394.59216"
-           y="605.64807" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3668"
-           width="240.3839"
-           height="2.7106316"
-           x="397.81766"
-           y="632.45319" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3670"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.2476081,0,0,0.84330818,-276.27173,433.82517)" />
-        <rect
-           y="608.60162"
-           x="398.37579"
-           height="16.611464"
-           width="76.668289"
-           id="rect3672"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3674"
-           y="621.77112"
-           x="413.80685"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="413.80685"
-             id="tspan3676"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3678"
-           width="76.668289"
-           height="16.611464"
-           x="482.7066"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="498.1377"
-           y="621.77112"
-           id="text3680"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3682"
-             x="498.1377"
-             y="621.77112">Tuple</tspan></text>
-        <rect
-           y="608.60162"
-           x="567.88074"
-           height="16.611464"
-           width="76.668289"
-           id="rect3684"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3686"
-           y="621.77112"
-           x="583.31177"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="583.31177"
-             id="tspan3688"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3372"
-         transform="matrix(0.36585686,0,0,0.36559428,198.34712,573.04464)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3374"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3376"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3378"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-    </g>
-    <g
-       id="g7447"
-       transform="matrix(1.25,0,0,-1.25,-684.78675,1951.2461)" />
-  </g>
-</svg>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/topology_dark.png
----------------------------------------------------------------------
diff --git a/docs/images/topology_dark.png b/docs/images/topology_dark.png
deleted file mode 100644
index 4d4e787..0000000
Binary files a/docs/images/topology_dark.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/topology_dark.svg
----------------------------------------------------------------------
diff --git a/docs/images/topology_dark.svg b/docs/images/topology_dark.svg
deleted file mode 100644
index 986de43..0000000
--- a/docs/images/topology_dark.svg
+++ /dev/null
@@ -1,1101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="535.52631"
-   height="319.73685"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="topology.svg"
-   inkscape:export-filename="/Users/evans/src/storm/docs/images/topology.png"
-   inkscape:export-xdpi="107.52592"
-   inkscape:export-ydpi="107.52592">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="386.38"
-       y1="81.633003"
-       gradientTransform="translate(28.11,-1.7569)"
-       x2="433.48999"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="130.03"
-       id="linearGradient3686" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="244.60001"
-       y1="81.633003"
-       gradientTransform="translate(-28.11,1.7569)"
-       x2="288.82001"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="178.42999"
-       id="linearGradient3684" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       color-interpolation-filters="sRGB"
-       height="3.1508999"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       id="filter5371-4">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-8" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-9"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-6" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329-0"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331-1" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-3"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-5" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="36.732106"
-     inkscape:cy="289.24907"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1151"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-14.473684,-670.78326)">
-    <g
-       id="g3910"
-       inkscape:export-filename="/Users/evans/Desktop/MT Storm TechPulse/Topology.png"
-       inkscape:export-xdpi="380"
-       inkscape:export-ydpi="380">
-      <rect
-         y="670.78326"
-         x="14.473684"
-         height="319.73685"
-         width="535.52631"
-         id="rect3350"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <g
-         id="g3352"
-         transform="matrix(0.36856045,0,0,0.36857838,-88.928261,602.61314)">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3354"
-           width="160"
-           height="160"
-           x="362.52631"
-           y="345.02008" />
-        <rect
-           transform="matrix(-0.00975266,0.99995244,-0.9999666,-0.00817331,0,0)"
-           y="-492.97839"
-           x="447.45413"
-           height="21.696198"
-           width="24.347038"
-           id="rect3356"
-           style="fill:url(#linearGradient3799);fill-opacity:1;stroke:none" />
-        <path
-           sodipodi:nodetypes="cccccccccccc"
-           inkscape:connector-curvature="0"
-           id="path3358"
-           d="m 393.00281,403.51244 41.45112,-0.39622 0.88112,-14.12176 -17.03772,-1.04253 0.3336,-10.06427 43.6265,0.74442 -0.37641,10.73252 -14.97353,-0.0513 -0.39461,14.50865 c 41.37718,-0.98045 45.3577,0.18812 43.51217,47.03851 l -24.58416,0.68261 c 0.38224,-23.64611 8.10402,-20.71225 -73.3201,-19.97252"
-           style="fill:none;stroke:#000000;stroke-width:5.34683466;stroke-miterlimit:4;stroke-opacity:1" />
-      </g>
-      <g
-         transform="matrix(0.36585686,0,0,0.36559428,197.08396,682.25518)"
-         id="g3380">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3382"
-           width="160"
-           height="160"
-           x="127"
-           y="294.36218" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="path3384"
-           sodipodi:cx="156"
-           sodipodi:cy="321.36218"
-           sodipodi:rx="67"
-           sodipodi:ry="67"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           transform="translate(52,51)" />
-        <path
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           inkscape:transform-center-x="12.504614"
-           inkscape:transform-center-y="21.9744"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           id="path3386"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccc" />
-      </g>
-      <g
-         id="g3396"
-         transform="matrix(0.36585686,0,0,0.36559428,402.29449,620.41307)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3398"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3400"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3402"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-      <g
-         transform="matrix(0.36585686,0,0,0.36559428,412.16292,790.8078)"
-         id="g3404">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3406"
-           width="160"
-           height="160"
-           x="127"
-           y="294.36218" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="path3408"
-           sodipodi:cx="156"
-           sodipodi:cy="321.36218"
-           sodipodi:rx="67"
-           sodipodi:ry="67"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           transform="translate(52,51)" />
-        <path
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           inkscape:transform-center-x="12.504614"
-           inkscape:transform-center-y="21.9744"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           id="path3410"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccc" />
-      </g>
-      <g
-         id="g3444"
-         transform="matrix(0.49617624,0,0,0.49617624,298.85114,709.03251)">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3446"
-           width="305.80826"
-           height="41.785706"
-           x="13.139097"
-           y="418.80951" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3448"
-           width="284.24814"
-           height="3.2142835"
-           x="22.424812"
-           y="450.59521" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3450"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.4794213,0,0,1,-776.39922,215.06087)" />
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3452"
-           width="90.913727"
-           height="19.697975"
-           x="19.944036"
-           y="423.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="38.242294"
-           y="438.92831"
-           id="text3454"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3456"
-             x="38.242294"
-             y="438.92831">Tuple</tspan></text>
-        <rect
-           y="422.31183"
-           x="122.94403"
-           height="19.697975"
-           width="90.913727"
-           id="rect3458"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3460"
-           y="437.92831"
-           x="141.24231"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="437.92831"
-             x="141.24231"
-             id="tspan3462"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3464"
-           width="90.913727"
-           height="19.697975"
-           x="222.94405"
-           y="422.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="241.24231"
-           y="437.92831"
-           id="text3466"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3468"
-             x="241.24231"
-             y="437.92831">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3470"
-         transform="matrix(0.43594488,-0.19758848,0.19758848,0.43594488,224.74712,663.19646)">
-        <rect
-           y="362.88846"
-           x="15.112782"
-           height="41.785706"
-           width="305.80826"
-           id="rect3472"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="394.67416"
-           x="24.398497"
-           height="3.2142835"
-           width="284.24814"
-           id="rect3474"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.4794213,0,0,1,-774.42554,159.13982)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3476"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           y="367.39078"
-           x="21.917721"
-           height="19.697975"
-           width="90.913727"
-           id="rect3478"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3480"
-           y="383.00726"
-           x="40.215977"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="383.00726"
-             x="40.215977"
-             id="tspan3482"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3484"
-           width="90.913727"
-           height="19.697975"
-           x="124.91772"
-           y="366.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="143.21599"
-           y="382.00726"
-           id="text3486"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3488"
-             x="143.21599"
-             y="382.00726">Tuple</tspan></text>
-        <rect
-           y="366.39078"
-           x="224.91772"
-           height="19.697975"
-           width="90.913727"
-           id="rect3490"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3492"
-           y="382.00726"
-           x="243.21599"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="382.00726"
-             x="243.21599"
-             id="tspan3494"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.43661378,-0.19610597,0.19610597,0.43661378,25.256319,713.34855)"
-         id="g3496">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3498"
-           width="305.80826"
-           height="41.785706"
-           x="15.112782"
-           y="362.88846" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3500"
-           width="284.24814"
-           height="3.2142835"
-           x="24.398497"
-           y="394.67416" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3502"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.4794213,0,0,1,-774.42554,159.13982)" />
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3504"
-           width="90.913727"
-           height="19.697975"
-           x="21.917721"
-           y="367.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="40.215977"
-           y="383.00726"
-           id="text3506"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3508"
-             x="40.215977"
-             y="383.00726">Tuple</tspan></text>
-        <rect
-           y="366.39078"
-           x="124.91772"
-           height="19.697975"
-           width="90.913727"
-           id="rect3510"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3512"
-           y="382.00726"
-           x="143.21599"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="382.00726"
-             x="143.21599"
-             id="tspan3514"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3516"
-           width="90.913727"
-           height="19.697975"
-           x="224.91772"
-           y="366.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="243.21599"
-           y="382.00726"
-           id="text3518"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3520"
-             x="243.21599"
-             y="382.00726">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.48017674,0.12498463,-0.12498463,0.48017674,149.88483,684.78836)"
-         id="g3522">
-        <rect
-           y="418.80951"
-           x="13.139097"
-           height="41.785706"
-           width="305.80826"
-           id="rect3524"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="450.59521"
-           x="22.424812"
-           height="3.2142835"
-           width="284.24814"
-           id="rect3526"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.4794213,0,0,1,-776.39922,215.06087)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3528"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           y="423.31183"
-           x="19.944036"
-           height="19.697975"
-           width="90.913727"
-           id="rect3530"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3532"
-           y="438.92831"
-           x="38.242294"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="438.92831"
-             x="38.242294"
-             id="tspan3534"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3536"
-           width="90.913727"
-           height="19.697975"
-           x="122.94403"
-           y="422.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="141.24231"
-           y="437.92831"
-           id="text3538"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3540"
-             x="141.24231"
-             y="437.92831">Tuple</tspan></text>
-        <rect
-           y="422.31183"
-           x="222.94405"
-           height="19.697975"
-           width="90.913727"
-           id="rect3542"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3544"
-           y="437.92831"
-           x="241.24231"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="437.92831"
-             x="241.24231"
-             id="tspan3546"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.36856045,0,0,0.36857838,-88.928261,733.29735)"
-         id="g3362">
-        <rect
-           y="345.02008"
-           x="362.52631"
-           height="160"
-           width="160"
-           id="rect3364"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient3801);fill-opacity:1;stroke:none"
-           id="rect3366"
-           width="24.347038"
-           height="21.696198"
-           x="447.45413"
-           y="-492.97839"
-           transform="matrix(-0.00975266,0.99995244,-0.9999666,-0.00817331,0,0)" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5.34683466;stroke-miterlimit:4;stroke-opacity:1"
-           d="m 393.00281,403.51244 41.45112,-0.39622 0.88112,-14.12176 -17.03772,-1.04253 0.3336,-10.06427 43.6265,0.74442 -0.37641,10.73252 -14.97353,-0.0513 -0.39461,14.50865 c 41.37718,-0.98045 45.3577,0.18812 43.51217,47.03851 l -24.58416,0.68261 c 0.38224,-23.64611 8.10402,-20.71225 -73.3201,-19.97252"
-           id="path3368"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccccccccc" />
-      </g>
-      <g
-         id="g3388"
-         transform="matrix(0.36585686,0,0,0.36559428,202.3208,790.14991)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3390"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3392"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3394"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-      <g
-         id="g3592"
-         transform="matrix(0.53224467,-0.19709421,0.19709421,0.53224467,-226.54789,504.58613)">
-        <rect
-           y="605.64807"
-           x="394.59216"
-           height="35.238228"
-           width="253.96045"
-           id="rect3594"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="632.45319"
-           x="397.81766"
-           height="2.7106316"
-           width="240.3839"
-           id="rect3596"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.2476081,0,0,0.84330818,-276.27173,433.82517)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3598"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3600"
-           width="76.668289"
-           height="16.611464"
-           x="398.37579"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="413.80685"
-           y="621.77112"
-           id="text3602"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3604"
-             x="413.80685"
-             y="621.77112">Tuple</tspan></text>
-        <rect
-           y="608.60162"
-           x="482.7066"
-           height="16.611464"
-           width="76.668289"
-           id="rect3606"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3608"
-           y="621.77112"
-           x="498.1377"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="498.1377"
-             id="tspan3610"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3612"
-           width="76.668289"
-           height="16.611464"
-           x="567.88074"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="583.31177"
-           y="621.77112"
-           id="text3614"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3616"
-             x="583.31177"
-             y="621.77112">Tuple</tspan></text>
-      </g>
-      <g
-         transform="matrix(0.55323305,0.1267427,-0.1267427,0.55323305,164.99997,312.07406)"
-         id="g3664">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3666"
-           width="253.96045"
-           height="35.238228"
-           x="394.59216"
-           y="605.64807" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3668"
-           width="240.3839"
-           height="2.7106316"
-           x="397.81766"
-           y="632.45319" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3670"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.2476081,0,0,0.84330818,-276.27173,433.82517)" />
-        <rect
-           y="608.60162"
-           x="398.37579"
-           height="16.611464"
-           width="76.668289"
-           id="rect3672"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3674"
-           y="621.77112"
-           x="413.80685"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="413.80685"
-             id="tspan3676"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3678"
-           width="76.668289"
-           height="16.611464"
-           x="482.7066"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="498.1377"
-           y="621.77112"
-           id="text3680"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3682"
-             x="498.1377"
-             y="621.77112">Tuple</tspan></text>
-        <rect
-           y="608.60162"
-           x="567.88074"
-           height="16.611464"
-           width="76.668289"
-           id="rect3684"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3686"
-           y="621.77112"
-           x="583.31177"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="583.31177"
-             id="tspan3688"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3372"
-         transform="matrix(0.36585686,0,0,0.36559428,198.34712,573.04464)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3374"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3376"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3378"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-    </g>
-    <g
-       id="g7447"
-       transform="matrix(1.25,0,0,-1.25,-684.78675,1951.2461)" />
-  </g>
-</svg>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/ui_topology_viz.png
----------------------------------------------------------------------
diff --git a/docs/images/ui_topology_viz.png b/docs/images/ui_topology_viz.png
deleted file mode 100644
index 6152568..0000000
Binary files a/docs/images/ui_topology_viz.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/viewing_metrics_with_VisualVM.png
----------------------------------------------------------------------
diff --git a/docs/images/viewing_metrics_with_VisualVM.png b/docs/images/viewing_metrics_with_VisualVM.png
deleted file mode 100644
index 5ccd81f..0000000
Binary files a/docs/images/viewing_metrics_with_VisualVM.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/index.html
----------------------------------------------------------------------
diff --git a/docs/index.html b/docs/index.html
deleted file mode 100644
index f625b6d..0000000
--- a/docs/index.html
+++ /dev/null
@@ -1,104 +0,0 @@
----
-layout: default
-title: Storm, distributed and fault-tolerant realtime computation
-logos:
-    - 
-      - "http://www.weather.com"
-      - "weatherchannel.gif"
-      - 90  
-    - 
-      - "http://www.webmd.com"
-      - "webmd.jpg"
-      - 45  
-    - 
-      - "http://www.alibaba.com"
-      - "alibaba.jpg"
-      - 65
-    - 
-      - "http://www.fullcontact.com"
-      - "fullcontact.png"
-      - 58
-    - 
-      - "http://www.yelp.com"
-      - "yelp.png"
-      - 110   
-    -
-      - "http://www.yahoo.co.jp"
-      - "Yahoo_Japan_logo.png"
-      - 58
-    - 
-      - "http://twitter.com"
-      - "twitter.png"
-      - 110
-    - 
-      - "http://www.spotify.com"
-      - "spotify.jpeg"
-      - 142
-    - 
-      - "http://groupon.com"
-      - "groupon.jpg"
-      - 71
-    - 
-      - "http://www.flipboard.com"
-      - "flipboard.jpeg"
-      - 110  
-    - 
-      - "http://www.cerner.com"
-      - "cerner.gif"
-      - 43
-    - 
-      - "http://www.aeris.com"
-      - "aeris.png"
-      - 80  
-    - 
-      - "http://www.baidu.com"
-      - "baidu.jpeg"
-      - 110  
-    - 
-      - "http://www.parc.com"
-      - "parc.png"
-      - 70  
-    - 
-      - "http://www.taobao.com"
-      - "taobao.gif"
-      - 68
-    - 
-      - "http://www.rubiconproject.com"
-      - "rubicon.png"
-      - 50
-    - 
-      - "http://www.rocketfuel.com"
-      - "rocketfuel.png"
-      - 42
-    - 
-      - "http://www.holidaycheck.com"
-      - "holidaycheck.png"
-      - 65  
-      
----
-<div id="content" style="padding-left: 40px">
-<!-- <div id="left"> -->
-<p>
-Apache Storm is a <a href="/about/free-and-open-source.html">free and open source</a> distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Storm is <a href="/about/simple-api.html">simple</a>, can be used with <a href="/about/multi-language.html">any programming language</a>, and is a lot of fun to use!
-</p>
-
-<p>
-Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Storm is fast: a benchmark clocked it at over <strong>a million tuples processed per second per node</strong>. It is <a href="/about/scalable.html">scalable</a>, <a href="/about/fault-tolerant.html">fault-tolerant</a>, <a href="/about/guarantees-data-processing.html">guarantees your data will be processed</a>, and is <a href="/about/deployment.html">easy to set up and operate</a>.
-</p>
-
-<p style="text-align: center;">
-<img src="/images/topology.png" style="height: 220px;"/>
-</p>
-
-<p>
-Storm <a href="/about/integrates.html">integrates</a> with the queueing and database technologies you already use. A Storm topology consumes streams of data and processes those streams in arbitrarily complex ways, repartitioning the streams between each stage of the computation however needed. Read more in <a href="/documentation/Tutorial.html">the tutorial</a>.
-</p>
-
-<h3>Companies &amp; Projects Using Storm</h3>
-  {% for logo in page.logos %}
-<a href="{{ logo[0] }}"><img style="height: {{ logo[2] }}px; vertical-align: middle; margin-top: 4px; margin-left: 2px;" src="/images/logos/{{ logo[1]}}"/></a>
-  {% endfor %}
-<a href="/documentation/Powered-By.html" style="font-size: 23px; padding: 11px;">and many others</a>
-
-
-</div> 

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/news.html
----------------------------------------------------------------------
diff --git a/docs/news.html b/docs/news.html
deleted file mode 100644
index 28ce9d4..0000000
--- a/docs/news.html
+++ /dev/null
@@ -1,12 +0,0 @@
----
-layout: documentation
-title: Latest News
----
-
-<div id="content">
-  <ul class="posts">
-    {% for post in site.posts %}
-      <li><span>{{ post.date | date_to_string }}</span> &raquo; <a href="{{ post.url }}">{{ post.title }}</a></li>
-    {% endfor %}
-  </ul>
-</div>
\ No newline at end of file


[04/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/security.svg
----------------------------------------------------------------------
diff --git a/docs/images/security.svg b/docs/images/security.svg
deleted file mode 100644
index 526aa63..0000000
--- a/docs/images/security.svg
+++ /dev/null
@@ -1,1779 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="633.66333"
-   height="709.74274"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="security.svg"
-   inkscape:export-filename="/Users/evans/src/storm/docs/images/security.png"
-   inkscape:export-xdpi="81.099846"
-   inkscape:export-ydpi="81.099846">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="386.38"
-       y1="81.633003"
-       gradientTransform="translate(28.11,-1.7569)"
-       x2="433.48999"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="130.03"
-       id="linearGradient3686" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="244.60001"
-       y1="81.633003"
-       gradientTransform="translate(-28.11,1.7569)"
-       x2="288.82001"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="178.42999"
-       id="linearGradient3684" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       color-interpolation-filters="sRGB"
-       height="3.1508999"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       id="filter5371-4">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-8" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-9"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-6" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329-0"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331-1" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <mask
-       id="mask7539"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7541"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA6CAAAAACb7Vj4AAAAAXNCSVQI5gpbmQAAAiFJREFUWIXtmMlu5DAMRLlJdttB/v9DE7clcZmDrU7nMEAwUA8QwHXUgQ9FLRAL4NJI4Y+W/lXx9+IICIgjYR0ZAfEgn/URgZCQEIYiAwLCw8MhDqJ0HjEzESEOdRgR7m5mfjb34BEyiyRhptE8N9OmaPbMA+KUppySMI3luWlrtSCEYXQeEkuabrcpp8QjDUZYa7XcASLC4MFDlnxb12WeMvM4HIBZLftGEO5P/oBIptv6/rbOOfFIf9bq/ingpkpf/gBJ0rS8va/LnMfy6r4xaC1yHsSznySS52V9X+csI3laJwHdswjRNx5JmuZlXZeJaRzPrTBomVLH9X4eJ3SelyWnkf4ag5XpuGZf/gCQiEVyznmWkf4YNGcRpv6OdB4Q0fHGDPUHSYSZiPqrfO4fIiASIiHhwAtodBRFQETAABjYvB/p4l28i3fxLt7Fu3gX77fxBAAgIgIiPMLDj7lpjMKPogERxwx//j8D3N1MtfFIy65N1czde2DQee6mWmsVGPufr7VWVXN/zgsiwk1b2ScGHfqf17rte2lqHs/ze7hrK/smYKPnsf1z20tT92/+XPWYDMv4efNj26t2YPenrWwCVnOikf30Vu/bx1aanht48Ny0MIHur8kLPu9FzeHBi3CtCF5flYfc6zd/4YYIYeVFeU+pxwmFx/1zg3B7XZ7V29n3jyzC7ZV53Xnfe3X6yiOH6pFHnv7+d9566XfrDzpndw8qE6zWAAAAAElFTkSuQmCC"
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7523"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7525"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAAA6CAAAAADpIjpOAAAAAXNCSVQI5gpbmQAAAhlJREFUWIXtmMtu2zAQRedFSpaC/P+HNrJIzqMLiY6zaBHaLVCgnqUAHtwhh9K9Avh/C7/16HcVvwYgICCOAjs2AuJGPxmIQEhICMPYgIDw8HCIgyqdScxMRIjDSiPC3c3Mz404mITMIkmY6RGmm2lTNLtnAnFKU05JmMaZbtpaLQhhGJ2JxJKmy2XKKfGo0AhrrZYrQETYTSciS76s6zJPmXlUp1kt+0YQ7nc6gUimy/r+ts458ahOa3X/EHBTpU+dgCRpWt7e12XO48y6bwxai5wHfPZOInle1vd1zjLK1DoJ6J5FiL4wSdI0L+u6TExjTLfCoGVKHdl7P05+npclp1GdjcHKdIzhp04AJGKRnHOeZVQng+YswtTvS2cCER13aVgnJBFmIupvinM/EQGREAkJBwfU6FiIgIiAATDY6LfqxXwxX8wX88V8Mf8FpgAARERAhEd4+OH3vl/hx8KAiMPTn9/3AHc3U208Kt21qZq5ew8JneluqrVWgXFvU2utquZ+nxEiwk1b2ScGHfY2Wrd9L03N497Ph7u2sm8C9ohX3D+2vTR1/6LTVQ9nWh7ztD+2vWqHdp3ayiZgNSca7d1bvW4/ttL03NCD6aaFCXR/PCN8XIuaw40Z4VoRvD6TZa71i85wQ4Sw8kTmKvU4ebjNpxuE23PZsLfe95Mswu3ZDHvOfCfQZ9YerlvWPnX+jX8Cr/qz9ROUOHcPsWPOzwAAAABJRU5ErkJggg=="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7515"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7517"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7499"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7501"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7467"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7469"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7459"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7461"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAADvCAAAAAB6GnHnAAAAAXNCSVQI5gpbmQAAA2JJREFUeJzt1suO4zgMhWFSFzuVNPr9H3QqsSWRnIWdunQVML06JQzOvzACZfOFIOSIMPYf6V8d/XDx5UTfP6ioTmg+ComQePsBJ1NVkiZNKjPKQ0LCw8MlDng5vlBNOeeUkup8apGIcHcz83NjDnbSnEupJec0KdvNRh9q9pEtKde6LrWWnKZku43e264SpiEnW1MudX15WZda84TjjrDe2/4QiQgTebI1l+Xldrte1iXnnyV+m1nbt3uScP8wbUmprC+3379ul6XmCadtvW2vRdzGSO/TFk2lrtdfv2/XyzIlu233LKPt5bwyziVJpSyX6+337bKUCdmjrUXGtpSS0id2KnW9XG+365rTzxq/yW3PMva1PtXPJTnuksvlel3qhNPuWWxfj+v5fdoimlIuZVmW5VImnHaWsSyl5PR8Gz7ZklI63pQzTltqKTmnlJ5/mM7dVhXVpJo06XwXt6XDpqKqoiEy30b8VWQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRlZERCIiJOR4iP+06WvvuggJOdkiIhHmZmNk1R/0fV+MMczcIp4nJzvczfporarPtzc+Wmujm7mf8oMdEWa9bWtJni
 dk275tW+v2Nu9zt92stf1R1VuZcUna4/7YWzM7x31O26237V6S9zrltPt2f71vrX9iR7j19qjq+1rzhNO2vm+v/zz+YItbb4+stl+WnCZku7XtcX99tG7H9XxO28ae1Nuj1knZve/bY9uHfbxJ3IdqWKu5pCnZPqy3fe/D/cNuq5uEj5Zz1hlfNxFm1nsff94kEuGjpSnVh9vNzM5hy4lU1ZQ0adK3o4kKkfDwcI/4xBZRldM8J/tcifPkk1G/nExSvD0Y+5/3L0oOf3SlGk1TAAAAAElFTkSuQmCC"
-         height="1"
-         width="1" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-3"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-5" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="685.23587"
-     inkscape:cy="314.24146"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1151"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(634.03008,-685.89431)">
-    <g
-       id="g7447"
-       transform="matrix(1.25,0,0,-1.25,-684.78675,1951.2461)" />
-    <g
-       id="g6816">
-      <g
-         transform="matrix(227.5,0,0,-298.75,-227.86673,1252.5046)"
-         id="g7457">
-        <image
-           id="image7463"
-           mask="url(#mask7459)"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAADvCAYAAABfcS47AAAABHNCSVQICAgIfAhkiAAAApJJREFUeJzt0kENACAQwLAD/55BBSFZWgV7bM3MGYjZvwPgBWOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNknGJsnYJBmbJGOTZGySjE2SsUkyNkkXRRkC
 3Vw8qVoAAAAASUVORK5CYII="
-           transform="matrix(1,0,0,-1,0,1)"
-           height="1"
-           width="1" />
-      </g>
-      <g
-         transform="matrix(95,0,0,-72.5,-161.61673,844.18078)"
-         id="g7465">
-        <image
-           id="image7471"
-           mask="url(#mask7467)"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAYAAAAa7L/3AAAABHNCSVQICAgIfAhkiAAAAJVJREFUeJzt0MENwCAQwLCD/XduVyAvhGRPEGXNzDcc27cDXmNYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFj0A8LUAXPntU8xAAAAAElFTkSuQmCC"
-           transform="matrix(1,0,0,-1,0,1)"
-           height="1"
-           width="1" />
-      </g>
-      <g
-         transform="matrix(95,0,0,-72.5,-161.61673,1096.6331)"
-         id="g7497">
-        <image
-           id="image7503"
-           mask="url(#mask7499)"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAYAAAAa7L/3AAAABHNCSVQICAgIfAhkiAAAAJVJREFUeJzt0MENwCAQwLCD/XduVyAvhGRPEGXNzDcc27cDXmNYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFj0A8LUAXPntU8xAAAAAElFTkSuQmCC"
-           transform="matrix(1,0,0,-1,0,1)"
-           height="1"
-           width="1" />
-      </g>
-      <g
-         transform="matrix(95,0,0,-72.5,-161.61673,1191.6808)"
-         id="g7513">
-        <image
-           id="image7519"
-           mask="url(#mask7515)"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAYAAAAa7L/3AAAABHNCSVQICAgIfAhkiAAAAJVJREFUeJzt0MENwCAQwLCD/XduVyAvhGRPEGXNzDcc27cDXmNYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFhkWGRYZFj0A8LUAXPntU8xAAAAAElFTkSuQmCC"
-           transform="matrix(1,0,0,-1,0,1)"
-           height="1"
-           width="1" />
-      </g>
-      <g
-         transform="matrix(103.75,0,0,-72.5,-634.03008,866.55568)"
-         id="g7521">
-        <image
-           id="image7527"
-           mask="url(#mask7523)"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAAA6CAYAAADMSWWSAAAABHNCSVQICAgIfAhkiAAAAJpJREFUeJzt0AEJACAQwMDX/p21xIEguwRja2bOhNivA37STKiZUDOhZkLNhJoJNRNqJtRMqJlQM6FmQs2Emgk1E2om1EyomVAzoWZCzYSaCTUTaibUTKiZUDOhZkLNhJoJNRNqJtRMqJlQM6FmQs2Emgk1E2om1EyomVAzoWZCzYSaCTUTaibUTKiZUDOhZkLNhJoJNRNqJnQBizwBcwIvKXsAAAAASUVORK5CYII="
-           transform="matrix(1,0,0,-1,0,1)"
-           height="1"
-           width="1" />
-      </g>
-      <g
-         transform="matrix(138.75,0,0,-72.5,-402.01235,1008.2323)"
-         id="g7537">
-        <image
-           id="image7543"
-           mask="url(#mask7539)"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA6CAYAAAC+hgckAAAABHNCSVQICAgIfAhkiAAAAKJJREFUeJzt0cEJACAQwLDT/XfWHfxIIZmg0DUzZ0javwN4Z16YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXZl6YeWHmhZkXdgGszQFz1kFilgAAAABJRU5ErkJggg=="
-           transform="matrix(1,0,0,-1,0,1)"
-           height="1"
-           width="1" />
-      </g>
-      <path
-         id="path7545"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m -214.11673,962.50458 199.999997,0 0,270.25432 -199.999997,0 0,-270.25432 z"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7547">
-        <path
-           id="path7549"
-           style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 374.8892,272.659 160,0 0,216.2035 -160,0 0,-216.2035 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7551"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m -147.86673,780.43078 67.499997,0 0,45 -67.499997,0 0,-45 z"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7553">
-        <path
-           id="path7555"
-           style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 427.8892,127 54,0 0,36 -54,0 0,-36 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-114.74173,802.30578)"
-         id="g7557">
-        <text
-           id="text7559"
-           transform="translate(-17.00098,4)">
-          <tspan
-             id="tspan7561"
-             sodipodi:role="line"
-             y="0"
-             x="0 8.6664 17.3328 25.3368"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">DRPC</tspan>
-        </text>
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-342.33349,1375.5005)"
-         id="g7569">
-        <text
-           y="0.31578946"
-           x="-29.576994"
-           id="text7571">
-          <tspan
-             id="tspan7573"
-             sodipodi:role="line"
-             y="0.31578946"
-             x="-29.576994"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">ZooKeeper</tspan>
-        </text>
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-581.28086,1183.819)"
-         id="g7581">
-        <text
-           id="text7583"
-           transform="translate(-22.00195,4)">
-          <tspan
-             id="tspan7585"
-             sodipodi:role="line"
-             y="0"
-             x="0 8.6664 12.0048 22.6752 30.0096 37.344002"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">Nimbus</tspan>
-        </text>
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-331.94657,1106.8124)"
-         id="g7593">
-        <text
-           id="text7595"
-           transform="translate(-31.34473,4)">
-          <tspan
-             id="tspan7597"
-             sodipodi:role="line"
-             y="0"
-             x="0 8.0039997 15.3336 22.6632 29.337601 34.007999 40.6824 44.015999 50.690399 58.02"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">Supervisor</tspan>
-        </text>
-      </g>
-      <path
-         id="path7599"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m -147.86673,1032.8831 67.499997,0 0,45 -67.499997,0 0,-45 z"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="matrix(1.25,0,0,1.25,-110.82068,1095.6002)"
-         id="g7605">
-        <text
-           y="4"
-           x="-22.16641"
-           id="text7607">
-          <tspan
-             id="tspan7609"
-             sodipodi:role="line"
-             y="4"
-             x="-22.16641 -11.050811 -3.7152095 0.9563908 7.6319909 14.307589"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">Workers</tspan>
-        </text>
-      </g>
-      <g
-         style="fill:#ff0000;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7611">
-        <path
-           id="path7613"
-           style="fill:#ff0000;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="M 308,84.30577 418.2774,129.8712"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7615"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-opacity:1"
-         d="m -150.63935,787.83858 -7.81013,-7.2847 -2.864,6.9317 10.67413,0.353 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7617">
-        <path
-           id="path7619"
-           style="fill:#ff0000;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 425.6711,132.9262 -6.2481,-5.8277 -2.2912,5.5453 8.5393,0.2824 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7635">
-        <path
-           id="path7637"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="M 254,117.5297 94.85628,379.1151"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7639"
-         style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m -569.35539,1104.1178 8.40121,-6.5941 -6.40739,-3.8981 -1.99382,10.4922 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7641">
-        <path
-           id="path7643"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 90.69827,385.9496 6.72097,-5.2753 -5.12591,-3.1185 -1.59506,8.3938 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:none"
-         transform="matrix(1.2499902,0,0,1.2499902,-448.50701,925.55388)"
-         id="g7647">
-        <text
-           style="fill:#ff0000;fill-opacity:1;stroke:none"
-           id="text7649"
-           transform="translate(-26.34375,4)">
-          <tspan
-             id="tspan7651"
-             sodipodi:role="line"
-             y="0"
-             x="0"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">1</tspan>
-        </text>
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-332.10323,762.49288)"
-         id="g7679">
-        <text
-           id="text7681"
-           transform="translate(-13.3418,4)">
-          <tspan
-             id="tspan7683"
-             sodipodi:role="line"
-             y="0"
-             x="0 8.6664 15.3408 22.0152"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">User</tspan>
-        </text>
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7685">
-        <path
-           id="path7687"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 102.2175,424.3055 142.7278,110.159"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7689"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-opacity:1"
-         d="m -368.63035,1295.8714 -5.62513,-9.0786 -4.58237,5.9373 10.2075,3.1413 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7691">
-        <path
-           id="path7693"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 251.2783,539.3525 -4.5001,-7.2629 -3.6659,4.7498 8.166,2.5131 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.1463016,-682.72823,676.68458)"
-         id="g7703">
-        <path
-           id="path7705"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 279.729,384.9999 -2.7015,145.4208"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7707"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-opacity:1"
-         d="m -336.62948,1294.7049 3.935,-9.9286 -7.49862,-0.1394 3.56362,10.068 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7709">
-        <path
-           id="path7711"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 276.879,538.4193 3.148,-7.9429 -5.9989,-0.1115 2.8509,8.0544 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.3963537,0,0,1.3963537,-700.10128,563.35538)"
-         id="g7721">
-        <path
-           id="path7723"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 235.0821,375.3163 -115.8762,22.707"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7725"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-opacity:1"
-         d="m -543.53423,1121.1329 10.5345,1.757 -1.44225,-7.3601 -9.09225,5.6031 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7727">
-        <path
-           id="path7729"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 111.3552,399.5617 8.4276,1.4056 -1.1538,-5.8881 -7.2738,4.4825 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7751">
-        <path
-           id="path7753"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 454.8892,328.4618 0,-155.0618"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7755"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-opacity:1"
-         d="m -114.11673,828.43078 -3.75,10 7.5,0 -3.75,-10 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7757">
-        <path
-           id="path7759"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 454.8892,165.4 -3,8 6,0 -3,-8 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7769">
-        <path
-           id="path7771"
-           style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="M 439.4107,365.3442 298.3551,532.8635"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7773"
-         style="fill:#0000ff;fill-opacity:1;fill-rule:nonzero;stroke:#0000ff;stroke-opacity:1"
-         d="m -316.22536,1295.4096 9.30951,-5.234 -5.737,-4.8308 -3.57251,10.0648 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7775">
-        <path
-           id="path7777"
-           style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 293.2023,538.983 7.4476,-4.1872 -4.5896,-3.8646 -2.858,8.0518 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-opacity:1"
-         transform="matrix(1.4470505,0,0,1.4470505,-767.04464,552.80478)"
-         id="g7787">
-        <path
-           id="path7789"
-           style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 427.3923,350.0349 -92.4839,10.3362"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7791"
-         style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:#008000;stroke-opacity:1"
-         d="m -294.03086,1075.2553 10.35463,2.6161 -0.833,-7.4536 -9.52163,4.8375 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-702.72823,623.68078)"
-         id="g7793">
-        <path
-           id="path7795"
-           style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 326.9579,361.2596 8.2837,2.0929 -0.6664,-5.9629 -7.6173,3.87 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:none;stroke:#0000ff;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7811">
-        <path
-           id="path7813"
-           style="fill:none;stroke:#0000ff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 492.2279,407.9879 2,0 33.7721,0 0,-24.9879 0,-22.5082 -33.7623,0 -2,0"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7815"
-         style="fill:none;stroke:#0000ff;stroke-opacity:1"
-         d="m -77.431108,1072.2956 10,3.75 0,-7.5 -10,3.75 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7817">
-        <path
-           id="path7819"
-           style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 484.2377,360.4918 8,3 0,-6 -8,3 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7821"
-         style="fill:none;stroke:#0000ff;stroke-opacity:1"
-         d="m -77.443358,1131.6657 10,3.75 0,-7.5 -10,3.75 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7823">
-        <path
-           id="path7825"
-           style="fill:#0000ff;fill-opacity:1;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 484.2279,407.9879 8,3 0,-6 -8,3 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7835"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m -620.28008,802.80568 76.24998,0 0,45 -76.24998,0 0,-45 z"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7837">
-        <path
-           id="path7839"
-           style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 49.95852,144.8999 60.99998,0 0,36 -60.99998,0 0,-36 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-582.78008,824.68068)"
-         id="g7841">
-        <text
-           id="text7843"
-           transform="translate(-6,4)">
-          <tspan
-             id="tspan7845"
-             sodipodi:role="line"
-             y="0"
-             x="0 8.6664"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">UI</tspan>
-        </text>
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7847">
-        <path
-           id="path7849"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="M 80.30948,181.3999 78.7288,377.6003"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7851"
-         style="fill:#ff0000;fill-opacity:1;fill-rule:nonzero;stroke:#ff0000;stroke-opacity:1"
-         d="m -584.39779,1103.6809 3.83044,-9.9695 -7.49976,-0.06 3.66932,10.0298 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7853">
-        <path
-           id="path7855"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 78.66435,385.6001 3.06435,-7.9756 -5.9998,-0.0483 2.93545,8.0239 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7865">
-        <path
-           id="path7867"
-           style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="M 254,85.23326 120.4512,145.0017"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7869"
-         style="fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#808000;stroke-opacity:1"
-         d="m -541.29185,807.01788 10.6595,-0.6621 -3.06376,-6.8457 -7.59574,7.5078 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7871">
-        <path
-           id="path7873"
-           style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 113.1491,148.2697 8.5276,-0.5297 -2.451,-5.4766 -6.0766,6.0063 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,0.95913539,-682.72823,750.09748)"
-         id="g7895">
-        <path
-           id="path7897"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 454.8892,441.5 0,124.375"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,587.12398)"
-         id="g7901">
-        <path
-           id="path7903"
-           style="fill:#ff0000;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 454.8892,573.875 3,-8 -6,0 3,8 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-114.74173,991.05578)"
-         id="g7913">
-        <text
-           id="text7915"
-           transform="translate(-45.03223,4)">
-          <tspan
-             id="tspan7917"
-             sodipodi:role="line"
-             y="0"
-             x="0 8.6664 15.3408 22.0152 26.6856 30.019199 38.023201 42.6936 50.023201 56.697601 63.372002 70.046402 76.720802 83.395203"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">User Processes</tspan>
-        </text>
-      </g>
-      <path
-         id="path7925"
-         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
-         d="m -388.26235,944.48228 111.25,0 0,45 -111.25,0 0,-45 z"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7927">
-        <path
-           id="path7929"
-           style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 235.5727,258.2412 89,0 0,36 -89,0 0,-36 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         transform="matrix(1.25,0,0,1.25,-333.26235,966.35728)"
-         id="g7931">
-        <text
-           id="text7933"
-           transform="translate(-31.90137,4)">
-          <tspan
-             id="tspan7935"
-             sodipodi:role="line"
-             y="0"
-             x="0 7.3295999 14.6592 21.9888 25.322399 33.119999 36.453602 43.123199 52.456799 59.1264"
-             style="font-size:12px;font-variant:normal;font-weight:bold;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;font-family:Helvetica;-inkscape-font-specification:Helvetica-Bold">Log Viewer</tspan>
-        </text>
-      </g>
-      <g
-         style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7937">
-        <path
-           id="path7939"
-           style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 280.774,122.6497 -0.5716,125.1916"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7941"
-         style="fill:#808000;fill-opacity:1;fill-rule:nonzero;stroke:#808000;stroke-opacity:1"
-         d="m -332.52085,941.48228 3.79562,-9.9827 -7.5,-0.034 3.70438,10.017 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7943">
-        <path
-           id="path7945"
-           style="fill:#800080;fill-opacity:1;stroke:#800080;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 280.1659,255.8412 3.0365,-7.9862 -6,-0.0274 2.9635,8.0136 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7955">
-        <path
-           id="path7957"
-           style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 427.4257,335.8518 -93.212,-37.7076"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path7959"
-         style="fill:#008000;fill-opacity:1;fill-rule:nonzero;stroke:#008000;stroke-opacity:1"
-         d="m -274.23123,990.61088 7.86388,7.2265 2.81262,-6.9527 -10.6765,-0.2738 z"
-         inkscape:connector-curvature="0" />
-      <g
-         style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-opacity:1"
-         transform="matrix(1.25,0,0,1.25,-682.72823,621.68078)"
-         id="g7961">
-        <path
-           id="path7963"
-           style="fill:#008000;fill-opacity:1;stroke:#008000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:10;stroke-opacity:1;stroke-dasharray:none"
-           d="m 326.7976,295.1441 6.2911,5.7812 2.2501,-5.5622 -8.5412,-0.219 z"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         inkscape:label="Layer 1"
-         id="g8796"
-         transform="matrix(0.09419296,0,0,0.09419296,-368.83733,677.24998)">
-        <path
-           d="M 420.85,559.53 C 298.33,390.66 157.74,537.71 151,744 c 30.426,22.479 61.762,30.002 82.034,-14.203 47.661,37.78 224.08,28.374 281.35,-4.0891 10.558,14.623 20.058,62.774 85.186,15.435 -5.06,-203.42 -124.44,-386.98 -178.72,-181.61 z"
-           style="fill:#ffd24a;stroke:#000000;stroke-width:9;stroke-linecap:round;stroke-linejoin:round"
-           sodipodi:nodetypes="cccccc"
-           id="path8798"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:cx="296.03177"
-           sodipodi:cy="606.99689"
-           transform="matrix(2.4218,0,0,2.2949,-429.68,-803.54)"
-           d="m 317.99258,606.99689 c 0,12.12862 -9.83219,21.96081 -21.96081,21.96081 -12.12862,0 -21.96081,-9.83219 -21.96081,-21.96081 0,-12.12863 9.83219,-21.96082 21.96081,-21.96082 12.12862,0 21.96081,9.83219 21.96081,21.96082 z"
-           sodipodi:type="arc"
-           style="fill:#ffffff;filter:url(#filter5371-3)"
-           sodipodi:ry="21.960814"
-           sodipodi:rx="21.960814"
-           id="path8800" />
-        <path
-           sodipodi:cx="440"
-           sodipodi:cy="286.64789"
-           transform="matrix(0.99993,0,0,1.052,-59.97,9.0539)"
-           d="m 625.71428,286.64789 c 0,102.56716 -83.14712,185.71428 -185.71428,185.71428 -102.56716,0 -185.71428,-83.14712 -185.71428,-185.71428 0,-102.56717 83.14712,-185.71428 185.71428,-185.71428 102.56716,0 185.71428,83.14711 185.71428,185.71428 z"
-           sodipodi:type="arc"
-           style="fill:#ffc6b1;fill-rule:evenodd;stroke:#000000;stroke-width:8.77519989"
-           sodipodi:ry="185.71428"
-           sodipodi:rx="185.71428"
-           id="path8802" />
-        <path
-           d="m 163.98,453.58 c 65.427,7.4716 130.85,11.74 196.28,-19.877 -110.65,-152.22 61.764,-166.64 72.053,-263.37 78.948,23.875 136.91,134.77 91.93,226.1 l 121.75,-24.84 c -124.13,-441.69 -552.85,-305.75 -482.01,81.99 z"
-           style="fill:#845000;stroke:#000000;stroke-width:9"
-           sodipodi:nodetypes="cccccc"
-           id="path8804"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g9042"
-         transform="matrix(0.45137816,0,0,0.45137816,-481.39575,1104.0799)">
-        <image
-           width="140"
-           height="137.29469"
-           xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAGWCAIAAADHTXI1AAAAA3NCSVQICAjb4U/gAAAgAElEQVR4 nO3dd3xcxbUH8DO3bFPvsiRbllzlgjtgbGN6TAs8QkKLgQRCh0AeNS+QEFJISIGEEpJAYlqAgAPB cSgGbGNj427JTS5qlmR1abX1lpl5f6xcMG7anW13z/fD5/PySHx1rfLTlDNnCOccEELIWqR4vwBC CImH0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0IIQvCaEMIWRBGG0LIgjDaEEIWhNGGELIgjDaEkAVh tCGELAijDSFkQRhtCCELwmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAFYbQhhCwIow0hZEEYbQgh C8JoQwhZEEYbQsiCMNoQQhaE0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0IIQvCaEMIWRBGG0LIgjDa EEIWhNGGELIgjDaEkAVhtCGELAijDSFkQRhtCCELwmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAF YbQhhCwIow0hZEEYbQghC8JoQwhZEEYbQsiCMNoQQhaE0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0I IQvCaEMIWZAS7xdAScagLKDTgG4GDdbv1/a5g+3uYLcn6AmafX7d7df9GvXrZkCnBmUAoJsMAGyK pMqSTZFkiaiylOVSs1y2bJct26Vmp9mLshxDshxZ6Q67TJw2xWmTVRl/6aKIYLSh4+j16c3d3ube wL6+QGOnt6XXv7fb39Lr39fr1wxGCAAADPyfg6TD/wUAAONH+gB84N+6HGpBhr0w01FZmF6en16a 6xqS7SzIcAzNcxVlOQX+jVAqIJwf8dsNpbR2d2BDQ09NU+/Otv4DQdbr02VJUmSiSESSiCIR8pVE iwTn3GScMW4yblJOGcty2fIz7EPz
 0oqznCOKMsaXZY0vzRpXliMfMTgROgRGGxrQ7dVqW90rajs+ 3tpW1+EJ6NTt14MGU2SiyJIikdgHCh2IOWZSrsgkza5kOJS8DMf0itxZY4qmV+QVZztz0mwxfiuU FDDaUt3udk91Y8+yHe0fb21r7PICEACQCEiESATEjssiwTlnHBjn+2e1XJGk8WXZs8cUzhpdMGZI 1ughmfF9Q5RQMNpSVH/AWLypeem2tnX1PTV7+wDAaZOVZJvoGZT5Naoq0rjSrNHFmSePyLtgchlm HAKMtlRjULajpe/vn9Ut297e0Ol1+w2HKtkUKXFGZ2HgnOsmCxrMYZOLsxzjy7K/Pm3ovJNKirKc uCqXsjDaUkW3V1u2re2tNU0f1rRqJgUgcVk+i6qBjQjOAUh+uu1rJ5VcMn3YySPy89Lt8X41FGsY bdbX7dXeXN3wzy8a1+7pohxcNjnebxQLnHOvRm2KdNqogrPHF186fRhOVFMKRpuV9fr0Bct3v7Ky vrbVrVOebpeTeuIZBs65X6cAUJbrOnt88e3njsHakRSB0WZN7e7Au+v3/uGDHQ0dXkIg2VfTIsQ5 1ykHzu2qfN7Ekuvnjpg7tsiupsToNWVhtFkNZfy1z+v/tmz3ql2ddjX5Nj2jza9TuyKdP6l0/pzK 8yeVxvt1ULRgtFnK8h3tTyzaunxHu26yNDueojsyznl/wMxyqWeOK77za2NPH1sU7zdC4mG0WURD p/ePH+5YsHxPUKeqIuFy0nEZlDHGbYr0PzOGff9rYycOy433GyGRMNqSnsn5S8v3/G7xtl1tnhTc KIicJ2iWZDu+e8aom84ahefwLQOjLbltb3E/8tam9ze3pE5VRzRoJtNNNnFo9v0Xj//WKcPj/TpI AIy2ZKUZ9MVlu3+3eFtzj9+hyjgDjRDnPGAwuyJdcWr5Q5ecVJ6fFu83QhHBaEtK21vcj/2r+p31 e+3xXlbjnFMOlHHgnPKBQ+wA
 wI7cmw0AQJJI6JUJITIJ/b+JchQ/FHCVhekPXDxh/uzKeL8OCh9G W/J5fVX9z96pifHK2oEIo4yH8ijUr82hysXZzrJcV3GWoyDTmeFQstNsTpuSZpOddiUUu6osGZRR xk3KDJP1BYx+vx7qyruvN9DmDnT0Bzs9GqXsQMs2ykGWiERAeFe4E+HXqSqTq2YOf/Tyybj6lqQw 2pJJt1f76cLNCz6ro5TFpuL0wMlzSSLZabZQF9zRxRljS7KG5aWNKs4oy0t3qJIiS6oEQAbd9Zsy zjg3DBowWX2Ht67T09Dh3dnWX9fh7egP9vn0bq9mUGZT5BiPTynjQYOOL8v+3benY3VIMsJoSxrr 6rrv/8f6Vbs6XbZYDNYMyoIGkyUyrjRrcnnO6OLMqtKsqtLskUUZ0f7QIbvbPbva+mtb3Vua+3a0 9u9odbv9hsMm2+TYjeP8Os1Nsz1w8fjbzh2Lq5nJBaMtOby4bPcv361p7vFHtRA3NGcEQhSJjC/L PnNc8ZyxhaOKMioKYxRnR9PU42/u8m5u6v2gunVdXbcnaDDGgZAYxFyo/O2600c8fuXUdIca1Y+F BMJoS3TeoPHjtzf/9dNdjPHoTUJDPR2zXOrwgvS5VUVXzawYV5LpSryfZIOyzv7gx1vb/r1+76bG nra+QNBg6Q4lqkMqyrhfp+dNHPKHa2fEPeXRCcJoS2jbW9z3/2P9ki37olfeQRn3Bs2yXOfZE4ac d1LJvJNKM50Jl2hHtHNf/wfVLct3dCyv7ejxaJlOJaojOJ9mji/L/sO1M04bXRi9j4JEwWhLXP/d 3HLfa+t3tXkyHOInoaFmGJTx0hznt2dVXDhl6PTKPOEfJQY0g36xp2vxppY3VtV3ebSozlL9Oi3N cT7znVPOm1gSjecjgTDaEhFn/E+f7PzJwmpPwIjGGQO/TmUCY0qyrptT+a1Th1ujvqHdHViwfM+b XzTW7us3abS6A/h1WpRp
 /+010y87uTwaz0eiYLQlHG/Q+Nk7Nc98VBuNBt+h6eek8pxvnVJ+w5mj rNdZO9RS+NWV9evru0NX1gv/EJrJspzqb66ZduXMCuEPR6JgtCWWph7/g6+tf3ttk/ByXMq4ZrLS HOe1c0bMn105vCBd4MMTTWuv/931e5/5qLauw6vKRHjAGZQ5bMpT86djuiUsjLYEUtPUc+vf1qyt 6xaba6Em2ml25dLpQ++/aELqXBHQ7g48/WHtKyv2tPYFXTbB+zCaQV0O9Y/XzcDj9IkJoy1RfLqt 7c4Faxo7vWIrPAzKDMpPHZl/z/lVF08dKvDJyWJdXffvFm/7z6ZmxsGuiBy+aSbLT7c9f+NM3FVI QBhtCeH1VfX3vrre7dcF5lrojFSWy3bvhePmzxlhvWW1Exdqqv6r97bsafeIPcuhmaw8P+3vN89K 0v1lC8NoizfOnnx/x6MLq02hx0I1kwKHM8YV//iySfhTF9LQ6f3ZO9VvrWkSewLXEzQnDs1+++4z sA9SQsFoiyd/0PjpOzXPfLhDkkQudfs0szjLces5Y74/rwrvbTrMi8t2P7Zwc5s7KLA6xO03LpxS +tptsxPw/EbKwmiLm16fft9r6177vMGpCrtJL7RjcPrYop9/awoO1o4m1Ghg9e4ugZ95n2bedu6Y 314zXcjTUOQw2uKj3R24+YXVH1S3Clz68evUqUrfO2v0Dy+ZmCyHpeKl16c//M+NC5bvETVeDnWa e/r6U7CBZYLAaIuD3e2e6/+0cn19t8Bc82nmiKKMRy47CWsRTtyT/932s3dqNJMJ2TnVDFqc7Vx4 91y8HCsRYLTF2rq67lteXL21uU/UWk9oEvq1k0p+ecXUqtIsIc9MHQvXNP7vq+t6fLqQsZtPM8+Z MOSlW2fnpNkifxqKhPhjKOgYPt3WdtXTywXmmmYyxuH786peuW025loYLju5/MWbZw3NS/PrNPKn uWzyki37/vLJzsgf
 hSKEo7bYeW/D3rsWrGnv10SdeA/thP70m1NwfSdCAofSlHGbKv/n3rNwGye+ MNpi5OUVdQ+9vkFgUa5fp1OH5z45fwb+CAmxvcX9vb+u2tzYE/kXKKjTM8cXv3nX6U5bFFsio2PD CWks/PGD7fe8vNYdMITkmkGZX6eXThv69t1zMddEqSrN+suNM8eUZPk0M8JHqYq0dFvbP1Y1CHgt FC6MtuiijP/6vS2PvLVZ2DacyRiH+y4ct+DWWdbos5Y4qkqz/vTdU0cUZUS47iZLhHJ49qPa1l6/ qHdDg4XRFkWU8Z+8vfnn79ZwEHMw26Asy6k+de2MRy+fHI1OZGh6Zd6z3zmlKNNuHv2K6BPhssk1 e/teWVEn6sXQYOGPR7QYlP3glbW/XbxNkYgScTsdzrlPM4fmpb182+zvzh0p5A3REZ0+tuiXV07l nNOI0+25JThwixuMtqjwB41bX1z9p4932RUBR3k45/0Bc+aogn/eNffMccVC3hAdw5UzK+6eV+XX aSSbbLJE2vu155ZgIUh8YLSJ1+3Vbvzr6ldX1qfbBbQ/DFXkfvOUcqxci6W75lWdN3FIwGCRPESW 4F/rmpp6cOAWBxhtgrW7A7e8sPrttU1pdgF3xxmU6ZTfdu6YF26aWZLjEvKG6ETkpdt/8a3JRZl2 g4afbjZZquvwvr4SV9ziAKNNpNZe/41/WfXOur3pdgFFHppBVVl67PJJv71mOlZIxd7EYbnfn1dl 0PDnpIQQzvn71a3dXk3gi6ETgdEmTEOn99vPrviwZl+WS418vKYZND/D/vT1J999/jghr4fCcNOZ o04dmR9JLYjLJq+t6/58Z4fAt0InAqNNjO0t7m8/u2Llzk4h1yH7NLO8IP3Fm2fhhUnx5XKo95xf 5VSlsHdLCSEmZf/Z2BzhfisaLIw2AWqaeuY/t2JtXbeQXPMEzWkVef+4fTZuhiaCeZNKzxo/JMKB 2wfVrV2eoMC3
 QseF0RapdXXd3/nzqm0t7shzLbQZev6kktfuPB17fiUIVZaunVOZ4VAiGbh1ebRP t7WJfTF0bBhtEVm+o/3651dua3FH3syDMu7X6dWnDX/hptOG5eJmaAKZN6l0WkVeROcTCPn3+mZx b4SOD/fdwvdhTevtf/uipTcQea4ZlDEOt5075vErpx7xBBVl3GdQr06DDACgTTN7PMHWgNkRNFsD Zr9O3QFDoywoy0wzg1/+GXQQAACXQtIk4lJlpyKVu9RhGbYROc6SDAcA2ICrEnEqUqZNBjy/9RWq LF0xc/hntRFtBVTv7e0PGNjYPWYw2sIUar7W5RHQfC10cv5Hl048dDO0zq21eoIdfqNLp3v8ZotH 29Kvt/UH2xkBxkHUReiMA2U2Ajk2aWS6bWyWfUJxRo4q5SmkLN02Md8ly3ghFgDAhZNLf5nj7PJo 4dVgKxLp8+mrd3fiZcwxg9EWjoVrGu96KdImRaFDPCbjWU71N9dMu/zU4Yv2dK/tCuwN0naNtvj0 un7No1EAAEJACv0jgQTCcg0AJAKKpAO0A7T3Gyv7dKhzA2UgSyVp6uSCtCK7XKGSM8syZw/LFvZB k1B+huNrJ5W8sHR3eL0qJQI9Pn1TQw9GW8xgtA3ayyvq7n1tvT8YZq6FEo0QQh02u0kNp80oL3i8 TfvRP7d1BEyPzoDzgSxTJBB3V+bxSfs/KAAAtOqsdW8/UAaEZOzqLXS2FMvkqsrs8yvzchSSar3/ ZYmcXlX0/Me7wvvjhBDDZDvb+sW+FToGjLbBeXHZ7ofe2BjUzUHl2oFT1oQQI8MJALrTrqU7QSKQ 4fK4bB19GgCAREBQb3EBDkk6D+Men7kHYOWmTljXXpWufLMyZ0a+c1ZxRupkXNWQzDElmY1dvvD6 Uyky2dvt7/XpqfMZiy+MtkH48yc7H3p9A+NwIr3SDozOOOfUYQtmugBAs9sODsQYB7sKLhuA0Dlm NBz6ejZ5
 u85/Wt0JlM0qcM7Md15SkZMK09URhRkVBem72jxhRptEWnr9bX0BjLbYwGg7UU/+d9uP 394McJxcO5BoiiJrihzMdGl2G6jywXQ4UEPgtEF2WlTfOYpsMoC8sk9f2Rl4vqH/pPTWW6ryLyzP tvDPrcuhluen0XBPy8uy1OnROj3BKsD2LbGA0XZCfv3elp+/W0PIUZtKHphyUoeNqfLB+eYBh1VF OW2QmfzFa4oEiuRhfGWfvnJVa9Ha1nvHF1w0PHtsftJG9jGNGZLptMmc8zDOCMsE+ny6269H48XQ V2G0HQdl/Bfv1vz6vS22IzWVDH2Xc86NDKfutAPAwURj/PA4O0AicFjwJbXQqhxAO8B9G9qfq+3+ RnnWHeMKrFd4XJrjcjlU3aDy4L90hBDDpJ0ebAESIxhtxxK63OA3/9lqV+UDuXZgygkAoUW0L005 j5FoIRKBnAwQcVVCIrIrdTp/YkvXq439N5Rn3ndyWUbibIxErDjb6VKloG7KEM6vJVmS+nHUFisY bUelGfSHb2589qNahzrQLDc0RvvSlBPgRBPtgMy0BNoGjQaJgFNt1dlj23tere97dNqQK8bkW+OS mvwMhxLZX8QTjPQmQHSCMNqOzBs0Hnx9wwtLd7ts8uG7nIdOOeEri2jH5rRBihy1kQjY5DoG85fv /VdD34OTi2eUZMb7nSLlsCt2VQ77LKkkEd2MqCM5OnEYbUfgDxp3v7x2wfK6TKcSzpTzaJJ6SzRs TnVhs3dlZ9294wvumVoS+WURcZQm4rCwkDdBx4XRdrhen37fa+v+tr5FLc/vOXTKCYMcoB3GGlui 4bEr7Yzft7Hj01bPH+dWVGbZ4/1CceNUrTAxTwr4if6Sta39l7695ZXGflZZpB1IotAwLZJcs9iW aBgkAjZ5cXvg3EW1i/Z0x/ttwmRGNuZijOMdFzGD0XbQimb3RW9tWd7Yp2W6Is2yQ1l7S3RQbHJd kF21
 rOnXq/fG+1XCEYig1y4AcOAZKbLSmgDw523Aimb3vNerO9xBUGVhoRZi+S3RQVEkL5EeqO68 cckezYgoKWKvy6NpBg1/8M3Bwqc1Eg1GGwDAksa+ea9X+wIGRNCk6Miy0uK5JXpgKp1Qd45IBOzK C3Xuqz/a0x8w4v02g9Dj08IeuHHOM5xqbnrqrjPGGM78YdGe7iv/tS0quea0DZx+F+KwhAoNHiQC ACqldoA0maRJxK5ILlXOIZwokkqIjYDOAQB0gwaABEzWp1Mf4z7KNQAj1Gny0CfvP1oQdXZlYbM3 +NGef5w7Ill6zzb3+AO6ebTDdsdmMl6Y6chNw2iLkVSPtoU7u67611Zdp1HJtQhLPUwGlIV66mbY 5QybVOBS0xlzKWSoTR6e5Qg1AR+d43QccghMAS4RIh3px48xDgCMcxMGKpC9Ot3W5dvQ7qvtDezV aQcjnX6jUzMNnYFEvnSqPxrsyuI2/1Uf7XnjvBHpjiRIt71dXq9Gw7s/26C8KMtZkuMU/lboiFI6 2t7c3jH/39ujkmsSCbPUw2RgUAAoybCNz3ONzLIX2ORCm1SeaR+T4xwV4anMr/wtM+1KSYb9nIqD t2ft6vFv2OfZ5jU6dbq0uX+7WwdZiuJaoV1Z3Oa/bEn92+eNSPQjWZzt7fFTxggJ56fGMNmwvLTC bIy2GEndaFtQ03bT4tpo5VpOxvHHOwemgRIBxosUmJiuzi3PO7UgzSGTHLs8NN0e+5naqFzXgQBt 6vHv9Oh1Hu2l2u41bs0gEjAufqvXrnzU6r3lk7pX540S/GSh2vu1ug6vTQmztbIik6rSLGXwLUNQ eFI02p7Z2HrHB7vAiE6uZacfdZjDOBgUGFdt0rB0W7ZEJqUpF47InV2a6VAku0QiuWxBuGG5rlD3 jvmj83o1+kJN+7ut3p0+wxMwBe+N2JXXGvpzPq17am5Fwh5X2Nvtr+/wqGE0/QBgHPLS7aeMzBf+ 
 VuhoUi/aOPv1Fy0PLK0DAPG5BgAZriNcaMA4aCYATMhzzCjMLpNhQp7zgoqcpFhgAgCnTXHalIdP G/YwwKI93e83ud9q6m/XmMirG5zqs7t7q7Idt09J0ItRtre6m3sCWa5wvmQmY8XZztNGFQh/K3Q0 KRdtj61qfuTj3VEJNQDIShvYEj2w4ch4PjNPL838+ojcUocyOsOW7F3MLhqRd9GIvOta+z9o9fyq usPLiahNVa4oD1V3zirJmFyUEfnTxKKMf7G7UwlryAYAwGHW6IJk+U1mDeRAe1jLo4w/uLT+Nysb opVroVOiBgVCSlzKELt8ZoHzmrH5Jen2HIdija4+h2n1aL9Y1/JSk8ejMzFbDSarcslr/mdsoqVA t1eb+9gHLT3+8ObLlPGPHjp3emWe8BdDR5MqozbNoPd8sue5Nc3RyjUAsKmTsu1Tc53j0pQrR+WV ZTmi9YESRkmG/ekzK69r7X98U9vCZq+A+akibfead69oeu7MioT6ZbBmT1djpze8lVC/Ts+bOGRS eY7wt0LHkBLRphn01g93/W1Dq+Bc239OqDDLcedp5ZNzHJPz01Ih0Q4zoyTzreKMl7a2/7C6szVI I91CVaSX692XVvReNCKBxjhvr2mEsDY3KeN2RbrhjJEJldSpwPoTUs2gV76/651N4nLNoACQ5lTL sxynlmU9eEpZll0pxLOBAM3u4M3LGha3ByKdnDJeaSOff31MUUZC1O439fjP/tkHHf3BMOLJEzS/ MWPYa3fMicaLoWOweLT1+vRvvb9rybZ2MblmUAA4vTx7ZEH6VeMKzym3/uWbg8bZ/Sv3PrmzxyBS RHsLOr2vKvfXs8vFvVn4nvzvtoff2myTyWAvsuKcMw6zxxSePCLfpEyRJbsiZThVuyqnO5QMh5rl VDMcSqbLnpduS7TlxWRn5Wjr18xvLKoVkGsGBYDCLMcd08vG57vOH56NXbeO7ZVtHbeubvFGl
 m4q pWsuHBn33dJen37lH5cv3d6e4Qjzi66ZNKgzSSKhg24cOGNcIsRpV7KcanaaLdtly0mzFWU58jMc lYXpo4ozRxRnJvtOetxZNtr6NfPiN6qXN/aFn2v7E+2k0qxfzBxammEvSYz5UVJYUt9z2fK9HjOC 0wsmu2yI6815o+JbxPvehr1XP7MijCHbcXHOTcYZB8o4ZTwUfOkOJc2uhPJucnnOKSMLZo4qKM5y 4JhusKwZbR0+/Ztvbwk/1/ZPPE8uz/nh9FLssRWeFc3uyz+ubzch7HSz6ebbZ5XHcT/BoOybTy37 sGafK1bnWznnlANlHIADEACwyaSqNHv2mMJZowuqSrNHxnsYmywsGG3tHu2s16u3tXnCyTWDgip/ Z2LRWRW5lrliLo6WNPZdtrTRwyDMmalOLytNW3BWRbzGLB/WtH7zqWVx/zYwKAsaTCIwvix7cnnO 3Kri8yaVJsgeS8KyWrR1+PQzX9s86FwzKKhyoUu9eWrp1WPzx+Y5gWCoifHKto75q1rDn5YGjDVf HxWvi/6+9viSz3d12hOj+TvnXDdZ0GCZTmVIjuvs8cXzZ4+YODQ7queOa5p6Grp8x/0QlPEsp3ra 6EIAWFfX3ekJyhLRDDqyKLOqNOuIf2Tnvv49HR5ZIpTxggzHlOG5YlceLBVtze7g196sGVyuGTTN qc6syL20MidhTy8mu0dWND62rTvMgl7GL8iz/+frY0W/1PG9vqr+9r99AQDCV9kiRBk3GQMONkWa M7bo2tmVc8cV50Wnf+8tL6z68ye7jrsm49fpzFEFn/zfeQBw8W8++XRrm12V/DqdVpH39t1zi7IO b+XkDxrn/erjzU29Npn0B8xLpw996dZZYnfnrLPTt6vHf+nbWweRawYtzHLcPHX46aUZhzYsQ8I9 dHLpxr7gon3+cOrdJPJRV2BHl29sfkyvcG13B/78yS6/TtMEtgAQRJaILA18Jj/esm9Jz
 b5ZYwq/ cfKwb59W4Yr+zP1A0B9tVCRLRJYJIcRlk9fXdy9c23TrOWMO+9+8/kXj5qYeuyIDgCSRaEz5E2Kk HbkdXb7Zr2w6fq4ZFAxqIzAuz/X3S8et+Pbkn84ux1yLNqdNeea0oZUuGcK6O93g5OmaduFvdWwL lu9ZubMzAXPtMHZVtqvS0u3t//vquot+++nrq+qp0HswFFly2BRFkRVFdtoU5ZB2dYQQ5/7/yq7K X40nQogikReW7u716Yf+e2/QeHHpbojydDHRv3InYlO752tv1AxcRnU0h1Ry/HhG6cyyrITtC2ZJ w3JdD0wqunlVa3h/fFlXoNenx2yrenuL+7kltY4kuQ6ZEJLhUDjna3Z3ra/vfn1Vw/0XjQ8te0Xu 7vPHfevU4aHrIGyK/N/NLb/89xaXTfYEzfmzK245e4xuDhw3PGLdn12Vtzb3vb6q/tCB25tfNG5u 6lGivDmT9NG2trX/ore2HCvXDAoA44ozrhxfdPGInLiXgKasmyYUvbWn56MefdC7pYq0rSf477qe 6yYWR+fVvoQy/ti/qjv7NUeCNzT/MkJI6IU/qG5dV9d9wxkj75pXFfkC3MiijEPLTXa394dGhYZJ y/PTT6SXiU2RXli6+8qZFaHfTL0+/ZUVdbrJ7Y7oji2S4/fS0Sxp7Dtqru2fe55env3RtVM/vXrS w6cNw1yLr5/PKJXMcC67Y4R80afxmFw5+MLSXe9t3GtPkiHbV6XZFU/QePy9rZf89tNPt7WJfbhB D34JTHr85QXKuCKR2n39r6+qD/2bRRubV+3qTLfL0d7ATNavHwAs2tN9zbvbjpBrBgWDjivO+M7U ki3fm/Hx/CnnlGfj8fVEMGNI+q0js0MNhwfHriys693dF4jCS31JTVPPE4u2Ak+4XdFBUWUp3S5v aOi58unPnvzvtoA++E+4CLIspdmVUAXyqyvre306Zfz5j3cqEiGEKIosR3NOmqzR9
 ub2jhv+U3t4 rhkUDHrOuKInzh+z6tuTX7xw7KhcF160kUCIdOWovCJ7ON917QHa6NGP/7+LgDdoPPzW5qZuf0Ld UBGe0AaladKH3th454I1TT3+GL8AZTzToVw0pdSuyjZF2tDQs2hj87vrmjY39doUyaHK3zx5mCoR sZseh0rKtbYFNW23f7Dr4KXIBgUAm02+4eSyq8cXTStMw+PrCWt2aUGdLHsAACAASURBVMasAtfC Ft+gC0Hsyuu7us8Zlhm9auonFm39sGZf2MfgE1Ao4F5eUV/X4X1q/vSJw2JaDGBSduGUsjZ38L+b W20yef7jnX1+3SYTk/HxZdlXn1bx+qqG6G3mJd+o7ZmNrTctrh3Itf1bBA+fOaLrntnPfm307LIs zLWERqTvjMkL53CCRBa1eCiP1o/CwjWNz3xUmyAHDwQihKTb5dW7u656ZsXnOzti+aENyodku244 Y6TLJtsUaWtz395uHyHEoPyO88aEfoVEb/k0yb6Qv1699wcf7tJ1CgA2At+dXvb3C8ds/d6Mn84u T/QLetF+F43Iq7SRML6peyivi85y27q67gde36AZ1JIlQaGxW2On95pnPvuwJsz6m/B4gsYFk8um DM/VKZclosqSTzNPHZl/3sSon/xJpmh7ZEXjAx/t0nVamOX41bmjVsyf8sL5o2NTEIDEuqb8yOcK j80g0r92dgt/mZ37+m95cXVDp0+RJYOyaPyjmUwz6MF/TGYyHuMzjnZVbu/Xbv7rKuHbpscmS+SO c8cA5xC6aloi35k70q7Kmhndv35yzN36NfPBpXUv1bSPK8748ezyeZW5mQlfJo6O4eqx+Y9t6Rr0 Pc0m+6JH/KitzR349qyKG84YKfaxJmWUcd1knqDZH9A7+zVP0Oj16UGDuv16QKfugBHQDEKIqkg2 RVKiP2B02eQuj/bd51e+evscUTW9J+L8yaUzRuSv3NnJGJ8ztvCiKWUx+KDJE
 RDV7d6gyd75xng8 FGUNuU61MkOtG3xNQmc4J7WO4/SxRaePLRL/3KPo9eltfYGGLm9Dp7exy9flCdZ1eLe2uHs8miIT myJFtYeSXZW7PNpNL6z+511zj9aTQzinTbnj3DE79/WrMvnO3JGHniqJXp4nR7RNK06fPSwOvR9Q lOQ51ctH5f16c8fg9kkVqdVvNPX4k7q5dk6aLSfNdmistPb6Gzq9ezq8mxp7lm1v39PuMRkH4BKJ yrlxuyrvavPc/vcv/nHHnK/25IiSC6eUjSrOAIDRQ76Up9HbRkiOaMNNT4uRJTIuyw4mHVy0SaTJ q6/rSu5o+6qSHFdJjuu00YXzZ1f2B4yd+/rf27D3461tLT2+1r6gLBGnKoktIc5wKKt2df74rU3P fedUMpiBk0GZrpk+AlwztaM0Owjo1Bc0ZVmSCBj7TyzYVfmrpSc+zWQcdM30R6GoGCMDxUeeQmyK NNgaXENn+3zRLdyNr0ynOr0yb3pl3qOXw+c7O/69oXlFbceGhh6ZgNhC4jS78tKK+knluV/tOHQM Q7Kds6qKbIrUHzDKj9JmasLQbJ9mhmbWuWlHPcSaZldmjioAAN1kY0uyJNGl9ZZqRYmSSF2P/7wl 9Xt85uCWW/z6YzOG/Gh6adTeK+E09fiXbWv727Lda/d0ASECL6AxKMtNs/3z+2ecyCn3kIBu9gcM CB02cKpHbOze69MPtAPJTbcfbU5tUNbj1UL/2abIOS5FbDE2RhuKD874RUvqF+/tH1z5rmbeP7no VyenULSFeIPGh9WtT39Uu7aumzIu6hoaT9A8f1LJP+6YY701n2Sqa0NWQiTikgBOoHvEl/8Y6QyY wKOwUZrY0h3qZSeX//f+s397zbRxpVmeoClkUJJulz+s2ffyirrIH5VoMNpQ3GSF0WhVIs0ezauF 0xnJAuyqfNNZo/951+m3nD0KADQj0s8DIcSmSE8s2traG+vz89FmtVFo7
 GkGpfuHHiey2XTs5VJJ IgAQum3XAv0njs0hD37NSCI9QdOnmal85XBFYcZT1558zoQhD72xcU+7x2WTI1l9UyTS3OP/wwc7 Hr9yqsCXjDuMtogsaez79aZ9/v1HRpyHDEPIV5aQ1P3ff9L+BFT2zymkLy+1egx614TCOF4tHBtO icDgfyb9BtUoLhDDxVOHVpVm3/vqug9r9kVYHWJTpDdW1V83Z0TMinhjAKMtXJz9Zv2+R6s7vJyA IoksPQwat04omFGYLuyBicoZRj2qRDTG49NZMfGMLMr4282zHv7nxgXL9yiyFPbZflWW2tzBBZ/t sdLADdfawtEfML7x3933bezwEmlgg08iAv5hPEOCl+cOe3ZOeSrcDa6G96MYkzbiySInzfb7+TN+ cME4k/FI2joqElm0sXnnvn6B7xZfOGobtE3tnhuWNm7oN8K5VfMYNHNaruO508ridVN67Blh/Cgy brdJ+F17KFWWHr18skTgN4u3A0B4Yze7Kte29n9Q3TJ6iEW+/XDUNjgLatrmvb9ng9cUnGsB44bK rMXnj0ydXAOAwGArPwAAQFYkKcr3vCWjB78+8btzR2gmC7soxGGT31jd6A0aYl8sXvBb5EQZlN3x ad13V7e2MxJOk9ijMZlK6RPTi58/qzLV7qbpNRgM/ufQTkiYM1lLs6vy41dOvXByqV8PsyLErkib m3qrm3rFvli8YLSdkB1dvgsX1T6zq4/ZFJF9WDSzyiUvPrvi3umlluzvemzBMDb1GM91KE7LtfkW wmlTfjt/xoiijKMdXD8+zt9Y3SDyneIHv0WOb+HOrgs/2PNRlwZi+19q5gXFrve/NuKc8myRj00S nPFeCoMu/mC8LMOeho1Ij2JYruuXV0yxK1KYWwqErNzZGa/L/cTCaDsmzn62ruWqZU11Ohc5CWUc TPbwuLy35o20WH+eE1ffF6jtCwz6s8p5gVNJwRHuibtgctnlJw/zB
 sOJJ0UibX2BtXXiu7THHkbb UTW7g9d8sOfhjR26IouchOq0SOJvzyn76exy651JPnHbegP1vcFBf2IZz8Dv2WOSJfL9eeOGF6SF MS2VCLj9+rLt7dF4sRjDb5MjW9HsPm/xrtdC12UKzbVZufb35424bHS+sGcmp9aAycKaNDmEv4rl VJVmfePk8jC2aAghQYNtb3FH7+bjmMFoO4I/b2m/4OOG7X4qeBKq09tHZr03b+Tkogxhj01OmkGX t/tg8INW1SYNdabuUPfE3XrOmCyXLYxCEFWRmrp97e6oXIoYSxhtX9IfMG5csufmVa0eBmIrPNI5 e3p60dNnVuakWIXHEXUHzXcb3YP+DDNeYFcqc2LUzj+pleenXTp9aBiFILJEWnp8DZ3eaLxVLGG0 HbS103vB4l0v1PcLn4ROTVf+dXbF7VOifq1ssli9z+MNo/qK8QKXelLBkftWo8N8fdpQRRp0r1mb TNrcwbboXGUdSxhtAxbu7Drvw/qVPZrIYwaMg2ZePTT9vQtGpWaFx9H8rqYjnEEx40NVYvleT6JM KMueVJ4bMAa3mUAI0Qza1O2L0lvFDEYbaAZ9ZEXjlSv2tupMbK6pnD08Lu+l80aWpMBZ9xO3qd1T 7TXCGRdLZGwGTudPVEmOa3J5jj74dpWyJLW5g9F4pVhK9RXZph7/PaubFzZ7BZfj6rTSJT8xYyju hH7Vb7Z0esL7LaJI3xpl8R52Yo0vy1YViXM+qG5uikyaunyaQZN6gJzS0bakvueu1S3bPYbwYwbn 5NmfPbNiVKqW4x7D2tb+fzd7wtuiKQI2ucj6bewEGlGUkZdu9wQNdTANjRWJeIKGZjKMtuTDGX92 8757NrYbnIjMNcZVzm4alf3b2eVJ/W0RPU9t7/JoNJzPOeOzilyK6NsqrW14fnp2ms0dGGQzD0J6 fboRVl+WxJGK0dbh03+6pvmZ2l5wCu2vb7IiBX41dch1E4tFP
 tZCltT3vLqnL8zfJZr5nTF5g7rq HBVnOx2qPNjaXYlA0KAmRltyWdvaf+vnzet7gsJzbWq68sIZ5ViOezQB3bxn3b6wx8j5Mh+DFW2D lGZXMp1qGDdJBA2a7AcSUivaFu7sun5Vi8fkYiehYLKrh6b/fk55qjVcGwTO7lvZtKVPD3MPWjO/ WVVQmY3RNjihPgKDLW0L1X9E541iJ1WizR80frKu9YntPaBIYo9P2Uz68ylF904bAgQraY7qzR1d f64f/PGD/WwEzsh3YsOPMKip2pE4JaKt2R387tL6jzqCgrt+m6zSIT1/xvBzKnJFPtZydnT57tnQ bhApzDMeJqvKd82rxE9yOMLYDeCc21U52X+RWD/aljT23byiqc5Phd9mcFFZ+lOnDa3ECo9j6vDp l31U1xqMqNfA1UPSMrH9ZLjCuKLUkfz7+1b+duGM/3ZD6w+rOwxOBB+fMuh9E/J/PnNoyo72T1CH T7/s/d3bI7slp0iBO6cOEfhWqcMfNPTBd21jHDKdqk1J7nSzbLT1+vQ7Pmt8ba9X+CS0SIFfzSzB Co/j6vXp17y/a2VPuFsHITq9d0phKvfsjESHR+vz64OdWlLGM53qoKp8E5A1v2MOVniIPmYwLdex YO6w8QVYE38cvT79W+/vWtIX2W2tjFc6pKvH4GG1MLX2+n1BY7CLZpzz/Ax7stecWzDaFtS03bmh XXCFBwDo9OphGX89qwJHEMdV59a++f6uDV4z0s1ogz4woxSbC4RtT4e3z29Ig1xrMynPz3Ak+2KL pX5KByo8tnSBUwVF3HCa8XTOHp9edPvkYqzwOK4VTX03rdwb4foaAIBOp+U6vlmRI+i9UtHutn5P wMgeZLklZaw8P+mb4lkn2nZ0+e5a2fRRe0D4MYNKG1lwZuXssiyRj7Ukzp7Z1PZQdafH5JEvcaoy PD6tGJsSh80fNLa1uOVBDr445w6bUpSZ9FdQWCTaltT3f
 Ht5UzsTetYdAHR6QZHz+bnDy7KS/isd bc3u4E/WtrxQ5wZVFlAUrZk3jcrGgsFINHb7NzX2ONTBfS1MxktznMPyk341OemjjVL6+41t/7ex XfCVegCgmY9MKnxwSjEurh3Xwp1dP9/YtsGti/nVYrJpuY7HZw4V8KgUtq6+u6nbn+EY3FfEoLwo y1mS/Md1k/uHtten37isYWGLD8TmmsmKFHj2jGHYSPK4QoO1l+vduiSJyTXG0wl/fFpxukPowkKK oYz/e/1e2+ALOAyTDctLK8rCaIufTe2eqz9p2C78mIFmzspzPD17KPbwOLZen/7P+t5H1u9rN0Hk rxbN/PH0YpyKRmhbc++n29psg1wZ4Jw7VKmqNCvZT1lB8kbbMxtbH6vuaDeFXqkHAAHj9jE5vzh1 aKbYvQjLeWVbx5+2d63sDIBTFflNpNMbRmbfO71U3BNT1POf7NJMZh/kTwfjkOWyTa+0Qpf25Is2 g7JbP61/ob4fFElkhYfJ0gl//JQhWOFxDAZl7+3p+V1Nx8o+HQCEb0afOyTtydnDRD4zJW1vcX9Q 3RrGH2ScZ6fZ5owpFP5KsZdk0bajy3fjssaV3eKPGUzIsT93SunsYXil3pG1erQNHd4fr9u3wWsC iB4sw0Avzz+dVoZLbBGijP/p49qGTl+Wa9CfScbh1JH51vgSJFO0vbm946ENbXVBJjzXLitL/+Oc cqx6P6JN7Z5Fe/vfqO/b0h0Epyo+1GDgQNULZ5RjG5XIrdzZ8faaJpc9nAVoyvgFkyyyGpAc0cYZ /8nalserO3RFRM3UAaGrQifk3z+jNNlPzAlHGX93d/ffdnZvcOutHh3siuDp5wGMV9rI2+dU4L5N 5PxB4+fv1PT4dNfg99Yo46U5zlmWmI1CUkRbszv4/ZVNC5u9oAqt8NBpiUt5/tSyi0ZYYdFUlFaP 1uHXX93R9Vqzt9XkoFNQpGiFGgy083z9zOGYa0L8a
 tHWz2o7wsg1APAGze+eMbIo0yJzl0SPtiWN fXd9vne7P6zr3Y5Bp+fk2v44d/jY5D8rJ0SzO7i0pb/Bb7y2q2d7qPI29FtEbGHNYUw2Lcv21zlY ZyPGwjWNz3xUO9iCjxDKeJZLvWhKmWX20BI62p7Z2PrgxnYvJ2InoWCye0dnP3xyGVZ41PX439rZ /UVPYKfP2NIdBIAoTjwPo5kXlaQ9P3c4LnEKsa6u+4HXNwR16gjrt5Ffp+dNHHLqSOvUqCdotPX6 9PtW7R2o8BDYEs9k6YQ/fWqKXhWqGbTTb3gNuq0n8Orunk29wU6Te0wOlIEqxyjRAIBx0Mzbx+Q8 MWsYHmITYnuL+5YXV+/rDYSXa6FK3f+ZYakvRyL+TTa1e+5YsXdljyZ4NqTTaTn2J08tTakeHu3u QE2f1ubTuxisbPN+1tLfHqAHVy0lAorQQfFxMZ7O2Y+nF2NdrijbW9zzn1tR2+oOL9cAQKd80rCc y08uF/ti8ZVw0fbm9o57NrS3+iPu9nUoxkEzbxiZ/dNTyiw//Wnq8a9u99b2Bhv9hhvILo++pzfg 1SgQMtCTwxm/xRSdVqUrfzh1KJ6jEmVdXfctL67e2tyXFsFiNGf8u2eMtNj6TAJFW0A3H1m196k9 fcJvabHIMIEzzeSayQImMxjXgQBAqye4us1b1+3b5TVadOZm4DFZkDKDAnAOhIAigSyDK96lLSYD gKuHpj89pxxbsIny3oa9P3hlXUtvIJJc8+v01JH5V55iqSEbJE601fX4v//53kWtPsE7oYxXOaQf n1R8+ej8gG5yNrhrtKPB5AAAlHEDgJvUAKJTFqDMYNygXDNZkLIg4zrlJmUBaWCE1Wuwnb2Bdo/W HjD3+Y0Og3nN/cn1VbIM8Y6yL9HMyjTlkZMKU3OJMxq8QeP3/93+1PvbDcrCK/UIoYw7Veme86tc ljiBcCjCefx/2hft6b5/TauAltNfxfiINGVMt
 tOjm4KfHLF+gwEANWmAAzdoEAg1qY9yDcCkjIeG XSGEgERAlg4ukCULxolpfrci+4GpQ0bhSQNB1tV1/+yd6g9r9tkVKcIWHW6/cd3plc9cf4r1Stbj HG2U8d9vaH20ukNwhcdhBn8VY4wc9n2ZRJl1XCYDxidk235/cunZQ7OIlf5q8dPr0//yyc7nltS2 uYMumxzG3cmH0kxWnOX49/+eVVVqwY21eE5I2z3a/33R/MLuvqiXHcRyBxABgGZWZajXV2R/f1qJ 9YYDcdEfMBZvan76w9r19d12VY5kce0gzh+6ZKIlcw3iGG0DV4X2arErp0LRxnioR+4PJhVeNyoX z7oLEdDNf6xqeGNVw8raDiIRMaEG4Ama82dXXDdnhJCnJaD4RNsr2zpuXd3iFbsTiuKIcTBZkY1c PjzzwakleEtO5Cjje7t9b65uePOLxvoOj1ej6fZIZ6AH+DRzRmXeI9+YbIFuukcT62jrDxg/W9/6 xLZuUGWRxwxQvDAOmlmVZbuwJPOeqSWWLxuMgZ37+rfs7V28ueX9za1uvw6E2GQy2NtbjkEzWV66 /RdXTBlm6WF1TKNtV4//tk/rl/QIuvcIxRfjYNBZeY6rKgvOL8/G6WckDMo2N/au2tWxual3U2Nv zd4+iYDLJgtfqeSc22Tym2umnT62SOyTE03sImbRnu6bV7cKPmaAYk+nIJEMhczJsz80dcj4HCeW 4A6WQZlh0IDJalvdm5t619d3b2rsdfv1tr5A0GAOVRI4RjuUyTil7BdXTLlyZkU0np9QYlH8YVD2 +BfNj+3oNohkqfqGlMI4aKZNJqcMST8j237LpOIYzz0N0wgGg5E/h8uOA9+EEucSgMtGQBIZJZRx kzKDMs1kmkH9Og1ohidougPGvr5AS4+/scu7o7W/odPr00zGOeMAnEsSUSQiajXtiG8VNOij35h0 /8UTovQhEkrUo63Dp9+6rGFhsxcnoclq/
 2ra1aNyJ+c4LhqeA3Ksi2m2bq3etmUb9bsjf5TsOrzW YYW7wEecSsS/dM39Z138GgUAv24GdOrTzKBB3X6916e7/QYAKDJRJBLtIDsM51wz2ANfn/DDSyZa eOvgUNGNthXN7ltXNW/p1TDXkgnjYLLQrLNAgm9UZF89KneIy1YUjy0Czviy5Z/WrF2t+702oT+T NmK6DfmtvhGb+xyUMQIiHy5JBAAkAoQQmYAkEYmQeGWKZjKJwP9dMvG+C8enTu10FKMtKo0kUfQw DpoJACNyHZUu9dRs+9Vj80fluuL4S97j9bz/n/807ah2KJIsK6K+UwmAQlhDwPlKx7Be06aSRD2s IkJQp2lO9bHLJ9101uh4v0tMRSXavEHj/rWtz23vxsFaEmAcNDPdJs0sTDu9OG2oXT6tNDMRznvu a29btvjdlqbGNLtN4PdoKNeW9uau6C9wG7K1Z2dBnQ4vTH/i6mnnW+WeqhMnPtq2dnpvXt4k/qpQ FDmTQWg9SCIZCnEBL3Uolw7NPHNYVo5dLs+wJ84FlFu3Vn+yeJHu96Y7VMaFpY9KmMGllX3Z7/cO oYxbONcMyoIGO6Oq6Mn5M6x6lOrYBEfbwp1dt61qbjfx2GZiMBlQBpQBIRlOpTLTnqlKQxUyKdvx 9ZG5I3KccVwAOhrDNFau+GzNp0vSbJIki/ztqBLmp+SV9mG1gUwFaMyW8GPPp5lpduXGM0f96NKJ ifPrKsaERZtm0Cc2tz28oR0Ha3HDODAOlAHjEoHhLmVEjnNKYVqGBDkyGZPtOLk4I8E7qe5rb1ux dGn9tupMp/hJaEPA+WFvYW0g08KLa5xzv06nVeQ9cPH4i6cOjffrxJOYaGv1aDcva1i0z4/luMIc 6Jp5xPaZ+xu3qZTaAdJkUupQxmbZp+S7JhekOWRil0i2QxniUpPol3ZNU8/n7/7d29MldnFNIlwG bvlNA8q4ZjKXTb7xzFH3nF9VlOWM9
 xvFWcTRxtmSpv6rPtzd5TfApoJ1B/nRJZHQpy50rsYhSxmK 5FQlAEhX5UxVYprpUohdljIVqcQmF7jUkbnOifmu4nQ7ACjAFVlSCEnSrX1K6Y4dW99/63WbRFRV FZhrKmEml1b0Zb/fO8TgkiVzjXPu1ajLJp8zYcgDF0+YXolXhgMIOWhV59G+U1XgxLZcJ0A9pCPA oc0xnDJRVdnOuUMiqipnqlKWXcl2KPl2JcelWObW2yM6UOHhstsAQGyu9ZmOTR7Xf7qLJcItmWua yYDz8yYOmT+n8pszypP0d1s0JEQDcZSy9rW3vffOu562xlCuiRJaXOszHW92FNUGMgHAYrlmUMYY l2XplBH5N5816pyJJQm+ihp7GG0obkIVHhD0iZ2EWrgiN7RLwDiUZDtmjiq8fu6IuWOLsI/xEWG0 oTiglH722bL1y5Y4FMEVHqFNg1BFrpVyjTLu16lNITMq8+eOLbxwylBcUzs2jDYUa4ctrgkkEc44 WWmJTQPOuck4YxwIkQgMzUv72kkl50wYMnV4Lu5+ngiMNhRTW7dWr/hkifAKD9i/aRBaXJM4TbRS 5BPBOdcp101GGctwqPkZ9qIs5ykj8y+aUjatIg9X0wYFow3FztKln1R/vkzmVOwkFADUpK3IpYyb of5uJrOpcmVhekVBemVh+viy7Jkj8ycOy433CyYrjDYUC1rQt2r1F2s+XZLpDLPC44hjMP6VTQMF aISvGrav1lazQ364DvtvJQKMg0SgMNMxtiRr9JDMkUUZwwvSy3Kc5QWJfmgkKWC0oagLVXj0tTZK tnSxTyamlzKo1goXtWdp3GYnelhPUbiILruqLMmyBADq/rmwKhNFlgAgtImZ7bLlZ9iLsxxDsp1D 89MrCtKH56e5nLYMVXIlz6GRZIHRhqKLd1WvWfxsS2dAUgTf4MfMoKQ4jOIz96mFET1ISSP2zMjf JzvNnmaTVUUCAEWWHKpsV6QMh
 5LhtDkdaq5LVWPenTiVYbShKGL17/GNv5dZt/Ancy3AiufK02+D rCnCH44sAKMNRQfVWc2zfMdLwEyQhXYepxpIChl5hTTpdlAFz3CRZWC0IfG4t5mt/xU0fwqyDYjQ WnkzAM5CMuUeqeJikY9FloO91ZBgvHUFW/849NeDIrQLOadAdSieKU29l+SMEflkZEU4akPicMZ2 vMy3PA+GFyehKL4w2pAYXOvlG37H698FIoEktJTB8EFWJZlwM05C0YnDaEMC8K5qtu6X0F0DitDj jTgJReHCaEORClV4gL8N1DSRzzUDoDjImG9L42/ESSgaLIw2FAHDy7b+NSoVHqYfMivI5LuloeeI fCxKGRhtKEy8v55t/B00fwqK4yhHPMN7LgWqQ9mZ0pQfkMwKYY9FKQajDYVjoMLDXQeqS2SuUQ1k OxlzDU5CUYQw2tAgMZPVvhqFCg8OZgAnoUgUjDY0CNzfwWue43veBkkRecyAU2AmlM7FSSgSBaMN naj9FR7VINtF5hozQFLJ+O9JY68F0d1BUMrCaEMnZKDCI9gFsk3c4hoHww9ZlTgJRcJhtKHjMYNs y5/4jpeAM6HHDDiYQVI+j5x0O05CkXAYbehYotXDg2qgppOq63ESiqIEO3+go4pOhcfAJFSa9iAp mS3omQgdDkdt6EgO9PAw/SInoZwCZ2ToOWTy3SS9TNhjEfoKjDZ0uIEeHnX/EjoJ5WAGwZZJqq6X qq4HWfDlyggdBiek6EsGKjy6NoPiEJZrobNTmcOlGT8ixaeKeSZCx4SjNnTQIRUe4o4ZcApUJ+Xz yNT7iSuyq6cQOmEYbQgA9ld4bP87AIhbXONAdVDTyYSbpdFX4SQUxRJOSNH+Co+WZSIb5HIKZhDy J0lT7yWF08Q8E6EThqO2VDdQ4eFpEnnMgFNgJqm4hEy6EyehKC5w1JbS2PYF4nt4cAq2bDLxNmnU 5cKeidAg4agtRQ1UeDS8B
 yBwcQ2AUyAyKZ0LpXPB1IAbwp5sAVQH2UbKzsaRbAxgtKWiaPXwOBTD UPsyqoM9m0z+gTTyMiBSvN/G+jDaUs5AhUegQ/DtU+ioOJhByJsoTX+I5J8U75dJFRhtqYTqrObZ qNzSgo6GGcAZGXYelvXFGEZbqtjfw+OTKE5C0WFCDU4m3CyNnY+T0BjDHdKUMFDh0d8Aiive75Ii OFAdMoZhg5N4wVGb1R3o4SH4lhZ0dKFy5aFn41UPcYTRZmUDFR7174o8ZoCOjRkgKWTMt6UJt2CX zTjCCallHazwwElozJgBcBaSKfdIFRfH+1VSHUabNe2v8GjHvEbtGAAACdxJREFUXIsRToFqkHeS dMpPSM6YeL8Nwgmp9RhetvWvUbilBR0dMwCADL9Ymv4AXnqfIDDaLIX317O1v4C2VYJvaUHHEKrw mHSnNOoKrPBIHDghtY5DbmlJi/e7pIbQpfcZw6RTHsXGTYkGR22WwExW+ypWeMQUM4DqZPgFeMwg MWG0JT3u7+Cb/8jr3wVJwUlojIQanIz/Ht6jmrBwQprcDt7SIvKqUHQMHMwgZA4nk++Whp4T75dB R4WjtiR2SA8PB+ZaLIQqPIpPk6beixUeCQ6jLSlxfwff9je+YwEAgIRD7y+L0tELTgGAjLxCmnQ7 VngkPoy2JER11vQBtCwDGRuufYWk8N4d0FcrdNmRgxkEZyF2RU8iGG1JiLNQK+p4v0eCIRIcmKTr fULvh9Yg7yRsJJlcMNqQVYSuUq19FZgh8spBZmIjyWSE0YasYH+jzU9FHsOgGsh2Mv57UtX1OEZO OrgCjZIeb1vN1v4M3HXiKmAGKjywkWTywlEbSmacsV1v8M1/FHkMAxtJWgJGG0pWXOvlm/7A97wt 8hhGqMJj7LXS+BuxwiOp4YQUJSXeW8s2/Ab2rQTFISjXOJgBcBZhI0lrwFEbSj5s7xK+9hcQ7ALZ JmxxzfBD/iSs8LAMj
 DaUVEJXqda+AswUVuERuiq04hIy6U6s8LAMnJCipMH9HWztY9CyTORRKjMA tky8KtR6MNpQcuAd69kXP4b+BpG9AEw/ZFZghYcl4YQUJQG28x98y18g2CWywoOZUDpXmvYASS8T 80yUSDDaUGIzvGzDb3ndvwBA2CQ0dMxgzDXSxNvwmIFV4YQUJa6BCo+2z0G2C67wmPFDbCRpbRht KEGxvUv4piehv17cVaoczCA2kkwROCFFiYeZbNuLfMufgJnCFtdCV4WOugobSaYIjDaUWLi/g2/4 NW98X2QPj1CFx+QfYCPJ1IETUpRADqnwENdA2PRD3knS1HvxqtCUgtGGEgXb9Rbf9DvQ+4XlGjOA maT8fGwkmYJwQori72APD4HHDA40khx/Ix4zSEE4akNxtr/CY5XQYwYBvCo0xWG0oXga6OERaBdW 4cEpUB2KZ0ozfoiNJFMZTkhRnJhBtuMlvvUvoZmjmGdSDSSFjLxCmnIPHjNIcRhtKA64t5lvepI3 fSiyQS7VwJGPjSRRCE5IUazxjvVsw2+gazOoaYKeSIHqkDdROuUneMwAheCoDcXQgVtaBFZ4UA2I RIZfTKb+gNhzxDwTJT+MNhQjXOvlNX/mu/4BRBI2CWUGKC4y4Wap6joxD0RWgRNSFAsHb2kRdVVo aBKaOVya8SNSfKqAByJrwVEbirr9PTzENchlBjADys7CRpLoaDDaUDQNVHj8WfAtLZKKjSTRsWG0 oWiJQg8PDmYQnIXYSBIdF661oagYqPDorhGWa5wC1bCRJDpBOGpD4g308DC8IhtJEolUXCJN/V9s JIlOBEYbEsrwss3P8N1vAGcie3io6WTSndLoq8Q8EKUAjDYkDO+vZ2t/IfKWlgPHDLCRJBokXGtD YgxUeLjrxFaukfJ52EgShQFHbShinLGtf+Vb/xIqyxDzzFCFx/jvSVXXY4UHCgOO2lBE9ld4/Bck VVCucTCDkDlcm
 vYgKZkt4oEoFWG0ofDtr/CoFrm4ZgZhyCxsJIkihBNSFCa26y1e8ywEu4RVeHAK AGTstdL4G7HCA0UIR21o8Mwg2/QU3/UP4ExQrnEw/OAqJhNvw6tCkRA4akODM1Dh0f6FuAa5HAw/ 5E+Spj9E8k8S8UCEMNrQYBzSw0NQI0lOgTMy/GIy6U6s8EACYbShExOq8Nj+d5HHp0LHDCbcLI25 BiRcG0EiYbSh4xuo8Gj6UNwVyBzMAGRWYIUHihKMNnQcvKuarfsldNcIayTJKTATSudiI0kUPRht 6FgGKjwEXoEc6uEx9lppwi2gOMQ8E6GvwGhDRxHq4SGywgPA8IGrGBtJohjAtVt0BAO3tLStEjYJ BQDTD0NmYSNJFBs4akOHO6SHh6ArkJkBAKTyf8jku/CqUBQbGG3oEMxk217kW/8CVBM2CTX9YMvC RpIoxjDa0ADu7+Cb/8jr/iXulhYAM4CNJFFcYLQhgAMVHl2bhTWSZAZwRoadh40kUVxgtCFg9e/x jb+HYBfINjG5ZgZAcZLx35PG3whEEvBAhAYJoy21HajwABDWINcMQOZwMvlurPBAcYTFH6lr/y0t q4ReFapD8UxsJIniDkdtKYq3rmDrHxd5SwvVQFLIyCukyd/HYwYo7jDaUk+owkNsDw8zAM5CMuUe qeJiMQ9EKDIYbalFfIXHgatCsZEkSiQYbSnkYIWH4hCTa6EKj4pLyNQf4DEDlFAw2lKF+AqPA40k q64T8DSEhMJoSwFmkG35E9/+dwBRFR54VShKdFj8YXHc28y+eBTaPhd2BTIzgBlQdhY2kkSJDEdt VjZQ4eFpEjYJZQZIKhlzjTTxNpBtAh6IUHTgqM2iOGM7XuZbnscKD5SacNRmQVzr5Rt+xxveAxC0 uHagwuOUn2AjSZQUMNqs5uAtLaIq1/Y3kpSm/i+o6QIeiFD04YTUUgYqPAIdwq5ADlV4TLpTGnUF 9vBASQRHb
 VZBdVbzLK99BaguZnEtdKVexjDplEexkSRKOhhtVsC9zWz9r6D5E5DtwiahzCTl88jk u7HCAyUjjLakN1Dh0d8gbBIaqvAY/z2p6nqs8EBJCqMtubHtC4RWeHAwA5BZgY0kUbLDaEtWAxUe 9e8CkYRVeJhBGDILG0kiC8BoS0r7KzyqQXGJeSIzgEhk5BXSpNuxwgNZABZ/JJ/9FR7tgnKNgxkE ZyGZeJs06nIRD0Qo/nDUllRCPTx2vASciTtmoEHeSdhIElkMRlvS4P31bOPvoPlTkQ1ymUkqLiGT 7sSrQpHFYLQlh0MqPBzCGknKdnLSHdLoq7DCA1kPrrUlPGay2lf5ludB7xdUuTZQ4YGNJJGF4agt oR3s4UEkMZPQUK6VnSVN+QFWeCALw2hLXAdvaRE4YSQSGXutNP5GrPBA1obRlpA44/s+Z+sfB387 qBnCHqu6yISbsZEkSgUYbQmJmbxnW+gsp7hnGuAqwrPuKEVgtCGELAibCyKELAijDSFkQRhtCCEL wmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAFYbQhhCwIow0hZEEYbQghC8JoQwhZEEYbQsiCMNoQ QhaE0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0IIQvCaEMIWRBGG0LIgjDaEEIWhNGGELIgjDaEkAVh tCGELAijDSFkQRhtCCELwmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAFYbQhhCwIow0hZEEYbQgh C/p/tXGAXkhU+i0AAAAASUVORK5CYII= "
-           id="image9044"
-           x="-289.89471"
-           y="10.172749" />
-        <rect
-           y="9.5095568"
-           x="-289.16486"
-           height="140.49123"
-           width="140.48439"
-           id="rect9046"
-           style="fill:none;stroke:#000000;stroke-width:3.51219511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         id="g9048"
-         transform="matrix(0.45139959,0,0,0.45139959,-304.64118,1298.302)">
-        <rect
-           y="-1.016763"
-           x="-151.66487"
-           height="140.49123"
-           width="140.48439"
-           id="rect9050"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.51219511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <image
-           width="93.07209"
-           height="132.57602"
-           xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCBQIDhADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooA
 KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiop7iC1iMtx NHDGOrSMFA/E1zOo/EvwXpRZbrxJYbl6rDJ5p/JM0AdXRXk+oftCeDrQEWkeo3rdvLhCKfxYg/pX Kah+0rKSV03w2ijs9zck/wDjqqP50AfQdFfKt9+0D41uifs50+zB6eVb7iP++ya5i9+KPjfUARN4 lv1B6iFxF/6ABQB9oMwVSzEADqT2rJvPFPh7TwTea7ptvjqJbpFP5E18R3eq6jf5N5qF1ck9fOmZ 8/map0AfZN38XPAdkD5niO2cjtCryZ/75U1h3P7QHgeDPlyahc/9crbGf++iK+YbXRdUvU32mm3l wn96KBnH6CtW08A+Kr1d0Oi
 XQH/TUCL/ANCIp8rYro9uuf2k9DTP2XQtRl/66uifyLVj3P7S1wSf svhiJB2Mt4W/QIK89tPhP4suTiSzgtveadf/AGXNaUPwW19pB519p0adyruxH4bR/Oq5Jdg5kbVx +0d4ocEW+laTF7skjn/0MVlz/H7xzLnZPYQ/9c7UH/0Imri/A5yPn8QID3AtM/8As9aFt8E9LVf9 K1e7kb1iRUH65p+ykLnRyU/xq+IE/wDzHyg9I7WFf/ZM1ny/FPxzNnd4mvx/uOF/kBXo6/Bfw4pB a91NvbzI+f8AxytGL4U+EY1AaymlPq9w/wDQin7KQudHjUvj7xhN9/xTrP0F7IB+hqpJ4q8RS/6z X9Uf/evJD/Wvdh8LvBv/AECT/wCBMv8A8VVqDwB4SthhNEtj/wBdN0n/AKETR7Fhzo+dn1rVZPv6 net/vTsf61C19dv966nb6yE19NDwh4YXpoGmfjaof6U7/hFPDQ/5gGlf+Akf+FP2L7hzo+Xmmkbr I5+rU3JPU19Sf8Ip4b/6F/Sv/AOP/Cj/AIRXw3/0L+lf+Acf+FHsX3D2iPlrOKcJHXo7D6GvqP8A 4RXw3/0L+lf+AUf+FJ/wi3hr/oX9K/8AAOP/AAo9i+4e0R8xLeXKfduJl+jmpk1fUo/uajdr9JmH 9a+l/wDhFfDR/wCYBpX/AIBx/wCFNPhPwyf+YDpf4Wqf4UexfcXtEfOSeJtei/1et6kn+7dyD+tW ovHPi2E/u/E+sr7fbpcf+hV73N4H8KzghtDswP8AYTZ/LFUW+GXgwnP9j4+lzL/8VR7GQ+dHj8Xx O8bw42+J9SP+/Nu/nmr8Pxk8fwY2+IpWx/fgib+a16a/wt8HMCBprp7rcyf1Y1nS/B3wzI5ZLjUo h/dSZCB+aE0vYyDnRykPx58eRffvbSb/AK6WiD/0HFadv+0X4ui4msNImH/XGRT+j/0q/L8GNEKn ydT1BW7F9jfyUVmP8Eh
 klPEHHYNZ/wD2dL2Uh86Nm3/aV1FcfafDdrJ6+Xcsn81NbFt+0rpjY+1e HLuP18q4V/5ha8/ufgxq6N/oup2Mq/8ATUPGf0DVnXPwk8TwLmNbO5PpFPg/+PAUvZy7BzLue12v 7Q3g2cDzodUtj38yBWH/AI6xrcs/jP4BvOBryxN/dmgkT9SuP1r5ln+Hfiy3Qu+jSkD/AJ5yI5/J WJrKm8O63bqWm0bUI1HUvbOB+eKXK10HdH2bZeN/CuoY+yeItLlP90XSBvyJzW3DPFcR74ZUlTsy MGH6V8CkFSQQQR2NS293c2j77a4lhb+9G5U/pUjPvmiviax+IXjDTgBbeJNTVR0V7hnA/Bsiuksf jv47swBLf214B/z8Wy8/iu00AfWtFfOVh+0pqcZUah4ftJh3NvM0f8w1dVp37Rnhi4IW+03UrQ+q qsij8iD+lAHsdFcRp3xe8CakB5fiC3hY/wANyrQ4/FgB+tdZZapp+pJusb+1ul9YJlcfoTQBbooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKA
 CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopCcUALRXM 618QfCfh/cNS12zjkUZMSP5j/wDfK5Neea1+0ZoNtuTSNLvL5wOHlIhTP6n9BQB7TTWYIpJIAHJJ 7V8sax8f/GOo7lsfsemxkYHkxb3H/Anz/KuB1bxVr+usTqms3t2D/DJMxX/vnp+lAH2Fq3xB8JaI SL/xBYxuOsaSiR/++Vya4bVP2iPCtpldPtNQv29QgiT82Of0r5iiikmkEcUbSOeiqMk/hW7ZeCfE d/zFpcyD1mxH+jEGmot7CbS3PSdU/aP124DLpej2NmCeGmZpmA/8dH6Vxmp/FzxzqpbzfEFxCh42 WoWED8VAP61dsvhJqUpze6hbW6n/AJ5qZD+OdtdJZfCfQoNrXVzdXLDqNwRT+AGf1rRUZvoS6kUe QXeoXuoSeZe
 3lxcv/emkLn8yaZb2txdy+XbQSzSH+GNCx/IV9B2fg7wzYD9zpFs3vKvmn82zW5F5 UKBIkVEHRVXAFaLDvqyXVXQ+fLPwN4nvgTDo9yuP+e2Iv/QyK3rT4Q+IJgrTz2VuD95WkLMPwAx+ te0ed7mk8/3NWsPEl1WebWnwXgVwbzWndO6wwBT+ZJ/lW3Z/CXwvbEmYXd2PSWbbj/vkCut8/wBS aPPPv+dUqMV0J9o+5m2ngfwrZKVi0W0f/rsvm/8AoWa2LWxsLBNlnZW1uvpFEFH6VB57ev60nn/S qULbC5jSEgHQCjzqzfO9xR59PkFzGj5/vSeePWs/7RSefRyBzGj5/vR5/uKzvtFHnj2p8ocxoed7 /rSecPWs/wA/6Unn+9HKHMaPnD1o84etZ3m+5pPNPqaOUOY0fOHrR5w9azvOPqaTzj6/rRyi5jR8 0etIZqz/ADyO9HnHHWnyj5jQ86k870rP840eefU/nRyi5jQ840hnNUPtGe/5mk88f3hRyBzGh5/0 /Ojz/XH51necPUUecPUUcocxofaKPP8Aes/zhSecKfIHMaJn9xSfaPcVnmYDvR5wP8VHKHMaHn+4 /Ojz/Qis7zvejzvejlDmNHz/AHpPPx3rOM1J531o5A5i/KIbiMrNFFIh6q6gj9ayZ/Cvhu5Rll0S w+bqY4VQ/muDVjz/AK0vnj1pOCYcxz118MvClwhEdpNbk/xRXDE/+PZFYt38H9Ocf6Hq1zEe/nRr J/LbXeCcUvnr6ipdGL6Fe0fc8ouvhBq0bH7JqFnMn/TTdGT+GCP1rDu/h74otAzHS2lVf4oXV8/Q A5/SvdPOH/16UTZ71Dw8SlVZ82XemX9gR9ssrm3z086Jk/mKgimlt5BJDI8bjoyMQR+Ir6b83IwT kelZl54f0PUNxutJs3Zur+UFY/8AAhzWbwz6MpVu547pnxI8ZaQFWz8R34VeiSyeao/B8iuz0v8A aH8WWhA
 v7XT79O5MZjb81OP0q/efDHw3dcwrc2h/6ZS7h/49muevfhHMoZrHVonPZJ4yv/jwJ/lW boTRSqxZ6RpX7SGizlV1XRr20J6tA6zKD+O013Gk/FfwRrOwQa/bQyNx5d1mE5/4EAP1r5evfh54 ksskWIuEH8VvIGz+HB/SudurK7spNl3azQP/AHZYyh/Ws3GS3Raaex95QXMF1EJbeaOaM9HjYMD+ IqWvg3T9W1HSpRLp1/dWjg53QSshz+BrudI+N/jjStqyajHfxg523kQY/wDfQw361Iz65orwbRv2 krZ9qa3oMkZzzLZyhh/3y2P516Fovxa8E64VWDW4beVjjyrsGE5+rcfkaAO3oqOKaKeJZYZEkjYZ V0bIP4ipKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooo
 oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooqrfahZaZbNcX13Bawr1kmkCKPxNAFqivLfEHx5 8I6OWjsXn1Wcdrddsf8A3239Aa8q1/4/+K9UDR6altpUJGMxL5kn/fTcfkBQB9P3d9aWEBnvLmG3 hHWSZwij8TXn2u/HHwXowZILyTU5wOEs03Ln/fOF/LNfLGp6zqetXBn1PULm8lJzunkL4+melJY6 RqGpHFnZzTDONyr8o+p6Cmk3sF7HruuftGa3dFk0XS7WxTPEk5Mz4+nAH5GvNta8d+KfEJP9p65e TISf3Qk2R8/7K4H6VqWHw21KfDXtxDbL3Vf3jfpgfrXT2Hw/0Ozw06SXb+sr4H5Lj9c1tHD1JdLG bqxR5NHFJPII4o2kc9FUZJ/Ct6w8EeIL/BWwaFD/ABXBCY/A8/pXsFpbWdhHstLWGBO4jQLn8qs+ cK3jhF9pmTrvojz2w+FTfK2o6kB6pbpn/wAeP+FdNYeAfDdltLWjXLj+Kdy2fw4X9K2vPo8/3raN CC2RDqSfUs21vZ2Ufl2ttDAn92OMKPyFT+d7is/zvf8ASjzvf9K05URcv+fSef8A5zVDz/ejzz6m
  iyC5fM/uaPP+tZ/ne5pPOPv+dFkFzQ84+lHnnvis/wA40ebRZBcvfaPTFL5+elZ/m/SgS+wosguX zOe+KQz+/wCVUfN9h+dJ5p9cUWQXZf8APP8Aeo84+tZ/mn1/SjzT6/pRZAaHnH1FIZ/cfhVDzfpR 5xo0AvGb3pPO96o+afWjzT60aAXvO9zR5w9aoebjuaPN/wBo0aAXvNHrS+d7mqHmk96DL709ALxm 9zSebVHzP85o8z3o0Av+d7mkM31/GqXmn1pPN96ALvm+1Hm89Ko+Z70vmCgC75vNL5tUfMHrSeYK ALxmFJ53uKpeYKPMouIuiUGl832qjvFG+i4y75ho80+lUvM96TzPrRcC6ZT7Ued9Kp+Z70eZRcRc 876UecKp+ZSebzRcC753+c0ed9Kp+Z6ijzKQF3zfpR5o6VS3+9KJB607gXhIKPMHrVHzOetOEp6Z oAu+b7mlEvo1UvNNKJaNBl4Sn1p3mmqAlpfNNKyC5fEreopJGSaMxyxo6HqrDIP4VTE3vTvN96LB czb3wf4c1Aky6XFG396DMf8A6DgGuav/AIVWT5NhqU0R/uzoHH5jGP1ruBL604Sj3rOVGD3RSqSX U8fv/h14gs8mKGG7Qd4JOfybB/Kubu7G7sZPLu7WaBz0EqFT+tfQwkGOtEqxzxmOaNJIz1V1BB/A 1jLCrozRV31PBNJ8RazoUok0rVLuzYHOIZioP1HQ16Jof7QHi3TdseoJaapEBgmVPLk/76Xj8wa1 r/wN4f1DJ+xC3c/xW52Y/D7v6Vy2ofCyZctpuoI47RzrtP8A30M5/IVhLDTW2poqsWevaF+0H4V1 ErHqcF1pcpIG5182P/vpef0r0nSfEOj69CJdJ1O1vEP/ADxlDEfUdRXxbqPhXW9Ly1zp82wc+ZGN 6/mM4/Gsq3uZ7SZZraaSGVfuvGxVh+IrFprc0TT2PvqivkTQPjX400Iqj6guowLj93ervOP9
 4Yb9 a9T8P/tFaFe7ItcsLjTpT1li/fR5/Rh+RpDPaKKydG8TaJ4hh83SNUtbxe4ikBYfVeo/EVrUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA
 UUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVj6 74o0Tw1befrGp29ov8KyP8zfRRyfwFeP+J/2jLeLzIPDOmNM3QXV58q/UIOT+JFAHurukSF5GVVU ZLMcACuC8S/GTwd4c3xfb/7QulyPIsv3nI9W+6Pzr5k8R+PPEviqQnVtWnliJ4gQ7Ih/wEcfnWHa 2V1eyb

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/spout.png
----------------------------------------------------------------------
diff --git a/docs/images/spout.png b/docs/images/spout.png
deleted file mode 100644
index cab9812..0000000
Binary files a/docs/images/spout.png and /dev/null differ


[14/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/js/bootstrap.min.js
----------------------------------------------------------------------
diff --git a/docs/assets/js/bootstrap.min.js b/docs/assets/js/bootstrap.min.js
deleted file mode 100644
index d839865..0000000
--- a/docs/assets/js/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply
 (this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.1",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict"
 ;function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$ele
 ment.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=thi
 s.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".it
 em"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"
 ==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trig
 ger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.
 data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.di
 mension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transit
 ioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=
 f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart
 "in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){
 return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.1",c.TRANSITION_DURATI
 ON=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigge
 r(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off
 ("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("
 bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.
 scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevente
 d()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport
 &&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter
 =function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.
 contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this
 .getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arr
 ow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d=
 "BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.w
 idth&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$elemen
 t.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.pro
 totype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process
 ,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.1",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")|
 |d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selec
 tor).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var
  h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})
-})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use 
 strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(
 ){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d
 =a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/js/npm.js
----------------------------------------------------------------------
diff --git a/docs/assets/js/npm.js b/docs/assets/js/npm.js
deleted file mode 100644
index bf6aa80..0000000
--- a/docs/assets/js/npm.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
-require('../../js/transition.js')
-require('../../js/alert.js')
-require('../../js/button.js')
-require('../../js/carousel.js')
-require('../../js/collapse.js')
-require('../../js/dropdown.js')
-require('../../js/modal.js')
-require('../../js/tooltip.js')
-require('../../js/popover.js')
-require('../../js/scrollspy.js')
-require('../../js/tab.js')
-require('../../js/affix.js')
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/css/main.scss
----------------------------------------------------------------------
diff --git a/docs/css/main.scss b/docs/css/main.scss
deleted file mode 100755
index 352e13a..0000000
--- a/docs/css/main.scss
+++ /dev/null
@@ -1,48 +0,0 @@
----
-# Only the main Sass file needs front matter (the dashes are enough)
----
-@charset "utf-8";
-
-
-$spacing-unit:     30px;
-
-@import
-        "syntax-highlighting"
-;
-
-#sidebar {
-  float: left;
-  background: #F6F9FB;
-	border: 1px solid #E1E1E1;
-	padding: 0px 10px 10px 0px;
-	margin-left: 0px;
-
-}
-
-#sidebar a.current {
-  color: #E00000;
-}
-
-#sidebar ul {
-  list-style: none;
-  font-size: 0.83em;
-  padding-left: 20px;
-}
-
-#sidebar ul li {
-  margin-top: 3px;
-}
-
-
-#aboutcontent {
-	width: 70%;
-	margin-top:0px;
-	margin-left: 220px;
-}
-
-#footer {
-	//margin: 100px;
-	//padding: 0;
-	font-size: 0.7em;
-}
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/doc-index.html
----------------------------------------------------------------------
diff --git a/docs/doc-index.html b/docs/doc-index.html
deleted file mode 100644
index f9f042a..0000000
--- a/docs/doc-index.html
+++ /dev/null
@@ -1,11 +0,0 @@
----
-layout: default
----
-
-<ul>
-{% for page in site.pages %}
-{% if page.documentation == true %}
-<li><a href="{{ page.url }}">{{ page.title }}</a></li>
-{% endif %}   <!-- resource-p -->
-{% endfor %} <!-- page -->
-</ul>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Acking-framework-implementation.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Acking-framework-implementation.md b/docs/documentation/Acking-framework-implementation.md
deleted file mode 100644
index 4099219..0000000
--- a/docs/documentation/Acking-framework-implementation.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Acking Framework Implementation
-layout: documentation
-documentation: true
----
-[Storm's acker](https://github.com/apache/storm/blob/46c3ba7/storm-core/src/clj/backtype/storm/daemon/acker.clj#L28) tracks completion of each tupletree with a checksum hash: each time a tuple is sent, its value is XORed into the checksum, and each time a tuple is acked its value is XORed in again. If all tuples have been successfully acked, the checksum will be zero (the odds that the checksum will be zero otherwise are vanishingly small).
-
-You can read a bit more about the [reliability mechanism](Guaranteeing-message-processing.html#what-is-storms-reliability-api) elsewhere on the wiki -- this explains the internal details.
-
-### acker `execute()`
-
-The acker is actually a regular bolt, with its  [execute method](https://github.com/apache/storm/blob/46c3ba7/storm-core/src/clj/backtype/storm/daemon/acker.clj#L36) defined withing `mk-acker-bolt`.  When a new tupletree is born, the spout sends the XORed edge-ids of each tuple recipient, which the acker records in its `pending` ledger. Every time an executor acks a tuple, the acker receives a partial checksum that is the XOR of the tuple's own edge-id (clearing it from the ledger) and the edge-id of each downstream tuple the executor emitted (thus entering them into the ledger).
-
-This is accomplished as follows.
-
-On a tick tuple, just advance pending tupletree checksums towards death and return. Otherwise, update or create the record for this tupletree:
-
-* on init: initialize with the given checksum value, and record the spout's id for later.
-* on ack:  xor the partial checksum into the existing checksum value
-* on fail: just mark it as failed
-
-Next, [put the record](https://github.com/apache/storm/blob/46c3ba7/storm-core/src/clj/backtype/storm/daemon/acker.clj#L50)),  into the RotatingMap (thus resetting is countdown to expiry) and take action:
-
-* if the total checksum is zero, the tupletree is complete: remove it from the pending collection and notify the spout of success
-* if the tupletree has failed, it is also complete:   remove it from the pending collection and notify the spout of failure
-
-Finally, pass on an ack of our own.
-
-### Pending tuples and the `RotatingMap`
-
-The acker stores pending tuples in a [`RotatingMap`](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/utils/RotatingMap.java#L19), a simple device used in several places within Storm to efficiently time-expire a process.
-
-The RotatingMap behaves as a HashMap, and offers the same O(1) access guarantees.
-
-Internally, it holds several HashMaps ('buckets') of its own, each holding a cohort of records that will expire at the same time.  Let's call the longest-lived bucket death row, and the most recent the nursery. Whenever a value is `.put()` to the RotatingMap, it is relocated to the nursery -- and removed from any other bucket it might have been in (effectively resetting its death clock).
-
-Whenever its owner calls `.rotate()`, the RotatingMap advances each cohort one step further towards expiration. (Typically, Storm objects call rotate on every receipt of a system tick stream tuple.) If there are any key-value pairs in the former death row bucket, the RotatingMap invokes a callback (given in the constructor) for each key-value pair, letting its owner take appropriate action (eg, failing a tuple.
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/BYLAWS.md
----------------------------------------------------------------------
diff --git a/docs/documentation/BYLAWS.md b/docs/documentation/BYLAWS.md
deleted file mode 100644
index 10e857e..0000000
--- a/docs/documentation/BYLAWS.md
+++ /dev/null
@@ -1,98 +0,0 @@
----
-title: Apache Storm Project Bylaws
-layout: documentation
-documentation: true
----
-
-## Roles and Responsibilities
-
-Apache projects define a set of roles with associated rights and responsibilities. These roles govern what tasks an individual may perform within the project. The roles are defined in the following sections:
-
-### Users:
-
-The most important participants in the project are people who use our software. The majority of our developers start out as users and guide their development efforts from the user's perspective.
-
-Users contribute to the Apache projects by providing feedback to developers in the form of bug reports and feature suggestions. As well, users participate in the Apache community by helping other users on mailing lists and user support forums.
-
-### Contributors:
-
-Contributors are all of the volunteers who are contributing time, code, documentation, or resources to the Storm Project. A contributor that makes sustained, welcome contributions to the project may be invited to become a Committer, though the exact timing of such invitations depends on many factors.
-
-### Committers:
-
-The project's Committers are responsible for the project's technical management. Committers have access to all project source repositories. Committers may cast binding votes on any technical discussion regarding storm.
-
-Committer access is by invitation only and must be approved by lazy consensus of the active PMC members. A Committer is considered emeritus by their own declaration or by not contributing in any form to the project for over six months. An emeritus Committer may request reinstatement of commit access from the PMC. Such reinstatement is subject to lazy consensus approval of active PMC members.
-
-All Apache Committers are required to have a signed Contributor License Agreement (CLA) on file with the Apache Software Foundation. There is a [Committers' FAQ](https://www.apache.org/dev/committers.html) which provides more details on the requirements for Committers.
-
-A Committer who makes a sustained contribution to the project may be invited to become a member of the PMC. The form of contribution is not limited to code. It can also include code review, helping out users on the mailing lists, documentation, testing, etc.
-
-### Project Management Committee(PMC):
-
-The PMC is responsible to the board and the ASF for the management and oversight of the Apache Storm codebase. The responsibilities of the PMC include:
-
- * Deciding what is distributed as products of the Apache Storm project. In particular all releases must be approved by the PMC.
- * Maintaining the project's shared resources, including the codebase repository, mailing lists, websites.
- * Speaking on behalf of the project.
- * Resolving license disputes regarding products of the project.
- * Nominating new PMC members and Committers.
- * Maintaining these bylaws and other guidelines of the project.
-
-Membership of the PMC is by invitation only and must be approved by a consensus approval of active PMC members. A PMC member is considered "emeritus" by their own declaration or by not contributing in any form to the project for over six months. An emeritus member may request reinstatement to the PMC. Such reinstatement is subject to consensus approval of the active PMC members.
-
-The chair of the PMC is appointed by the ASF board. The chair is an office holder of the Apache Software Foundation (Vice President, Apache Storm) and has primary responsibility to the board for the management of the projects within the scope of the Storm PMC. The chair reports to the board quarterly on developments within the Storm project.
-
-The chair of the PMC is rotated annually. When the chair is rotated or if the current chair of the PMC resigns, the PMC votes to recommend a new chair using Single Transferable Vote (STV) voting. See http://wiki.apache.org/general/BoardVoting for specifics. The decision must be ratified by the Apache board.
-
-## Voting
-
-Decisions regarding the project are made by votes on the primary project development mailing list (dev@storm.apache.org). Where necessary, PMC voting may take place on the private Storm PMC mailing list. Votes are clearly indicated by subject line starting with [VOTE]. Votes may contain multiple items for approval and these should be clearly separated. Voting is carried out by replying to the vote mail. Voting may take four flavors:
-	
-| Vote | Meaning |
-|------|---------|
-| +1 | 'Yes,' 'Agree,' or 'the action should be performed.' |
-| +0 | Neutral about the proposed action. |
-| -0 | Mildly negative, but not enough so to want to block it. |
-| -1 |This is a negative vote. On issues where consensus is required, this vote counts as a veto. All vetoes must contain an explanation of why the veto is appropriate. Vetoes with no explanation are void. It may also be appropriate for a -1 vote to include an alternative course of action. |
-
-All participants in the Storm project are encouraged to show their agreement with or against a particular action by voting. For technical decisions, only the votes of active Committers are binding. Non-binding votes are still useful for those with binding votes to understand the perception of an action in the wider Storm community. For PMC decisions, only the votes of active PMC members are binding.
-
-Voting can also be applied to changes already made to the Storm codebase. These typically take the form of a veto (-1) in reply to the commit message sent when the commit is made. Note that this should be a rare occurrence. All efforts should be made to discuss issues when they are still patches before the code is committed.
-
-Only active (i.e. non-emeritus) Committers and PMC members have binding votes.
-
-## Approvals
-
-These are the types of approvals that can be sought. Different actions require different types of approvals
-
-| Approval Type | Criteria |
-|---------------|----------|
-| Consensus Approval | Consensus approval requires 3 binding +1 votes and no binding vetoes. |
-| Majority Approval | Majority approval requires at least 3 binding +1 votes and more +1 votes than -1 votes. |
-| Lazy Consensus | Lazy consensus requires no -1 votes ('silence gives assent'). |
-| 2/3 Majority | 2/3 majority votes requires at least 3 votes and twice as many +1 votes as -1 votes. |
-
-### Vetoes
-
-A valid, binding veto cannot be overruled. If a veto is cast, it must be accompanied by a valid reason explaining the reasons for the veto. The validity of a veto, if challenged, can be confirmed by anyone who has a binding vote. This does not necessarily signify agreement with the veto - merely that the veto is valid.
-
-If you disagree with a valid veto, you must lobby the person casting the veto to withdraw their veto. If a veto is not withdrawn, any action that has been vetoed must be reversed in a timely manner.
-
-## Actions
-
-This section describes the various actions which are undertaken within the project, the corresponding approval required for that action and those who have binding votes over the action.
-
-| Actions | Description | Approval | Binding Votes | Minimum Length | Mailing List |
-|---------|-------------|----------|---------------|----------------|--------------|
-| Code Change | A change made to a source code of the project and committed by a Committer. | A minimum of one +1 from a Committer other than the one who authored the patch, and no -1s. The code can be committed after the first +1. If a -1 is received to the patch within 7 days after the patch was posted, it may be reverted immediately if it was already merged. | Active Committers | 1 day from initial patch (**Note:** Committers should consider allowing more time for review based on the complexity and/or impact of the patch in question.)|JIRA or Github pull ( with notification sent to dev@storm.apache.org) |
-| Non-Code Change | A change made to a repository of the project and committed by a Committer. This includes documentation, website content, etc., but not source code, unless only comments are being modified. | Lazy Consensus | Active Committers | At the discression of the Committer |JIRA or Github pull (with notification sent to dev@storm.apache.org) |
-| Product Release | A vote is required to accept a proposed release as an official release of the project. Any Committer may call for a release vote at any point in time. | Majority Approval | Active PMC members | 3 days | dev@storm.apache.org |
-| Adoption of New Codebase | When the codebase for an existing, released product is to be replaced with an alternative codebase. If such a vote fails to gain approval, the existing code base will continue. This also covers the creation of new sub-projects and submodules within the project as well as merging of feature branches. | 2/3 Majority | Active PMC members | 6 days | dev@storm.apache.org |
-| New Committer | When a new Committer is proposed for the project. | Consensus Approval | Active PMC members | 3 days | private@storm.apache.org |
-| New PMC Member | When a member is proposed for the PMC. | Consensus Approval | Active PMC members | 3 days | private@storm.apache.org |
-| Emeritus PMC Member re-instatement | When an emeritus PMC member requests to be re-instated as an active PMC member. | Consensus Approval | Active PMC members | 6 days | private@storm.apache.org |
-| Emeritus Committer re-instatement | When an emeritus Committer requests to be re-instated as an active Committer. | Consensus Approval | Active PMC members | 6 days | private@storm.apache.org |
-| Committer Removal | When removal of commit privileges is sought. Note: Such actions will also be referred to the ASF board by the PMC chair. | 2/3 Majority | Active PMC members (excluding the Committer in question if a member of the PMC). | 6 Days | private@storm.apache.org |
-| PMC Member Removal | When removal of a PMC member is sought. Note: Such actions will also be referred to the ASF board by the PMC chair. | 2/3 Majority | Active PMC members (excluding the member in question). | 6 Days | private@storm.apache.org |
-| Modifying Bylaws | Modifying this document. | 2/3 Majority | Active PMC members | 6 Days | dev@storm.apache.org |

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Clojure-DSL.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Clojure-DSL.md b/docs/documentation/Clojure-DSL.md
deleted file mode 100644
index fcbbce4..0000000
--- a/docs/documentation/Clojure-DSL.md
+++ /dev/null
@@ -1,266 +0,0 @@
----
-title: Clojure DSL
-layout: documentation
-documentation: true
----
-Storm comes with a Clojure DSL for defining spouts, bolts, and topologies. The Clojure DSL has access to everything the Java API exposes, so if you're a Clojure user you can code Storm topologies without touching Java at all. The Clojure DSL is defined in the source in the [backtype.storm.clojure](https://github.com/apache/storm/blob/0.5.3/src/clj/backtype/storm/clojure.clj) namespace.
-
-This page outlines all the pieces of the Clojure DSL, including:
-
-1. Defining topologies
-2. `defbolt`
-3. `defspout`
-4. Running topologies in local mode or on a cluster
-5. Testing topologies
-
-### Defining topologies
-
-To define a topology, use the `topology` function. `topology` takes in two arguments: a map of "spout specs" and a map of "bolt specs". Each spout and bolt spec wires the code for the component into the topology by specifying things like inputs and parallelism.
-
-Let's take a look at an example topology definition [from the storm-starter project](https://github.com/apache/storm/blob/master/examples/storm-starter/src/clj/storm/starter/clj/word_count.clj):
-
-```clojure
-(topology
- {"1" (spout-spec sentence-spout)
-  "2" (spout-spec (sentence-spout-parameterized
-                   ["the cat jumped over the door"
-                    "greetings from a faraway land"])
-                   :p 2)}
- {"3" (bolt-spec {"1" :shuffle "2" :shuffle}
-                 split-sentence
-                 :p 5)
-  "4" (bolt-spec {"3" ["word"]}
-                 word-count
-                 :p 6)})
-```
-
-The maps of spout and bolt specs are maps from the component id to the corresponding spec. The component ids must be unique across the maps. Just like defining topologies in Java, component ids are used when declaring inputs for bolts in the topology.
-
-#### spout-spec
-
-`spout-spec` takes as arguments the spout implementation (an object that implements [IRichSpout](/javadoc/apidocs/backtype/storm/topology/IRichSpout.html)) and optional keyword arguments. The only option that exists currently is the `:p` option, which specifies the parallelism for the spout. If you omit `:p`, the spout will execute as a single task.
-
-#### bolt-spec
-
-`bolt-spec` takes as arguments the input declaration for the bolt, the bolt implementation (an object that implements [IRichBolt](/javadoc/apidocs/backtype/storm/topology/IRichBolt.html)), and optional keyword arguments.
-
-The input declaration is a map from stream ids to stream groupings. A stream id can have one of two forms:
-
-1. `[==component id== ==stream id==]`: Subscribes to a specific stream on a component
-2. `==component id==`: Subscribes to the default stream on a component
-
-A stream grouping can be one of the following:
-
-1. `:shuffle`: subscribes with a shuffle grouping
-2. Vector of field names, like `["id" "name"]`: subscribes with a fields grouping on the specified fields
-3. `:global`: subscribes with a global grouping
-4. `:all`: subscribes with an all grouping
-5. `:direct`: subscribes with a direct grouping
-
-See [Concepts](Concepts.html) for more info on stream groupings. Here's an example input declaration showcasing the various ways to declare inputs:
-
-```clojure
-{["2" "1"] :shuffle
- "3" ["field1" "field2"]
- ["4" "2"] :global}
-```
-
-This input declaration subscribes to three streams total. It subscribes to stream "1" on component "2" with a shuffle grouping, subscribes to the default stream on component "3" with a fields grouping on the fields "field1" and "field2", and subscribes to stream "2" on component "4" with a global grouping.
-
-Like `spout-spec`, the only current supported keyword argument for `bolt-spec` is `:p` which specifies the parallelism for the bolt.
-
-#### shell-bolt-spec
-
-`shell-bolt-spec` is used for defining bolts that are implemented in a non-JVM language. It takes as arguments the input declaration, the command line program to run, the name of the file implementing the bolt, an output specification, and then the same keyword arguments that `bolt-spec` accepts.
-
-Here's an example `shell-bolt-spec`:
-
-```clojure
-(shell-bolt-spec {"1" :shuffle "2" ["id"]}
-                 "python"
-                 "mybolt.py"
-                 ["outfield1" "outfield2"]
-                 :p 25)
-```
-
-The syntax of output declarations is described in more detail in the `defbolt` section below. See [Using non JVM languages with Storm](Using-non-JVM-languages-with-Storm.html) for more details on how multilang works within Storm.
-
-### defbolt
-
-`defbolt` is used for defining bolts in Clojure. Bolts have the constraint that they must be serializable, and this is why you can't just reify `IRichBolt` to implement a bolt (closures aren't serializable). `defbolt` works around this restriction and provides a nicer syntax for defining bolts than just implementing a Java interface.
-
-At its fullest expressiveness, `defbolt` supports parameterized bolts and maintaining state in a closure around the bolt implementation. It also provides shortcuts for defining bolts that don't need this extra functionality. The signature for `defbolt` looks like the following:
-
-(defbolt _name_ _output-declaration_ *_option-map_ & _impl_)
-
-Omitting the option map is equivalent to having an option map of `{:prepare false}`.
-
-#### Simple bolts
-
-Let's start with the simplest form of `defbolt`. Here's an example bolt that splits a tuple containing a sentence into a tuple for each word:
-
-```clojure
-(defbolt split-sentence ["word"] [tuple collector]
-  (let [words (.split (.getString tuple 0) " ")]
-    (doseq [w words]
-      (emit-bolt! collector [w] :anchor tuple))
-    (ack! collector tuple)
-    ))
-```
-
-Since the option map is omitted, this is a non-prepared bolt. The DSL simply expects an implementation for the `execute` method of `IRichBolt`. The implementation takes two parameters, the tuple and the `OutputCollector`, and is followed by the body of the `execute` function. The DSL automatically type-hints the parameters for you so you don't need to worry about reflection if you use Java interop.
-
-This implementation binds `split-sentence` to an actual `IRichBolt` object that you can use in topologies, like so:
-
-```clojure
-(bolt-spec {"1" :shuffle}
-           split-sentence
-           :p 5)
-```
-
-
-#### Parameterized bolts
-
-Many times you want to parameterize your bolts with other arguments. For example, let's say you wanted to have a bolt that appends a suffix to every input string it receives, and you want that suffix to be set at runtime. You do this with `defbolt` by including a `:params` option in the option map, like so:
-
-```clojure
-(defbolt suffix-appender ["word"] {:params [suffix]}
-  [tuple collector]
-  (emit-bolt! collector [(str (.getString tuple 0) suffix)] :anchor tuple)
-  )
-```
-
-Unlike the previous example, `suffix-appender` will be bound to a function that returns an `IRichBolt` rather than be an `IRichBolt` object directly. This is caused by specifying `:params` in its option map. So to use `suffix-appender` in a topology, you would do something like:
-
-```clojure
-(bolt-spec {"1" :shuffle}
-           (suffix-appender "-suffix")
-           :p 10)
-```
-
-#### Prepared bolts
-
-To do more complex bolts, such as ones that do joins and streaming aggregations, the bolt needs to store state. You can do this by creating a prepared bolt which is specified by including `{:prepare true}` in the option map. Consider, for example, this bolt that implements word counting:
-
-```clojure
-(defbolt word-count ["word" "count"] {:prepare true}
-  [conf context collector]
-  (let [counts (atom {})]
-    (bolt
-     (execute [tuple]
-       (let [word (.getString tuple 0)]
-         (swap! counts (partial merge-with +) {word 1})
-         (emit-bolt! collector [word (@counts word)] :anchor tuple)
-         (ack! collector tuple)
-         )))))
-```
-
-The implementation for a prepared bolt is a function that takes as input the topology config, `TopologyContext`, and `OutputCollector`, and returns an implementation of the `IBolt` interface. This design allows you to have a closure around the implementation of `execute` and `cleanup`. 
-
-In this example, the word counts are stored in the closure in a map called `counts`. The `bolt` macro is used to create the `IBolt` implementation. The `bolt` macro is a more concise way to implement the interface than reifying, and it automatically type-hints all of the method parameters. This bolt implements the execute method which updates the count in the map and emits the new word count.
-
-Note that the `execute` method in prepared bolts only takes as input the tuple since the `OutputCollector` is already in the closure of the function (for simple bolts the collector is a second parameter to the `execute` function).
-
-Prepared bolts can be parameterized just like simple bolts.
-
-#### Output declarations
-
-The Clojure DSL has a concise syntax for declaring the outputs of a bolt. The most general way to declare the outputs is as a map from stream id a stream spec. For example:
-
-```clojure
-{"1" ["field1" "field2"]
- "2" (direct-stream ["f1" "f2" "f3"])
- "3" ["f1"]}
-```
-
-The stream id is a string, while the stream spec is either a vector of fields or a vector of fields wrapped by `direct-stream`. `direct stream` marks the stream as a direct stream (See [Concepts](Concepts.html) and [Direct groupings]() for more details on direct streams).
-
-If the bolt only has one output stream, you can define the default stream of the bolt by using a vector instead of a map for the output declaration. For example:
-
-```clojure
-["word" "count"]
-```
-This declares the output of the bolt as the fields ["word" "count"] on the default stream id.
-
-#### Emitting, acking, and failing
-
-Rather than use the Java methods on `OutputCollector` directly, the DSL provides a nicer set of functions for using `OutputCollector`: `emit-bolt!`, `emit-direct-bolt!`, `ack!`, and `fail!`.
-
-1. `emit-bolt!`: takes as parameters the `OutputCollector`, the values to emit (a Clojure sequence), and keyword arguments for `:anchor` and `:stream`. `:anchor` can be a single tuple or a list of tuples, and `:stream` is the id of the stream to emit to. Omitting the keyword arguments emits an unanchored tuple to the default stream.
-2. `emit-direct-bolt!`: takes as parameters the `OutputCollector`, the task id to send the tuple to, the values to emit, and keyword arguments for `:anchor` and `:stream`. This function can only emit to streams declared as direct streams.
-2. `ack!`: takes as parameters the `OutputCollector` and the tuple to ack.
-3. `fail!`: takes as parameters the `OutputCollector` and the tuple to fail.
-
-See [Guaranteeing message processing](Guaranteeing-message-processing.html) for more info on acking and anchoring.
-
-### defspout
-
-`defspout` is used for defining spouts in Clojure. Like bolts, spouts must be serializable so you can't just reify `IRichSpout` to do spout implementations in Clojure. `defspout` works around this restriction and provides a nicer syntax for defining spouts than just implementing a Java interface.
-
-The signature for `defspout` looks like the following:
-
-(defspout _name_ _output-declaration_ *_option-map_ & _impl_)
-
-If you leave out the option map, it defaults to {:prepare true}. The output declaration for `defspout` has the same syntax as `defbolt`.
-
-Here's an example `defspout` implementation from [storm-starter](https://github.com/apache/storm/blob/master/examples/storm-starter/src/clj/storm/starter/clj/word_count.clj):
-
-```clojure
-(defspout sentence-spout ["sentence"]
-  [conf context collector]
-  (let [sentences ["a little brown dog"
-                   "the man petted the dog"
-                   "four score and seven years ago"
-                   "an apple a day keeps the doctor away"]]
-    (spout
-     (nextTuple []
-       (Thread/sleep 100)
-       (emit-spout! collector [(rand-nth sentences)])         
-       )
-     (ack [id]
-        ;; You only need to define this method for reliable spouts
-        ;; (such as one that reads off of a queue like Kestrel)
-        ;; This is an unreliable spout, so it does nothing here
-        ))))
-```
-
-The implementation takes in as input the topology config, `TopologyContext`, and `SpoutOutputCollector`. The implementation returns an `ISpout` object. Here, the `nextTuple` function emits a random sentence from `sentences`. 
-
-This spout isn't reliable, so the `ack` and `fail` methods will never be called. A reliable spout will add a message id when emitting tuples, and then `ack` or `fail` will be called when the tuple is completed or failed respectively. See [Guaranteeing message processing](Guaranteeing-message-processing.html) for more info on how reliability works within Storm.
-
-`emit-spout!` takes in as parameters the `SpoutOutputCollector` and the new tuple to be emitted, and accepts as keyword arguments `:stream` and `:id`. `:stream` specifies the stream to emit to, and `:id` specifies a message id for the tuple (used in the `ack` and `fail` callbacks). Omitting these arguments emits an unanchored tuple to the default output stream.
-
-There is also a `emit-direct-spout!` function that emits a tuple to a direct stream and takes an additional argument as the second parameter of the task id to send the tuple to.
-
-Spouts can be parameterized just like bolts, in which case the symbol is bound to a function returning `IRichSpout` instead of the `IRichSpout` itself. You can also declare an unprepared spout which only defines the `nextTuple` method. Here is an example of an unprepared spout that emits random sentences parameterized at runtime:
-
-```clojure
-(defspout sentence-spout-parameterized ["word"] {:params [sentences] :prepare false}
-  [collector]
-  (Thread/sleep 500)
-  (emit-spout! collector [(rand-nth sentences)]))
-```
-
-The following example illustrates how to use this spout in a `spout-spec`:
-
-```clojure
-(spout-spec (sentence-spout-parameterized
-                   ["the cat jumped over the door"
-                    "greetings from a faraway land"])
-            :p 2)
-```
-
-### Running topologies in local mode or on a cluster
-
-That's all there is to the Clojure DSL. To submit topologies in remote mode or local mode, just use the `StormSubmitter` or `LocalCluster` classes just like you would from Java.
-
-To create topology configs, it's easiest to use the `backtype.storm.config` namespace which defines constants for all of the possible configs. The constants are the same as the static constants in the `Config` class, except with dashes instead of underscores. For example, here's a topology config that sets the number of workers to 15 and configures the topology in debug mode:
-
-```clojure
-{TOPOLOGY-DEBUG true
- TOPOLOGY-WORKERS 15}
-```
-
-### Testing topologies
-
-[This blog post](http://www.pixelmachine.org/2011/12/17/Testing-Storm-Topologies.html) and its [follow-up](http://www.pixelmachine.org/2011/12/21/Testing-Storm-Topologies-Part-2.html) give a good overview of Storm's powerful built-in facilities for testing topologies in Clojure.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Command-line-client.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Command-line-client.md b/docs/documentation/Command-line-client.md
deleted file mode 100644
index 67928a5..0000000
--- a/docs/documentation/Command-line-client.md
+++ /dev/null
@@ -1,102 +0,0 @@
----
-title: Command Line Client
-layout: documentation
-documentation: true
----
-This page describes all the commands that are possible with the "storm" command line client. To learn how to set up your "storm" client to talk to a remote cluster, follow the instructions in [Setting up development environment](Setting-up-a-development-environment.html).
-
-These commands are:
-
-1. jar
-1. kill
-1. activate
-1. deactivate
-1. rebalance
-1. repl
-1. classpath
-1. localconfvalue
-1. remoteconfvalue
-1. nimbus
-1. supervisor
-1. ui
-1. drpc
-
-### jar
-
-Syntax: `storm jar topology-jar-path class ...`
-
-Runs the main method of `class` with the specified arguments. The storm jars and configs in `~/.storm` are put on the classpath. The process is configured so that [StormSubmitter](/javadoc/apidocs/backtype/storm/StormSubmitter.html) will upload the jar at `topology-jar-path` when the topology is submitted.
-
-### kill
-
-Syntax: `storm kill topology-name [-w wait-time-secs]`
-
-Kills the topology with the name `topology-name`. Storm will first deactivate the topology's spouts for the duration of the topology's message timeout to allow all messages currently being processed to finish processing. Storm will then shutdown the workers and clean up their state. You can override the length of time Storm waits between deactivation and shutdown with the -w flag.
-
-### activate
-
-Syntax: `storm activate topology-name`
-
-Activates the specified topology's spouts.
-
-### deactivate
-
-Syntax: `storm deactivate topology-name`
-
-Deactivates the specified topology's spouts.
-
-### rebalance
-
-Syntax: `storm rebalance topology-name [-w wait-time-secs]`
-
-Sometimes you may wish to spread out where the workers for a topology are running. For example, let's say you have a 10 node cluster running 4 workers per node, and then let's say you add another 10 nodes to the cluster. You may wish to have Storm spread out the workers for the running topology so that each node runs 2 workers. One way to do this is to kill the topology and resubmit it, but Storm provides a "rebalance" command that provides an easier way to do this. 
-
-Rebalance will first deactivate the topology for the duration of the message timeout (overridable with the -w flag) and then redistribute the workers evenly around the cluster. The topology will then return to its previous state of activation (so a deactivated topology will still be deactivated and an activated topology will go back to being activated).
-
-### repl
-
-Syntax: `storm repl`
-
-Opens up a Clojure REPL with the storm jars and configuration on the classpath. Useful for debugging.
-
-### classpath
-
-Syntax: `storm classpath`
-
-Prints the classpath used by the storm client when running commands.
-
-### localconfvalue
-
-Syntax: `storm localconfvalue conf-name`
-
-Prints out the value for `conf-name` in the local Storm configs. The local Storm configs are the ones in `~/.storm/storm.yaml` merged in with the configs in `defaults.yaml`.
-
-### remoteconfvalue
-
-Syntax: `storm remoteconfvalue conf-name`
-
-Prints out the value for `conf-name` in the cluster's Storm configs. The cluster's Storm configs are the ones in `$STORM-PATH/conf/storm.yaml` merged in with the configs in `defaults.yaml`. This command must be run on a cluster machine.
-
-### nimbus
-
-Syntax: `storm nimbus`
-
-Launches the nimbus daemon. This command should be run under supervision with a tool like [daemontools](http://cr.yp.to/daemontools.html) or [monit](http://mmonit.com/monit/). See [Setting up a Storm cluster](Setting-up-a-Storm-cluster.html) for more information.
-
-### supervisor
-
-Syntax: `storm supervisor`
-
-Launches the supervisor daemon. This command should be run under supervision with a tool like [daemontools](http://cr.yp.to/daemontools.html) or [monit](http://mmonit.com/monit/). See [Setting up a Storm cluster](Setting-up-a-Storm-cluster.html) for more information.
-
-### ui
-
-Syntax: `storm ui`
-
-Launches the UI daemon. The UI provides a web interface for a Storm cluster and shows detailed stats about running topologies. This command should be run under supervision with a tool like [daemontools](http://cr.yp.to/daemontools.html) or [monit](http://mmonit.com/monit/). See [Setting up a Storm cluster](Setting-up-a-Storm-cluster.html) for more information.
-
-### drpc
-
-Syntax: `storm drpc`
-
-Launches a DRPC daemon. This command should be run under supervision with a tool like [daemontools](http://cr.yp.to/daemontools.html) or [monit](http://mmonit.com/monit/). See [Distributed RPC](Distributed-RPC.html) for more information.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Common-patterns.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Common-patterns.md b/docs/documentation/Common-patterns.md
deleted file mode 100644
index 7b15cfb..0000000
--- a/docs/documentation/Common-patterns.md
+++ /dev/null
@@ -1,100 +0,0 @@
----
-title: Common Topology Patterns
-layout: documentation
-documentation: true
----
-
-This page lists a variety of common patterns in Storm topologies.
-
-1. Streaming joins
-2. Batching
-3. BasicBolt
-4. In-memory caching + fields grouping combo
-5. Streaming top N
-6. TimeCacheMap for efficiently keeping a cache of things that have been recently updated
-7. CoordinatedBolt and KeyedFairBolt for Distributed RPC
-
-### Joins
-
-A streaming join combines two or more data streams together based on some common field. Whereas a normal database join has finite input and clear semantics for a join, a streaming join has infinite input and unclear semantics for what a join should be.
-
-The join type you need will vary per application. Some applications join all tuples for two streams over a finite window of time, whereas other applications expect exactly one tuple for each side of the join for each join field. Other applications may do the join completely differently. The common pattern among all these join types is partitioning multiple input streams in the same way. This is easily accomplished in Storm by using a fields grouping on the same fields for many input streams to the joiner bolt. For example:
-
-```java
-builder.setBolt("join", new MyJoiner(), parallelism)
-  .fieldsGrouping("1", new Fields("joinfield1", "joinfield2"))
-  .fieldsGrouping("2", new Fields("joinfield1", "joinfield2"))
-  .fieldsGrouping("3", new Fields("joinfield1", "joinfield2"));
-```
-
-The different streams don't have to have the same field names, of course.
-
-
-### Batching
-
-Oftentimes for efficiency reasons or otherwise, you want to process a group of tuples in batch rather than individually. For example, you may want to batch updates to a database or do a streaming aggregation of some sort.
-
-If you want reliability in your data processing, the right way to do this is to hold on to tuples in an instance variable while the bolt waits to do the batching. Once you do the batch operation, you then ack all the tuples you were holding onto.
-
-If the bolt emits tuples, then you may want to use multi-anchoring to ensure reliability. It all depends on the specific application. See [Guaranteeing message processing](Guaranteeing-message-processing.html) for more details on how reliability works.
-
-### BasicBolt
-Many bolts follow a similar pattern of reading an input tuple, emitting zero or more tuples based on that input tuple, and then acking that input tuple immediately at the end of the execute method. Bolts that match this pattern are things like functions and filters. This is such a common pattern that Storm exposes an interface called [IBasicBolt](/javadoc/apidocs/backtype/storm/topology/IBasicBolt.html) that automates this pattern for you. See [Guaranteeing message processing](Guaranteeing-message-processing.html) for more information.
-
-### In-memory caching + fields grouping combo
-
-It's common to keep caches in-memory in Storm bolts. Caching becomes particularly powerful when you combine it with a fields grouping. For example, suppose you have a bolt that expands short URLs (like bit.ly, t.co, etc.) into long URLs. You can increase performance by keeping an LRU cache of short URL to long URL expansions to avoid doing the same HTTP requests over and over. Suppose component "urls" emits short URLS, and component "expand" expands short URLs into long URLs and keeps a cache internally. Consider the difference between the two following snippets of code:
-
-```java
-builder.setBolt("expand", new ExpandUrl(), parallelism)
-  .shuffleGrouping(1);
-```
-
-```java
-builder.setBolt("expand", new ExpandUrl(), parallelism)
-  .fieldsGrouping("urls", new Fields("url"));
-```
-
-The second approach will have vastly more effective caches, since the same URL will always go to the same task. This avoids having duplication across any of the caches in the tasks and makes it much more likely that a short URL will hit the cache.
-
-### Streaming top N
-
-A common continuous computation done on Storm is a "streaming top N" of some sort. Suppose you have a bolt that emits tuples of the form ["value", "count"] and you want a bolt that emits the top N tuples based on count. The simplest way to do this is to have a bolt that does a global grouping on the stream and maintains a list in memory of the top N items.
-
-This approach obviously doesn't scale to large streams since the entire stream has to go through one task. A better way to do the computation is to do many top N's in parallel across partitions of the stream, and then merge those top N's together to get the global top N. The pattern looks like this:
-
-```java
-builder.setBolt("rank", new RankObjects(), parallelism)
-  .fieldsGrouping("objects", new Fields("value"));
-builder.setBolt("merge", new MergeObjects())
-  .globalGrouping("rank");
-```
-
-This pattern works because of the fields grouping done by the first bolt which gives the partitioning you need for this to be semantically correct. You can see an example of this pattern in storm-starter [here](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/RollingTopWords.java).
-
-If however you have a known skew in the data being processed it can be advantageous to use partialKeyGrouping instead of fieldsGrouping.  This will distribute the load for each key between two downstream bolts instead of a single one.
-
-```java
-builder.setBolt("count", new CountObjects(), parallelism)
-  .partialKeyGrouping("objects", new Fields("value"));
-builder.setBolt("rank" new AggregateCountsAndRank(), parallelism)
-  .fieldsGrouping("count", new Fields("key"))
-builder.setBolt("merge", new MergeRanksObjects())
-  .globalGrouping("rank");
-``` 
-
-The topology needs an extra layer of processing to aggregate the partial counts from the upstream bolts but this only processes aggregated values now so the bolt it is not subject to the load caused by the skewed data. You can see an example of this pattern in storm-starter [here](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/SkewedRollingTopWords.java).
-
-### TimeCacheMap for efficiently keeping a cache of things that have been recently updated
-
-You sometimes want to keep a cache in memory of items that have been recently "active" and have items that have been inactive for some time be automatically expires. [TimeCacheMap](/javadoc/apidocs/backtype/storm/utils/TimeCacheMap.html) is an efficient data structure for doing this and provides hooks so you can insert callbacks whenever an item is expired.
-
-### CoordinatedBolt and KeyedFairBolt for Distributed RPC
-
-When building distributed RPC applications on top of Storm, there are two common patterns that are usually needed. These are encapsulated by [CoordinatedBolt](/javadoc/apidocs/backtype/storm/task/CoordinatedBolt.html) and [KeyedFairBolt](/javadoc/apidocs/backtype/storm/task/KeyedFairBolt.html) which are part of the "standard library" that ships with the Storm codebase.
-
-`CoordinatedBolt` wraps the bolt containing your logic and figures out when your bolt has received all the tuples for any given request. It makes heavy use of direct streams to do this.
-
-`KeyedFairBolt` also wraps the bolt containing your logic and makes sure your topology processes multiple DRPC invocations at the same time, instead of doing them serially one at a time.
-
-See [Distributed RPC](Distributed-RPC.html) for more details.


[11/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Powered-By.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Powered-By.md b/docs/documentation/Powered-By.md
deleted file mode 100644
index 185e76b..0000000
--- a/docs/documentation/Powered-By.md
+++ /dev/null
@@ -1,1040 +0,0 @@
----
-title: Companies Using Apache Storm
-layout: documentation
-documentation: true
----
-Want to be added to this page? Send an email [here](mailto:dev@storm.apache.org).
-
-<table class="table table-striped">
-
-<tr>
-<td>
-<a href="http://groupon.com">Groupon</a>
-</td>
-<td>
-<p>
-At Groupon we use Storm to build real-time data integration systems. Storm helps us analyze, clean, normalize, and resolve large amounts of non-unique data points with low latency and high throughput.
-</p>
-</td>
-</tr>
-
-<tr>
-<td><a href="http://www.weather.com/">The Weather Channel</a></td>
-<td>
-<p>At Weather Channel we use several Storm topologies to ingest and persist weather data. Each topology is responsible for fetching one dataset from an internal or external network (the Internet), reshaping the records for use by our company, and persisting the records to relational databases. It is particularly useful to have an automatic mechanism for repeating attempts to download and manipulate the data when there is a hiccup.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.fullcontact.com/">FullContact</a>
-</td>
-<td>
-<p>
-At FullContact we currently use Storm as the backbone of the system which synchronizes our Cloud Address Book with third party services such as Google Contacts and Salesforce. We also use it to provide real-time support for our contact graph analysis and federated contact search systems.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://twitter.com">Twitter</a>
-</td>
-<td>
-<p>
-Storm powers a wide variety of Twitter systems, ranging in applications from discovery, realtime analytics, personalization, search, revenue optimization, and many more. Storm integrates with the rest of Twitter's infrastructure, including database systems (Cassandra, Memcached, etc), the messaging infrastructure, Mesos, and the monitoring/alerting systems. Storm's isolation scheduler makes it easy to use the same cluster both for production applications and in-development applications, and it provides a sane way to do capacity planning.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.yahoo.com">Yahoo!</a>
-</td>
-<td>
-<p>
-Yahoo! is developing a next generation platform that enables the convergence of big-data and low-latency processing. While Hadoop is our primary technology for batch processing, Storm empowers stream/micro-batch processing of user events, content feeds, and application logs. 
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.yahoo.co.jp/">Yahoo! JAPAN</a>
-</td>
-<td>
-<p>
-Yahoo! JAPAN is a leading web portal in Japan. Storm applications are processing various streaming data such as logs or social data. We use Storm to feed contents, monitor systems, detect trending topics, and crawl on websites.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.webmd.com">WebMD</a>
-</td>
-<td>
-<p>
-We use Storm to power our Medscape Medpulse mobile application which allow medical professionals to follow important medical trends with Medscape's curated Today on Twitter feed and selection of blogs. Storm topology is capturing and processing tweets with twitter streaming API, enhance tweets with metadata and images, do real time NLP and execute several business rules. Storm also monitors selection of blogs in order to give our customers real-time updates.  We also use Storm for internal data pipelines to do ETL and for our internal marketing platform where time and freshness are essential.
-</p>
-<p>
-We use storm to power our search indexing process.  We continue to discover new use cases for storm and it became one of the core component in our technology stack.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.spotify.com">Spotify</a>
-</td>
-<td>
-<p>
-Spotify serves streaming music to over 10 million subscribers and 40 million active users. Storm powers a wide range of real-time features at Spotify, including music recommendation, monitoring, analytics, and ads targeting. Together with Kafka, memcached, Cassandra, and netty-zmtp based messaging, Storm enables us to build low-latency fault-tolerant distributed systems with ease.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.infochimps.com">Infochimps</a>
-</td>
-<td>
-<p>
-Infochimps uses Storm as part of its Big Data Enterprise Cloud. Specifically, it uses Storm as the basis for one of three of its cloud data services - namely, Data Delivery Services (DDS), which uses Storm to provide a fault-tolerant and linearly scalable enterprise data collection, transport, and complex in-stream processing cloud service. 
-</p>
-
-<p>
-In much the same way that Hadoop provides batch ETL and large-scale batch analytical processing, the Data Delivery Service provides real-time ETL and large-scale real-time analytical processing — the perfect complement to Hadoop (or in some cases, what you needed instead of Hadoop).
-</p>
-
-<p>
-DDS uses both Storm and Kafka along with a host of additional technologies to provide an enterprise-class real-time stream processing solution with features including:
-</p>
-
-<ul>
-<li>
-Integration connections to any variety of data sources in a way that is robust yet as non-invasive
-</li>
-<li>
-Optimizations for highly scalable, reliable data import and distributed ETL (extract, transform, load), fulfilling data transport needs
-</li>
-<li>
-Developer tools for rapid development of decorators, which perform the real-time stream processing
-</li>
-<li>
-Guaranteed delivery framework and data failover snapshots to send processed data to analytics systems, databases, file systems, and applications with extreme reliability
-</li>
-<li>
-Rapid solution development and deployment, along with our expert Big Data methodology and best practices
-</li>
-</ul>
-
-<p>Infochimps has extensive experience in deploying its DDS to power large-scale clickstream web data flows, massive Twitter stream processes, Foursquare event processing, customer purchase data, product pricing data, and more.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://healthmarketscience.com/">Health Market Science</a>
-</td>
-<td>
-<p>
-Health Market Science (HMS) provides data management as a service for the healthcare industry.  Storm is at the core of the HMS big data platform functioning as the data ingestion mechanism, which orchestrates the data flow across multiple persistence mechanisms that allow HMS to deliver Master Data Management (MDM) and analytics capabilities for wide range of healthcare needs: compliance, integrity, data quality, and operational decision support.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="https://www.verisigninc.com/">Verisign</a>
-</td>
-<td>
-<p>
-Verisign, a global leader in domain names and Internet security, enables Internet navigation for many of the world's most recognized domain names and provides protection for enterprises around the world.  Ensuring the security, stability, and resiliency of key Internet infrastructure and services, including the .COM and .NET top level domains and two of the Internet's DNS root servers, is at the heart of Verisign’s mission.  Storm is a component of our data analytics stack that powers a variety of real-time applications.  One example is security monitoring where we are leveraging Storm to analyze the network telemetry data of our globally distributed infrastructure in order to detect and mitigate cyber attacks.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://cerner.com/">Cerner</a>
-</td>
-<td>
-<p>
-Cerner is a leader in health care information technology. We have been using Storm since its release to process massive amounts of clinical data in real-time. Storm integrates well in our architecture, allowing us to quickly provide clinicians with the data they need to make medical decisions.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.aeris.com/">Aeris Communications</a>
-</td>
-<td>
-<p>
-Aeris Communications has the only cellular network that was designed and built exclusively for machines. Our ability to provide scalable, reliable real-time analytics - powered by Storm - for machine to machine (M2M) communication offers immense value to our customers. We are using Storm in production since Q1 of 2013.
-</p>
-</td>
-</tr>
-
-
-
-<tr>
-<td>
-<a href="http://flipboard.com/">Flipboard</a>
-</td>
-<td>
-<p>
-Flipboard is the worldʼs first social magazine, a single place to keep up with everything  you care about and collect it in ways that let reflect you. Inspired by the beauty and  ease of print media, Flipboard is designed so you can easily flip through news from around the world or stories from right at home, helping people find the one thing that  can inform, entertain or even inspire them every day.
-</p>
-<p>
-We are using Storm across a wide range of our services from content search, to realtime analytics, to generating custom magazine feeds. We then integrate Storm across our infrastructure within systems like ElasticSearch, HBase, Hadoop and HDFS to create a highly scalable data platform.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.rubiconproject.com/">Rubicon Project</a>
-</td>
-<td>
-<p>
-Storm is being used in production mode at the Rubicon Project to analyze the results of auctions of ad impressions on its RTB exchange as they occur.  It is currently processing around 650 million auction results in three data centers daily (with 3 separate Storm clusters). One simple application is identifying new creatives (ads) in real time for ad quality purposes.  A more sophisticated application is an "Inventory Valuation Service" that uses DRPC to return appraisals of new impressions before the auction takes place.  The appraisals are used for various optimization problems, such as deciding whether to auction an impression or skip it when close to maximum capacity.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.ooyala.com/">Ooyala</a>
-</td>
-<td>
-<p>
-Ooyala powers personalized multi-screen video experiences for some of the world's largest networks, brands and media companies. We provide all the technology and tools our customers need to manage, distribute and monetize digital video content at a global scale.
-</p>
-
-<p>
-At the core of our technology is an analytics engine that processes over two billion analytics events each day, derived from nearly 200 million viewers worldwide who watch video on an Ooyala-powered player.
-</p>
-
-<p>
-Ooyala will be deploying Storm in production to give our customers real-time streaming analytics on consumer viewing behavior and digital content trends. Storm enables us to rapidly mine one of the world's largest online video data sets to deliver up-to-the-minute business intelligence ranging from real-time viewing patterns to personalized content recommendations to dynamic programming guides and dozens of other insights for maximizing revenue with online video.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.taobao.com/index_global.php">Taobao</a>
-</td>
-<td>
-<p>
-We make statistics of logs and extract useful information from the statistics in almost real-time with Storm.  Logs are read from Kafka-like persistent message queues into spouts, then processed and emitted over the topologies to compute desired results, which are then stored into distributed databases to be used elsewhere. Input log count varies from 2 millions to 1.5 billion every day, whose size is up to 2 terabytes among the projects.  The main challenge here is not only real-time processing of big data set; storing and persisting result is also a challenge and needs careful design and implementation.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.alibaba.com/">Alibaba</a>
-</td>
-<td>
-<p>
-Alibaba is the leading B2B e-commerce website in the world. We use storm to process the application log and the data change in database to supply realtime stats for data apps.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://iQIYI.COM">iQIYI</a>
-</td>
-<td>
-<p>
-iQIYI is China`s largest online video platform. We are using Storm in our video advertising system, video recommendation system, log analysis system and many other scenarios. Now we have several standalone Storm clusters, and we also have Storm clusters on Mesos and on Yarn. Kafka-Storm integration and Storm–HBase integration are quite common in our production environment. We have great interests in the new development about integration of Storm with other applications, like HBase, HDFS and Kafka.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.baidu.com/">Baidu</a>
-</td>
-<td>
-<p>
-Baidu offers top searching technology services for websites, audio files and images, my group using Storm to process the searching logs to supply realtime stats for accounting pv, ar-time and so on.
-This project helps Ops to determine and monitor services status and can do great things in the future.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.yelp.com/">Yelp</a>
-</td>
-<td>
-<p>
-Yelp is using Storm with <a href="http://pyleus.org/">Pyleus</a> to build a platform for developers to consume and process high throughput streams of data in real time. We have ongoing projects to use Storm and Pyleus for overhauling our internal application metrics pipeline, building an automated Python profile analysis system, and for general ETL operations. As its support for non-JVM components matures, we hope to make Storm the standard way of processing streaming data at Yelp.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.klout.com/">Klout</a>
-</td>
-<td>
-<p>
-Klout helps everyone discover and be recognized for their influence by analyzing engagement with their content across social networks. Our analysis powers a daily Klout Score on a scale from 1-100 that shows how much influence social media users have and on what topics. We are using Storm to develop a realtime scoring and moments generation pipeline. Leveraging Storm's intuitive Trident abstraction we are able to create complex topologies which stream data from our network collectors via Kafka, processed and written out to HDFS.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.loggly.com">Loggly</a>
-</td>
-<td>
-<p>
-Loggly is the world's most popular cloud-based log management. Our cloud-based log management service helps DevOps and technical teams make sense of the the massive quantity of logs that are being produced by a growing number of cloud-centric applications – in order to solve operational problems faster. Storm is the heart of our ingestion pipeline where it filters, parses and analyses billions of log events all-day, every day and in real-time.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://premise.is/">premise.is</a>
-</td>
-<td>
-<p>
-We're building a platform for alternative, bottom-up, high-granularity econometric data capture, particularly targeting opaque developing economies (i.e., Argentina might lie about their inflation statistics, but their black market certainly doesn't). Basically we get to funnel hedge fund money into improving global economic transparency. 
-</p>
-<p>
-We've been using Storm in production since January 2012 as a streaming, time-indexed web crawl + extraction + machine learning-based semantic markup flow (about 60 physical nodes comparable to m1.large; generating a modest 25GB/hr incremental). We wanted to have an end-to-end push-based system where new inputs get percolated through the topology in realtime and appear on the website, with no batch jobs required in between steps. Storm has been really integral to realizing this goal.
-</p>
-</td>
-</tr>
-
-
-
-<tr>
-<td>
-<a href="http://www.wego.com/">Wego</a>
-</td>
-<td>
-<p>About Wego, we are one of the world’s most comprehensive travel metasearch engines, operating in 42 markets worldwide and used by millions of travelers to save time, pay less and travel more. We compare and display real-time flights, hotel pricing and availability from hundreds of leading travel sites from all around the world on one simple screen.</p>
-
-<p>At the heart of our products, Storm helps us to stream real-time meta-search data from our partners to end-users. Since data comes from many sources and with different timing, Storm topology concept naturally solves concurrency issues while helping us to continuously merge, slice and clean all the data. Additionally with a few tricks and tools provided in Storm we can easily apply incremental update to improve the flow our data (1-5GB/minute).</p>
- 
-<p>With its simplicity, scalability, and flexibility, Storm does not only improve our current products but more importantly changes the way we work with data. Instead of keeping data static and crunching it once a while, we constantly move data all around, making use of different technologies, evaluating new ideas and building new products. We stream critical data to memory for fast access while continuously crunching and directing huge amount of data into various engines so that we can evaluate and make use of data instantly. Previously, this kind of system requires to setup and maintain quite a few things but with Storm all we need is half day of coding and a few seconds to deploy. In this sense we never think Storm is to serve our products but rather to evolve our products.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://rocketfuel.com/">RocketFuel</a>
-</td>
-<td>
-<p>
-At Rocket Fuel (an ad network) we are building a real time platform on top of Storm which imitates the time critical workflows of existing Hadoop based ETL pipeline. This platform tracks impressions, clicks, conversions, bid requests etc. in real time. We are using Kafka as message queue. To start with we are pushing per minute aggregations directly to MySQL, but we plan to go finer than one minute and may bring HBase in to the picture to handle increased write load. 
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://quicklizard.com/">QuickLizard</a>
-</td>
-<td>
-<p>
-QuickLizard builds solution for automated pricing for companies that have many products in their lists. Prices are influenced by multiple factors internal and external to company.
-</p>
-
-<p>
-Currently we use Storm to choose products that need to be priced. We get real time stream of events from client site and filters them to get much more light stream of products that need to be processed by our procedures to get price recommendation.
-</p>
-
-<p>
-In plans: use Storm also for real time data mining model calculation that should match products described on competitor sites to client products.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://spider.io/">spider.io</a>
-</td>
-<td>
-<p>
-At spider.io we've been using Storm as a core part of our classification engine since October 2011. We run Storm topologies to combine, analyse and classify real-time streams of internet traffic, to identify suspicious or undesirable website activity. Over the past 7 months we've expanded our use of Storm, so it now manages most of our real-time processing. Our classifications are displayed in a custom analytics dashboard, where Storm's distributed remote procedure call interface is used to gather data from our database and metadata services. DRPC allows us to increase the responsiveness of our user interface by distributing processing across a cluster of Amazon EC2 instances.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://8digits.com/">8digits</a>
-</td>
-<td>
-<p>
-At 8digits, we are using Storm in our analytics engine, which is one of the most crucial parts of our infrastructure. We are utilizing several cloud servers with multiple cores each for the purpose of running a real-time system making several complex calculations. Storm is a proven, solid and a powerful framework for most of the big-data problems.
-</p>
-</td>
-</tr>
-
-
-
-<tr>
-<td>
-<a href="https://www.alipay.com/">Alipay</a>
-</td>
-<td>
-<p>
-Alipay is China's leading third-party online payment platform. We are using Storm in many scenarios:
-</p>
-
-<ol>
-<li>
-Calculate realtime trade quantity, trade amount, the TOP N seller trading information, user register count. More than 100 million messages per day.
-</li>
-<li>
-Log processing, more than 6T data per day.
-</li>
-</ol>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://navisite.com/">NaviSite</a>
-</td>
-<td>
-<p>
-We are using Storm as part of our server event log monitoring/auditing system.  We send log messages from thousands of servers into a RabbitMQ cluster and then use Storm to check each message against a set of regular expressions.  If there is a match (&lt; 1% of messages), then the message is sent to a bolt that stores data in a Mongo database.  Right now we are handling a load of somewhere around 5-10k messages per second, however we tested our existing RabbitMQ + Storm clusters up to about 50k per second.  We have plans to do real time intrusion detection as an enhancement to the current log message reporting system. 
-</p>
-
-<p>
-We have Storm deployed on the NaviSite Cloud platform.  We have a ZK cluster of 3 small VMs, 1 Nimbus VM and 16 dual core/4GB VMs as supervisors.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.paywithglyph.com">Glyph</a>
-</td>
-<td>
-<p>
-Glyph is in the business of providing credit card rewards intelligence to consumers. At a given point of sale Glyph suggest its users what are the best cards to be used at a given merchant location that will provide maximum rewards. Glyph also provide suggestion on the cards the user should carry to earn maximum rewards based on his personal spending habits. Glyph provides this information to the user by retrieving and analyzing credit card transactions from banks. Storm is used in Glyph to perform this retrieval and analysis in realtime. We are using Memcached in conjuction with Storm for handling sessions. We are impressed by how Storm makes high availability and reliability of Glyph services possible. We are now using Storm and Clojure in building Glyph data analytics and insights services. We have open-sourced node-drpc wrapper module for easy Storm DRPC integration with NodeJS.
-</p>
-</td>
-</tr>
-<tr>
-<td>
-<a href="http://heartbyte.com/">Heartbyte</a>
-</td>
-<td>
-<p>
-At Heartbyte, Storm is a central piece of our realtime audience participation platform.  We are often required to process a 'vote' per second from hundreds of thousands of mobile devices simultaneously and process / aggregate all of the data within a second.  Further, we are finding that Storm is a great alternative to other ingest tools for Hadoop/HBase, which we use for batch processing after our events conclude.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://2lemetry.com/">2lemetry</a>
-</td>
-<td>
-<p>
-2lemetry uses Storm to power it's real time analytics on top of the m2m.io offering. 2lemetry is partnered with Sprint, Verizon, AT&T, and Arrow Electronics to power IoT applications world wide. Some of 2lemetry's larger projects include RTX, Kontron, and Intel. 2lemetry also works with many professional sporting teams to parse data in real time. 2lemetry receives events for every touch of the ball in every MLS soccer match. Storm is used to look for trends like passing tendencies as they develop during the game. 
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.nodeable.com/">Nodeable</a>
-</td>
-<td>
-<p>
-Nodeable uses Storm to deliver real-time continuous computation of the data we consume. Storm has made it significantly easier for us to scale our service more efficiently while ensuring the data we deliver is timely and accurate.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="https://twitsprout.com/">TwitSprout</a>
-</td>
-<td>
-<p>
-At TwitSprout, we use Storm to analyze activity on Twitter to monitor mentions of keywords (mostly client product and brand names) and trigger alerts when activity around a certain keyword spikes above normal levels. We also use Storm to back the data behind the live-infographics we produce for events sponsored by our clients. The infographics are usually in the form of a live dashboard that helps measure the audience buzz across social media as it relates to the event in realtime.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.happyelements.com/">HappyElements</a>
-</td>
-<td>
-<p>
-<a href="http://www.happyelements.com">HappyElements</a> is a leading social game developer on Facebook and other SNS platforms. We developed a real time data analysis program based on storm to analyze user activity in real time.  Storm is very easy to use, stable, scalable and maintainable.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.idexx.com/view/xhtml/en_us/corporate/home.jsf">IDEXX Laboratories</a>
-</td>
-<td>
-<p>
-IDEXX Laboratories is the leading maker of software and diagnostic instruments for the veterinary market. We collect and analyze veterinary medical data from thousands of veterinary clinics across the US. We recently embarked on a project to upgrade our aging data processing infrastructure that was unable to keep up with the rapid increase in the volume, velocity and variety of data that we were processing.
-</p>
-
-<p>
-We are utilizing the Storm system to take in the data that is extracted from the medical records in a number of different schemas, transform it into a standard schema that we created and store it in an Oracle RDBMS database. It is basically a souped up distributed ETL system. Storm takes on the plumbing necessary for a distributed system and is very easy to write code for. The ability to create small pieces of functionality and connect them together gives us the ultimate flexibility to parallelize each of the pieces differently.
-</p>
-
-<p>
-Our current cluster consists of four supervisor machines running 110 tasks inside 32 worker processes. We run two different topologies which receive messages and communicate with each other via RabbitMQ. The whole thing is deployed on Amazon Web Services and utilizes S3 for some intermediate storage, Redis as a key/value store and Oracle RDS for RDBMS storage. The bolts are all written in Java using the Spring framework with Hibernate as an ORM.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.umeng.com/">Umeng</a>
-</td>
-<td>
-Umeng is the leading and largest provider of mobile app analytics and developer services platform in China. Storm powers Umeng's realtime analytics platform, processing billions of data points per day and growing. We also use Storm in other products which requires realtime processing and it has become the core infrastructure in our company. 
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.admaster.com.cn/">Admaster</a>
-</td>
-<td>
-<p>
-We provide monitoring and precise delivery for Internet advertising. We use Storm to do the following:
-</p>
-
-<ol>
-<li>Calculate PV, UV of every advertisement.</li>
-<li>Simple data cleaning: filter out data which format error, filter out cheating data (the pv more than certain value)</li>
-</ol>
-Our cluster has 8 nodes, process several billions messages per day, about 200GB.
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://socialmetrix.com/en/">SocialMetrix</a>
-</td>
-<td>
-<p>
-Since its release, Storm was a perfect fit to our needs of real time monitoring. Its powerful API, easy administration and deploy, enabled us to rapidly build solutions to monitor presidential elections, several major events and currently it is the processing core of our new product "Socialmetrix Eventia".
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://needium.com/">Needium</a>
-</td>
-<td>
-<p>
-At Needium we love Ruby and JRuby. The Storm platform offers the right balance between simplicity, flexibility and scalability. We created RedStorm, a Ruby DSL for Storm, to keep on using Ruby on top of the power of Storm by leveraging Storm's JVM foundation with JRuby. We currently use Storm as our Twitter realtime data processing pipeline. We have Storm topologies for content filtering, geolocalisation and classification. Storm allows us to architecture our pipeline for the Twitter full firehose scale.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://parse.ly/">Parse.ly</a>
-</td>
-<td>
-<p>
-Parse.ly is using Storm for its web/content analytics system. We have a home-grown data processing and storage system built with Python and Celery, with backend stores in Redis and MongoDB. We are now using Storm for real-time unique visitor counting and are exploring options for using it for some of our richer data sources such as social share data and semantic content metadata.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.parc.com/">PARC</a>
-</td>
-<td>
-<p>
-High Performance Graph Analytics & Real-time Insights Research team at PARC uses Storm as one of the building blocks of their PARC Analytics Cloud infrastructure which comprises of Nebula based Openstack, Hadoop, SAP HANA, Storm, PARC Graph Analytics, and machine learning toolbox to enable researchers to process real-time data feeds from Sensors, web, network, social media, and security traces and easily ingest any other real-time data feeds of interest for PARC researchers.
-</p>
-<p>
-PARC researchers are working with number of industry collaborators developing new tools, algorithms, and models to analyze massive amounts of e-commerce, web clickstreams, 3rd party syndicated data, cohort data, social media data streams, and structured data from RDBMS, NOSQL, and NEWSQL systems in near real-time. PARC  team is developing a reference architecture and benchmarks for their near real-time automated insight discovery platform combining the power of all above tools and PARC’s applied research in machine learning, graph analytics, reasoning, clustering, and contextual recommendations. The High Performance Graph Analytics & Real-time Insights research at PARC is headed by Surendra Reddy<http://www.linkedin.com/in/skreddy>.  If you are interested to learn more about our use/experience of using Storm or to know more about our research or to collaborate with PARC in this area, please feel free to contact sureddy@parc.com.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://gumgum.com/">GumGum</a>
-</td>
-<td>
-<p>
-GumGum, the leading in-image advertising platform for publishers and brands, uses Storm to produce real-time data. Storm and Trident-based topologies consume various ad-related events from Kafka and persist the aggregations in MySQL and HBase. This architecture will eventually replace most existing daily Hadoop map reduce jobs. There are also plans for Kafka + Storm to replace existing distributed queue processing infrastructure built with Amazon SQS.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.crowdflower.com/">CrowdFlower</a>
-</td>
-<td>
-<p>
-CrowdFlower is using Storm with Kafka to generalize our data stream
-aggregation and realtime computation infrastructure. We replaced our
-homegrown aggregation solutions with Storm because it simplified the
-creation of fault tolerant systems. We were already using Zookeeper
-and Kafka, so Storm allowed us to build more generic abstractions for
-our analytics using tools that we had already deployed and
-battle-tested in production.
-</p>
-
-<p>
-We are currently writing to DynamoDB from Storm, so we are able to
-scale our capacity quickly by bringing up additional supervisors and
-tweaking the throughput on our Dynamo tables. We look forward to
-exploring other uses for Storm in our system, especially with the
-recent release of Trident.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.dsbox.com">Digital Sandbox</a>
-</td>
-<td>
-<p>
-At Digital Sandbox we use Storm to enable our open source information feed monitoring system.  The system uses Storm to constantly monitor and pull data from structured and unstructured information sources across the internet.  For each found item, our topology applies natural language processing based concept analysis, temporal analysis, geospatial analytics and a prioritization algorithm to enable users to monitor large special events, public safety operations, and topics of interest to a multitude of individual users and teams.
-</p>
- 
-<p>
-Our system is built using Storm for feed retrieval and annotation, Python with Flask and jQuery for business logic and web interfaces, and MongoDB for data persistence. We use NTLK for natural language processing and the WordNet, GeoNames, and OpenStreetMap databases to enable feed item concept extraction and geolocation.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://hallo.me/">Hallo</a>
-</td>
-<td>
-With several mainstream celebrities and very popular YouTubers using Hallo to communicate with their fans, we needed a good solution to notify users via push notifications and make sure that the celebrity messages were delivered to follower timelines in near realtime. Our initial approach for broadcast push notifications would take anywhere from 2-3 hours. After re-engineering our solution on top of Storm, that time has been cut down to 5 minutes on a very small cluster. With the user base growing and user need for realtime communication, we are very happy knowing that we can easily scale Storm by adding nodes to maintain a baseline QoS for our users.
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://keepcon.com/">Keepcon</a>
-</td>
-<td>
-We provide moderation services for classifieds, kids communities, newspapers, chat rooms, facebook fan pages, youtube channels, reviews, and all kind of UGC. We use storm for the integration with our clients, find evidences within each text, persisting on cassandra and elastic search and sending results back to our clients.
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.visiblemeasures.com/">Visible Measures</a>
-</td>
-<td>
-<p>
-Visible Measures powers video campaigns and analytics for publishers and
-advertisers, tracking data for hundreds of million of videos, and billions
-of views. We are using Storm to process viewing behavior data in real time and make
-the information immediately available to our customers. We read events from
-various push and pull sources, including a Kestrel queue, filter and
-enrich the events in Storm topologies, and persist the events to Redis,
-HDFS and Vertica for real-time analytics and archiving. We are currently
-experimenting with Trident topologies, and figuring out how to move more
-of our Hadoop-based batch processing into Storm.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.o2mc.eu/en/">O2mc</a>
-</td>
-<td>
-<p>
-One of the core products of O2mc is called O2mc Community. O2mc Community performs multilingual, realtime sentiment analysis with very low latency and distributes the analyzed results to numerous clients. The input is extracted from source systems like Twitter, Facebook, e-mail and many more. After the analysis has taken place on Storm, the results are streamed to any output system ranging from HTTP streaming to clients to direct database insertion to an external business process engine to kickstart a process.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.theladders.com">The Ladders</a>
-</td>
-<td>
-<p>
-TheLadders has been committed to finding the right person for the right job since 2003. We're using Storm in a variety of ways and are happy with its versatility, robustness, and ease of development. We use Storm in conjunction with RabbitMQ for such things as sending hiring alerts: when a recruiter submits a job to our site, Storm processes that event and will aggregate jobseekers whose profiles match the position. That list is subsequently batch-processed to send an email to the list of jobseekers. We also use Storm to persist events for Business Intelligence and internal event tracking. We're continuing to find uses for Storm where fast, asynchronous, real-time event processing is a must.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://semlab.nl">SemLab</a>
-</td>
-<td>
-<p>
-SemLab develops software for knowledge discovery and information support. Our ViewerPro platform uses information extraction, natural language processing and semantic web technologies to extract structured data from unstructured sources, in domains such as financial news feeds and legal documents. We have succesfully adapted ViewerPro's processing framework to run on top of Storm. The transition to Storm has made ViewerPro a much more scalable product, allowing us to process more in less time.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://visualrevenue.com/">Visual Revenue</a>
-</td>
-<td>
-<p>
-Here at Visual Revenue, we built a decision support system to help online editors to make choices on what, when, and where to promote their content in real-time. Storm is the backbone our real-time data processing and aggregation pipelines.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.peerindex.com/">PeerIndex</a>
-</td>
-<td>
-<p>
-PeerIndex is working to deliver influence at scale. PeerIndex does this by exposing services built on top of our Influence Graph; a directed graph of who is influencing whom on the web. PeerIndex gathers data from a number of social networks to create the Influence Graph. We use Storm to process our social data, to provide real-time aggregations, and to crawl the web, before storing our data in a manner most suitable for our Hadoop based systems to batch process. Storm provided us with an intuitive API and has slotted in well with the rest of our architecture. PeerIndex looks forward to further investing resources into our Storm based real-time analytics.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://ants.vn">ANTS.VN</a>
-</td>
-<td>
-<p>
-Big Data in Advertising is Vietnam's unique platform combines ad serving, a real-time bidding (RTB) exchange, Ad Server, Analytics, yield optimization, and content valuation to deliver the highest revenue across every desktop, tablet, and mobile screen. At ANTS.VN we use Storm to process large amounts of data to provide data real time, improve our Ad quality. This platform tracks impressions, clicks, conversions, bid requests etc. in real time. Together with Kafka, Redis, memcached and Cassandra based messaging, Storm enables us to build low-latency fault-tolerant distributed systems with ease.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.wayfair.com">Wayfair</a>
-</td>
-<td>
-<p>
-At Wayfair, we use storm as a platform to drive our core order processing pipeline as an event driven system. Storm allows us to reliably process tens of thousands of orders daily while providing us the assurance of seamless process scalability as our order load increases. Given the project’s ease of use and the immense support of the community, we’ve managed to implement our bolts in php, construct a simple puppet module for configuration management, and quickly solve arising issues. We can now focus most of our development efforts in the business layer, check out more information on how we use storm <a href="http://engineering.wayfair.com/stormin-oms/">in our engineering blog</a>. </p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://innoquant.com/">InnoQuant</a>
-</td>
-<td>
-<p>
-At InnoQuant, we use Storm as a backbone of our real-time big data analytics engine in MOCA platform. MOCA is a next generation, mobile-backend-as-a-service platform (MBaaS). It provides brands and app developers with real-time in-app tracking, context-aware push messaging, user micro-segmentation based on profile, time and geo-context as well as big data analytics. Storm-based pipeline is fed with events captured by native mobile SDKs (iOS, Android), scales nicely with connected mobile app users, delivers stream-based metrics and aggregations, and finally integrates with the rest of MOCA infrastructure, including columnar storage (Cassandra) and graph storage (Titan).
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.fliptop.com/">Fliptop</a>
-</td>
-<td>
-<p>
-Fliptop is a customer intelligence platform which allows customers to integrating their contacts, and campaign data, to enhance their prospect with social identities, and to find their best leads, and most influential customers. We have been using Storm for various tasks which requires scalability and reliability, including integrating with sales/marketing platform, data appending for contacts/leads, and computing scoring of contacts/leads. It's one of our most robust and scalable infrastructure.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.trovit.com/">Trovit</a>
-</td>
-<td>
-<p>
-Trovit is a search engine for classified ads present in 39 countries and different business categories (Real Estate, Cars, Jobs, Rentals, Products and Deals). Currently we use Storm to process and index ads in a distributed and low latency fashion. Combined with other technologies like Hadoop, Hbase and Solr has allowed us to build a scalable and low latency platform to serve search results to the end user.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.openx.com/">OpenX</a>
-</td>
-<td>
-<p>
-OpenX is a unique platform combines ad serving, a real-time bidding (RTB) exchange, yield optimization, and content valuation to deliver the highest revenue across every desktop, tablet, and mobile screen
-At OpenX we use Storm to process large amounts of data to provide real time Analytics. Storm provides us to process data real time to improve our Ad quality.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://keen.io/">Keen IO</a>
-</td>
-<td>
-<p>
-Keen IO is an analytics backend-as-a-service. The Keen IO API makes it easy for customers to do internal analytics or expose analytics features to their customers. Keen IO uses Storm (DRPC) to query billion-event data sets at very low latencies. We also use Storm to control our ingestion pipeline, sourcing data from Kafka and storing it in Cassandra.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://liveperson.com/">LivePerson</a>
-</td>
-<td>
-<p>
-LivePerson is a provider of Interaction-Service over the web. Interaction between an agent and a visitor in site can be achieved using phone call, chat, banners, etc.Using Storm, LivePerson can collect and process visitor data and provide information in real time to the agents about the visitor behavior. Moreover, LivePerson gets to better decisions about how to react to visitors in a way that best addresses their needs.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://yieldbot.com/">YieldBot</a>
-</td>
-<td>
-<p>
-Yieldbot connects ads to the real-time consumer intent streaming within premium publishers. To do this, Yieldbot leverages Storm for a wide variety of real-time processing tasks. We've open sourced our clojure DSL for writing trident topologies, marceline, which we use extensively. Events are read from Kafka, most state is stored in Cassandra, and we heavily use Storm's DRPC features. Our Storm use cases range from HTML processing, to hotness-style trending, to probabilistic rankings and cardinalities. Storm topologies touch virtually all of the events generated by the Yieldbot platform.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://equinix.com/">Equinix</a>
-</td>
-<td>
-<p>
-At Equinix, we use a number of Storm topologies to process and persist various data streams generated by sensors in our data centers. We also use Storm for real-time monitoring of different infrastructure components. Other few topologies are used for processing logs in real-time for internal IT systems  which also provide insights in user behavior.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://minewhat.com/">MineWhat</a>
-</td>
-<td>
-<p>
-MineWhat provides actionable analytics for ecommerce spanning every SKU,brand and category in the store. We use Storm to process raw click stream ingestion from Kafka and compute live analytics. Storm topologies powers our complex product to user interaction analysis. Multi language feature in storm is really kick-ass, we have bolts written in Node.js, Python and Ruby. Storm has been in our production site since Nov 2012.
-</p>
-</td>
-</tr>
-
-
-<tr>
-<td>
-<a href="http://www.360.cn/">Qihoo 360</a>
-</td>
-<td>
-<p>
-360 have deployed about 50 realtime applications on top of storm including web page analysis, log processing, image processing, voice processing, etc.
-</p>
-<p>
-The use case of storm at 360 is a bit special since we deployed storm on thounds of servers which are not dedicated for storm. Storm just use little cpu/memory/network resource on each server. However theses storm clusters leverage idle resources of servers at nearly zero cost to provide great computing power and it's realtime. It's amazing.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.holidaycheck.com/">HolidayCheck</a>
-</td>
-<td>
-<p>
-HolidayCheck is an online travel site and agency available in 10
-languages worldwide visited by 30 million people a month.
-We use Storm to deliver real-time hotel and holiday package offers
-from multiple providers - reservation systems and affiliate travel
-networks - in a low latency fashion based on user-selected criteria.
-In further reservation steps we use DRPC for vacancy checks and
-bookings of chosen offers. Along with Storm in the system for offers
-delivery we use Scala, Akka, Hazelcast, Drools and MongoDB. Real-time
-offer stream is delivered outside of the system back to the front-end
-via websocket connections.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://dataminelab.com/">DataMine Lab</a>
-</td>
-<td>
-<p>
-DataMine Lab is a consulting company integrating Storm into its
-portfolio of technologies. Storm powers range of our customers'
-systems allowing us to build real time analytics on tens of millions
-of visitors to the advertising platforms we helped to create. Together
-with Redis, Cassandra and Hadoop, Storm allows us to provide real-time
-distributed data platform at a global scale.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.wizecommerce.com/">Wize Commerce</a>
-</td>
-<td>
-<p>
-Wize Commerce® is the smartest way to grow your digital business. For over ten years, we have been helping clients maximize their revenue and traffic using optimization technologies that operate at massive scale, and across digital ecosystems. We own and operate leading comparison shopping engines including Nextag®, PriceMachineTM, and <a href="http://guenstiger.de">guenstiger.de</a>, and provide services to a wide ecosystem of partner sites that use our e-commerce platform. These sites together drive over $1B in annual merchant sales.
-</p>
-<p>
-We use storm to power our core platform infrastructure and it has become a vital component of our search indexing system & Cassandra storage. Along with KAFKA, STORM has reduced our end-to-end latencies from several hours to few minutes, and being largest comparison shopping sites operator, pushing price updates to the live site is very important and storm helps a lot achieve the same. We are extensively using storm in production since Q1 2013.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://metamarkets.com">Metamarkets</a>
-</td>
-<td>
-<p>At Metamarkets, Apache Storm is used to process real-time event data streamed from Apache Kafka message brokers, and then to load that data into a <a href="http://druid.io">Druid cluster</a>, the low-latency data store at the heart of our real-time analytics service. Our Storm topologies perform various operations, ranging from simple filtering of "outdated" events, to transformations such as ID-to-name lookups, to complex multi-stream joins. Since our service is intended to respond to ad-hoc queries within seconds of ingesting events, the speed, flexibility, and robustness of those topologies make Storm a key piece of our real-time stack.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.mightytravels.com">Mighty Travels</a>
-</td>
-<td>
-<p>We are using Storm to process real-time search data stream and
-application logs. The part we like best about Storm is the ease of
-scaling up basically just by throwing more machines at it.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.polecat.co">Polecat</a>
-</td>
-<td>
-<p>Polecat's digital analyisis platform, MeaningMine, allows users to search all on-line news, blogs and social media in real-time and run bespoke analysis in order to inform corporate strategy and decision making for some of the world largest companies and governmental organisations.</p>
-<p>
-Polecat uses Storm to run an application we've called the 'Data Munger'.  We run many different topologies on a multi host storm cluster to process tens of millions of online articles and posts that we collect each day.  Storm handles our analysis of these documents so that we can provide insight on realtime data to our clients.  We output our results from Storm into one of many large Apache Solr clusters for our end user applications to query (Polecat is also a contributor to Solr).  We first starting developing our app to run on storm back in June 2012 and it has been live since roughly September 2012.  We've found Storm to be an excellent fit for our needs here, and we've always found it extremely robust and fast.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="https://www.skylight.io/">Skylight by Tilde</a>
-</td>
-<td>
-<p>Skylight is a production profiler for Ruby on Rails apps that focuses on providing detailed information about your running application that you can explore in an intuitive way. We use Storm to process traces from our agent into data structures that we can slice and dice for you in our web app.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.ad4game.com/">Ad4Game</a>
-</td>
-<td>
-<p>We are an advertising network and we use Storm to calculate priorities in real time to know which ads to show for which website, visitor and country.</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.impetus.com/">Impetus Technologies</a>
-</td>
-<td>
-<p>StreamAnalytix, a product of Impetus Technologies enables enterprises to analyze and respond to events in real-time at Big Data scale. Based on Apache Storm, StreamAnalytix is designed to rapidly build and deploy streaming analytics applications for any industry vertical, any data format, and any use case. This high-performance scalable platform comes with a pre-integrated package of components like Cassandra, Storm, Kafka and more. In addition, it also brings together the proven open source technology stack with Hadoop and NoSQL to provide massive scalability, dynamic data pipelines, and a visual designer for rapid application development.</p>
-<p>
-Through StreamAnalytix, the users can ingest, store and analyze millions of events per second and discover exceptions, patterns, and trends through live dashboards. It also provides seamless integration with indexing store (ElasticSearch) and NoSQL database (HBase, Cassandra, and Oracle NoSQL) for writing data in real-time. With the use of Storm, the product delivers high business value solutions such as log analytics, streaming ETL, deep social listening, Real-time marketing, business process acceleration and predictive maintenance.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.akazoo.com/en">Akazoo</a>
-</td>
-<td>
-<p>
-Akazoo is a platform providing music streaming services.  Storm is the backbone of all our real-time analytical processing. We use it for tracking and analyzing application events and for various other stuff, including recommendations and parallel task execution.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.mapillary.com">Mapillary</a>
-</td>
-<td>
-<p>
-At Mapillary we use storm for a wide variety of tasks. Having a system which is 100% based on kafka input storm and trident makes reasoning about our data a breeze.  
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.gutscheinrausch.de/">Gutscheinrausch.de</a>
-</td>
-<td>
-<p>
-We recently upgraded our existing IT infrastructure, using Storm as one of our main tools.
-Each day we collect sales, clicks, visits and various ecommerce metrics from various different systems (webpages, affiliate reportings, networks, tracking-scripts etc). We process this continually generated data using Storm before entering it into the backend systems for further use.
-</p>
-<p>
-Using Storm we were able to decouple our heterogeneous frontend-systems from our backends and take load off the data warehouse applications by inputting pre-processed data. This way we can easy collect and process all data and then do realtime OLAP queries using our propietary data warehouse technology.
-</p>
-<p>
-We are mostly impressed by the high speed, low maintenance approach Storm has provided us with. Also being able to easily scale up the system using more machines is a big plus. Since we're a small team it allows us to focus more on our core business instead of the underlying technology. You could say it has taken our hearts by storm!
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.appriver.com">AppRiver</a>
-</td>
-<td>
-<p>
-We are using Storm to track internet threats from varied sources around the web.  It is always fast and reliable.
-</p>
-</td>
-</tr>
-
-<tr>
-<td>
-<a href="http://www.mercadolibre.com/">MercadoLibre</a>
-</td>
-<td>
-</td>
-</tr>
-
-
-</table>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Project-ideas.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Project-ideas.md b/docs/documentation/Project-ideas.md
deleted file mode 100644
index c8d449f..0000000
--- a/docs/documentation/Project-ideas.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-layout: documentation
----
- * **DSLs for non-JVM languages:** These DSL's should be all-inclusive and not require any Java for the creation of topologies, spouts, or bolts. Since topologies are [Thrift](http://thrift.apache.org/) structs, Nimbus is a Thrift service, and bolts can be written in any language, this is possible.
- * **Online machine learning algorithms:** Something like [Mahout](http://mahout.apache.org/) but for online algorithms
- * **Suite of performance benchmarks:** These benchmarks should test Storm's performance on CPU and IO intensive workloads. There should be benchmarks for different classes of applications, such as stream processing (where throughput is the priority) and distributed RPC (where latency is the priority). 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Rationale.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Rationale.md b/docs/documentation/Rationale.md
deleted file mode 100644
index 45ff396..0000000
--- a/docs/documentation/Rationale.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Rationale
-layout: documentation
-documentation: true
----
-The past decade has seen a revolution in data processing. MapReduce, Hadoop, and related technologies have made it possible to store and process data at scales previously unthinkable. Unfortunately, these data processing technologies are not realtime systems, nor are they meant to be. There's no hack that will turn Hadoop into a realtime system; realtime data processing has a fundamentally different set of requirements than batch processing.
-
-However, realtime data processing at massive scale is becoming more and more of a requirement for businesses. The lack of a "Hadoop of realtime" has become the biggest hole in the data processing ecosystem.
-
-Storm fills that hole.
-
-Before Storm, you would typically have to manually build a network of queues and workers to do realtime processing. Workers would process messages off a queue, update databases, and send new messages to other queues for further processing. Unfortunately, this approach has serious limitations:
-
-1. **Tedious**: You spend most of your development time configuring where to send messages, deploying workers, and deploying intermediate queues. The realtime processing logic that you care about corresponds to a relatively small percentage of your codebase.
-2. **Brittle**: There's little fault-tolerance. You're responsible for keeping each worker and queue up.
-3. **Painful to scale**: When the message throughput get too high for a single worker or queue, you need to partition how the data is spread around. You need to reconfigure the other workers to know the new locations to send messages. This introduces moving parts and new pieces that can fail.
-
-Although the queues and workers paradigm breaks down for large numbers of messages, message processing is clearly the fundamental paradigm for realtime computation. The question is: how do you do it in a way that doesn't lose data, scales to huge volumes of messages, and is dead-simple to use and operate?
-
-Storm satisfies these goals. 
-
-## Why Storm is important
-
-Storm exposes a set of primitives for doing realtime computation. Like how MapReduce greatly eases the writing of parallel batch processing, Storm's primitives greatly ease the writing of parallel realtime computation.
-
-The key properties of Storm are:
-
-1. **Extremely broad set of use cases**: Storm can be used for processing messages and updating databases (stream processing), doing a continuous query on data streams and streaming the results into clients (continuous computation), parallelizing an intense query like a search query on the fly (distributed RPC), and more. Storm's small set of primitives satisfy a stunning number of use cases.
-2. **Scalable**: Storm scales to massive numbers of messages per second. To scale a topology, all you have to do is add machines and increase the parallelism settings of the topology. As an example of Storm's scale, one of Storm's initial applications processed 1,000,000 messages per second on a 10 node cluster, including hundreds of database calls per second as part of the topology. Storm's usage of Zookeeper for cluster coordination makes it scale to much larger cluster sizes.
-3. **Guarantees no data loss**: A realtime system must have strong guarantees about data being successfully processed. A system that drops data has a very limited set of use cases. Storm guarantees that every message will be processed, and this is in direct contrast with other systems like S4. 
-4. **Extremely robust**: Unlike systems like Hadoop, which are notorious for being difficult to manage, Storm clusters just work. It is an explicit goal of the Storm project to make the user experience of managing Storm clusters as painless as possible.
-5. **Fault-tolerant**: If there are faults during execution of your computation, Storm will reassign tasks as necessary. Storm makes sure that a computation can run forever (or until you kill the computation).
-6. **Programming language agnostic**: Robust and scalable realtime processing shouldn't be limited to a single platform. Storm topologies and processing components can be defined in any language, making Storm accessible to nearly anyone.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Resource_Aware_Scheduler_overview.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Resource_Aware_Scheduler_overview.md b/docs/documentation/Resource_Aware_Scheduler_overview.md
deleted file mode 100644
index 0f5b8cb..0000000
--- a/docs/documentation/Resource_Aware_Scheduler_overview.md
+++ /dev/null
@@ -1,227 +0,0 @@
-# Introduction
-
-The purpose of this document is to provide a description of the Resource Aware Scheduler for the Storm distributed real-time computation system.  This document will provide you with both a high level description of the resource aware scheduler in Storm
-
-## Using Resource Aware Scheduler
-
-The user can switch to using the Resource Aware Scheduler by setting the following in *conf/storm.yaml*
-
-    storm.scheduler: “backtype.storm.scheduler.resource.ResourceAwareScheduler”
-
-
-## API Overview
-
-For a Storm Topology, the user can now specify the amount of resources a topology component (i.e. Spout or Bolt) is required to run a single instance of the component.  The user can specify the resource requirement for a topology component by using the following API calls.
-
-### Setting Memory Requirement
-
-API to set component memory requirement:
-
-    public T setMemoryLoad(Number onHeap, Number offHeap)
-
-Parameters:
-* Number onHeap – The amount of on heap memory an instance of this component will consume in megabytes
-* Number offHeap – The amount of off heap memory an instance of this component will consume in megabytes
-
-The user also has to option to just specify the on heap memory requirement if the component does not have an off heap memory need.
-
-    public T setMemoryLoad(Number onHeap)
-
-Parameters:
-* Number onHeap – The amount of on heap memory an instance of this component will consume
-
-If no value is provided for offHeap, 0.0 will be used. If no value is provided for onHeap, or if the API is never called for a component, the default value will be used.
-
-Example of Usage:
-
-    SpoutDeclarer s1 = builder.setSpout("word", new TestWordSpout(), 10);
-    s1.setMemoryLoad(1024.0, 512.0);
-    builder.setBolt("exclaim1", new ExclamationBolt(), 3)
-                .shuffleGrouping("word").setMemoryLoad(512.0);
-
-The entire memory requested for this topology is 16.5 GB. That is from 10 spouts with 1GB on heap memory and 0.5 GB off heap memory each and 3 bolts with 0.5 GB on heap memory each.
-
-### Setting CPU Requirement
-
-
-API to set component CPU requirement:
-
-    public T setCPULoad(Double amount)
-
-Parameters:
-* Number amount – The amount of on CPU an instance of this component will consume.
-
-Currently, the amount of CPU resources a component requires or is available on a node is represented by a point system. CPU usage is a difficult concept to define. Different CPU architectures perform differently depending on the task at hand. They are so complex that expressing all of that in a single precise portable number is impossible. Instead we take a convention over configuration approach and are primarily concerned with rough level of CPU usage while still providing the possibility to specify amounts more fine grained.
-
-By convention a CPU core typically will get 100 points. If you feel that your processors are more or less powerful you can adjust this accordingly. Heavy tasks that are CPU bound will get 100 points, as they can consume an entire core. Medium tasks should get 50, light tasks 25, and tiny tasks 10. In some cases you have a task that spawns other threads to help with processing. These tasks may need to go above 100 points to express the amount of CPU they are using. If these conventions are followed the common case for a single threaded task the reported Capacity * 100 should be the number of CPU points that the task needs.
-
-Example of Usage:
-
-    SpoutDeclarer s1 = builder.setSpout("word", new TestWordSpout(), 10);
-    s1.setCPULoad(15.0);
-    builder.setBolt("exclaim1", new ExclamationBolt(), 3)
-                .shuffleGrouping("word").setCPULoad(10.0);
-    builder.setBolt("exclaim2", new HeavyBolt(), 1)
-                    .shuffleGrouping("exclaim1").setCPULoad(450.0);
-
-###	Limiting the Heap Size per Worker (JVM) Process
-
-
-    public void setTopologyWorkerMaxHeapSize(Number size)
-
-Parameters:
-* Number size – The memory limit a worker process will be allocated in megabytes
-
-The user can limit the amount of memory resources the resource aware scheduler allocates to a single worker on a per topology basis by using the above API.  This API is in place so that the users can spread executors to multiple workers.  However, spreading executors to multiple workers may increase the communication latency since executors will not be able to use Disruptor Queue for intra-process communication.
-
-Example of Usage:
-
-    Config conf = new Config();
-    conf.setTopologyWorkerMaxHeapSize(512.0);
-
-### Setting Available Resources on Node
-
-A storm administrator can specify node resource availability by modifying the *conf/storm.yaml* file located in the storm home directory of that node.
-
-A storm administrator can specify how much available memory a node has in megabytes adding the following to *storm.yaml*
-
-    supervisor.memory.capacity.mb: [amount<Double>]
-
-A storm administrator can also specify how much available CPU resources a node has available adding the following to *storm.yaml*
-
-    supervisor.cpu.capacity: [amount<Double>]
-
-
-Note: that the amount the user can specify for the available CPU is represented using a point system like discussed earlier.
-
-Example of Usage:
-
-    supervisor.memory.capacity.mb: 20480.0
-    supervisor.cpu.capacity: 100.0
-
-
-### Other Configurations
-
-The user can set some default configurations for the Resource Aware Scheduler in *conf/storm.yaml*:
-
-    //default value if on heap memory requirement is not specified for a component 
-    topology.component.resources.onheap.memory.mb: 128.0
-
-    //default value if off heap memory requirement is not specified for a component 
-    topology.component.resources.offheap.memory.mb: 0.0
-
-    //default value if CPU requirement is not specified for a component 
-    topology.component.cpu.pcore.percent: 10.0
-
-    //default value for the max heap size for a worker  
-    topology.worker.max.heap.size.mb: 768.0
-
-# Topology Priorities and Per User Resource 
-
-The Resource Aware Scheduler or RAS also has multitenant capabilities since many Storm users typically share a Storm cluster.  Resource Aware Scheduler can allocate resources on a per user basis.  Each user can be guaranteed a certain amount of resources to run his or her topologies and the Resource Aware Scheduler will meet those guarantees when possible.  When the Storm cluster has extra free resources, Resource Aware Scheduler will to be able allocate additional resources to user in a fair manner. The importance of topologies can also vary.  Topologies can be used for actual production or just experimentation, thus Resource Aware Scheduler will take into account the importance of a topology when determining the order in which to schedule topologies or when to evict topologies
-
-## Setup
-
-The resource guarantees of a user can be specified *conf/user-resource-pools.yaml*.  Specify the resource guarantees of a user in the following format:
-
-    resource.aware.scheduler.user.pools:
-	[UserId]
-		cpu: [Amount of Guarantee CPU Resources]
-		memory: [Amount of Guarantee Memory Resources]
-
-An example of what *user-resource-pools.yaml* can look like:
-
-    resource.aware.scheduler.user.pools:
-        jerry:
-            cpu: 1000
-            memory: 8192.0
-        derek:
-            cpu: 10000.0
-            memory: 32768
-        bobby:
-            cpu: 5000.0
-            memory: 16384.0
-
-Please note that the specified amount of Guaranteed CPU and Memory can be either a integer or double
-
-## API Overview
-### Specifying Topology Priority
-The range of topology priorities can range form 0-29.  The topologies priorities will be partitioned into several priority levels that may contain a range of priorities. 
-For example we can create a priority level mapping:
-
-    PRODUCTION => 0 – 9
-    STAGING => 10 – 19
-    DEV => 20 – 29
-
-Thus, each priority level contains 10 sub priorities. Users can set the priority level of a topology by using the following API
-
-    conf.setTopologyPriority(int priority)
-    
-Parameters:
-* priority – an integer representing the priority of the topology
-
-Please note that the 0-29 range is not a hard limit.  Thus, a user can set a priority number that is higher than 29. However, the property of higher the priority number, lower the importance still holds
-
-### Specifying Scheduling Strategy:
-
-A user can specify on a per topology basis what scheduling strategy to use.  Users can implement the IStrategy interface and define new strategies to schedule specific topologies.  This pluggable interface was created since we realize different topologies might have different scheduling needs.  A user can set the topology strategy within the topology definition by using the API:
-
-    public void setTopologyStrategy(Class<? extends IStrategy> clazz)
-    
-Parameters:
-* clazz – The strategy class that implements the IStrategy interface
-
-Example Usage:
-
-    conf.setTopologyStrategy(backtype.storm.scheduler.resource.strategies.scheduling.DefaultResourceAwareStrategy.class);
-
-A default scheduling is provided.  The DefaultResourceAwareStrategy is implemented based off the scheduling algorithm in the original paper describing resource aware scheduling in Storm:
-
-http://web.engr.illinois.edu/~bpeng/files/r-storm.pdf
-
-### Specifying Topology Prioritization Strategy
-
-The order of scheduling is a pluggable interface in which a user could define a strategy that prioritizes topologies.  For a user to define his or her own prioritization strategy, he or she needs to implement the ISchedulingPriorityStrategy interface.  A user can set the scheduling priority strategy by setting the *Config.RESOURCE_AWARE_SCHEDULER_PRIORITY_STRATEGY* to point to the class that implements the strategy. For instance:
-
-    resource.aware.scheduler.priority.strategy: "backtype.storm.scheduler.resource.strategies.priority.DefaultSchedulingPriorityStrategy"
-    
-A default strategy will be provided.  The following explains how the default scheduling priority strategy works.
-
-**DefaultSchedulingPriorityStrategy**
-
-The order of scheduling should be based on the distance between a user’s current resource allocation and his or her guaranteed allocation.  We should prioritize the users who are the furthest away from their resource guarantee. The difficulty of this problem is that a user may have multiple resource guarantees, and another user can have another set of resource guarantees, so how can we compare them in a fair manner?  Let's use the average percentage of resource guarantees satisfied as a method of comparison.
-
-For example:
-
-|User|Resource Guarantee|Resource Allocated|
-|----|------------------|------------------|
-|A|<10 CPU, 50GB>|<2 CPU, 40 GB>|
-|B|< 20 CPU, 25GB>|<15 CPU, 10 GB>|
-
-User A’s average percentage satisfied of resource guarantee: 
-
-(2/10+40/50)/2  = 0.5
-
-User B’s average percentage satisfied of resource guarantee: 
-
-(15/20+10/25)/2  = 0.575
-
-Thus, in this example User A has a smaller average percentage of his or her resource guarantee satisfied than User B.  Thus, User A should get priority to be allocated more resource, i.e., schedule a topology submitted by User A.
-
-When scheduling, RAS sorts users by the average percentage satisfied of resource guarantee and schedule topologies from users based on that ordering starting from the users with the lowest average percentage satisfied of resource guarantee.  When a user’s resource guarantee is completely satisfied, the user’s average percentage satisfied of resource guarantee will be greater than or equal to 1.
-
-### Specifying Eviction Strategy
-The eviction strategy is used when there are not enough free resources in the cluster to schedule new topologies. If the cluster is full, we need a mechanism to evict topologies so that user resource guarantees can be met and additional resource can be shared fairly among users. The strategy for evicting topologies is also a pluggable interface in which the user can implement his or her own topology eviction strategy.  For a user to implement his or her own eviction strategy, he or she needs to implement the IEvictionStrategy Interface and set *Config.RESOURCE_AWARE_SCHEDULER_EVICTION_STRATEGY* to point to the implemented strategy class. For instance:
-
-    resource.aware.scheduler.eviction.strategy: "backtype.storm.scheduler.resource.strategies.eviction.DefaultEvictionStrategy"
-
-A default eviction strategy is provided.  The following explains how the default topology eviction strategy works
-
-**DefaultEvictionStrategy**
-
-
-To determine if topology eviction should occur we should take into account the priority of the topology that we are trying to schedule and whether the resource guarantees for the owner of the topology have been met.  
-
-We should never evict a topology from a user that does not have his or her resource guarantees satisfied.  The following flow chart should describe the logic for the eviction process.
-
-![Viewing metrics with VisualVM](images/resource_aware_scheduler_default_eviction_strategy.svg)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Running-topologies-on-a-production-cluster.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Running-topologies-on-a-production-cluster.md b/docs/documentation/Running-topologies-on-a-production-cluster.md
deleted file mode 100644
index b8cb892..0000000
--- a/docs/documentation/Running-topologies-on-a-production-cluster.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-title: Running Topologies on a Production Cluster
-layout: documentation
-documentation: true
----
-Running topologies on a production cluster is similar to running in [Local mode](Local-mode.html). Here are the steps:
-
-1) Define the topology (Use [TopologyBuilder](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html) if defining using Java)
-
-2) Use [StormSubmitter](/javadoc/apidocs/backtype/storm/StormSubmitter.html) to submit the topology to the cluster. `StormSubmitter` takes as input the name of the topology, a configuration for the topology, and the topology itself. For example:
-
-```java
-Config conf = new Config();
-conf.setNumWorkers(20);
-conf.setMaxSpoutPending(5000);
-StormSubmitter.submitTopology("mytopology", conf, topology);
-```
-
-3) Create a jar containing your code and all the dependencies of your code (except for Storm -- the Storm jars will be added to the classpath on the worker nodes).
-
-If you're using Maven, the [Maven Assembly Plugin](http://maven.apache.org/plugins/maven-assembly-plugin/) can do the packaging for you. Just add this to your pom.xml:
-
-```xml
-  <plugin>
-    <artifactId>maven-assembly-plugin</artifactId>
-    <configuration>
-      <descriptorRefs>  
-        <descriptorRef>jar-with-dependencies</descriptorRef>
-      </descriptorRefs>
-      <archive>
-        <manifest>
-          <mainClass>com.path.to.main.Class</mainClass>
-        </manifest>
-      </archive>
-    </configuration>
-  </plugin>
-```
-Then run mvn assembly:assembly to get an appropriately packaged jar. Make sure you [exclude](http://maven.apache.org/plugins/maven-assembly-plugin/examples/single/including-and-excluding-artifacts.html) the Storm jars since the cluster already has Storm on the classpath.
-
-4) Submit the topology to the cluster using the `storm` client, specifying the path to your jar, the classname to run, and any arguments it will use:
-
-`storm jar path/to/allmycode.jar org.me.MyTopology arg1 arg2 arg3`
-
-`storm jar` will submit the jar to the cluster and configure the `StormSubmitter` class to talk to the right cluster. In this example, after uploading the jar `storm jar` calls the main function on `org.me.MyTopology` with the arguments "arg1", "arg2", and "arg3".
-
-You can find out how to configure your `storm` client to talk to a Storm cluster on [Setting up development environment](Setting-up-development-environment.html).
-
-### Common configurations
-
-There are a variety of configurations you can set per topology. A list of all the configurations you can set can be found [here](/javadoc/apidocs/backtype/storm/Config.html). The ones prefixed with "TOPOLOGY" can be overridden on a topology-specific basis (the other ones are cluster configurations and cannot be overridden). Here are some common ones that are set for a topology:
-
-1. **Config.TOPOLOGY_WORKERS**: This sets the number of worker processes to use to execute the topology. For example, if you set this to 25, there will be 25 Java processes across the cluster executing all the tasks. If you had a combined 150 parallelism across all components in the topology, each worker process will have 6 tasks running within it as threads.
-2. **Config.TOPOLOGY_ACKER_EXECUTORS**: This sets the number of executors that will track tuple trees and detect when a spout tuple has been fully processed. Ackers are an integral part of Storm's reliability model and you can read more about them on [Guaranteeing message processing](Guaranteeing-message-processing.html). By not setting this variable or setting it as null, Storm will set the number of acker executors to be equal to the number of workers configured for this topology. If this variable is set to 0, then Storm will immediately ack tuples as soon as they come off the spout, effectively disabling reliability.
-3. **Config.TOPOLOGY_MAX_SPOUT_PENDING**: This sets the maximum number of spout tuples that can be pending on a single spout task at once (pending means the tuple has not been acked or failed yet). It is highly recommended you set this config to prevent queue explosion.
-4. **Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS**: This is the maximum amount of time a spout tuple has to be fully completed before it is considered failed. This value defaults to 30 seconds, which is sufficient for most topologies. See [Guaranteeing message processing](Guaranteeing-message-processing.html) for more information on how Storm's reliability model works.
-5. **Config.TOPOLOGY_SERIALIZATIONS**: You can register more serializers to Storm using this config so that you can use custom types within tuples.
-
-
-### Killing a topology
-
-To kill a topology, simply run:
-
-`storm kill {stormname}`
-
-Give the same name to `storm kill` as you used when submitting the topology.
-
-Storm won't kill the topology immediately. Instead, it deactivates all the spouts so that they don't emit any more tuples, and then Storm waits Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS seconds before destroying all the workers. This gives the topology enough time to complete any tuples it was processing when it got killed.
-
-### Updating a running topology
-
-To update a running topology, the only option currently is to kill the current topology and resubmit a new one. A planned feature is to implement a `storm swap` command that swaps a running topology with a new one, ensuring minimal downtime and no chance of both topologies processing tuples at the same time. 
-
-### Monitoring topologies
-
-The best place to monitor a topology is using the Storm UI. The Storm UI provides information about errors happening in tasks and fine-grained stats on the throughput and latency performance of each component of each running topology.
-
-You can also look at the worker logs on the cluster machines.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Serialization-(prior-to-0.6.0).md
----------------------------------------------------------------------
diff --git a/docs/documentation/Serialization-(prior-to-0.6.0).md b/docs/documentation/Serialization-(prior-to-0.6.0).md
deleted file mode 100644
index 9ef2fdf..0000000
--- a/docs/documentation/Serialization-(prior-to-0.6.0).md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-title: Serialization (Prior to 0.6.0)
-layout: documentation
-documentation: true
----
-Tuples can be comprised of objects of any types. Since Storm is a distributed system, it needs to know how to serialize and deserialize objects when they're passed between tasks. By default Storm can serialize ints, shorts, longs, floats, doubles, bools, bytes, strings, and byte arrays, but if you want to use another type in your tuples, you'll need to implement a custom serializer.
-
-### Dynamic typing
-
-There are no type declarations for fields in a Tuple. You put objects in fields and Storm figures out the serialization dynamically. Before we get to the interface for serialization, let's spend a moment understanding why Storm's tuples are dynamically typed.
-
-Adding static typing to tuple fields would add large amount of complexity to Storm's API. Hadoop, for example, statically types its keys and values but requires a huge amount of annotations on the part of the user. Hadoop's API is a burden to use and the "type safety" isn't worth it. Dynamic typing is simply easier to use.
-
-Further than that, it's not possible to statically type Storm's tuples in any reasonable way. Suppose a Bolt subscribes to multiple streams. The tuples from all those streams may have different types across the fields. When a Bolt receives a `Tuple` in `execute`, that tuple could have come from any stream and so could have any combination of types. There might be some reflection magic you can do to declare a different method for every tuple stream a bolt subscribes to, but Storm opts for the simpler, straightforward approach of dynamic typing.
-
-Finally, another reason for using dynamic typing is so Storm can be used in a straightforward manner from dynamically typed languages like Clojure and JRuby.
-
-### Custom serialization
-
-Let's dive into Storm's API for defining custom serializations. There are two steps you need to take as a user to create a custom serialization: implement the serializer, and register the serializer to Storm.
-
-#### Creating a serializer
-
-Custom serializers implement the [ISerialization](/javadoc/apidocs/backtype/storm/serialization/ISerialization.html) interface. Implementations specify how to serialize and deserialize types into a binary format.
-
-The interface looks like this:
-
-```java
-public interface ISerialization<T> {
-    public boolean accept(Class c);
-    public void serialize(T object, DataOutputStream stream) throws IOException;
-    public T deserialize(DataInputStream stream) throws IOException;
-}
-```
-
-Storm uses the `accept` method to determine if a type can be serialized by this serializer. Remember, Storm's tuples are dynamically typed so Storm determines what serializer to use at runtime.
-
-`serialize` writes the object out to the output stream in binary format. The field must be written in a way such that it can be deserialized later. For example, if you're writing out a list of objects, you'll need to write out the size of the list first so that you know how many elements to deserialize.
-
-`deserialize` reads the serialized object off of the stream and returns it.
-
-You can see example serialization implementations in the source for [SerializationFactory](https://github.com/apache/storm/blob/0.5.4/src/jvm/backtype/storm/serialization/SerializationFactory.java)
-
-#### Registering a serializer
-
-Once you create a serializer, you need to tell Storm it exists. This is done through the Storm configuration (See [Concepts](Concepts.html) for information about how configuration works in Storm). You can register serializations either through the config given when submitting a topology or in the storm.yaml files across your cluster.
-
-Serializer registrations are done through the Config.TOPOLOGY_SERIALIZATIONS config and is simply a list of serialization class names.
-
-Storm provides helpers for registering serializers in a topology config. The [Config](/javadoc/apidocs/backtype/storm/Config.html) class has a method called `addSerialization` that takes in a serializer class to add to the config.
-
-There's an advanced config called Config.TOPOLOGY_SKIP_MISSING_SERIALIZATIONS. If you set this to true, Storm will ignore any serializations that are registered but do not have their code available on the classpath. Otherwise, Storm will throw errors when it can't find a serialization. This is useful if you run many topologies on a cluster that each have different serializations, but you want to declare all the serializations across all topologies in the `storm.yaml` files.
\ No newline at end of file


[07/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/dynamic_log_level_settings_1.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/dynamic_log_level_settings_1.png b/docs/documentation/images/dynamic_log_level_settings_1.png
deleted file mode 100644
index 71d42e7..0000000
Binary files a/docs/documentation/images/dynamic_log_level_settings_1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/dynamic_log_level_settings_2.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/dynamic_log_level_settings_2.png b/docs/documentation/images/dynamic_log_level_settings_2.png
deleted file mode 100644
index d0e61a7..0000000
Binary files a/docs/documentation/images/dynamic_log_level_settings_2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/dynamic_profiling_debugging_1.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/dynamic_profiling_debugging_1.png b/docs/documentation/images/dynamic_profiling_debugging_1.png
deleted file mode 100644
index 6be1f86..0000000
Binary files a/docs/documentation/images/dynamic_profiling_debugging_1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/dynamic_profiling_debugging_2.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/dynamic_profiling_debugging_2.png b/docs/documentation/images/dynamic_profiling_debugging_2.png
deleted file mode 100644
index 342ad94..0000000
Binary files a/docs/documentation/images/dynamic_profiling_debugging_2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/dynamic_profiling_debugging_3.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/dynamic_profiling_debugging_3.png b/docs/documentation/images/dynamic_profiling_debugging_3.png
deleted file mode 100644
index 5706d7e..0000000
Binary files a/docs/documentation/images/dynamic_profiling_debugging_3.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/dynamic_profiling_debugging_4.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/dynamic_profiling_debugging_4.png b/docs/documentation/images/dynamic_profiling_debugging_4.png
deleted file mode 100644
index 0afe9f4..0000000
Binary files a/docs/documentation/images/dynamic_profiling_debugging_4.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/eclipse-project-properties.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/eclipse-project-properties.png b/docs/documentation/images/eclipse-project-properties.png
deleted file mode 100644
index 62f8d32..0000000
Binary files a/docs/documentation/images/eclipse-project-properties.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/example-of-a-running-topology.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/example-of-a-running-topology.png b/docs/documentation/images/example-of-a-running-topology.png
deleted file mode 100644
index 1462b21..0000000
Binary files a/docs/documentation/images/example-of-a-running-topology.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/grouping.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/grouping.png b/docs/documentation/images/grouping.png
deleted file mode 100644
index 3911286..0000000
Binary files a/docs/documentation/images/grouping.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/hdfs_blobstore.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/hdfs_blobstore.png b/docs/documentation/images/hdfs_blobstore.png
deleted file mode 100644
index 11c5c10..0000000
Binary files a/docs/documentation/images/hdfs_blobstore.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/ld-library-path-eclipse-linux.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/ld-library-path-eclipse-linux.png b/docs/documentation/images/ld-library-path-eclipse-linux.png
deleted file mode 100644
index b6fbbd9..0000000
Binary files a/docs/documentation/images/ld-library-path-eclipse-linux.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/local_blobstore.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/local_blobstore.png b/docs/documentation/images/local_blobstore.png
deleted file mode 100644
index ff8001e..0000000
Binary files a/docs/documentation/images/local_blobstore.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/nimbus_ha_blobstore.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/nimbus_ha_blobstore.png b/docs/documentation/images/nimbus_ha_blobstore.png
deleted file mode 100644
index 26e8c2a..0000000
Binary files a/docs/documentation/images/nimbus_ha_blobstore.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/nimbus_ha_leader_election_and_failover.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/nimbus_ha_leader_election_and_failover.png b/docs/documentation/images/nimbus_ha_leader_election_and_failover.png
deleted file mode 100644
index 60cc1b7..0000000
Binary files a/docs/documentation/images/nimbus_ha_leader_election_and_failover.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/nimbus_ha_topology_submission.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/nimbus_ha_topology_submission.png b/docs/documentation/images/nimbus_ha_topology_submission.png
deleted file mode 100644
index 7707e5a..0000000
Binary files a/docs/documentation/images/nimbus_ha_topology_submission.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/relationships-worker-processes-executors-tasks.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/relationships-worker-processes-executors-tasks.png b/docs/documentation/images/relationships-worker-processes-executors-tasks.png
deleted file mode 100644
index ef6f3fd..0000000
Binary files a/docs/documentation/images/relationships-worker-processes-executors-tasks.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/search-a-topology.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/search-a-topology.png b/docs/documentation/images/search-a-topology.png
deleted file mode 100644
index 8d6153c..0000000
Binary files a/docs/documentation/images/search-a-topology.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/search-for-a-single-worker-log.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/search-for-a-single-worker-log.png b/docs/documentation/images/search-for-a-single-worker-log.png
deleted file mode 100644
index 8c6f423..0000000
Binary files a/docs/documentation/images/search-for-a-single-worker-log.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/spout-vs-state.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/spout-vs-state.png b/docs/documentation/images/spout-vs-state.png
deleted file mode 100644
index b6b06b3..0000000
Binary files a/docs/documentation/images/spout-vs-state.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/storm-cluster.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/storm-cluster.png b/docs/documentation/images/storm-cluster.png
deleted file mode 100644
index df2ddb8..0000000
Binary files a/docs/documentation/images/storm-cluster.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/topology-tasks.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/topology-tasks.png b/docs/documentation/images/topology-tasks.png
deleted file mode 100644
index 0affaba..0000000
Binary files a/docs/documentation/images/topology-tasks.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/topology.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/topology.png b/docs/documentation/images/topology.png
deleted file mode 100644
index a45c25c..0000000
Binary files a/docs/documentation/images/topology.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/transactional-batches.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/transactional-batches.png b/docs/documentation/images/transactional-batches.png
deleted file mode 100644
index db2716b..0000000
Binary files a/docs/documentation/images/transactional-batches.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/transactional-commit-flow.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/transactional-commit-flow.png b/docs/documentation/images/transactional-commit-flow.png
deleted file mode 100644
index 25131b0..0000000
Binary files a/docs/documentation/images/transactional-commit-flow.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/transactional-design-2.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/transactional-design-2.png b/docs/documentation/images/transactional-design-2.png
deleted file mode 100644
index a0e0ebf..0000000
Binary files a/docs/documentation/images/transactional-design-2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/transactional-spout-structure.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/transactional-spout-structure.png b/docs/documentation/images/transactional-spout-structure.png
deleted file mode 100644
index ecf7def..0000000
Binary files a/docs/documentation/images/transactional-spout-structure.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/trident-to-storm1.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/trident-to-storm1.png b/docs/documentation/images/trident-to-storm1.png
deleted file mode 100644
index b022776..0000000
Binary files a/docs/documentation/images/trident-to-storm1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/trident-to-storm2.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/trident-to-storm2.png b/docs/documentation/images/trident-to-storm2.png
deleted file mode 100644
index 6aa0fc5..0000000
Binary files a/docs/documentation/images/trident-to-storm2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/tuple-dag.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/tuple-dag.png b/docs/documentation/images/tuple-dag.png
deleted file mode 100644
index 34611d4..0000000
Binary files a/docs/documentation/images/tuple-dag.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/tuple_tree.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/tuple_tree.png b/docs/documentation/images/tuple_tree.png
deleted file mode 100644
index b14f558..0000000
Binary files a/docs/documentation/images/tuple_tree.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/storm-metrics-profiling-internal-actions.md
----------------------------------------------------------------------
diff --git a/docs/documentation/storm-metrics-profiling-internal-actions.md b/docs/documentation/storm-metrics-profiling-internal-actions.md
deleted file mode 100644
index e549c0c..0000000
--- a/docs/documentation/storm-metrics-profiling-internal-actions.md
+++ /dev/null
@@ -1,70 +0,0 @@
-# Storm Metrics for Profiling Various Storm Internal Actions
-
-With the addition of these metrics, Storm users can collect, view, and analyze the performance of various internal actions.  The actions that are profiled include thrift rpc calls and http quests within the storm daemons. For instance, in the Storm Nimbus daemon, the following thrift calls defined in the Nimbus$Iface are profiled:
-
-- submitTopology
-- submitTopologyWithOpts
-- killTopology
-- killTopologyWithOpts
-- activate
-- deactivate
-- rebalance
-- setLogConfig
-- getLogConfig
-
-Various HTTP GET and POST requests are marked for profiling as well such as the GET and POST requests for the Storm UI daemon (ui/core.cj)
-To implement these metrics the following packages are used: 
-- io.dropwizard.metrics
-- metrics-clojure
-
-## How it works
-
-By using packages io.dropwizard.metrics and metrics-clojure (clojure wrapper for the metrics Java API), we can mark functions to profile by declaring (defmeter num-some-func-calls) and then adding the (mark! num-some-func-calls) to where the function is invoked. For example:
-
-    (defmeter num-some-func-calls)
-    (defn some-func [args]
-        (mark! num-some-func-calls)
-        (body))
-        
-What essentially the mark! API call does is increment a counter that represents how many times a certain action occured.  For instantanous measurements user can use gauges.  For example: 
-
-    (defgauge nimbus:num-supervisors
-         (fn [] (.size (.supervisors (:storm-cluster-state nimbus) nil))))
-         
-The above example will get the number of supervisors in the cluster.  This metric is not accumlative like one previously discussed.
-
-A metrics reporting server needs to also be activated to collect the metrics. You can do this by calling the following function:
-
-    (defn start-metrics-reporters []
-        (jmx/start (jmx/reporter {})))
-
-## How to collect the metrics
-
-Metrics can be reported via JMX or HTTP.  A user can use JConsole or VisualVM to connect to the jvm process and view the stats.
-
-To view the metrics in a GUI use VisualVM or JConsole.  Screenshot of using VisualVm for metrics: 
-
-![Viewing metrics with VisualVM](images/viewing_metrics_with_VisualVM.png)
-
-For detailed information regarding how to collect the metrics please reference: 
-
-https://dropwizard.github.io/metrics/3.1.0/getting-started/
-
-If you want use JMX and view metrics through JConsole or VisualVM, remember launch JVM processes your want to profile with the correct JMX configurations.  For example in Storm you would add the following to conf/storm.yaml
-
-    nimbus.childopts: "-Xmx1024m -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=3333  -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
-    
-    ui.childopts: "-Xmx768m -Dcom.sun.management.jmxremote.port=3334 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
-    
-    logviewer.childopts: "-Xmx128m -Dcom.sun.management.jmxremote.port=3335 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
-    
-    drpc.childopts: "-Xmx768m -Dcom.sun.management.jmxremote.port=3336 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
-   
-    supervisor.childopts: "-Xmx256m -Dcom.sun.management.jmxremote.port=3337 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"
-
-### Please Note:
-Since we shade all of the packages we use, additional plugins for collecting metrics might not work at this time.  Currently collecting the metrics via JMX is supported.
-   
-For more information about io.dropwizard.metrics and metrics-clojure packages please reference their original documentation:
-- https://dropwizard.github.io/metrics/3.1.0/
-- http://metrics-clojure.readthedocs.org/en/latest/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/ui-rest-api.md
----------------------------------------------------------------------
diff --git a/docs/documentation/ui-rest-api.md b/docs/documentation/ui-rest-api.md
deleted file mode 100644
index 7de2bcb..0000000
--- a/docs/documentation/ui-rest-api.md
+++ /dev/null
@@ -1,996 +0,0 @@
-# Storm UI REST API
-
-The Storm UI daemon provides a REST API that allows you to interact with a Storm cluster, which includes retrieving
-metrics data and configuration information as well as management operations such as starting or stopping topologies.
-
-
-# Data format
-
-The REST API returns JSON responses and supports JSONP.
-Clients can pass a callback query parameter to wrap JSON in the callback function.
-
-
-# Using the UI REST API
-
-_Note: It is recommended to ignore undocumented elements in the JSON response because future versions of Storm may not_
-_support those elements anymore._
-
-
-## REST API Base URL
-
-The REST API is part of the UI daemon of Storm (started by `storm ui`) and thus runs on the same host and port as the
-Storm UI (the UI daemon is often run on the same host as the Nimbus daemon).  The port is configured by `ui.port`,
-which is set to `8080` by default (see [defaults.yaml](conf/defaults.yaml)).
-
-The API base URL would thus be:
-
-    http://<ui-host>:<ui-port>/api/v1/...
-
-You can use a tool such as `curl` to talk to the REST API:
-
-    # Request the cluster configuration.
-    # Note: We assume ui.port is configured to the default value of 8080.
-    $ curl http://<ui-host>:8080/api/v1/cluster/configuration
-
-##Impersonating a user in secure environment
-In a secure environment an authenticated user can impersonate another user. To impersonate a user the caller must pass
-`doAsUser` param or header with value set to the user that the request needs to be performed as. Please see SECURITY.MD
-to learn more about how to setup impersonation ACLs and authorization. The rest API uses the same configs and acls that
-are used by nimbus.
-
-Examples:
-
-```no-highlight
- 1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1425844354\?doAsUser=testUSer1
- 2. curl 'http://localhost:8080/api/v1/topology/wordcount-1-1425844354/activate' -X POST -H 'doAsUser:testUSer1'
-```
-
-## GET Operations
-
-### /api/v1/cluster/configuration (GET)
-
-Returns the cluster configuration.
-
-Sample response (does not include all the data fields):
-
-```json
-  {
-    "dev.zookeeper.path": "/tmp/dev-storm-zookeeper",
-    "topology.tick.tuple.freq.secs": null,
-    "topology.builtin.metrics.bucket.size.secs": 60,
-    "topology.fall.back.on.java.serialization": true,
-    "topology.max.error.report.per.interval": 5,
-    "zmq.linger.millis": 5000,
-    "topology.skip.missing.kryo.registrations": false,
-    "storm.messaging.netty.client_worker_threads": 1,
-    "ui.childopts": "-Xmx768m",
-    "storm.zookeeper.session.timeout": 20000,
-    "nimbus.reassign": true,
-    "topology.trident.batch.emit.interval.millis": 500,
-    "storm.messaging.netty.flush.check.interval.ms": 10,
-    "nimbus.monitor.freq.secs": 10,
-    "logviewer.childopts": "-Xmx128m",
-    "java.library.path": "/usr/local/lib:/opt/local/lib:/usr/lib",
-    "topology.executor.send.buffer.size": 1024,
-    }
-```
-
-### /api/v1/cluster/summary (GET)
-
-Returns cluster summary information such as nimbus uptime or number of supervisors.
-
-Response fields:
-
-|Field  |Value|Description
-|---	|---	|---
-|stormVersion|String| Storm version|
-|supervisors|Integer| Number of supervisors running|
-|topologies| Integer| Number of topologies running| 
-|slotsTotal| Integer|Total number of available worker slots|
-|slotsUsed| Integer| Number of worker slots used|
-|slotsFree| Integer |Number of worker slots available|
-|executorsTotal| Integer |Total number of executors|
-|tasksTotal| Integer |Total tasks|
-
-Sample response:
-
-```json
-   {
-    "stormVersion": "0.9.2-incubating-SNAPSHOT",
-    "supervisors": 1,
-    "slotsTotal": 4,
-    "slotsUsed": 3,
-    "slotsFree": 1,
-    "executorsTotal": 28,
-    "tasksTotal": 28
-    }
-```
-
-### /api/v1/supervisor/summary (GET)
-
-Returns summary information for all supervisors.
-
-Response fields:
-
-|Field  |Value|Description|
-|---	|---	|---
-|id| String | Supervisor's id|
-|host| String| Supervisor's host name|
-|uptime| String| Shows how long the supervisor is running|
-|uptimeSeconds| Integer| Shows how long the supervisor is running in seconds|
-|slotsTotal| Integer| Total number of available worker slots for this supervisor|
-|slotsUsed| Integer| Number of worker slots used on this supervisor|
-|totalMem| Double| Total memory capacity on this supervisor|
-|totalCpu| Double| Total CPU capacity on this supervisor|
-|usedMem| Double| Used memory capacity on this supervisor|
-|usedCpu| Double| Used CPU capacity on this supervisor|
-
-Sample response:
-
-```json
-{
-    "supervisors": [
-        {
-            "id": "0b879808-2a26-442b-8f7d-23101e0c3696",
-            "host": "10.11.1.7",
-            "uptime": "5m 58s",
-            "uptimeSeconds": 358,
-            "slotsTotal": 4,
-            "slotsUsed": 3,
-            "totalMem": 3000,
-            "totalCpu": 400,
-            "usedMem": 1280,
-            "usedCPU": 160
-        }
-    ],
-    "schedulerDisplayResource": true
-}
-```
-
-### /api/v1/nimbus/summary (GET)
-
-Returns summary information for all nimbus hosts.
-
-Response fields:
-
-|Field  |Value|Description|
-|---	|---	|---
-|host| String | Nimbus' host name|
-|port| int| Nimbus' port number|
-|status| String| Possible values are Leader, Not a Leader, Dead|
-|nimbusUpTime| String| Shows since how long the nimbus has been running|
-|nimbusUpTimeSeconds| String| Shows since how long the nimbus has been running in seconds|
-|nimbusLogLink| String| Logviewer url to view the nimbus.log|
-|version| String| Version of storm this nimbus host is running|
-
-Sample response:
-
-```json
-{
-    "nimbuses":[
-        {
-            "host":"192.168.202.1",
-            "port":6627,
-            "nimbusLogLink":"http:\/\/192.168.202.1:8000\/log?file=nimbus.log",
-            "status":Leader,
-            "version":"0.10.0-SNAPSHOT",
-            "nimbusUpTime":"3m 33s",
-            "nimbusUpTimeSeconds":"213"
-        }
-    ]
-}
-```
-
-### /api/v1/history/summary (GET)
-
-Returns a list of all running topologies' IDs submitted by the current user.
-
-Response fields:
-
-|Field  |Value | Description|
-|---	|---	|---
-|topo-history| List| List of Topologies' IDs|
-
-Sample response:
-
-```json
-{
-    "topo-history":[
-        "wc6-1-1446571009",
-        "wc8-2-1446587178"
-     ]
-}
-```
-
-### /api/v1/topology/summary (GET)
-
-Returns summary information for all topologies.
-
-Response fields:
-
-|Field  |Value | Description|
-|---	|---	|---
-|id| String| Topology Id|
-|name| String| Topology Name|
-|status| String| Topology Status|
-|uptime| String|  Shows how long the topology is running|
-|uptimeSeconds| Integer|  Shows how long the topology is running in seconds|
-|tasksTotal| Integer |Total number of tasks for this topology|
-|workersTotal| Integer |Number of workers used for this topology|
-|executorsTotal| Integer |Number of executors used for this topology|
-|replicationCount| Integer |Number of nimbus hosts on which this topology code is replicated|
-|requestedMemOnHeap| Double|Requested On-Heap Memory by User (MB)
-|requestedMemOffHeap| Double|Requested Off-Heap Memory by User (MB)|
-|requestedTotalMem| Double|Requested Total Memory by User (MB)|
-|requestedCpu| Double|Requested CPU by User (%)|
-|assignedMemOnHeap| Double|Assigned On-Heap Memory by Scheduler (MB)|
-|assignedMemOffHeap| Double|Assigned Off-Heap Memory by Scheduler (MB)|
-|assignedTotalMem| Double|Assigned Total Memory by Scheduler (MB)|
-|assignedCpu| Double|Assigned CPU by Scheduler (%)|
-
-Sample response:
-
-```json
-{
-    "topologies": [
-        {
-            "id": "WordCount3-1-1402960825",
-            "name": "WordCount3",
-            "status": "ACTIVE",
-            "uptime": "6m 5s",
-            "uptimeSeconds": 365,
-            "tasksTotal": 28,
-            "workersTotal": 3,
-            "executorsTotal": 28,
-            "replicationCount": 1,
-            "requestedMemOnHeap": 640,
-            "requestedMemOffHeap": 128,
-            "requestedTotalMem": 768,
-            "requestedCpu": 80,
-            "assignedMemOnHeap": 640,
-            "assignedMemOffHeap": 128,
-            "assignedTotalMem": 768,
-            "assignedCpu": 80
-        }
-    ]
-    "schedulerDisplayResource": true
-}
-```
-
-### /api/v1/topology-workers/:id (GET)
-
-Returns the worker' information (host and port) for a topology.
-
-Response fields:
-
-|Field  |Value | Description|
-|---	|---	|---
-|hostPortList| List| Workers' information for a topology|
-|name| Integer| Logviewer Port|
-
-Sample response:
-
-```json
-{
-    "hostPortList":[
-            {
-                "host":"192.168.202.2",
-                "port":6701
-            },
-            {
-                "host":"192.168.202.2",
-                "port":6702
-            },
-            {
-                "host":"192.168.202.3",
-                "port":6700
-            }
-        ],
-    "logviewerPort":8000
-}
-```
-
-### /api/v1/topology/:id (GET)
-
-Returns topology information and statistics.  Substitute id with topology id.
-
-Request parameters:
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|window    |String. Default value :all-time| Window duration for metrics in seconds|
-|sys       |String. Values 1 or 0. Default value 0| Controls including sys stats part of the response|
-
-
-Response fields:
-
-|Field  |Value |Description|
-|---	|---	|---
-|id| String| Topology Id|
-|name| String |Topology Name|
-|uptime| String |How long the topology has been running|
-|uptimeSeconds| Integer |How long the topology has been running in seconds|
-|status| String |Current status of the topology, e.g. "ACTIVE"|
-|tasksTotal| Integer |Total number of tasks for this topology|
-|workersTotal| Integer |Number of workers used for this topology|
-|executorsTotal| Integer |Number of executors used for this topology|
-|msgTimeout| Integer | Number of seconds a tuple has before the spout considers it failed |
-|windowHint| String | window param value in "hh mm ss" format. Default value is "All Time"|
-|schedulerDisplayResource| Boolean | Whether to display scheduler resource information|
-|topologyStats| Array | Array of all the topology related stats per time window|
-|topologyStats.windowPretty| String |Duration passed in HH:MM:SS format|
-|topologyStats.window| String |User requested time window for metrics|
-|topologyStats.emitted| Long |Number of messages emitted in given window|
-|topologyStats.trasferred| Long |Number messages transferred in given window|
-|topologyStats.completeLatency| String (double value returned in String format) |Total latency for processing the message|
-|topologyStats.acked| Long |Number of messages acked in given window|
-|topologyStats.failed| Long |Number of messages failed in given window|
-|spouts| Array | Array of all the spout components in the topology|
-|spouts.spoutId| String |Spout id|
-|spouts.executors| Integer |Number of executors for the spout|
-|spouts.emitted| Long |Number of messages emitted in given window |
-|spouts.completeLatency| String (double value returned in String format) |Total latency for processing the message|
-|spouts.transferred| Long |Total number of messages  transferred in given window|
-|spouts.tasks| Integer |Total number of tasks for the spout|
-|spouts.lastError| String |Shows the last error happened in a spout|
-|spouts.errorLapsedSecs| Integer | Number of seconds elapsed since that last error happened in a spout|
-|spouts.errorWorkerLogLink| String | Link to the worker log that reported the exception |
-|spouts.acked| Long |Number of messages acked|
-|spouts.failed| Long |Number of messages failed|
-|bolts| Array | Array of bolt components in the topology|
-|bolts.boltId| String |Bolt id|
-|bolts.capacity| String (double value returned in String format) |This value indicates number of messages executed * average execute latency / time window|
-|bolts.processLatency| String (double value returned in String format)  |Average time of the bolt to ack a message after it was received|
-|bolts.executeLatency| String (double value returned in String format) |Average time to run the execute method of the bolt|
-|bolts.executors| Integer |Number of executor tasks in the bolt component|
-|bolts.tasks| Integer |Number of instances of bolt|
-|bolts.acked| Long |Number of tuples acked by the bolt|
-|bolts.failed| Long |Number of tuples failed by the bolt|
-|bolts.lastError| String |Shows the last error occurred in the bolt|
-|bolts.errorLapsedSecs| Integer |Number of seconds elapsed since that last error happened in a bolt|
-|bolts.errorWorkerLogLink| String | Link to the worker log that reported the exception |
-|bolts.emitted| Long |Number of tuples emitted|
-|replicationCount| Integer |Number of nimbus hosts on which this topology code is replicated|
-
-Examples:
-
-```no-highlight
- 1. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825
- 2. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825?sys=1
- 3. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825?window=600
-```
-
-Sample response:
-
-```json
- {
-    "name": "WordCount3",
-    "id": "WordCount3-1-1402960825",
-    "workersTotal": 3,
-    "window": "600",
-    "status": "ACTIVE",
-    "tasksTotal": 28,
-    "executorsTotal": 28,
-    "uptime": "29m 19s",
-    "uptimeSeconds": 1759,
-    "msgTimeout": 30,
-    "windowHint": "10m 0s",
-    "schedulerDisplayResource": true,
-    "topologyStats": [
-        {
-            "windowPretty": "10m 0s",
-            "window": "600",
-            "emitted": 397960,
-            "transferred": 213380,
-            "completeLatency": "0.000",
-            "acked": 213460,
-            "failed": 0
-        },
-        {
-            "windowPretty": "3h 0m 0s",
-            "window": "10800",
-            "emitted": 1190260,
-            "transferred": 638260,
-            "completeLatency": "0.000",
-            "acked": 638280,
-            "failed": 0
-        },
-        {
-            "windowPretty": "1d 0h 0m 0s",
-            "window": "86400",
-            "emitted": 1190260,
-            "transferred": 638260,
-            "completeLatency": "0.000",
-            "acked": 638280,
-            "failed": 0
-        },
-        {
-            "windowPretty": "All time",
-            "window": ":all-time",
-            "emitted": 1190260,
-            "transferred": 638260,
-            "completeLatency": "0.000",
-            "acked": 638280,
-            "failed": 0
-        }
-    ],
-    "spouts": [
-        {
-            "executors": 5,
-            "emitted": 28880,
-            "completeLatency": "0.000",
-            "transferred": 28880,
-            "acked": 0,
-            "spoutId": "spout",
-            "tasks": 5,
-            "lastError": "",
-            "errorLapsedSecs": null,
-            "failed": 0
-        }
-    ],
-        "bolts": [
-        {
-            "executors": 12,
-            "emitted": 184580,
-            "transferred": 0,
-            "acked": 184640,
-            "executeLatency": "0.048",
-            "tasks": 12,
-            "executed": 184620,
-            "processLatency": "0.043",
-            "boltId": "count",
-            "lastError": "",
-            "errorLapsedSecs": null,
-            "capacity": "0.003",
-            "failed": 0
-        },
-        {
-            "executors": 8,
-            "emitted": 184500,
-            "transferred": 184500,
-            "acked": 28820,
-            "executeLatency": "0.024",
-            "tasks": 8,
-            "executed": 28780,
-            "processLatency": "2.112",
-            "boltId": "split",
-            "lastError": "",
-            "errorLapsedSecs": null,
-            "capacity": "0.000",
-            "failed": 0
-        }
-    ],
-    "configuration": {
-        "storm.id": "WordCount3-1-1402960825",
-        "dev.zookeeper.path": "/tmp/dev-storm-zookeeper",
-        "topology.tick.tuple.freq.secs": null,
-        "topology.builtin.metrics.bucket.size.secs": 60,
-        "topology.fall.back.on.java.serialization": true,
-        "topology.max.error.report.per.interval": 5,
-        "zmq.linger.millis": 5000,
-        "topology.skip.missing.kryo.registrations": false,
-        "storm.messaging.netty.client_worker_threads": 1,
-        "ui.childopts": "-Xmx768m",
-        "storm.zookeeper.session.timeout": 20000,
-        "nimbus.reassign": true,
-        "topology.trident.batch.emit.interval.millis": 500,
-        "storm.messaging.netty.flush.check.interval.ms": 10,
-        "nimbus.monitor.freq.secs": 10,
-        "logviewer.childopts": "-Xmx128m",
-        "java.library.path": "/usr/local/lib:/opt/local/lib:/usr/lib",
-        "topology.executor.send.buffer.size": 1024,
-        "storm.local.dir": "storm-local",
-        "storm.messaging.netty.buffer_size": 5242880,
-        "supervisor.worker.start.timeout.secs": 120,
-        "topology.enable.message.timeouts": true,
-        "nimbus.cleanup.inbox.freq.secs": 600,
-        "nimbus.inbox.jar.expiration.secs": 3600,
-        "drpc.worker.threads": 64,
-        "topology.worker.shared.thread.pool.size": 4,
-        "nimbus.host": "hw10843.local",
-        "storm.messaging.netty.min_wait_ms": 100,
-        "storm.zookeeper.port": 2181,
-        "transactional.zookeeper.port": null,
-        "topology.executor.receive.buffer.size": 1024,
-        "transactional.zookeeper.servers": null,
-        "storm.zookeeper.root": "/storm",
-        "storm.zookeeper.retry.intervalceiling.millis": 30000,
-        "supervisor.enable": true,
-        "storm.messaging.netty.server_worker_threads": 1
-    },
-    "replicationCount": 1
-}
-```
-
-
-### /api/v1/topology/:id/component/:component (GET)
-
-Returns detailed metrics and executor information
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|component |String (required)| Component Id |
-|window    |String. Default value :all-time| window duration for metrics in seconds|
-|sys       |String. Values 1 or 0. Default value 0| controls including sys stats part of the response|
-
-Response fields:
-
-|Field  |Value |Description|
-|---	|---	|---
-|id   | String | Component id|
-|name | String | Topology name|
-|componentType | String | component type: SPOUT or BOLT|
-|windowHint| String | window param value in "hh mm ss" format. Default value is "All Time"|
-|executors| Integer |Number of executor tasks in the component|
-|componentErrors| Array of Errors | List of component errors|
-|componentErrors.errorTime| Long | Timestamp when the exception occurred (Prior to 0.11.0, this field was named 'time'.)|
-|componentErrors.errorHost| String | host name for the error|
-|componentErrors.errorPort| String | port for the error|
-|componentErrors.error| String |Shows the error happened in a component|
-|componentErrors.errorLapsedSecs| Integer | Number of seconds elapsed since the error happened in a component |
-|componentErrors.errorWorkerLogLink| String | Link to the worker log that reported the exception |
-|topologyId| String | Topology id|
-|tasks| Integer |Number of instances of component|
-|window    |String. Default value "All Time" | window duration for metrics in seconds|
-|spoutSummary or boltStats| Array |Array of component stats. **Please note this element tag can be spoutSummary or boltStats depending on the componentType**|
-|spoutSummary.windowPretty| String |Duration passed in HH:MM:SS format|
-|spoutSummary.window| String | window duration for metrics in seconds|
-|spoutSummary.emitted| Long |Number of messages emitted in given window |
-|spoutSummary.completeLatency| String (double value returned in String format) |Total latency for processing the message|
-|spoutSummary.transferred| Long |Total number of messages  transferred in given window|
-|spoutSummary.acked| Long |Number of messages acked|
-|spoutSummary.failed| Long |Number of messages failed|
-|boltStats.windowPretty| String |Duration passed in HH:MM:SS format|
-|boltStats..window| String | window duration for metrics in seconds|
-|boltStats.transferred| Long |Total number of messages  transferred in given window|
-|boltStats.processLatency| String (double value returned in String format)  |Average time of the bolt to ack a message after it was received|
-|boltStats.acked| Long |Number of messages acked|
-|boltStats.failed| Long |Number of messages failed|
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825/component/spout
-2. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825/component/spout?sys=1
-3. http://ui-daemon-host-name:8080/api/v1/topology/WordCount3-1-1402960825/component/spout?window=600
-```
-
-Sample response:
-
-```json
-{
-    "name": "WordCount3",
-    "id": "spout",
-    "componentType": "spout",
-    "windowHint": "10m 0s",
-    "executors": 5,
-    "componentErrors":[{"errorTime": 1406006074000,
-                        "errorHost": "10.11.1.70",
-                        "errorPort": 6701,
-                        "errorWorkerLogLink": "http://10.11.1.7:8000/log?file=worker-6701.log",
-                        "errorLapsedSecs": 16,
-                        "error": "java.lang.RuntimeException: java.lang.StringIndexOutOfBoundsException: Some Error\n\tat backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128)\n\tat backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99)\n\tat backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)\n\tat backtype...more.."
-    }],
-    "topologyId": "WordCount3-1-1402960825",
-    "tasks": 5,
-    "window": "600",
-    "spoutSummary": [
-        {
-            "windowPretty": "10m 0s",
-            "window": "600",
-            "emitted": 28500,
-            "transferred": 28460,
-            "completeLatency": "0.000",
-            "acked": 0,
-            "failed": 0
-        },
-        {
-            "windowPretty": "3h 0m 0s",
-            "window": "10800",
-            "emitted": 127640,
-            "transferred": 127440,
-            "completeLatency": "0.000",
-            "acked": 0,
-            "failed": 0
-        },
-        {
-            "windowPretty": "1d 0h 0m 0s",
-            "window": "86400",
-            "emitted": 127640,
-            "transferred": 127440,
-            "completeLatency": "0.000",
-            "acked": 0,
-            "failed": 0
-        },
-        {
-            "windowPretty": "All time",
-            "window": ":all-time",
-            "emitted": 127640,
-            "transferred": 127440,
-            "completeLatency": "0.000",
-            "acked": 0,
-            "failed": 0
-        }
-    ],
-    "outputStats": [
-        {
-            "stream": "__metrics",
-            "emitted": 40,
-            "transferred": 0,
-            "completeLatency": "0",
-            "acked": 0,
-            "failed": 0
-        },
-        {
-            "stream": "default",
-            "emitted": 28460,
-            "transferred": 28460,
-            "completeLatency": "0",
-            "acked": 0,
-            "failed": 0
-        }
-    ],
-    "executorStats": [
-        {
-            "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6701.log",
-            "emitted": 5720,
-            "port": 6701,
-            "completeLatency": "0.000",
-            "transferred": 5720,
-            "host": "10.11.1.7",
-            "acked": 0,
-            "uptime": "43m 4s",
-            "uptimeSeconds": 2584,
-            "id": "[24-24]",
-            "failed": 0
-        },
-        {
-            "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6703.log",
-            "emitted": 5700,
-            "port": 6703,
-            "completeLatency": "0.000",
-            "transferred": 5700,
-            "host": "10.11.1.7",
-            "acked": 0,
-            "uptime": "42m 57s",
-            "uptimeSeconds": 2577,
-            "id": "[25-25]",
-            "failed": 0
-        },
-        {
-            "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6702.log",
-            "emitted": 5700,
-            "port": 6702,
-            "completeLatency": "0.000",
-            "transferred": 5680,
-            "host": "10.11.1.7",
-            "acked": 0,
-            "uptime": "42m 57s",
-            "uptimeSeconds": 2577,
-            "id": "[26-26]",
-            "failed": 0
-        },
-        {
-            "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6701.log",
-            "emitted": 5700,
-            "port": 6701,
-            "completeLatency": "0.000",
-            "transferred": 5680,
-            "host": "10.11.1.7",
-            "acked": 0,
-            "uptime": "43m 4s",
-            "uptimeSeconds": 2584,
-            "id": "[27-27]",
-            "failed": 0
-        },
-        {
-            "workerLogLink": "http://10.11.1.7:8000/log?file=worker-6703.log",
-            "emitted": 5680,
-            "port": 6703,
-            "completeLatency": "0.000",
-            "transferred": 5680,
-            "host": "10.11.1.7",
-            "acked": 0,
-            "uptime": "42m 57s",
-            "uptimeSeconds": 2577,
-            "id": "[28-28]",
-            "failed": 0
-        }
-    ]
-}
-```
-
-## Profiling and Debugging GET Operations
-
-###  /api/v1/topology/:id/profiling/start/:host-port/:timeout (GET)
-
-Request to start profiler on worker with timeout. Returns status and link to profiler artifacts for worker.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|host-port |String (required)| Worker Id |
-|timeout |String (required)| Time out for profiler to stop in minutes |
-
-Response fields:
-
-|Field  |Value |Description|
-|-----	|----- |-----------|
-|id   | String | Worker id|
-|status | String | Response Status |
-|timeout | String | Requested timeout
-|dumplink | String | Link to logviewer URL for worker profiler documents.|
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/start/10.11.1.7:6701/10
-2. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/start/10.11.1.7:6701/5
-3. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/start/10.11.1.7:6701/20
-```
-
-Sample response:
-
-```json
-{
-   "status": "ok",
-   "id": "10.11.1.7:6701",
-   "timeout": "10",
-   "dumplink": "http:\/\/10.11.1.7:8000\/dumps\/wordcount-1-1446614150\/10.11.1.7%3A6701"
-}
-```
-
-###  /api/v1/topology/:id/profiling/dumpprofile/:host-port (GET)
-
-Request to dump profiler recording on worker. Returns status and worker id for the request.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|host-port |String (required)| Worker Id |
-
-Response fields:
-
-|Field  |Value |Description|
-|-----	|----- |-----------|
-|id   | String | Worker id|
-|status | String | Response Status |
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/dumpprofile/10.11.1.7:6701
-```
-
-Sample response:
-
-```json
-{
-   "status": "ok",
-   "id": "10.11.1.7:6701",
-}
-```
-
-###  /api/v1/topology/:id/profiling/stop/:host-port (GET)
-
-Request to stop profiler on worker. Returns status and worker id for the request.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|host-port |String (required)| Worker Id |
-
-Response fields:
-
-|Field  |Value |Description|
-|-----	|----- |-----------|
-|id   | String | Worker id|
-|status | String | Response Status |
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/stop/10.11.1.7:6701
-```
-
-Sample response:
-
-```json
-{
-   "status": "ok",
-   "id": "10.11.1.7:6701",
-}
-```
-
-###  /api/v1/topology/:id/profiling/dumpjstack/:host-port (GET)
-
-Request to dump jstack on worker. Returns status and worker id for the request.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|host-port |String (required)| Worker Id |
-
-Response fields:
-
-|Field  |Value |Description|
-|-----	|----- |-----------|
-|id   | String | Worker id|
-|status | String | Response Status |
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/dumpjstack/10.11.1.7:6701
-```
-
-Sample response:
-
-```json
-{
-   "status": "ok",
-   "id": "10.11.1.7:6701",
-}
-```
-
-###  /api/v1/topology/:id/profiling/dumpheap/:host-port (GET)
-
-Request to dump heap (jmap) on worker. Returns status and worker id for the request.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|host-port |String (required)| Worker Id |
-
-Response fields:
-
-|Field  |Value |Description|
-|-----	|----- |-----------|
-|id   | String | Worker id|
-|status | String | Response Status |
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/dumpheap/10.11.1.7:6701
-```
-
-Sample response:
-
-```json
-{
-   "status": "ok",
-   "id": "10.11.1.7:6701",
-}
-```
-
-###  /api/v1/topology/:id/profiling/restartworker/:host-port (GET)
-
-Request to request the worker. Returns status and worker id for the request.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|host-port |String (required)| Worker Id |
-
-Response fields:
-
-|Field  |Value |Description|
-|-----	|----- |-----------|
-|id   | String | Worker id|
-|status | String | Response Status |
-
-Examples:
-
-```no-highlight
-1. http://ui-daemon-host-name:8080/api/v1/topology/wordcount-1-1446614150/profiling/restartworker/10.11.1.7:6701
-```
-
-Sample response:
-
-```json
-{
-   "status": "ok",
-   "id": "10.11.1.7:6701",
-}
-```
-
-## POST Operations
-
-### /api/v1/topology/:id/activate (POST)
-
-Activates a topology.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-
-Sample Response:
-
-```json
-{"topologyOperation":"activate","topologyId":"wordcount-1-1420308665","status":"success"}
-```
-
-
-### /api/v1/topology/:id/deactivate (POST)
-
-Deactivates a topology.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-
-Sample Response:
-
-```json
-{"topologyOperation":"deactivate","topologyId":"wordcount-1-1420308665","status":"success"}
-```
-
-
-### /api/v1/topology/:id/rebalance/:wait-time (POST)
-
-Rebalances a topology.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|wait-time |String (required)| Wait time before rebalance happens |
-|rebalanceOptions| Json (optional) | topology rebalance options |
-
-
-Sample rebalanceOptions json:
-
-```json
-{"rebalanceOptions" : {"numWorkers" : 2, "executors" : {"spout" :4, "count" : 10}}, "callback" : "foo"}
-```
-
-Examples:
-
-```no-highlight
-curl  -i -b ~/cookiejar.txt -c ~/cookiejar.txt -X POST  
--H "Content-Type: application/json" 
--d  '{"rebalanceOptions": {"numWorkers": 2, "executors": { "spout" : "5", "split": 7, "count": 5 }}, "callback":"foo"}' 
-http://localhost:8080/api/v1/topology/wordcount-1-1420308665/rebalance/0
-```
-
-Sample Response:
-
-```json
-{"topologyOperation":"rebalance","topologyId":"wordcount-1-1420308665","status":"success"}
-```
-
-
-
-### /api/v1/topology/:id/kill/:wait-time (POST)
-
-Kills a topology.
-
-|Parameter |Value   |Description  |
-|----------|--------|-------------|
-|id   	   |String (required)| Topology Id  |
-|wait-time |String (required)| Wait time before rebalance happens |
-
-Caution: Small wait times (0-5 seconds) may increase the probability of triggering the bug reported in
-[STORM-112](https://issues.apache.org/jira/browse/STORM-112), which may result in broker Supervisor
-daemons.
-
-Sample Response:
-
-```json
-{"topologyOperation":"kill","topologyId":"wordcount-1-1420308665","status":"success"}
-```
-
-## API errors
-
-The API returns 500 HTTP status codes in case of any errors.
-
-Sample response:
-
-```json
-{
-  "error": "Internal Server Error",
-  "errorMessage": "java.lang.NullPointerException\n\tat clojure.core$name.invoke(core.clj:1505)\n\tat backtype.storm.ui.core$component_page.invoke(core.clj:752)\n\tat backtype.storm.ui.core$fn__7766.invoke(core.clj:782)\n\tat compojure.core$make_route$fn__5755.invoke(core.clj:93)\n\tat compojure.core$if_route$fn__5743.invoke(core.clj:39)\n\tat compojure.core$if_method$fn__5736.invoke(core.clj:24)\n\tat compojure.core$routing$fn__5761.invoke(core.clj:106)\n\tat clojure.core$some.invoke(core.clj:2443)\n\tat compojure.core$routing.doInvoke(core.clj:106)\n\tat clojure.lang.RestFn.applyTo(RestFn.java:139)\n\tat clojure.core$apply.invoke(core.clj:619)\n\tat compojure.core$routes$fn__5765.invoke(core.clj:111)\n\tat ring.middleware.reload$wrap_reload$fn__6880.invoke(reload.clj:14)\n\tat backtype.storm.ui.core$catch_errors$fn__7800.invoke(core.clj:836)\n\tat ring.middleware.keyword_params$wrap_keyword_params$fn__6319.invoke(keyword_params.clj:27)\n\tat ring.middleware.nested_params$wrap_nest
 ed_params$fn__6358.invoke(nested_params.clj:65)\n\tat ring.middleware.params$wrap_params$fn__6291.invoke(params.clj:55)\n\tat ring.middleware.multipart_params$wrap_multipart_params$fn__6386.invoke(multipart_params.clj:103)\n\tat ring.middleware.flash$wrap_flash$fn__6675.invoke(flash.clj:14)\n\tat ring.middleware.session$wrap_session$fn__6664.invoke(session.clj:43)\n\tat ring.middleware.cookies$wrap_cookies$fn__6595.invoke(cookies.clj:160)\n\tat ring.adapter.jetty$proxy_handler$fn__6112.invoke(jetty.clj:16)\n\tat ring.adapter.jetty.proxy$org.mortbay.jetty.handler.AbstractHandler$0.handle(Unknown Source)\n\tat org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)\n\tat org.mortbay.jetty.Server.handle(Server.java:326)\n\tat org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)\n\tat org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)\n\tat org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)\n\tat org.mortb
 ay.jetty.HttpParser.parseAvailable(HttpParser.java:212)\n\tat org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)\n\tat org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228)\n\tat org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)\n"
-}
-```

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/downloads.html
----------------------------------------------------------------------
diff --git a/docs/downloads.html b/docs/downloads.html
deleted file mode 100644
index ec29d38..0000000
--- a/docs/downloads.html
+++ /dev/null
@@ -1,241 +0,0 @@
----
-layout: documentation
-title: Storm downloads
-older:
-  - 0.8.1: smesqx9uwa7f0qk
-  - 0.8.0: a6lgds9wbki04d2
-  - 0.7.4: 8245jp6v9eanttq
-  - 0.7.3: k3fmyihazj3b5c5
-  - 0.7.2: rzjaohlfcrx8h7l
-  - 0.7.1: 3pr1rd8fx5kls3w
-  - 0.7.0: pfz2xsy3om6g9eo
-  - 0.6.2: eycmnk50d52fshe
-  - 0.6.1: jowrk06bslsp542
-  - 0.6.0: awr380ytrg9q2tb
-  - 0.5.4: 8ep0oujz1et8sdd
-  - 0.5.3: iqnt220u43wapqw
-  - 0.5.2: ycbts1ljwe27n08
-  - 0.5.1: xlg3j5zy1tbe24t
-  - 0.5.0: m233lpi1pj37e8x
----
-<div id="singlepane">
-  <p>
-  Downloads for Storm are below. Instructions for how to set up a Storm cluster can be found <a href="/documentation/Setting-up-a-Storm-cluster.html">here</a>.
-  </p>
-
-  <h3>Source Code</h3>
-  Current source code is hosted on GitHub, <a href="https://github.com/apache/storm">apache/storm</a>
-  
-  <h3>Current Beta Release</h3>
-  The current beta release is 0.10.0-beta1. Source and binary distributions can be found below.
-  
-  The list of changes for this release can be found <a href="https://github.com/apache/storm/blob/v0.10.0-beta1/CHANGELOG.md">here.</a>
-
-  <ul>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.tar.gz">apache-storm-0.10.0-beta1.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.zip">apache-storm-0.10.0-beta1.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.tar.gz">apache-storm-0.10.0-beta1-src.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.zip">apache-storm-0.10.0-beta1-src.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.10.0-beta1/apache-storm-0.10.0-beta1-src.zip.md5">MD5</a>]
-	  </li>
-  </ul>
-  
-    Storm artifacts are hosted in <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.storm%22">Maven Central</a>. You can add Storm as a dependency with the following coordinates:
-    <pre>
-  groupId: <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.storm%22">org.apache.storm</a>
-  artifactId: storm-core
-  version: 0.10.0-beta1
-    </pre>
-  
-  
-  <h3>Current Release</h3>
-  The current release is 0.9.5. Source and binary distributions can be found below.
-  
-  The list of changes for this release can be found <a href="https://github.com/apache/storm/blob/v0.9.5/CHANGELOG.md">here.</a>
-
-  <ul>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz">apache-storm-0.9.5.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.5/apache-storm-0.9.5.zip">apache-storm-0.9.5.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.tar.gz">apache-storm-0.9.5-src.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.zip">apache-storm-0.9.5-src.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.5/apache-storm-0.9.5-src.zip.md5">MD5</a>]
-	  </li>
-  </ul>
-
-  Storm artifacts are hosted in <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.storm%22">Maven Central</a>. You can add Storm as a dependency with the following coordinates:
-  <pre>
-groupId: <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache.storm%22">org.apache.storm</a>
-artifactId: storm-core
-version: 0.9.5
-  </pre>
-  
-  
-  The signing keys for releases can be found <a href="http://www.apache.org/dist/storm/KEYS">here.</a>
-  
-  <p>
-	  
-  </p>
-  <h3>Previous Releases</h3>
-  
-  <b>0.9.4</b>
-  
-  <ul>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz">apache-storm-0.9.4.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.4/apache-storm-0.9.4.zip">apache-storm-0.9.4.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.tar.gz">apache-storm-0.9.4-src.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.zip">apache-storm-0.9.4-src.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.4/apache-storm-0.9.4-src.zip.md5">MD5</a>]
-	  </li>
-  </ul>
-  
-  <b>0.9.3</b>
-  
-  <ul>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.3/apache-storm-0.9.3.tar.gz">apache-storm-0.9.3.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.3/apache-storm-0.9.3.zip">apache-storm-0.9.3.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.tar.gz">apache-storm-0.9.3-src.tar.gz</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.zip">apache-storm-0.9.3-src.zip</a>
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.zip.asc">PGP</a>]
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.zip.sha">SHA512</a>] 
-	     [<a href="http://www.us.apache.org/dist/storm/apache-storm-0.9.3/apache-storm-0.9.3-src.zip.md5">MD5</a>]
-	  </li>
-  </ul>
-  
-  
-  <b>0.9.2-incubating</b>
-  
-  <ul>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz">apache-storm-0.9.2-incubating.tar.gz</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.zip">apache-storm-0.9.2-incubating.zip</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.zip.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.zip.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.tar.gz">apache-storm-0.9.2-incubating-src.tar.gz</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.zip">apache-storm-0.9.2-incubating-src.zip</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.zip.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.zip.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.2-incubating/apache-storm-0.9.2-incubating-src.zip.md5">MD5</a>]
-	  </li>
-  </ul>
-  
-
-  <b>0.9.1-incubating</b>
-  
-  <ul>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.tar.gz">apache-storm-0.9.1-incubating.tar.gz</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.zip">apache-storm-0.9.1-incubating.zip</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.zip.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.zip.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.tar.gz">apache-storm-0.9.1-incubating-src.tar.gz</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.tar.gz.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.tar.gz.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.tar.gz.md5">MD5</a>]
-	  </li>
-	  <li><a href="http://www.apache.org/dyn/closer.cgi/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.zip">apache-storm-0.9.1-incubating-src.zip</a>
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.zip.asc">PGP</a>]
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.zip.sha">SHA512</a>] 
-	     [<a href="http://www.apache.org/dist/storm/apache-storm-0.9.1-incubating/apache-storm-0.9.1-incubating-src.zip.md5">MD5</a>]
-	  </li>
-  </ul>
-  
-  <h3>Historical (non-Apache) Releases</h3>
-  <b>NOTE:</b> The following releases are neither a top-level Apache releases nor Apache Incubator releases. They are not endorsed by the Apache Software Foundation, nor hosted by Apache.</b>
-  <ul>
-	  <li><a href="https://dl.dropboxusercontent.com/s/dj86w8ojecgsam7/storm-0.9.0.1.zip">storm-0.9.0.1.zip</a>
-	     [<a href="release/storm-0.9.0.1.zip.asc">PGP</a>]
-	     [<a href="release/storm-0.9.0.1.zip.sha">SHA512</a>] 
-	     [<a href="release/storm-0.9.0.1.zip.md5">MD5</a>]
-	  </li>
-	  <li><a href="https://dl.dropboxusercontent.com/s/tqdpoif32gufapo/storm-0.9.0.1.tar.gz">storm-0.9.0.1.tar.gz</a>
-	     [<a href="release/storm-0.9.0.1.tar.gz.asc">PGP</a>]
-	     [<a href="release/storm-0.9.0.1.tar.gz.sha">SHA512</a>] 
-	     [<a href="release/storm-0.9.0.1.tar.gz.md5">MD5</a>]
-	  </li>
-
-
-  <li><a href="https://dl.dropboxusercontent.com/s/t8m516l2kadt7c6/storm-0.9.0-rc3.zip">Storm 0.9.0-rc3</a>
-     [<a href="release/storm-0.9.0-rc3.zip.asc">PGP</a>]
-     [<a href="release/storm-0.9.0-rc3.zip.sha">SHA512</a>] 
-     [<a href="release/storm-0.9.0-rc3.zip.md5">MD5</a>]
-  </li>
-  <li><a href="https://dl.dropboxusercontent.com/s/p5wf0hsdab5n9kn/storm-0.9.0-rc2.zip">Storm 0.9.0-rc2</a>
-     [<a href="release/storm-0.9.0-rc2.zip.asc">PGP</a>]
-     [<a href="release/storm-0.9.0-rc2.zip.sha">SHA512</a>] 
-     [<a href="release/storm-0.9.0-rc2.zip.md5">MD5</a>]
-  </li>
-  <li><a href="https://www.dropbox.com/s/fl4kr7w0oc8ihdw/storm-0.8.2.zip">Storm 0.8.2</a></li>
-  {% for r in page.older %}
-<li><a href="https://www.dropbox.com/s/{{ r.first[1] }}/storm-{{ r.first[0] }}.zip">Storm {{ r.first[0] }}</a></li>
-  {% endfor %}  
-  </ul>
-
-</div>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/feed.xml
----------------------------------------------------------------------
diff --git a/docs/feed.xml b/docs/feed.xml
deleted file mode 100644
index a6628bd..0000000
--- a/docs/feed.xml
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: null
----
-<?xml version="1.0" encoding="UTF-8"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
-  <channel>
-    <title>{{ site.title | xml_escape }}</title>
-    <description>{{ site.description | xml_escape }}</description>
-    <link>{{ site.url }}{{ site.baseurl }}/</link>
-    <atom:link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml"/>
-    <pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
-    <lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
-    <generator>Jekyll v{{ jekyll.version }}</generator>
-    {% for post in site.posts limit:10 %}
-      <item>
-        <title>{{ post.title | xml_escape }}</title>
-        <description>{{ post.content | xml_escape }}</description>
-        <pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
-        <link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link>
-        <guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid>
-        {% for tag in post.tags %}
-        <category>{{ tag | xml_escape }}</category>
-        {% endfor %}
-        {% for cat in post.categories %}
-        <category>{{ cat | xml_escape }}</category>
-        {% endfor %}
-      </item>
-    {% endfor %}
-  </channel>
-</rss>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/architecture.png
----------------------------------------------------------------------
diff --git a/docs/images/architecture.png b/docs/images/architecture.png
deleted file mode 100644
index caf97e0..0000000
Binary files a/docs/images/architecture.png and /dev/null differ


[24/24] storm git commit: add STORM-1468 to changelog

Posted by pt...@apache.org.
add STORM-1468 to changelog


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/be8f3eea
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/be8f3eea
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/be8f3eea

Branch: refs/heads/master
Commit: be8f3eea55591e2fe0ac48e78f964f723c68c2ec
Parents: a5eddd5
Author: P. Taylor Goetz <pt...@gmail.com>
Authored: Fri Jan 15 11:11:56 2016 -0500
Committer: P. Taylor Goetz <pt...@gmail.com>
Committed: Fri Jan 15 11:11:56 2016 -0500

----------------------------------------------------------------------
 CHANGELOG.md | 1 +
 1 file changed, 1 insertion(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/be8f3eea/CHANGELOG.md
----------------------------------------------------------------------
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f4f7c4a..2898bdd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,6 @@
 ## 2.0.0
 ## 1.0.0
+ * STORM-1468: move documentation to asf-site branch
  * STORM-1199: HDFS Spout Implementation.
  * STORM-1453: nimbus.clj/wait-for-desired-code-replication prints wrong log message
  * STORM-1419: Solr bolt should handle tick tuples


[23/24] storm git commit: Merge branch 'STORM-1468'

Posted by pt...@apache.org.
Merge branch 'STORM-1468'


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/a5eddd59
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/a5eddd59
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/a5eddd59

Branch: refs/heads/master
Commit: a5eddd59c44739fbbc104fd5ebaf4f7d98179ead
Parents: bc9e735 2f5c31d
Author: P. Taylor Goetz <pt...@gmail.com>
Authored: Fri Jan 15 11:10:05 2016 -0500
Committer: P. Taylor Goetz <pt...@gmail.com>
Committed: Fri Jan 15 11:10:05 2016 -0500

----------------------------------------------------------------------
 docs/README.md                                  |   47 -
 docs/_config.yml                                |   11 -
 docs/_includes/footer.html                      |   16 -
 docs/_includes/head.html                        |   31 -
 docs/_includes/header.html                      |   32 -
 docs/_layouts/about.html                        |   40 -
 docs/_layouts/default.html                      |   19 -
 docs/_layouts/documentation.html                |   16 -
 docs/_layouts/page.html                         |   14 -
 docs/_layouts/post.html                         |   15 -
 docs/_posts/2012-08-02-storm080-released.md     |  120 -
 docs/_posts/2012-09-06-storm081-released.md     |   47 -
 docs/_posts/2013-01-11-storm082-released.md     |   82 -
 docs/_posts/2013-12-08-storm090-released.md     |  127 -
 docs/_posts/2014-04-10-storm-logo-contest.md    |   66 -
 docs/_posts/2014-04-17-logo-pforrest.md         |   10 -
 docs/_posts/2014-04-17-logo-squinones.md        |    9 -
 docs/_posts/2014-04-19-logo-ssuleman.md         |    8 -
 docs/_posts/2014-04-21-logo-rmarshall.md        |   12 -
 docs/_posts/2014-04-22-logo-zsayari.md          |    9 -
 docs/_posts/2014-04-23-logo-abartos.md          |   15 -
 docs/_posts/2014-04-27-logo-cboustead.md        |   12 -
 docs/_posts/2014-04-27-logo-sasili.md           |   10 -
 docs/_posts/2014-04-29-logo-jlee1.md            |   10 -
 docs/_posts/2014-04-29-logo-jlee2.md            |   10 -
 docs/_posts/2014-04-29-logo-jlee3.md            |   10 -
 docs/_posts/2014-05-27-round1-results.md        |   38 -
 docs/_posts/2014-06-17-contest-results.md       |   24 -
 docs/_posts/2014-06-25-storm092-released.md     |  137 -
 .../2014-10-20-storm093-release-candidate.md    |   11 -
 docs/_posts/2014-11-25-storm093-released.md     |  164 -
 docs/_posts/2015-03-25-storm094-released.md     |   24 -
 docs/_posts/2015-06-04-storm095-released.md     |   23 -
 .../2015-06-15-storm0100-beta-released.md       |  294 -
 docs/_sass/_syntax-highlighting.scss            |   70 -
 docs/about.md                                   |    7 -
 docs/about/deployment.md                        |    9 -
 docs/about/fault-tolerant.md                    |    9 -
 docs/about/free-and-open-source.md              |   15 -
 docs/about/guarantees-data-processing.md        |   10 -
 docs/about/integrates.md                        |   13 -
 docs/about/multi-language.md                    |    9 -
 docs/about/scalable.md                          |   10 -
 docs/about/simple-api.md                        |   15 -
 docs/assets/css/bootstrap-theme.css             |  470 --
 docs/assets/css/bootstrap-theme.css.map         |    1 -
 docs/assets/css/bootstrap-theme.min.css         |    5 -
 docs/assets/css/bootstrap.css                   | 6332 ------------------
 docs/assets/css/bootstrap.css.map               |    1 -
 docs/assets/css/bootstrap.min.css               |    5 -
 docs/assets/css/theme.css                       |   18 -
 docs/assets/favicon.ico                         |  Bin 1150 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.eot      |  Bin 20335 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.svg      |  229 -
 .../fonts/glyphicons-halflings-regular.ttf      |  Bin 41280 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.woff     |  Bin 23320 -> 0 bytes
 docs/assets/js/bootstrap.js                     | 2320 -------
 docs/assets/js/bootstrap.min.js                 |    7 -
 docs/assets/js/npm.js                           |   13 -
 docs/css/main.scss                              |   48 -
 docs/doc-index.html                             |   11 -
 .../Acking-framework-implementation.md          |   38 -
 docs/documentation/BYLAWS.md                    |   98 -
 docs/documentation/Clojure-DSL.md               |  266 -
 docs/documentation/Command-line-client.md       |  102 -
 docs/documentation/Common-patterns.md           |  100 -
 docs/documentation/Concepts.md                  |  118 -
 docs/documentation/Configuration.md             |   31 -
 docs/documentation/Contributing-to-Storm.md     |   33 -
 .../Creating-a-new-Storm-project.md             |   25 -
 .../DSLs-and-multilang-adapters.md              |   10 -
 ...Defining-a-non-jvm-language-dsl-for-storm.md |   38 -
 docs/documentation/Distributed-RPC.md           |  199 -
 docs/documentation/Documentation.md             |   56 -
 docs/documentation/FAQ.md                       |  130 -
 docs/documentation/Fault-tolerance.md           |   30 -
 .../Guaranteeing-message-processing.md          |  181 -
 docs/documentation/Home.md                      |   69 -
 docs/documentation/Hooks.md                     |    9 -
 docs/documentation/Implementation-docs.md       |   20 -
 .../Installing-native-dependencies.md           |   38 -
 docs/documentation/Kestrel-and-Storm.md         |  200 -
 docs/documentation/Lifecycle-of-a-topology.md   |   82 -
 docs/documentation/Local-mode.md                |   29 -
 docs/documentation/Logs.md                      |   30 -
 docs/documentation/Maven.md                     |   20 -
 .../Message-passing-implementation.md           |   30 -
 docs/documentation/Metrics.md                   |   36 -
 docs/documentation/Multilang-protocol.md        |  287 -
 docs/documentation/Pacemaker.md                 |  108 -
 docs/documentation/Powered-By.md                | 1040 ---
 docs/documentation/Project-ideas.md             |    6 -
 docs/documentation/Rationale.md                 |   33 -
 .../Resource_Aware_Scheduler_overview.md        |  227 -
 ...unning-topologies-on-a-production-cluster.md |   77 -
 .../Serialization-(prior-to-0.6.0).md           |   52 -
 docs/documentation/Serialization.md             |   62 -
 docs/documentation/Serializers.md               |    4 -
 .../documentation/Setting-up-a-Storm-cluster.md |  115 -
 .../Setting-up-a-Storm-project-in-Eclipse.md    |    1 -
 .../Setting-up-development-environment.md       |   41 -
 docs/documentation/Spout-implementations.md     |   10 -
 docs/documentation/State-checkpointing.md       |  147 -
 ...guage-protocol-(versions-0.7.0-and-below).md |  124 -
 docs/documentation/Structure-of-the-codebase.md |  142 -
 .../Support-for-non-java-languages.md           |    9 -
 docs/documentation/Transactional-topologies.md  |  361 -
 docs/documentation/Trident-API-Overview.md      |  312 -
 docs/documentation/Trident-spouts.md            |   44 -
 docs/documentation/Trident-state.md             |  331 -
 docs/documentation/Trident-tutorial.md          |  254 -
 docs/documentation/Troubleshooting.md           |  182 -
 docs/documentation/Tutorial.md                  |  320 -
 ...nding-the-parallelism-of-a-Storm-topology.md |  122 -
 .../Using-non-JVM-languages-with-Storm.md       |   52 -
 docs/documentation/Windowing.md                 |  235 -
 docs/documentation/distcache-blobstore.md       |  735 --
 .../documentation/dynamic-log-level-settings.md |   41 -
 docs/documentation/dynamic-worker-profiling.md  |   33 -
 docs/documentation/images/ack_tree.png          |  Bin 31463 -> 0 bytes
 docs/documentation/images/batched-stream.png    |  Bin 66336 -> 0 bytes
 docs/documentation/images/drpc-workflow.png     |  Bin 66199 -> 0 bytes
 .../images/dynamic_log_level_settings_1.png     |  Bin 93689 -> 0 bytes
 .../images/dynamic_log_level_settings_2.png     |  Bin 78785 -> 0 bytes
 .../images/dynamic_profiling_debugging_1.png    |  Bin 56876 -> 0 bytes
 .../images/dynamic_profiling_debugging_2.png    |  Bin 99164 -> 0 bytes
 .../images/dynamic_profiling_debugging_3.png    |  Bin 96974 -> 0 bytes
 .../images/dynamic_profiling_debugging_4.png    |  Bin 121994 -> 0 bytes
 .../images/eclipse-project-properties.png       |  Bin 80810 -> 0 bytes
 .../images/example-of-a-running-topology.png    |  Bin 81430 -> 0 bytes
 docs/documentation/images/grouping.png          |  Bin 39701 -> 0 bytes
 docs/documentation/images/hdfs_blobstore.png    |  Bin 82180 -> 0 bytes
 .../images/ld-library-path-eclipse-linux.png    |  Bin 114597 -> 0 bytes
 docs/documentation/images/local_blobstore.png   |  Bin 81212 -> 0 bytes
 .../images/nimbus_ha_blobstore.png              |  Bin 113991 -> 0 bytes
 .../nimbus_ha_leader_election_and_failover.png  |  Bin 154316 -> 0 bytes
 .../images/nimbus_ha_topology_submission.png    |  Bin 134180 -> 0 bytes
 ...onships-worker-processes-executors-tasks.png |  Bin 54804 -> 0 bytes
 docs/documentation/images/search-a-topology.png |  Bin 671031 -> 0 bytes
 .../images/search-for-a-single-worker-log.png   |  Bin 736579 -> 0 bytes
 docs/documentation/images/spout-vs-state.png    |  Bin 24804 -> 0 bytes
 docs/documentation/images/storm-cluster.png     |  Bin 34604 -> 0 bytes
 docs/documentation/images/topology-tasks.png    |  Bin 45960 -> 0 bytes
 docs/documentation/images/topology.png          |  Bin 23147 -> 0 bytes
 .../images/transactional-batches.png            |  Bin 23293 -> 0 bytes
 .../images/transactional-commit-flow.png        |  Bin 17725 -> 0 bytes
 .../images/transactional-design-2.png           |  Bin 13537 -> 0 bytes
 .../images/transactional-spout-structure.png    |  Bin 25067 -> 0 bytes
 docs/documentation/images/trident-to-storm1.png |  Bin 67173 -> 0 bytes
 docs/documentation/images/trident-to-storm2.png |  Bin 68943 -> 0 bytes
 docs/documentation/images/tuple-dag.png         |  Bin 18849 -> 0 bytes
 docs/documentation/images/tuple_tree.png        |  Bin 58186 -> 0 bytes
 .../storm-metrics-profiling-internal-actions.md |   70 -
 docs/documentation/ui-rest-api.md               |  996 ---
 docs/downloads.html                             |  241 -
 docs/feed.xml                                   |   30 -
 docs/images/architecture.png                    |  Bin 69825 -> 0 bytes
 docs/images/architecture.svg                    | 1458 ----
 docs/images/bolt.png                            |  Bin 24796 -> 0 bytes
 docs/images/bolt.svg                            |  743 --
 docs/images/bullet.gif                          |  Bin 82 -> 0 bytes
 docs/images/download.png                        |  Bin 16272 -> 0 bytes
 docs/images/incubator-logo.png                  |  Bin 11651 -> 0 bytes
 .../logocontest/abartos/stationery_mockup.jpg   |  Bin 146498 -> 0 bytes
 docs/images/logocontest/abartos/storm_logo.png  |  Bin 153974 -> 0 bytes
 docs/images/logocontest/abartos/storm_logo2.png |  Bin 115425 -> 0 bytes
 docs/images/logocontest/abartos/storm_logo3.png |  Bin 94950 -> 0 bytes
 .../images/logocontest/cboustead/storm_logo.png |  Bin 67149 -> 0 bytes
 .../logocontest/cboustead/storm_logo1.png       |  Bin 16327 -> 0 bytes
 docs/images/logocontest/jlee1/storm_logo.jpg    |  Bin 189382 -> 0 bytes
 docs/images/logocontest/jlee2/storm_logo.jpg    |  Bin 155666 -> 0 bytes
 docs/images/logocontest/jlee3/storm_logo.jpg    |  Bin 158134 -> 0 bytes
 docs/images/logocontest/pforrest/storm1.png     |  Bin 84569 -> 0 bytes
 .../pforrest/storm_logo_composite.png           |  Bin 139223 -> 0 bytes
 .../rmarshall/StormLogo_Horizontal.png          |  Bin 16481 -> 0 bytes
 .../rmarshall/StormLogo_Horizontal_NoColour.png |  Bin 14358 -> 0 bytes
 .../logocontest/rmarshall/StormLogo_Square.png  |  Bin 14392 -> 0 bytes
 docs/images/logocontest/sasili/storm_logo.png   |  Bin 92196 -> 0 bytes
 .../images/logocontest/squinones/storm_logo.png |  Bin 203263 -> 0 bytes
 .../logocontest/squinones/storm_logo1.png       |  Bin 53325 -> 0 bytes
 docs/images/logocontest/ssuleman/storm_logo.png |  Bin 95509 -> 0 bytes
 docs/images/logocontest/storm_logo_winner.png   |  Bin 34490 -> 0 bytes
 docs/images/logocontest/zsayari/storm_logo.png  |  Bin 120794 -> 0 bytes
 docs/images/logos/8digits.png                   |  Bin 19557 -> 0 bytes
 docs/images/logos/Yahoo_Japan_logo.png          |  Bin 3707 -> 0 bytes
 docs/images/logos/aeris.png                     |  Bin 6268 -> 0 bytes
 docs/images/logos/alibaba.jpg                   |  Bin 43703 -> 0 bytes
 docs/images/logos/baidu.jpeg                    |  Bin 3413 -> 0 bytes
 docs/images/logos/cerner.gif                    |  Bin 2591 -> 0 bytes
 docs/images/logos/flipboard.jpeg                |  Bin 2909 -> 0 bytes
 docs/images/logos/fullcontact.png               |  Bin 24567 -> 0 bytes
 docs/images/logos/groupon.jpg                   |  Bin 41413 -> 0 bytes
 docs/images/logos/holidaycheck.png              |  Bin 3129 -> 0 bytes
 docs/images/logos/idexx.gif                     |  Bin 38689 -> 0 bytes
 docs/images/logos/mercadolibre.png              |  Bin 73388 -> 0 bytes
 docs/images/logos/navisite.jpg                  |  Bin 9358 -> 0 bytes
 docs/images/logos/ooyala.gif                    |  Bin 7830 -> 0 bytes
 docs/images/logos/parc.png                      |  Bin 7256 -> 0 bytes
 docs/images/logos/quicklizard.png               |  Bin 5667 -> 0 bytes
 docs/images/logos/rocketfuel.png                |  Bin 9719 -> 0 bytes
 docs/images/logos/rubicon.png                   |  Bin 10663 -> 0 bytes
 docs/images/logos/spiderio.png                  |  Bin 46790 -> 0 bytes
 docs/images/logos/spotify.jpeg                  |  Bin 3282 -> 0 bytes
 docs/images/logos/taobao.gif                    |  Bin 3262 -> 0 bytes
 docs/images/logos/twitter.png                   |  Bin 4392 -> 0 bytes
 docs/images/logos/weatherchannel.gif            |  Bin 3425 -> 0 bytes
 docs/images/logos/webmd.jpg                     |  Bin 6193 -> 0 bytes
 docs/images/logos/yelp.png                      |  Bin 98431 -> 0 bytes
 docs/images/mailinglist.png                     |  Bin 4245 -> 0 bytes
 ...ware_scheduler_default_eviction_strategy.svg |    3 -
 docs/images/security.png                        |  Bin 72415 -> 0 bytes
 docs/images/security.svg                        | 1779 -----
 docs/images/spout.png                           |  Bin 22911 -> 0 bytes
 docs/images/spout.svg                           |  833 ---
 docs/images/storm.svg                           | 1326 ----
 docs/images/storm_header.png                    |  Bin 17291 -> 0 bytes
 docs/images/storm_logo_tagline_color copy.png   |  Bin 67928 -> 0 bytes
 docs/images/storm_logo_tagline_color.png        |  Bin 33568 -> 0 bytes
 docs/images/top_bg.gif                          |  Bin 113 -> 0 bytes
 docs/images/topology.png                        |  Bin 64740 -> 0 bytes
 docs/images/topology.svg                        | 1044 ---
 docs/images/topology_dark.png                   |  Bin 49692 -> 0 bytes
 docs/images/topology_dark.svg                   | 1101 ---
 docs/images/ui_topology_viz.png                 |  Bin 112831 -> 0 bytes
 docs/images/viewing_metrics_with_VisualVM.png   |  Bin 225100 -> 0 bytes
 docs/index.html                                 |  104 -
 docs/news.html                                  |   12 -
 227 files changed, 28405 deletions(-)
----------------------------------------------------------------------



[06/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/architecture.svg
----------------------------------------------------------------------
diff --git a/docs/images/architecture.svg b/docs/images/architecture.svg
deleted file mode 100644
index 7da1744..0000000
--- a/docs/images/architecture.svg
+++ /dev/null
@@ -1,1458 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="544.86658"
-   height="338.26587"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="architecture.svg"
-   inkscape:export-filename="/Users/evans/src/storm/docs/images/architecture.png"
-   inkscape:export-xdpi="105.62804"
-   inkscape:export-ydpi="105.62804">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       color-interpolation-filters="sRGB"
-       height="3.1508999"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       id="filter5371-4">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-8" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-9"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-6" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329-0"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331-1" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="608.93395"
-     inkscape:cy="206.83051"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1151"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(557.72816,-327.93824)">
-    <g
-       transform="matrix(0.42178612,0,0,0.42178612,-435.02174,463.7697)"
-       id="g5325">
-      <image
-         y="10.172749"
-         x="-289.89471"
-         id="image5327"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZ4AAAGWCAIAAADHTXI1AAAAA3NCSVQICAjb4U/gAAAgAElEQVR4 nO3dd3xcxbUH8DO3bFPvsiRbllzlgjtgbGN6TAs8QkKLgQRCh0AeNS+QEFJISIGEEpJAYlqAgAPB cSgGbGNj427JTS5qlmR1abX1lpl5f6xcMG7anW13z/fD5/PySHx1rfLTlDNnCOccEELIWqR4vwBC CImH0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0IIQvCaEMIWRBGG0LIgjDaEEIWhNGGELIgjDaEkAVh tCGELAijDSFkQRhtCCELwmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAFYbQhhCwIow0hZEEYbQgh C8JoQwhZEEYbQsiCMNoQQhaE0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0IIQvCaEMIWRBGG0LIgjDa EEIWhNGGELIgjDaEkAVhtCGELAijDSFkQRhtCCELwmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAF YbQhhCwIow0hZEEYbQghC8JoQwhZEEYbQsiCMNoQQhaE0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0I IQvCaEMIWZAS7xdAScagLKDTgG4GDdbv1/a5g+3uYLcn6AmafX7d7df9GvXrZkCnBmUAoJsMAGyK pMqSTZFkiaiylOVSs1y2bJct26Vmp9mLshxDshxZ6Q67TJw2xWmTVRl/6aKIYLSh4+j16c3d3ube wL6+QGOnt6XXv7fb39Lr39fr1wxGCAAADPyfg6TD/wUAAONH+gB84N+6HGpBhr0w01FZmF6en16a 6xqS7SzIcAzNcxVlOQX+jVAqIJwf8dsNpbR2d2BDQ09NU+/Otv4DQdbr02VJUmSiSESSiCIR8pVE iwTn3GScMW4yblJOGcty2fIz7EPz0o
 qznCOKMsaXZY0vzRpXliMfMTgROgRGGxrQ7dVqW90rajs+ 3tpW1+EJ6NTt14MGU2SiyJIikdgHCh2IOWZSrsgkza5kOJS8DMf0itxZY4qmV+QVZztz0mwxfiuU FDDaUt3udk91Y8+yHe0fb21r7PICEACQCEiESATEjssiwTlnHBjn+2e1XJGk8WXZs8cUzhpdMGZI 1ughmfF9Q5RQMNpSVH/AWLypeem2tnX1PTV7+wDAaZOVZJvoGZT5Naoq0rjSrNHFmSePyLtgchlm HAKMtlRjULajpe/vn9Ut297e0Ol1+w2HKtkUKXFGZ2HgnOsmCxrMYZOLsxzjy7K/Pm3ovJNKirKc uCqXsjDaUkW3V1u2re2tNU0f1rRqJgUgcVk+i6qBjQjOAUh+uu1rJ5VcMn3YySPy89Lt8X41FGsY bdbX7dXeXN3wzy8a1+7pohxcNjnebxQLnHOvRm2KdNqogrPHF186fRhOVFMKRpuV9fr0Bct3v7Ky vrbVrVOebpeTeuIZBs65X6cAUJbrOnt88e3njsHakRSB0WZN7e7Au+v3/uGDHQ0dXkIg2VfTIsQ5 1ykHzu2qfN7Ekuvnjpg7tsiupsToNWVhtFkNZfy1z+v/tmz3ql2ddjX5Nj2jza9TuyKdP6l0/pzK 8yeVxvt1ULRgtFnK8h3tTyzaunxHu26yNDueojsyznl/wMxyqWeOK77za2NPH1sU7zdC4mG0WURD p/ePH+5YsHxPUKeqIuFy0nEZlDHGbYr0PzOGff9rYycOy433GyGRMNqSnsn5S8v3/G7xtl1tnhTc KIicJ2iWZDu+e8aom84ahefwLQOjLbltb3E/8tam9ze3pE5VRzRoJtNNNnFo9v0Xj//WKcPj/TpI AIy2ZKUZ9MVlu3+3eFtzj9+hyjgDjRDnPGAwuyJdcWr5Q5ecVJ6fFu83QhHBaEtK21vcj/2r+p31 e+3xXlbjnFMOlHHgnPKBQ+wAwI
 7cmw0AQJJI6JUJITIJ/b+JchQ/FHCVhekPXDxh/uzKeL8OCh9G W/J5fVX9z96pifHK2oEIo4yH8ijUr82hysXZzrJcV3GWoyDTmeFQstNsTpuSZpOddiUUu6osGZRR xk3KDJP1BYx+vx7qyruvN9DmDnT0Bzs9GqXsQMs2ykGWiERAeFe4E+HXqSqTq2YOf/Tyybj6lqQw 2pJJt1f76cLNCz6ro5TFpuL0wMlzSSLZabZQF9zRxRljS7KG5aWNKs4oy0t3qJIiS6oEQAbd9Zsy zjg3DBowWX2Ht67T09Dh3dnWX9fh7egP9vn0bq9mUGZT5BiPTynjQYOOL8v+3benY3VIMsJoSxrr 6rrv/8f6Vbs6XbZYDNYMyoIGkyUyrjRrcnnO6OLMqtKsqtLskUUZ0f7QIbvbPbva+mtb3Vua+3a0 9u9odbv9hsMm2+TYjeP8Os1Nsz1w8fjbzh2Lq5nJBaMtOby4bPcv361p7vFHtRA3NGcEQhSJjC/L PnNc8ZyxhaOKMioKYxRnR9PU42/u8m5u6v2gunVdXbcnaDDGgZAYxFyo/O2600c8fuXUdIca1Y+F BMJoS3TeoPHjtzf/9dNdjPHoTUJDPR2zXOrwgvS5VUVXzawYV5LpSryfZIOyzv7gx1vb/r1+76bG nra+QNBg6Q4lqkMqyrhfp+dNHPKHa2fEPeXRCcJoS2jbW9z3/2P9ki37olfeQRn3Bs2yXOfZE4ac d1LJvJNKM50Jl2hHtHNf/wfVLct3dCyv7ejxaJlOJaojOJ9mji/L/sO1M04bXRi9j4JEwWhLXP/d 3HLfa+t3tXkyHOInoaFmGJTx0hznt2dVXDhl6PTKPOEfJQY0g36xp2vxppY3VtV3ebSozlL9Oi3N cT7znVPOm1gSjecjgTDaEhFn/E+f7PzJwmpPwIjGGQO/TmUCY0qyrptT+a1Th1ujvqHdHViwfM+b XzTW7us3abS6A/h1WpRp/+
 010y87uTwaz0eiYLQlHG/Q+Nk7Nc98VBuNBt+h6eek8pxvnVJ+w5mj rNdZO9RS+NWV9evru0NX1gv/EJrJspzqb66ZduXMCuEPR6JgtCWWph7/g6+tf3ttk/ByXMq4ZrLS HOe1c0bMn105vCBd4MMTTWuv/931e5/5qLauw6vKRHjAGZQ5bMpT86djuiUsjLYEUtPUc+vf1qyt 6xaba6Em2ml25dLpQ++/aELqXBHQ7g48/WHtKyv2tPYFXTbB+zCaQV0O9Y/XzcDj9IkJoy1RfLqt 7c4Faxo7vWIrPAzKDMpPHZl/z/lVF08dKvDJyWJdXffvFm/7z6ZmxsGuiBy+aSbLT7c9f+NM3FVI QBhtCeH1VfX3vrre7dcF5lrojFSWy3bvhePmzxlhvWW1Exdqqv6r97bsafeIPcuhmaw8P+3vN89K 0v1lC8NoizfOnnx/x6MLq02hx0I1kwKHM8YV//iySfhTF9LQ6f3ZO9VvrWkSewLXEzQnDs1+++4z sA9SQsFoiyd/0PjpOzXPfLhDkkQudfs0szjLces5Y74/rwrvbTrMi8t2P7Zwc5s7KLA6xO03LpxS +tptsxPw/EbKwmiLm16fft9r6177vMGpCrtJL7RjcPrYop9/awoO1o4m1Ghg9e4ugZ95n2bedu6Y 314zXcjTUOQw2uKj3R24+YXVH1S3Clz68evUqUrfO2v0Dy+ZmCyHpeKl16c//M+NC5bvETVeDnWa e/r6U7CBZYLAaIuD3e2e6/+0cn19t8Bc82nmiKKMRy47CWsRTtyT/932s3dqNJMJ2TnVDFqc7Vx4 91y8HCsRYLTF2rq67lteXL21uU/UWk9oEvq1k0p+ecXUqtIsIc9MHQvXNP7vq+t6fLqQsZtPM8+Z MOSlW2fnpNkifxqKhPhjKOgYPt3WdtXTywXmmmYyxuH786peuW025loYLju5/MWbZw3NS/PrNPKn uWzyki37/vLJzsgfhS
 KEo7bYeW/D3rsWrGnv10SdeA/thP70m1NwfSdCAofSlHGbKv/n3rNwGye+ MNpi5OUVdQ+9vkFgUa5fp1OH5z45fwb+CAmxvcX9vb+u2tzYE/kXKKjTM8cXv3nX6U5bFFsio2PD CWks/PGD7fe8vNYdMITkmkGZX6eXThv69t1zMddEqSrN+suNM8eUZPk0M8JHqYq0dFvbP1Y1CHgt FC6MtuiijP/6vS2PvLVZ2DacyRiH+y4ct+DWWdbos5Y4qkqz/vTdU0cUZUS47iZLhHJ49qPa1l6/ qHdDg4XRFkWU8Z+8vfnn79ZwEHMw26Asy6k+de2MRy+fHI1OZGh6Zd6z3zmlKNNuHv2K6BPhssk1 e/teWVEn6sXQYOGPR7QYlP3glbW/XbxNkYgScTsdzrlPM4fmpb182+zvzh0p5A3REZ0+tuiXV07l nNOI0+25JThwixuMtqjwB41bX1z9p4932RUBR3k45/0Bc+aogn/eNffMccVC3hAdw5UzK+6eV+XX aSSbbLJE2vu155ZgIUh8YLSJ1+3Vbvzr6ldX1qfbBbQ/DFXkfvOUcqxci6W75lWdN3FIwGCRPESW 4F/rmpp6cOAWBxhtgrW7A7e8sPrttU1pdgF3xxmU6ZTfdu6YF26aWZLjEvKG6ETkpdt/8a3JRZl2 g4afbjZZquvwvr4SV9ziAKNNpNZe/41/WfXOur3pdgFFHppBVVl67PJJv71mOlZIxd7EYbnfn1dl 0PDnpIQQzvn71a3dXk3gi6ETgdEmTEOn99vPrviwZl+WS418vKYZND/D/vT1J999/jghr4fCcNOZ o04dmR9JLYjLJq+t6/58Z4fAt0InAqNNjO0t7m8/u2Llzk4h1yH7NLO8IP3Fm2fhhUnx5XKo95xf 5VSlsHdLCSEmZf/Z2BzhfisaLIw2AWqaeuY/t2JtXbeQXPMEzWkVef+4fTZuhiaCeZNKzxo/JMKB 2wfVrV2eoMC3Qs
 eF0RapdXXd3/nzqm0t7shzLbQZev6kktfuPB17fiUIVZaunVOZ4VAiGbh1ebRP t7WJfTF0bBhtEVm+o/3651dua3FH3syDMu7X6dWnDX/hptOG5eJmaAKZN6l0WkVeROcTCPn3+mZx b4SOD/fdwvdhTevtf/uipTcQea4ZlDEOt5075vErpx7xBBVl3GdQr06DDACgTTN7PMHWgNkRNFsD Zr9O3QFDoywoy0wzg1/+GXQQAACXQtIk4lJlpyKVu9RhGbYROc6SDAcA2ICrEnEqUqZNBjy/9RWq LF0xc/hntRFtBVTv7e0PGNjYPWYw2sIUar7W5RHQfC10cv5Hl048dDO0zq21eoIdfqNLp3v8ZotH 29Kvt/UH2xkBxkHUReiMA2U2Ajk2aWS6bWyWfUJxRo4q5SmkLN02Md8ly3ghFgDAhZNLf5nj7PJo 4dVgKxLp8+mrd3fiZcwxg9EWjoVrGu96KdImRaFDPCbjWU71N9dMu/zU4Yv2dK/tCuwN0naNtvj0 un7No1EAAEJACv0jgQTCcg0AJAKKpAO0A7T3Gyv7dKhzA2UgSyVp6uSCtCK7XKGSM8syZw/LFvZB k1B+huNrJ5W8sHR3eL0qJQI9Pn1TQw9GW8xgtA3ayyvq7n1tvT8YZq6FEo0QQh02u0kNp80oL3i8 TfvRP7d1BEyPzoDzgSxTJBB3V+bxSfs/KAAAtOqsdW8/UAaEZOzqLXS2FMvkqsrs8yvzchSSar3/ ZYmcXlX0/Me7wvvjhBDDZDvb+sW+FToGjLbBeXHZ7ofe2BjUzUHl2oFT1oQQI8MJALrTrqU7QSKQ 4fK4bB19GgCAREBQb3EBDkk6D+Men7kHYOWmTljXXpWufLMyZ0a+c1ZxRupkXNWQzDElmY1dvvD6 Uyky2dvt7/XpqfMZiy+MtkH48yc7H3p9A+NwIr3SDozOOOfUYQtmugBAs9sODsQYB7sKLhuA0Dlm NBz6ejZ5u8
 5/Wt0JlM0qcM7Md15SkZMK09URhRkVBem72jxhRptEWnr9bX0BjLbYwGg7UU/+d9uP 394McJxcO5BoiiJrihzMdGl2G6jywXQ4UEPgtEF2WlTfOYpsMoC8sk9f2Rl4vqH/pPTWW6ryLyzP tvDPrcuhluen0XBPy8uy1OnROj3BKsD2LbGA0XZCfv3elp+/W0PIUZtKHphyUoeNqfLB+eYBh1VF OW2QmfzFa4oEiuRhfGWfvnJVa9Ha1nvHF1w0PHtsftJG9jGNGZLptMmc8zDOCMsE+ny6269H48XQ V2G0HQdl/Bfv1vz6vS22IzWVDH2Xc86NDKfutAPAwURj/PA4O0AicFjwJbXQqhxAO8B9G9qfq+3+ RnnWHeMKrFd4XJrjcjlU3aDy4L90hBDDpJ0ebAESIxhtxxK63OA3/9lqV+UDuXZgygkAoUW0L005 j5FoIRKBnAwQcVVCIrIrdTp/YkvXq439N5Rn3ndyWUbibIxErDjb6VKloG7KEM6vJVmS+nHUFisY bUelGfSHb2589qNahzrQLDc0RvvSlBPgRBPtgMy0BNoGjQaJgFNt1dlj23tere97dNqQK8bkW+OS mvwMhxLZX8QTjPQmQHSCMNqOzBs0Hnx9wwtLd7ts8uG7nIdOOeEri2jH5rRBihy1kQjY5DoG85fv /VdD34OTi2eUZMb7nSLlsCt2VQ77LKkkEd2MqCM5OnEYbUfgDxp3v7x2wfK6TKcSzpTzaJJ6SzRs TnVhs3dlZ9294wvumVoS+WURcZQm4rCwkDdBx4XRdrhen37fa+v+tr5FLc/vOXTKCYMcoB3GGlui 4bEr7Yzft7Hj01bPH+dWVGbZ4/1CceNUrTAxTwr4if6Sta39l7695ZXGflZZpB1IotAwLZJcs9iW aBgkAjZ5cXvg3EW1i/Z0x/ttwmRGNuZijOMdFzGD0XbQimb3RW9tWd7Yp2W6Is2yQ1l7S3RQbHJd kF21rO
 nXq/fG+1XCEYig1y4AcOAZKbLSmgDw523Aimb3vNerO9xBUGVhoRZi+S3RQVEkL5EeqO68 cckezYgoKWKvy6NpBg1/8M3Bwqc1Eg1GGwDAksa+ea9X+wIGRNCk6Miy0uK5JXpgKp1Qd45IBOzK C3Xuqz/a0x8w4v02g9Dj08IeuHHOM5xqbnrqrjPGGM78YdGe7iv/tS0quea0DZx+F+KwhAoNHiQC ACqldoA0maRJxK5ILlXOIZwokkqIjYDOAQB0gwaABEzWp1Mf4z7KNQAj1Gny0CfvP1oQdXZlYbM3 +NGef5w7Ill6zzb3+AO6ebTDdsdmMl6Y6chNw2iLkVSPtoU7u67611Zdp1HJtQhLPUwGlIV66mbY 5QybVOBS0xlzKWSoTR6e5Qg1AR+d43QccghMAS4RIh3px48xDgCMcxMGKpC9Ot3W5dvQ7qvtDezV aQcjnX6jUzMNnYFEvnSqPxrsyuI2/1Uf7XnjvBHpjiRIt71dXq9Gw7s/26C8KMtZkuMU/lboiFI6 2t7c3jH/39ujkmsSCbPUw2RgUAAoybCNz3ONzLIX2ORCm1SeaR+T4xwV4anMr/wtM+1KSYb9nIqD t2ft6vFv2OfZ5jU6dbq0uX+7WwdZiuJaoV1Z3Oa/bEn92+eNSPQjWZzt7fFTxggJ56fGMNmwvLTC bIy2GEndaFtQ03bT4tpo5VpOxvHHOwemgRIBxosUmJiuzi3PO7UgzSGTHLs8NN0e+5naqFzXgQBt 6vHv9Oh1Hu2l2u41bs0gEjAufqvXrnzU6r3lk7pX540S/GSh2vu1ug6vTQmztbIik6rSLGXwLUNQ eFI02p7Z2HrHB7vAiE6uZacfdZjDOBgUGFdt0rB0W7ZEJqUpF47InV2a6VAku0QiuWxBuGG5rlD3 jvmj83o1+kJN+7ut3p0+wxMwBe+N2JXXGvpzPq17am5Fwh5X2Nvtr+/wqGE0/QBgHPLS7aeMzBf+ Vu
 hoUi/aOPv1Fy0PLK0DAPG5BgAZriNcaMA4aCYATMhzzCjMLpNhQp7zgoqcpFhgAgCnTXHalIdP G/YwwKI93e83ud9q6m/XmMirG5zqs7t7q7Idt09J0ItRtre6m3sCWa5wvmQmY8XZztNGFQh/K3Q0 KRdtj61qfuTj3VEJNQDIShvYEj2w4ch4PjNPL838+ojcUocyOsOW7F3MLhqRd9GIvOta+z9o9fyq usPLiahNVa4oD1V3zirJmFyUEfnTxKKMf7G7UwlryAYAwGHW6IJk+U1mDeRAe1jLo4w/uLT+Nysb opVroVOiBgVCSlzKELt8ZoHzmrH5Jen2HIdija4+h2n1aL9Y1/JSk8ejMzFbDSarcslr/mdsoqVA t1eb+9gHLT3+8ObLlPGPHjp3emWe8BdDR5MqozbNoPd8sue5Nc3RyjUAsKmTsu1Tc53j0pQrR+WV ZTmi9YESRkmG/ekzK69r7X98U9vCZq+A+akibfead69oeu7MioT6ZbBmT1djpze8lVC/Ts+bOGRS eY7wt0LHkBLRphn01g93/W1Dq+Bc239OqDDLcedp5ZNzHJPz01Ih0Q4zoyTzreKMl7a2/7C6szVI I91CVaSX692XVvReNCKBxjhvr2mEsDY3KeN2RbrhjJEJldSpwPoTUs2gV76/651N4nLNoACQ5lTL sxynlmU9eEpZll0pxLOBAM3u4M3LGha3ByKdnDJeaSOff31MUUZC1O439fjP/tkHHf3BMOLJEzS/ MWPYa3fMicaLoWOweLT1+vRvvb9rybZ2MblmUAA4vTx7ZEH6VeMKzym3/uWbg8bZ/Sv3PrmzxyBS RHsLOr2vKvfXs8vFvVn4nvzvtoff2myTyWAvsuKcMw6zxxSePCLfpEyRJbsiZThVuyqnO5QMh5rl VDMcSqbLnpduS7TlxWRn5Wjr18xvLKoVkGsGBYDCLMcd08vG57vOH56NXbeO7ZVtHbeubvFGlm4
 q pWsuHBn33dJen37lH5cv3d6e4Qjzi66ZNKgzSSKhg24cOGNcIsRpV7KcanaaLdtly0mzFWU58jMc lYXpo4ozRxRnJvtOetxZNtr6NfPiN6qXN/aFn2v7E+2k0qxfzBxammEvSYz5UVJYUt9z2fK9HjOC 0wsmu2yI6815o+JbxPvehr1XP7MijCHbcXHOTcYZB8o4ZTwUfOkOJc2uhPJucnnOKSMLZo4qKM5y 4JhusKwZbR0+/Ztvbwk/1/ZPPE8uz/nh9FLssRWeFc3uyz+ubzch7HSz6ebbZ5XHcT/BoOybTy37 sGafK1bnWznnlANlHIADEACwyaSqNHv2mMJZowuqSrNHxnsYmywsGG3tHu2s16u3tXnCyTWDgip/ Z2LRWRW5lrliLo6WNPZdtrTRwyDMmalOLytNW3BWRbzGLB/WtH7zqWVx/zYwKAsaTCIwvix7cnnO 3Kri8yaVJsgeS8KyWrR1+PQzX9s86FwzKKhyoUu9eWrp1WPzx+Y5gWCoifHKto75q1rDn5YGjDVf HxWvi/6+9viSz3d12hOj+TvnXDdZ0GCZTmVIjuvs8cXzZ4+YODQ7queOa5p6Grp8x/0QlPEsp3ra 6EIAWFfX3ekJyhLRDDqyKLOqNOuIf2Tnvv49HR5ZIpTxggzHlOG5YlceLBVtze7g196sGVyuGTTN qc6syL20MidhTy8mu0dWND62rTvMgl7GL8iz/+frY0W/1PG9vqr+9r99AQDCV9kiRBk3GQMONkWa M7bo2tmVc8cV50Wnf+8tL6z68ye7jrsm49fpzFEFn/zfeQBw8W8++XRrm12V/DqdVpH39t1zi7IO b+XkDxrn/erjzU29Npn0B8xLpw996dZZYnfnrLPTt6vHf+nbWweRawYtzHLcPHX46aUZhzYsQ8I9 dHLpxr7gon3+cOrdJPJRV2BHl29sfkyvcG13B/78yS6/TtMEtgAQRJaILA18Jj/esm9Jzb5
 ZYwq/ cfKwb59W4Yr+zP1A0B9tVCRLRJYJIcRlk9fXdy9c23TrOWMO+9+8/kXj5qYeuyIDgCSRaEz5E2Kk HbkdXb7Zr2w6fq4ZFAxqIzAuz/X3S8et+Pbkn84ux1yLNqdNeea0oZUuGcK6O93g5OmaduFvdWwL lu9ZubMzAXPtMHZVtqvS0u3t//vquot+++nrq+qp0HswFFly2BRFkRVFdtoU5ZB2dYQQ5/7/yq7K X40nQogikReW7u716Yf+e2/QeHHpbojydDHRv3InYlO752tv1AxcRnU0h1Ry/HhG6cyyrITtC2ZJ w3JdD0wqunlVa3h/fFlXoNenx2yrenuL+7kltY4kuQ6ZEJLhUDjna3Z3ra/vfn1Vw/0XjQ8te0Xu 7vPHfevU4aHrIGyK/N/NLb/89xaXTfYEzfmzK245e4xuDhw3PGLdn12Vtzb3vb6q/tCB25tfNG5u 6lGivDmT9NG2trX/ore2HCvXDAoA44ozrhxfdPGInLiXgKasmyYUvbWn56MefdC7pYq0rSf477qe 6yYWR+fVvoQy/ti/qjv7NUeCNzT/MkJI6IU/qG5dV9d9wxkj75pXFfkC3MiijEPLTXa394dGhYZJ y/PTT6SXiU2RXli6+8qZFaHfTL0+/ZUVdbrJ7Y7oji2S4/fS0Sxp7Dtqru2fe55env3RtVM/vXrS w6cNw1yLr5/PKJXMcC67Y4R80afxmFw5+MLSXe9t3GtPkiHbV6XZFU/QePy9rZf89tNPt7WJfbhB D34JTHr85QXKuCKR2n39r6+qD/2bRRubV+3qTLfL0d7ATNavHwAs2tN9zbvbjpBrBgWDjivO+M7U ki3fm/Hx/CnnlGfj8fVEMGNI+q0js0MNhwfHriys693dF4jCS31JTVPPE4u2Ak+4XdFBUWUp3S5v aOi58unPnvzvtoA++E+4CLIspdmVUAXyqyvre306Zfz5j3cqEiGEKIosR3NOmqzR9ub
 2jhv+U3t4 rhkUDHrOuKInzh+z6tuTX7xw7KhcF160kUCIdOWovCJ7ON917QHa6NGP/7+LgDdoPPzW5qZuf0Ld UBGe0AaladKH3th454I1TT3+GL8AZTzToVw0pdSuyjZF2tDQs2hj87vrmjY39doUyaHK3zx5mCoR sZseh0rKtbYFNW23f7Dr4KXIBgUAm02+4eSyq8cXTStMw+PrCWt2aUGdLHsAACAASURBVMasAtfC Ft+gC0Hsyuu7us8Zlhm9auonFm39sGZf2MfgE1Ao4F5eUV/X4X1q/vSJw2JaDGBSduGUsjZ38L+b W20yef7jnX1+3SYTk/HxZdlXn1bx+qqG6G3mJd+o7ZmNrTctrh3Itf1bBA+fOaLrntnPfm307LIs zLWERqTvjMkL53CCRBa1eCiP1o/CwjWNz3xUmyAHDwQihKTb5dW7u656ZsXnOzti+aENyodku244 Y6TLJtsUaWtz395uHyHEoPyO88aEfoVEb/k0yb6Qv1699wcf7tJ1CgA2At+dXvb3C8ds/d6Mn84u T/QLetF+F43Iq7SRML6peyivi85y27q67gde36AZ1JIlQaGxW2On95pnPvuwJsz6m/B4gsYFk8um DM/VKZclosqSTzNPHZl/3sSon/xJpmh7ZEXjAx/t0nVamOX41bmjVsyf8sL5o2NTEIDEuqb8yOcK j80g0r92dgt/mZ37+m95cXVDp0+RJYOyaPyjmUwz6MF/TGYyHuMzjnZVbu/Xbv7rKuHbpscmS+SO c8cA5xC6aloi35k70q7Kmhndv35yzN36NfPBpXUv1bSPK8748ezyeZW5mQlfJo6O4eqx+Y9t6Rr0 Pc0m+6JH/KitzR349qyKG84YKfaxJmWUcd1knqDZH9A7+zVP0Oj16UGDuv16QKfugBHQDEKIqkg2 RVKiP2B02eQuj/bd51e+evscUTW9J+L8yaUzRuSv3NnJGJ8ztvCiKWUx+KDJERD
 V7d6gyd75xng8 FGUNuU61MkOtG3xNQmc4J7WO4/SxRaePLRL/3KPo9eltfYGGLm9Dp7exy9flCdZ1eLe2uHs8miIT myJFtYeSXZW7PNpNL6z+511zj9aTQzinTbnj3DE79/WrMvnO3JGHniqJXp4nR7RNK06fPSwOvR9Q lOQ51ctH5f16c8fg9kkVqdVvNPX4k7q5dk6aLSfNdmistPb6Gzq9ezq8mxp7lm1v39PuMRkH4BKJ yrlxuyrvavPc/vcv/nHHnK/25IiSC6eUjSrOAIDRQ76Up9HbRkiOaMNNT4uRJTIuyw4mHVy0SaTJ q6/rSu5o+6qSHFdJjuu00YXzZ1f2B4yd+/rf27D3461tLT2+1r6gLBGnKoktIc5wKKt2df74rU3P fedUMpiBk0GZrpk+AlwztaM0Owjo1Bc0ZVmSCBj7TyzYVfmrpSc+zWQcdM30R6GoGCMDxUeeQmyK NNgaXENn+3zRLdyNr0ynOr0yb3pl3qOXw+c7O/69oXlFbceGhh6ZgNhC4jS78tKK+knluV/tOHQM Q7Kds6qKbIrUHzDKj9JmasLQbJ9mhmbWuWlHPcSaZldmjioAAN1kY0uyJNGl9ZZqRYmSSF2P/7wl 9Xt85uCWW/z6YzOG/Gh6adTeK+E09fiXbWv727Lda/d0ASECL6AxKMtNs/3z+2ecyCn3kIBu9gcM CB02cKpHbOze69MPtAPJTbcfbU5tUNbj1UL/2abIOS5FbDE2RhuKD874RUvqF+/tH1z5rmbeP7no VyenULSFeIPGh9WtT39Uu7aumzIu6hoaT9A8f1LJP+6YY701n2Sqa0NWQiTikgBOoHvEl/8Y6QyY wKOwUZrY0h3qZSeX//f+s397zbRxpVmeoClkUJJulz+s2ffyirrIH5VoMNpQ3GSF0WhVIs0ezauF 0xnJAuyqfNNZo/951+m3nD0KADQj0s8DIcSmSE8s2traG+vz89FmtVFo7Gk
 GpfuHHiey2XTs5VJJ IgAQum3XAv0njs0hD37NSCI9QdOnmal85XBFYcZT1558zoQhD72xcU+7x2WTI1l9UyTS3OP/wwc7 Hr9yqsCXjDuMtogsaez79aZ9/v1HRpyHDEPIV5aQ1P3ff9L+BFT2zymkLy+1egx614TCOF4tHBtO icDgfyb9BtUoLhDDxVOHVpVm3/vqug9r9kVYHWJTpDdW1V83Z0TMinhjAKMtXJz9Zv2+R6s7vJyA IoksPQwat04omFGYLuyBicoZRj2qRDTG49NZMfGMLMr4282zHv7nxgXL9yiyFPbZflWW2tzBBZ/t sdLADdfawtEfML7x3933bezwEmlgg08iAv5hPEOCl+cOe3ZOeSrcDa6G96MYkzbiySInzfb7+TN+ cME4k/FI2joqElm0sXnnvn6B7xZfOGobtE3tnhuWNm7oN8K5VfMYNHNaruO508ridVN67Blh/Cgy brdJ+F17KFWWHr18skTgN4u3A0B4Yze7Kte29n9Q3TJ6iEW+/XDUNjgLatrmvb9ng9cUnGsB44bK rMXnj0ydXAOAwGArPwAAQFYkKcr3vCWjB78+8btzR2gmC7soxGGT31jd6A0aYl8sXvBb5EQZlN3x ad13V7e2MxJOk9ijMZlK6RPTi58/qzLV7qbpNRgM/ufQTkiYM1lLs6vy41dOvXByqV8PsyLErkib m3qrm3rFvli8YLSdkB1dvgsX1T6zq4/ZFJF9WDSzyiUvPrvi3umlluzvemzBMDb1GM91KE7LtfkW wmlTfjt/xoiijKMdXD8+zt9Y3SDyneIHv0WOb+HOrgs/2PNRlwZi+19q5gXFrve/NuKc8myRj00S nPFeCoMu/mC8LMOeho1Ij2JYruuXV0yxK1KYWwqErNzZGa/L/cTCaDsmzn62ruWqZU11Ohc5CWUc TPbwuLy35o20WH+eE1ffF6jtCwz6s8p5gVNJwRHuibtgctnlJw/zBsO
 JJ0UibX2BtXXiu7THHkbb UTW7g9d8sOfhjR26IouchOq0SOJvzyn76exy651JPnHbegP1vcFBf2IZz8Dv2WOSJfL9eeOGF6SF MS2VCLj9+rLt7dF4sRjDb5MjW9HsPm/xrtdC12UKzbVZufb35424bHS+sGcmp9aAycKaNDmEv4rl VJVmfePk8jC2aAghQYNtb3FH7+bjmMFoO4I/b2m/4OOG7X4qeBKq09tHZr03b+Tkogxhj01OmkGX t/tg8INW1SYNdabuUPfE3XrOmCyXLYxCEFWRmrp97e6oXIoYSxhtX9IfMG5csufmVa0eBmIrPNI5 e3p60dNnVuakWIXHEXUHzXcb3YP+DDNeYFcqc2LUzj+pleenXTp9aBiFILJEWnp8DZ3eaLxVLGG0 HbS103vB4l0v1PcLn4ROTVf+dXbF7VOifq1ssli9z+MNo/qK8QKXelLBkftWo8N8fdpQRRp0r1mb TNrcwbboXGUdSxhtAxbu7Drvw/qVPZrIYwaMg2ZePTT9vQtGpWaFx9H8rqYjnEEx40NVYvleT6JM KMueVJ4bMAa3mUAI0Qza1O2L0lvFDEYbaAZ9ZEXjlSv2tupMbK6pnD08Lu+l80aWpMBZ9xO3qd1T 7TXCGRdLZGwGTudPVEmOa3J5jj74dpWyJLW5g9F4pVhK9RXZph7/PaubFzZ7BZfj6rTSJT8xYyju hH7Vb7Z0esL7LaJI3xpl8R52Yo0vy1YViXM+qG5uikyaunyaQZN6gJzS0bakvueu1S3bPYbwYwbn 5NmfPbNiVKqW4x7D2tb+fzd7wtuiKQI2ucj6bewEGlGUkZdu9wQNdTANjRWJeIKGZjKMtuTDGX92 8757NrYbnIjMNcZVzm4alf3b2eVJ/W0RPU9t7/JoNJzPOeOzilyK6NsqrW14fnp2ms0dGGQzD0J6 fboRVl+WxJGK0dbh03+6pvmZ2l5wCu2vb7IiBX41dch1E4tFPtZ
 CltT3vLqnL8zfJZr5nTF5g7rq HBVnOx2qPNjaXYlA0KAmRltyWdvaf+vnzet7gsJzbWq68sIZ5ViOezQB3bxn3b6wx8j5Mh+DFW2D lGZXMp1qGDdJBA2a7AcSUivaFu7sun5Vi8fkYiehYLKrh6b/fk55qjVcGwTO7lvZtKVPD3MPWjO/ WVVQmY3RNjihPgKDLW0L1X9E541iJ1WizR80frKu9YntPaBIYo9P2Uz68ylF904bAgQraY7qzR1d f64f/PGD/WwEzsh3YsOPMKip2pE4JaKt2R387tL6jzqCgrt+m6zSIT1/xvBzKnJFPtZydnT57tnQ bhApzDMeJqvKd82rxE9yOMLYDeCc21U52X+RWD/aljT23byiqc5Phd9mcFFZ+lOnDa3ECo9j6vDp l31U1xqMqNfA1UPSMrH9ZLjCuKLUkfz7+1b+duGM/3ZD6w+rOwxOBB+fMuh9E/J/PnNoyo72T1CH T7/s/d3bI7slp0iBO6cOEfhWqcMfNPTBd21jHDKdqk1J7nSzbLT1+vQ7Pmt8ba9X+CS0SIFfzSzB Co/j6vXp17y/a2VPuFsHITq9d0phKvfsjESHR+vz64OdWlLGM53qoKp8E5A1v2MOVniIPmYwLdex YO6w8QVYE38cvT79W+/vWtIX2W2tjFc6pKvH4GG1MLX2+n1BY7CLZpzz/Ax7stecWzDaFtS03bmh XXCFBwDo9OphGX89qwJHEMdV59a++f6uDV4z0s1ogz4woxSbC4RtT4e3z29Ig1xrMynPz3Ak+2KL pX5KByo8tnSBUwVF3HCa8XTOHp9edPvkYqzwOK4VTX03rdwb4foaAIBOp+U6vlmRI+i9UtHutn5P wMgeZLklZaw8P+mb4lkn2nZ0+e5a2fRRe0D4MYNKG1lwZuXssiyRj7Ukzp7Z1PZQdafH5JEvcaoy PD6tGJsSh80fNLa1uOVBDr445w6bUpSZ9FdQWCTaltT3fHt
 5UzsTetYdAHR6QZHz+bnDy7KS/isd bc3u4E/WtrxQ5wZVFlAUrZk3jcrGgsFINHb7NzX2ONTBfS1MxktznMPyk341OemjjVL6+41t/7ex XfCVegCgmY9MKnxwSjEurh3Xwp1dP9/YtsGti/nVYrJpuY7HZw4V8KgUtq6+u6nbn+EY3FfEoLwo y1mS/Md1k/uHtten37isYWGLD8TmmsmKFHj2jGHYSPK4QoO1l+vduiSJyTXG0wl/fFpxukPowkKK oYz/e/1e2+ALOAyTDctLK8rCaIufTe2eqz9p2C78mIFmzspzPD17KPbwOLZen/7P+t5H1u9rN0Hk rxbN/PH0YpyKRmhbc++n29psg1wZ4Jw7VKmqNCvZT1lB8kbbMxtbH6vuaDeFXqkHAAHj9jE5vzh1 aKbYvQjLeWVbx5+2d63sDIBTFflNpNMbRmbfO71U3BNT1POf7NJMZh/kTwfjkOWyTa+0Qpf25Is2 g7JbP61/ob4fFElkhYfJ0gl//JQhWOFxDAZl7+3p+V1Nx8o+HQCEb0afOyTtydnDRD4zJW1vcX9Q 3RrGH2ScZ6fZ5owpFP5KsZdk0bajy3fjssaV3eKPGUzIsT93SunsYXil3pG1erQNHd4fr9u3wWsC iB4sw0Avzz+dVoZLbBGijP/p49qGTl+Wa9CfScbh1JH51vgSJFO0vbm946ENbXVBJjzXLitL/+Oc cqx6P6JN7Z5Fe/vfqO/b0h0Epyo+1GDgQNULZ5RjG5XIrdzZ8faaJpc9nAVoyvgFkyyyGpAc0cYZ /8nalserO3RFRM3UAaGrQifk3z+jNNlPzAlHGX93d/ffdnZvcOutHh3siuDp5wGMV9rI2+dU4L5N 5PxB4+fv1PT4dNfg99Yo46U5zlmWmI1CUkRbszv4/ZVNC5u9oAqt8NBpiUt5/tSyi0ZYYdFUlFaP 1uHXX93R9Vqzt9XkoFNQpGiFGgy083z9zOGYa0L8atH
 Wz2o7wsg1APAGze+eMbIo0yJzl0SPtiWN fXd9vne7P6zr3Y5Bp+fk2v44d/jY5D8rJ0SzO7i0pb/Bb7y2q2d7qPI29FtEbGHNYUw2Lcv21zlY ZyPGwjWNz3xUO9iCjxDKeJZLvWhKmWX20BI62p7Z2PrgxnYvJ2InoWCye0dnP3xyGVZ41PX439rZ /UVPYKfP2NIdBIAoTjwPo5kXlaQ9P3c4LnEKsa6u+4HXNwR16gjrt5Ffp+dNHHLqSOvUqCdotPX6 9PtW7R2o8BDYEs9k6YQ/fWqKXhWqGbTTb3gNuq0n8Orunk29wU6Te0wOlIEqxyjRAIBx0Mzbx+Q8 MWsYHmITYnuL+5YXV+/rDYSXa6FK3f+ZYakvRyL+TTa1e+5YsXdljyZ4NqTTaTn2J08tTakeHu3u QE2f1ubTuxisbPN+1tLfHqAHVy0lAorQQfFxMZ7O2Y+nF2NdrijbW9zzn1tR2+oOL9cAQKd80rCc y08uF/ti8ZVw0fbm9o57NrS3+iPu9nUoxkEzbxiZ/dNTyiw//Wnq8a9u99b2Bhv9hhvILo++pzfg 1SgQMtCTwxm/xRSdVqUrfzh1KJ6jEmVdXfctL67e2tyXFsFiNGf8u2eMtNj6TAJFW0A3H1m196k9 fcJvabHIMIEzzeSayQImMxjXgQBAqye4us1b1+3b5TVadOZm4DFZkDKDAnAOhIAigSyDK96lLSYD gKuHpj89pxxbsIny3oa9P3hlXUtvIJJc8+v01JH5V55iqSEbJE601fX4v//53kWtPsE7oYxXOaQf n1R8+ej8gG5yNrhrtKPB5AAAlHEDgJvUAKJTFqDMYNygXDNZkLIg4zrlJmUBaWCE1Wuwnb2Bdo/W HjD3+Y0Og3nN/cn1VbIM8Y6yL9HMyjTlkZMKU3OJMxq8QeP3/93+1PvbDcrCK/UIoYw7Veme86tc ljiBcCjCefx/2hft6b5/TauAltNfxfiINGVMttO
 jm4KfHLF+gwEANWmAAzdoEAg1qY9yDcCkjIeG XSGEgERAlg4ukCULxolpfrci+4GpQ0bhSQNB1tV1/+yd6g9r9tkVKcIWHW6/cd3plc9cf4r1Stbj HG2U8d9vaH20ukNwhcdhBn8VY4wc9n2ZRJl1XCYDxidk235/cunZQ7OIlf5q8dPr0//yyc7nltS2 uYMumxzG3cmH0kxWnOX49/+eVVVqwY21eE5I2z3a/33R/MLuvqiXHcRyBxABgGZWZajXV2R/f1qJ 9YYDcdEfMBZvan76w9r19d12VY5kce0gzh+6ZKIlcw3iGG0DV4X2arErp0LRxnioR+4PJhVeNyoX z7oLEdDNf6xqeGNVw8raDiIRMaEG4Ama82dXXDdnhJCnJaD4RNsr2zpuXd3iFbsTiuKIcTBZkY1c PjzzwakleEtO5Cjje7t9b65uePOLxvoOj1ej6fZIZ6AH+DRzRmXeI9+YbIFuukcT62jrDxg/W9/6 xLZuUGWRxwxQvDAOmlmVZbuwJPOeqSWWLxuMgZ37+rfs7V28ueX9za1uvw6E2GQy2NtbjkEzWV66 /RdXTBlm6WF1TKNtV4//tk/rl/QIuvcIxRfjYNBZeY6rKgvOL8/G6WckDMo2N/au2tWxual3U2Nv zd4+iYDLJgtfqeSc22Tym2umnT62SOyTE03sImbRnu6bV7cKPmaAYk+nIJEMhczJsz80dcj4HCeW 4A6WQZlh0IDJalvdm5t619d3b2rsdfv1tr5A0GAOVRI4RjuUyTil7BdXTLlyZkU0np9QYlH8YVD2 +BfNj+3oNohkqfqGlMI4aKZNJqcMST8j237LpOIYzz0N0wgGg5E/h8uOA9+EEucSgMtGQBIZJZRx kzKDMs1kmkH9Og1ohidougPGvr5AS4+/scu7o7W/odPr00zGOeMAnEsSUSQiajXtiG8VNOij35h0 /8UTovQhEkrUo63Dp9+6rGFhsxcnoclq/2r
 a1aNyJ+c4LhqeA3Ksi2m2bq3etmUb9bsjf5TsOrzW YYW7wEecSsS/dM39Z138GgUAv24GdOrTzKBB3X6916e7/QYAKDJRJBLtIDsM51wz2ANfn/DDSyZa eOvgUNGNthXN7ltXNW/p1TDXkgnjYLLQrLNAgm9UZF89KneIy1YUjy0Czviy5Z/WrF2t+702oT+T NmK6DfmtvhGb+xyUMQIiHy5JBAAkAoQQmYAkEYmQeGWKZjKJwP9dMvG+C8enTu10FKMtKo0kUfQw DpoJACNyHZUu9dRs+9Vj80fluuL4S97j9bz/n/807ah2KJIsK6K+UwmAQlhDwPlKx7Be06aSRD2s IkJQp2lO9bHLJ9101uh4v0tMRSXavEHj/rWtz23vxsFaEmAcNDPdJs0sTDu9OG2oXT6tNDMRznvu a29btvjdlqbGNLtN4PdoKNeW9uau6C9wG7K1Z2dBnQ4vTH/i6mnnW+WeqhMnPtq2dnpvXt4k/qpQ FDmTQWg9SCIZCnEBL3Uolw7NPHNYVo5dLs+wJ84FlFu3Vn+yeJHu96Y7VMaFpY9KmMGllX3Z7/cO oYxbONcMyoIGO6Oq6Mn5M6x6lOrYBEfbwp1dt61qbjfx2GZiMBlQBpQBIRlOpTLTnqlKQxUyKdvx 9ZG5I3KccVwAOhrDNFau+GzNp0vSbJIki/ztqBLmp+SV9mG1gUwFaMyW8GPPp5lpduXGM0f96NKJ ifPrKsaERZtm0Cc2tz28oR0Ha3HDODAOlAHjEoHhLmVEjnNKYVqGBDkyGZPtOLk4I8E7qe5rb1ux dGn9tupMp/hJaEPA+WFvYW0g08KLa5xzv06nVeQ9cPH4i6cOjffrxJOYaGv1aDcva1i0z4/luMIc 6Jp5xPaZ+xu3qZTaAdJkUupQxmbZp+S7JhekOWRil0i2QxniUpPol3ZNU8/n7/7d29MldnFNIlwG bvlNA8q4ZjKXTb7xzFH3nF9VlOWM9xv
 FWcTRxtmSpv6rPtzd5TfApoJ1B/nRJZHQpy50rsYhSxmK 5FQlAEhX5UxVYprpUohdljIVqcQmF7jUkbnOifmu4nQ7ACjAFVlSCEnSrX1K6Y4dW99/63WbRFRV FZhrKmEml1b0Zb/fO8TgkiVzjXPu1ajLJp8zYcgDF0+YXolXhgMIOWhV59G+U1XgxLZcJ0A9pCPA oc0xnDJRVdnOuUMiqipnqlKWXcl2KPl2JcelWObW2yM6UOHhstsAQGyu9ZmOTR7Xf7qLJcItmWua yYDz8yYOmT+n8pszypP0d1s0JEQDcZSy9rW3vffOu562xlCuiRJaXOszHW92FNUGMgHAYrlmUMYY l2XplBH5N5816pyJJQm+ihp7GG0obkIVHhD0iZ2EWrgiN7RLwDiUZDtmjiq8fu6IuWOLsI/xEWG0 oTiglH722bL1y5Y4FMEVHqFNg1BFrpVyjTLu16lNITMq8+eOLbxwylBcUzs2jDYUa4ctrgkkEc44 WWmJTQPOuck4YxwIkQgMzUv72kkl50wYMnV4Lu5+ngiMNhRTW7dWr/hkifAKD9i/aRBaXJM4TbRS 5BPBOdcp101GGctwqPkZ9qIs5ykj8y+aUjatIg9X0wYFow3FztKln1R/vkzmVOwkFADUpK3IpYyb of5uJrOpcmVhekVBemVh+viy7Jkj8ycOy433CyYrjDYUC1rQt2r1F2s+XZLpDLPC44hjMP6VTQMF aISvGrav1lazQ364DvtvJQKMg0SgMNMxtiRr9JDMkUUZwwvSy3Kc5QWJfmgkKWC0oagLVXj0tTZK tnSxTyamlzKo1goXtWdp3GYnelhPUbiILruqLMmyBADq/rmwKhNFlgAgtImZ7bLlZ9iLsxxDsp1D 89MrCtKH56e5nLYMVXIlz6GRZIHRhqKLd1WvWfxsS2dAUgTf4MfMoKQ4jOIz96mFET1ISSP2zMjf JzvNnmaTVUUCAEWWHKpsV6QMh5L
 htDkdaq5LVWPenTiVYbShKGL17/GNv5dZt/Ancy3AiufK02+D rCnCH44sAKMNRQfVWc2zfMdLwEyQhXYepxpIChl5hTTpdlAFz3CRZWC0IfG4t5mt/xU0fwqyDYjQ WnkzAM5CMuUeqeJikY9FloO91ZBgvHUFW/849NeDIrQLOadAdSieKU29l+SMEflkZEU4akPicMZ2 vMy3PA+GFyehKL4w2pAYXOvlG37H698FIoEktJTB8EFWJZlwM05C0YnDaEMC8K5qtu6X0F0DitDj jTgJReHCaEORClV4gL8N1DSRzzUDoDjImG9L42/ESSgaLIw2FAHDy7b+NSoVHqYfMivI5LuloeeI fCxKGRhtKEy8v55t/B00fwqK4yhHPMN7LgWqQ9mZ0pQfkMwKYY9FKQajDYVjoMLDXQeqS2SuUQ1k OxlzDU5CUYQw2tAgMZPVvhqFCg8OZgAnoUgUjDY0CNzfwWue43veBkkRecyAU2AmlM7FSSgSBaMN naj9FR7VINtF5hozQFLJ+O9JY68F0d1BUMrCaEMnZKDCI9gFsk3c4hoHww9ZlTgJRcJhtKHjMYNs y5/4jpeAM6HHDDiYQVI+j5x0O05CkXAYbehYotXDg2qgppOq63ESiqIEO3+go4pOhcfAJFSa9iAp mS3omQgdDkdt6EgO9PAw/SInoZwCZ2ToOWTy3SS9TNhjEfoKjDZ0uIEeHnX/EjoJ5WAGwZZJqq6X qq4HWfDlyggdBiek6EsGKjy6NoPiEJZrobNTmcOlGT8ixaeKeSZCx4SjNnTQIRUe4o4ZcApUJ+Xz yNT7iSuyq6cQOmEYbQgA9ld4bP87AIhbXONAdVDTyYSbpdFX4SQUxRJOSNH+Co+WZSIb5HIKZhDy J0lT7yWF08Q8E6EThqO2VDdQ4eFpEnnMgFNgJqm4hEy6EyehKC5w1JbS2PYF4nt4cAq2bDLxNmnU 5cKeidAg4agtRQ1UeDS8ByB
 wcQ2AUyAyKZ0LpXPB1IAbwp5sAVQH2UbKzsaRbAxgtKWiaPXwOBTD UPsyqoM9m0z+gTTyMiBSvN/G+jDaUs5AhUegQ/DtU+ioOJhByJsoTX+I5J8U75dJFRhtqYTqrObZ qNzSgo6GGcAZGXYelvXFGEZbqtjfw+OTKE5C0WFCDU4m3CyNnY+T0BjDHdKUMFDh0d8Aiive75Ii OFAdMoZhg5N4wVGb1R3o4SH4lhZ0dKFy5aFn41UPcYTRZmUDFR7174o8ZoCOjRkgKWTMt6UJt2CX zTjCCallHazwwElozJgBcBaSKfdIFRfH+1VSHUabNe2v8GjHvEbtGAAACdxJREFUXIsRToFqkHeS dMpPSM6YeL8Nwgmp9RhetvWvUbilBR0dMwCADL9Ymv4AXnqfIDDaLIX317O1v4C2VYJvaUHHEKrw mHSnNOoKrPBIHDghtY5DbmlJi/e7pIbQpfcZw6RTHsXGTYkGR22WwExW+ypWeMQUM4DqZPgFeMwg MWG0JT3u7+Cb/8jr3wVJwUlojIQanIz/Ht6jmrBwQprcDt7SIvKqUHQMHMwgZA4nk++Whp4T75dB R4WjtiR2SA8PB+ZaLIQqPIpPk6beixUeCQ6jLSlxfwff9je+YwEAgIRD7y+L0tELTgGAjLxCmnQ7 VngkPoy2JER11vQBtCwDGRuufYWk8N4d0FcrdNmRgxkEZyF2RU8iGG1JiLNQK+p4v0eCIRIcmKTr fULvh9Yg7yRsJJlcMNqQVYSuUq19FZgh8spBZmIjyWSE0YasYH+jzU9FHsOgGsh2Mv57UtX1OEZO OrgCjZIeb1vN1v4M3HXiKmAGKjywkWTywlEbSmacsV1v8M1/FHkMAxtJWgJGG0pWXOvlm/7A97wt 8hhGqMJj7LXS+BuxwiOp4YQUJSXeW8s2/Ab2rQTFISjXOJgBcBZhI0lrwFEbSj5s7xK+9hcQ7ALZ JmxxzfBD/iSs8LAMjDa
 UVEJXqda+AswUVuERuiq04hIy6U6s8LAMnJCipMH9HWztY9CyTORRKjMA tky8KtR6MNpQcuAd69kXP4b+BpG9AEw/ZFZghYcl4YQUJQG28x98y18g2CWywoOZUDpXmvYASS8T 80yUSDDaUGIzvGzDb3ndvwBA2CQ0dMxgzDXSxNvwmIFV4YQUJa6BCo+2z0G2C67wmPFDbCRpbRht KEGxvUv4piehv17cVaoczCA2kkwROCFFiYeZbNuLfMufgJnCFtdCV4WOugobSaYIjDaUWLi/g2/4 NW98X2QPj1CFx+QfYCPJ1IETUpRADqnwENdA2PRD3knS1HvxqtCUgtGGEgXb9Rbf9DvQ+4XlGjOA maT8fGwkmYJwQori72APD4HHDA40khx/Ix4zSEE4akNxtr/CY5XQYwYBvCo0xWG0oXga6OERaBdW 4cEpUB2KZ0ozfoiNJFMZTkhRnJhBtuMlvvUvoZmjmGdSDSSFjLxCmnIPHjNIcRhtKA64t5lvepI3 fSiyQS7VwJGPjSRRCE5IUazxjvVsw2+gazOoaYKeSIHqkDdROuUneMwAheCoDcXQgVtaBFZ4UA2I RIZfTKb+gNhzxDwTJT+MNhQjXOvlNX/mu/4BRBI2CWUGKC4y4Wap6joxD0RWgRNSFAsHb2kRdVVo aBKaOVya8SNSfKqAByJrwVEbirr9PTzENchlBjADys7CRpLoaDDaUDQNVHj8WfAtLZKKjSTRsWG0 oWiJQg8PDmYQnIXYSBIdF661oagYqPDorhGWa5wC1bCRJDpBOGpD4g308DC8IhtJEolUXCJN/V9s JIlOBEYbEsrwss3P8N1vAGcie3io6WTSndLoq8Q8EKUAjDYkDO+vZ2t/IfKWlgPHDLCRJBokXGtD YgxUeLjrxFaukfJ52EgShQFHbShinLGtf+Vb/xIqyxDzzFCFx/jvSVXXY4UHCgOO2lBE9ld4/Bck VVCucTCDkDlcmvY
 gKZkt4oEoFWG0ofDtr/CoFrm4ZgZhyCxsJIkihBNSFCa26y1e8ywEu4RVeHAK AGTstdL4G7HCA0UIR21o8Mwg2/QU3/UP4ExQrnEw/OAqJhNvw6tCkRA4akODM1Dh0f6FuAa5HAw/ 5E+Spj9E8k8S8UCEMNrQYBzSw0NQI0lOgTMy/GIy6U6s8EACYbShExOq8Nj+d5HHp0LHDCbcLI25 BiRcG0EiYbSh4xuo8Gj6UNwVyBzMAGRWYIUHihKMNnQcvKuarfsldNcIayTJKTATSudiI0kUPRht 6FgGKjwEXoEc6uEx9lppwi2gOMQ8E6GvwGhDRxHq4SGywgPA8IGrGBtJohjAtVt0BAO3tLStEjYJ BQDTD0NmYSNJFBs4akOHO6SHh6ArkJkBAKTyf8jku/CqUBQbGG3oEMxk217kW/8CVBM2CTX9YMvC RpIoxjDa0ADu7+Cb/8jr/iXulhYAM4CNJFFcYLQhgAMVHl2bhTWSZAZwRoadh40kUVxgtCFg9e/x jb+HYBfINjG5ZgZAcZLx35PG3whEEvBAhAYJoy21HajwABDWINcMQOZwMvlurPBAcYTFH6lr/y0t q4ReFapD8UxsJIniDkdtKYq3rmDrHxd5SwvVQFLIyCukyd/HYwYo7jDaUk+owkNsDw8zAM5CMuUe qeJiMQ9EKDIYbalFfIXHgatCsZEkSiQYbSnkYIWH4hCTa6EKj4pLyNQf4DEDlFAw2lKF+AqPA40k q64T8DSEhMJoSwFmkG35E9/+dwBRFR54VShKdFj8YXHc28y+eBTaPhd2BTIzgBlQdhY2kkSJDEdt VjZQ4eFpEjYJZQZIKhlzjTTxNpBtAh6IUHTgqM2iOGM7XuZbnscKD5SacNRmQVzr5Rt+xxveAxC0 uHagwuOUn2AjSZQUMNqs5uAtLaIq1/Y3kpSm/i+o6QIeiFD04YTUUgYqPAIdwq5ADlV4TLpTGnUF 9vBASQRHbVZ
 BdVbzLK99BaguZnEtdKVexjDplEexkSRKOhhtVsC9zWz9r6D5E5DtwiahzCTl88jk u7HCAyUjjLakN1Dh0d8gbBIaqvAY/z2p6nqs8EBJCqMtubHtC4RWeHAwA5BZgY0kUbLDaEtWAxUe 9e8CkYRVeJhBGDILG0kiC8BoS0r7KzyqQXGJeSIzgEhk5BXSpNuxwgNZABZ/JJ/9FR7tgnKNgxkE ZyGZeJs06nIRD0Qo/nDUllRCPTx2vASciTtmoEHeSdhIElkMRlvS4P31bOPvoPlTkQ1ymUkqLiGT 7sSrQpHFYLQlh0MqPBzCGknKdnLSHdLoq7DCA1kPrrUlPGay2lf5ludB7xdUuTZQ4YGNJJGF4agt oR3s4UEkMZPQUK6VnSVN+QFWeCALw2hLXAdvaRE4YSQSGXutNP5GrPBA1obRlpA44/s+Z+sfB387 qBnCHqu6yISbsZEkSgUYbQmJmbxnW+gsp7hnGuAqwrPuKEVgtCGELAibCyKELAijDSFkQRhtCCEL wmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAFYbQhhCwIow0hZEEYbQghC8JoQwhZEEYbQsiCMNoQ QhaE0YYQsiCMNoSQBWG0IYQsCKMNIWRBGG0IIQvCaEMIWRBGG0LIgjDaEEIWhNGGELIgjDaEkAVh tCGELAijDSFkQRhtCCELwmhDCFkQRhtCyIIw2hBCFoTRhhCyIIw2hJAFYbQhhCwIow0hZEEYbQgh C/p/tXGAXkhU+i0AAAAASUVORK5CYII= "
-         height="137.29469"
-         width="140" />
-      <rect
-         style="fill:none;stroke:#000000;stroke-width:3.51219511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5329"
-         width="140.48439"
-         height="140.49123"
-         x="-289.16486"
-         y="9.5095568" />
-    </g>
-    <g
-       transform="matrix(0.41667655,0,0,0.41667655,-362.02927,532.95802)"
-       id="g5343">
-      <rect
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.51219511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5345"
-         width="140.48439"
-         height="140.49123"
-         x="-151.66487"
-         y="-1.016763" />
-      <image
-         y="2.0229614"
-         x="-129.60527"
-         id="image5347"
-         xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCBQIDhADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKK
 KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiop7iC1iMtx NHDGOrSMFA/E1zOo/EvwXpRZbrxJYbl6rDJ5p/JM0AdXRXk+oftCeDrQEWkeo3rdvLhCKfxYg/pX Kah+0rKSV03w2ijs9zck/wDjqqP50AfQdFfKt9+0D41uifs50+zB6eVb7iP++ya5i9+KPjfUARN4 lv1B6iFxF/6ABQB9oMwVSzEADqT2rJvPFPh7TwTea7ptvjqJbpFP5E18R3eq6jf5N5qF1ck9fOmZ 8/map0AfZN38XPAdkD5niO2cjtCryZ/75U1h3P7QHgeDPlyahc/9crbGf++iK+YbXRdUvU32mm3l wn96KBnH6CtW08A+Kr1d0OiXQ
 H/TUCL/ANCIp8rYro9uuf2k9DTP2XQtRl/66uifyLVj3P7S1wSf svhiJB2Mt4W/QIK89tPhP4suTiSzgtveadf/AGXNaUPwW19pB519p0adyruxH4bR/Oq5Jdg5kbVx +0d4ocEW+laTF7skjn/0MVlz/H7xzLnZPYQ/9c7UH/0Imri/A5yPn8QID3AtM/8As9aFt8E9LVf9 K1e7kb1iRUH65p+ykLnRyU/xq+IE/wDzHyg9I7WFf/ZM1ny/FPxzNnd4mvx/uOF/kBXo6/Bfw4pB a91NvbzI+f8AxytGL4U+EY1AaymlPq9w/wDQin7KQudHjUvj7xhN9/xTrP0F7IB+hqpJ4q8RS/6z X9Uf/evJD/Wvdh8LvBv/AECT/wCBMv8A8VVqDwB4SthhNEtj/wBdN0n/AKETR7Fhzo+dn1rVZPv6 net/vTsf61C19dv966nb6yE19NDwh4YXpoGmfjaof6U7/hFPDQ/5gGlf+Akf+FP2L7hzo+Xmmkbr I5+rU3JPU19Sf8Ip4b/6F/Sv/AOP/Cj/AIRXw3/0L+lf+Acf+FHsX3D2iPlrOKcJHXo7D6GvqP8A 4RXw3/0L+lf+AUf+FJ/wi3hr/oX9K/8AAOP/AAo9i+4e0R8xLeXKfduJl+jmpk1fUo/uajdr9JmH 9a+l/wDhFfDR/wCYBpX/AIBx/wCFNPhPwyf+YDpf4Wqf4UexfcXtEfOSeJtei/1et6kn+7dyD+tW ovHPi2E/u/E+sr7fbpcf+hV73N4H8KzghtDswP8AYTZ/LFUW+GXgwnP9j4+lzL/8VR7GQ+dHj8Xx O8bw42+J9SP+/Nu/nmr8Pxk8fwY2+IpWx/fgib+a16a/wt8HMCBprp7rcyf1Y1nS/B3wzI5ZLjUo h/dSZCB+aE0vYyDnRykPx58eRffvbSb/AK6WiD/0HFadv+0X4ui4msNImH/XGRT+j/0q/L8GNEKn ydT1BW7F9jfyUVmP8Ehkl
 PEHHYNZ/wD2dL2Uh86Nm3/aV1FcfafDdrJ6+Xcsn81NbFt+0rpjY+1e HLuP18q4V/5ha8/ufgxq6N/oup2Mq/8ATUPGf0DVnXPwk8TwLmNbO5PpFPg/+PAUvZy7BzLue12v 7Q3g2cDzodUtj38yBWH/AI6xrcs/jP4BvOBryxN/dmgkT9SuP1r5ln+Hfiy3Qu+jSkD/AJ5yI5/J WJrKm8O63bqWm0bUI1HUvbOB+eKXK10HdH2bZeN/CuoY+yeItLlP90XSBvyJzW3DPFcR74ZUlTsy MGH6V8CkFSQQQR2NS293c2j77a4lhb+9G5U/pUjPvmiviax+IXjDTgBbeJNTVR0V7hnA/Bsiuksf jv47swBLf214B/z8Wy8/iu00AfWtFfOVh+0pqcZUah4ftJh3NvM0f8w1dVp37Rnhi4IW+03UrQ+q qsij8iD+lAHsdFcRp3xe8CakB5fiC3hY/wANyrQ4/FgB+tdZZapp+pJusb+1ul9YJlcfoTQBbooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACi
 iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopCcUALRXM 618QfCfh/cNS12zjkUZMSP5j/wDfK5Neea1+0ZoNtuTSNLvL5wOHlIhTP6n9BQB7TTWYIpJIAHJJ 7V8sax8f/GOo7lsfsemxkYHkxb3H/Anz/KuB1bxVr+usTqms3t2D/DJMxX/vnp+lAH2Fq3xB8JaI SL/xBYxuOsaSiR/++Vya4bVP2iPCtpldPtNQv29QgiT82Of0r5iiikmkEcUbSOeiqMk/hW7ZeCfE d/zFpcyD1mxH+jEGmot7CbS3PSdU/aP124DLpej2NmCeGmZpmA/8dH6Vxmp/FzxzqpbzfEFxCh42 WoWED8VAP61dsvhJqUpze6hbW6n/AJ5qZD+OdtdJZfCfQoNrXVzdXLDqNwRT+AGf1rRUZvoS6kUe QXeoXuoSeZe3l
 xcv/emkLn8yaZb2txdy+XbQSzSH+GNCx/IV9B2fg7wzYD9zpFs3vKvmn82zW5F5 UKBIkVEHRVXAFaLDvqyXVXQ+fLPwN4nvgTDo9yuP+e2Iv/QyK3rT4Q+IJgrTz2VuD95WkLMPwAx+ te0ed7mk8/3NWsPEl1WebWnwXgVwbzWndO6wwBT+ZJ/lW3Z/CXwvbEmYXd2PSWbbj/vkCut8/wBS aPPPv+dUqMV0J9o+5m2ngfwrZKVi0W0f/rsvm/8AoWa2LWxsLBNlnZW1uvpFEFH6VB57ev60nn/S qULbC5jSEgHQCjzqzfO9xR59PkFzGj5/vSeePWs/7RSefRyBzGj5/vR5/uKzvtFHnj2p8ocxoed7 /rSecPWs/wA/6Unn+9HKHMaPnD1o84etZ3m+5pPNPqaOUOY0fOHrR5w9azvOPqaTzj6/rRyi5jR8 0etIZqz/ADyO9HnHHWnyj5jQ86k870rP840eefU/nRyi5jQ840hnNUPtGe/5mk88f3hRyBzGh5/0 /Ojz/XH51necPUUecPUUcocxofaKPP8Aes/zhSecKfIHMaJn9xSfaPcVnmYDvR5wP8VHKHMaHn+4 /Ojz/Qis7zvejzvejlDmNHz/AHpPPx3rOM1J531o5A5i/KIbiMrNFFIh6q6gj9ayZ/Cvhu5Rll0S w+bqY4VQ/muDVjz/AK0vnj1pOCYcxz118MvClwhEdpNbk/xRXDE/+PZFYt38H9Ocf6Hq1zEe/nRr J/LbXeCcUvnr6ipdGL6Fe0fc8ouvhBq0bH7JqFnMn/TTdGT+GCP1rDu/h74otAzHS2lVf4oXV8/Q A5/SvdPOH/16UTZ71Dw8SlVZ82XemX9gR9ssrm3z086Jk/mKgimlt5BJDI8bjoyMQR+Ir6b83IwT kelZl54f0PUNxutJs3Zur+UFY/8AAhzWbwz6MpVu547pnxI8ZaQFWz8R34VeiSyeao/B8iuz0v8A aH8WWhAv7
 XT79O5MZjb81OP0q/efDHw3dcwrc2h/6ZS7h/49muevfhHMoZrHVonPZJ4yv/jwJ/lW boTRSqxZ6RpX7SGizlV1XRr20J6tA6zKD+O013Gk/FfwRrOwQa/bQyNx5d1mE5/4EAP1r5evfh54 ksskWIuEH8VvIGz+HB/SudurK7spNl3azQP/AHZYyh/Ws3GS3Raaex95QXMF1EJbeaOaM9HjYMD+ IqWvg3T9W1HSpRLp1/dWjg53QSshz+BrudI+N/jjStqyajHfxg523kQY/wDfQw361Iz65orwbRv2 krZ9qa3oMkZzzLZyhh/3y2P516Fovxa8E64VWDW4beVjjyrsGE5+rcfkaAO3oqOKaKeJZYZEkjYZ V0bIP4ipKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooA
 KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooqrfahZaZbNcX13Bawr1kmkCKPxNAFqivLfEHx5 8I6OWjsXn1Wcdrddsf8A3239Aa8q1/4/+K9UDR6altpUJGMxL5kn/fTcfkBQB9P3d9aWEBnvLmG3 hHWSZwij8TXn2u/HHwXowZILyTU5wOEs03Ln/fOF/LNfLGp6zqetXBn1PULm8lJzunkL4+melJY6 RqGpHFnZzTDONyr8o+p6Cmk3sF7HruuftGa3dFk0XS7WxTPEk5Mz4+nAH5GvNta8d+KfEJP9p65e TISf3Qk2R8/7K4H6VqWHw21KfDXtxDbL3Vf3jfpgfrXT2Hw/0Ozw06SXb+sr4H5Lj9c1tHD1JdLG bqxR5NHFJPII4o2kc9FUZJ/Ct6w8EeIL/BWwaFD/ABXBCY/A8/pXsFpbWdhHstLWGBO4jQLn8qs+ cK3jhF9pmTrvojz2w+FTfK2o6kB6pbpn/wAeP+FdNYeAfDdltLWjXLj+Kdy2fw4X9K2vPo8/3raN CC2RDqSfUs21vZ2Ufl2ttDAn92OMKPyFT+d7is/zvf8ASjzvf9K05URcv+fSef8A5zVDz/ejzz6m i
 yC5fM/uaPP+tZ/ne5pPOPv+dFkFzQ84+lHnnvis/wA40ebRZBcvfaPTFL5+elZ/m/SgS+wosguX zOe+KQz+/wCVUfN9h+dJ5p9cUWQXZf8APP8Aeo84+tZ/mn1/SjzT6/pRZAaHnH1FIZ/cfhVDzfpR 5xo0AvGb3pPO96o+afWjzT60aAXvO9zR5w9aoebjuaPN/wBo0aAXvNHrS+d7mqHmk96DL709ALxm 9zSebVHzP85o8z3o0Av+d7mkM31/GqXmn1pPN96ALvm+1Hm89Ko+Z70vmCgC75vNL5tUfMHrSeYK ALxmFJ53uKpeYKPMouIuiUGl832qjvFG+i4y75ho80+lUvM96TzPrRcC6ZT7Ued9Kp+Z70eZRcRc 876UecKp+ZSebzRcC753+c0ed9Kp+Z6ijzKQF3zfpR5o6VS3+9KJB607gXhIKPMHrVHzOetOEp6Z oAu+b7mlEvo1UvNNKJaNBl4Sn1p3mmqAlpfNNKyC5fEreopJGSaMxyxo6HqrDIP4VTE3vTvN96LB czb3wf4c1Aky6XFG396DMf8A6DgGuav/AIVWT5NhqU0R/uzoHH5jGP1ruBL604Sj3rOVGD3RSqSX U8fv/h14gs8mKGG7Qd4JOfybB/Kubu7G7sZPLu7WaBz0EqFT+tfQwkGOtEqxzxmOaNJIz1V1BB/A 1jLCrozRV31PBNJ8RazoUok0rVLuzYHOIZioP1HQ16Jof7QHi3TdseoJaapEBgmVPLk/76Xj8wa1 r/wN4f1DJ+xC3c/xW52Y/D7v6Vy2ofCyZctpuoI47RzrtP8A30M5/IVhLDTW2poqsWevaF+0H4V1 ErHqcF1pcpIG5182P/vpef0r0nSfEOj69CJdJ1O1vEP/ADxlDEfUdRXxbqPhXW9Ly1zp82wc+ZGN 6/mM4/Gsq3uZ7SZZraaSGVfuvGxVh+IrFprc0TT2PvqivkTQPjX400Iqj6guowLj93ervOP94Y
 b9 a9T8P/tFaFe7ItcsLjTpT1li/fR5/Rh+RpDPaKKydG8TaJ4hh83SNUtbxe4ikBYfVeo/EVrUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVj6 74o0Tw1befrGp29ov8KyP8zfRRyfwFeP+J/2jLeLzIPDOmNM3QXV58q/UIOT+JFAHurukSF5GVVU ZLMcACuC8S/GTwd4c3xfb/7QulyPIsv3nI9W+6Pzr5k8R+PPEviqQnVtWnliJ4gQ7Ih/wEcfnWHa 2V1eybLWCSVu4Rc4+tCVwPWfEf7QniLUd8Oi20GlwHIEhHmy4+p4H5V5dqmt6prdybjVNQubyY87 p5C2Ppnp+Fb1h4Eu5sPezpbr/cT5m/w/nXU2HhfSNPwy2omkH8c/zn8un6VtGhOW+hm6sUecWGi6 jqZH2S0kkU8b8YX8zxXU6f8ADqZ8PqF4sY/uQjcfzPA/I13IkCgADgdMGl832/WuiOHgt9TJ1ZPY ztP8J6Jp+Clmssg/jn+c/keP0rcDBQAAAB0A7VTMtHm1uko7Iyd3uXfMpPM96pebSeb71VxWLvm+ 9Hm+4ql5vvR5p9aLjsXPN96PN96p+afWk873pXCxc82jzfaqXm+9Hm+5ouFi55tHm1SMnvR5vHWi 4WLvmmk8w+9U/M96TzBRcLF7zKQyGqXmUnmD1ouFi75uO/60eb/nNUfNpfMHrRcLF3zfcfnSebjv VPzfek82i4WLnne9HnZ/iqn5tJ5oouFi75v+1R5vvVLzv84o86i4WLvmj1pPNHvVPzv85o83/OaV wsXPNHvR5vuap+b70nm+9FwsXfNHqaTzfc1T82jzT/k0XHYueb60nm/X86qeZR5tFwsW/N+v50eb 9fzqp5tBlouFi35vt+tHm1U873o833ouFi35vt+tHm+1U/N+lL5v0ouFi35vt+tHmn3qp5lG/wB6 LhYt+bR5o96p+Z70u/3ouFi35go82qnme9HmH2ouFi35p9KXzfrVPzD6UeYaLhYt+b
 R5lVfMo8w0 XCxa8wd6XzB71U8w+tLvzRcLFrzB70CQe9Vd4pd9FwsWfNHvThMKq7/elDg07isWvNFO8w1UDU4O R3ouFi15nuad5h9aqBzThJTuFi2HNKJPpVUP7mlEnvRcVi2Hpwb0qqHpwf0NO4FrzDTxLx1IqoHN KHp3FYuCXtmniQHrVMPSh8UAXA4rN1Hw7o+q5N5p8Luf+Wija/8A30MGrPmUocUmk9xptbHD6l8L rd8vpl88R7RzjcP++hyPyNchqfg7XNL3NLZNLEP+WkHzr+nI/EV7WJD65p4k9awlhoPbQ0jWktz5 4guLiznWa3mlgmTo8bFWX8RXonhz44eMdCKR3N0mqWy9Y7wZbHs45/PNdhqXh/R9YBN5ZRPIf+Wi ja//AH0Oa47U/heMM+lX30iuB/7MP8K554aa21No1ovc9e8N/H3wtq+yLVFm0m4PGZRviJ/3h0/E CvT7LULPUrZbmxuobmBvuyQuHU/iK+HtT8O6tpBP22ylRP8AnoBuQ/8AAhxTNH1/V9AuRcaTqNzZ yg8mGQqD9R0P41ztNaM0TT2Pu2ivm3wz+0Tqtnth8RafHfxD/lvb/u5fxH3T+lezeGfiR4W8WBU0 3VIxcH/l2n/dy/kev4ZpDOsooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
 KKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooprM FUsxAAGST2oAdRXm/i741eF/DJe3t5jql8vHlWrAqp/2n6flmvCPFnxh8V+Kt8P2v+z7FuPs9oSu R/tN94/y9qAPorxV8U/CvhIPHd6gtxeL0tbXEj59+y/ia8R8U/H7xHq/mQaLGmk2p4Dr88xH+8eB +A/GvKIoZrmXZEjySHsoyTXQWHhKebD3kohX+4vzN/gKqMJS2E5JbmFdXl1qFy1xd3EtxO5+aSVy zH8TWlYeGdSvsN5XkRn+OXj9OtdlYaVp+nAGCBd4/wCWjDc351f873rojh19pmTq9jG0/wAH6dbY a5LXT/7Xyr+Q/wAa6KJYoIxHDGsaDoqLgD8Kred9aTzc1vGMY7Iybb3L3m
 +9IZfeqPme1Hme1VcV i75tJ5vNUvM+lHmH2ouFi75tHne5ql5ho80+oouOxc82k833qn5h9aPNNFwsXPM9x+dG8eoqn5tJ 5vuKLisXfM96Tzfc1T8z3pPM9zSuOxc833NHmiqfmY70vmZ/iouFi15tHm+1VPM980b6LhYt+aaD L7frVPfRvFFwsW/NxR5v5/WqnmD1pPMGaLhYuGU+tJ5nvVTePUUbx6ii4FvzfpR5v0qpvo30XCxb 80e350hlqpvo8yi4WLfm+9Hne9VN/vR5g9aLhYtiX3FBl9xVTzBR5gouFi2Zfek8z3NVfM+lHmii 4Fky+5pRL71V8z60eZRcLFrzc/xUvme4/Oqu8etG8eoouBZ8z3o833NVt30pd1FwLHne9Am9/wBK r7qXNFwLHne9Hm+9V8ijIouBY8w+opd59arZFLRcCxvNG81XyaXcfWncCxvo8yq4YjvRvb1oAs+Y PSl3iq280eYaAsWd/uaXf71W3+1LvFAWLIf3o3+4qt5g96XePWi4rFndRuqvv96N3uKAsWd31o3e 9Vw59f1pd5ouFixv96cHPeq280ocHrTAtCSlD1W8wDvTt3tRcRZDCl3fWqwbFODU7gWfMPrTg5qq H96cH9/1ouFi0sg9cGnq+feqgfPcU4MKdxWLYenB8VTDY6GniTjkU7hYth6cH96qCQU8OfWi4rFo PTg+PSqoc04P707gWhJ6inrJ6HFVFenh6dxFrduUhsMD2I61z+q+CtC1TLfZvssx58y3+Xn3HQ/l WwHI7mnCT3qZRjLRoabWx5dq3w51Sz3SWLJexDsvyuPwPX8DXJSwz2c+yWOSGZD0YFWBr6BEg9cV Wv8ATbHVYvLvbaKdexYcj6HqK554WL+Fm0a7W5wXhb4x+LfDGyH7Z/aNmuB9nvMvgf7LfeH5/hXt 3hT45+F/EGyDUHbSLxuNtwcxsfZxx+eK8Y1b4aI26TSbkoe0M/I/Bv
 8AGuH1LRtQ0mXy721ki54Y jKt9D0rknSnDdG8ZxlsfdcUsc8SywyLJGwyro2QR7EVJXxN4Y8feJPCMoOk6lIkOctbyfPE3/AT/ AExXufhL9oLR9T8u28RWx0y4PHnpl4Sffuv6/Wsyj2aiq9nfWmo2qXVlcxXFu4yskThlP4irFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
 FFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFNZgqlmIAAyST0rgfGnxe8NeEA9v5/9oaiP+XW2YHaf9tui/wA/ avnnxj8VvE3jFniuLk2dgTxaWxKqR/tHq34/lQB7z4x+Nvhrwz5ltZP/AGrqC5Hl27fu0P8AtP0/ AZrwLxd8UvE/jBnju7021kTxaWxKJj37t+NcjbWk92+yCNnPcjoPqa6Gx8NxJh7x95/uKePxPeqj By2E5JHPW1ncXcmyCJpD7DgfU10Vj4VXh72XJ/55xn+ZrciWKCMJEqog6BRineYK6I0orcyc29iS 2ht7SPZbxJGv+yOv1qbzaq+YPek8zHattjMtebR5v+c1V8yk3mi47FrzqPN96q7zRvNFxWLPm+9H mmqu40mfei47FrzTR5pqpu96N3vSuFi15ho8w+tVdw9aN49aLgWfM96PNz3qtvx3pPMouBZ8w+tH me4qr5ntRv8Aai4Frf70bqq+YKPMFFwsWt/vSb8d6reZSeZ70XCxa8wf3qTePWq3memKN59qLhYt bx6ijzPeq28+lG/2ouBZ8z3NJ5nvVffRuouBY8wetL5g9arbvel3e9FwLHmD1o8wetV91G72ouBY 8z60b/eoN1G6i4E+7PcUu76VX3e9Lu96LgT5o3e1Qbvel3H1oAn3UZFQ7jRvNMCbIoyPWot9Af1o Amz70bveod9LvFAibJoyai3ijcPWgZLvNLvPvUW73pd3vRcRLvNG+osmjdRcCbf9KN9Q5pd1FwJt /tRv+tQ5FGaAJ9/vRuHrUG73pd3vQBPu9xS7qr7qXNO4WJ93tS7qr7qXf9aLgT7qNwqDf9aXefWi 4E2RRn3qLf8ASjf9KLgTZ96M1Fv9qN/tRcCbcR3o3H1qLe
 PegN707iJw/qKUSCoN/vShqLgWRJju Kd5h9Kq7qUMfWi4WLYkp273qoHIpwce9O4WLW6nB6q5pwc4ouItCT/OacJKqiT1FOD5NO4WLYcGl DYqru9qcHx3p3EWxIR9KcJPUVVEmKcJM96LhYtBsjinhyKp7venhsU7iLYf3pwb3qqJOOmacJKdw sWw9ODCqu4+tOD07isW1k/GklWKeNopokkjYcq4yD+BquH96eH/zmgDl9W+HunXoaTT3NnMf4fvR n8Oo/CuB1fwzquisTdW5MWeJo/mQ/j2/GvaA4pSQ6lWAKngg96wnh4S1WhpGrJbnjXhzxfrvhS7F xo2ozW/OWjzmN/8AeU8GvdvB37Qem3/l2nie2+wznA+1QgtEx45I6r+orhtY8C6ZqW6W2H2O4POY x8hPuv8AhXn+seGNT0Vi1xBvhzxNH8y/j6fjXJOjOG50RqRkfbtlfWupWkd1ZXMVxbyDKyROGU/i Ks18PeGvGWveEbsXGj6hJACcvETujf8A3lPBr3/wZ8fNH1jy7PxDGNLvDx54yYHP16r+PHvWJZ7F RUcM0VxCs0EiSROMq6NuDD2IqSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
 CiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKp6lqljo9jJe6jdRWttGMtLK2AK8D8dftATT+bYeEY zDHyrX8y/Of9xe31P5UAew+LfHvh/wAF2pk1W9UTkZjtYzulf6L2HueK+dfG3xr8Q+KTJaWDHStN bjy4W/eOP9p/6DFedXN1dalePcXU0tzcStlpJGLMx+taFnobyYe5Oxf7g6//AFqpRb2E2kZcUUtz LtjRpHPpW7ZeH1XD3bbj/wA81PH4mtSGGK2j2QxhF9u9Sb62jSS3M3NvYkiWOFAkaKijoFFO31Dv FJvrUgn30F/eoN1Ju96LgT76N/uKg3Um6i4FjefUUnme9QZNGTRcCYye9Jv+tRZNGTRcCXf9aN9R ZNJRcCUv70m+o6KLgSbz7Ub6jopXAk30m6mUU7gP3fWjd70yii4D93vRn3plFIB+c0UzNGaAH0U3 JoyaYDulGT6mm5NGTQA/cfWjcaZupc0AO3H2pd
 /tTN1GaAH7/al3j3qPIoyKAJN49aXcPWo80UBY k3e9LuqKigLEu6l3e1Q0ZPrQFiYNRu+tRZPrRuNAWJt3vRu96h3Gl3+1FwsTbvcUbqh3+oo3+1O4 WJt1LuqHcKN3vRcRNupd3vUO73pd3vRcCXd70u4+tQ7qN1FwJt59aXeah3UbqLgTbzS+Z7VDvo30 XAm8z2pd4qDfS7qdwJw4PejcPWoN2aXdRcCfPvRn3qDIoyPWi4FjJoyagz70u4+pouBNuo3VDuPr S7zQBLml3VDvPoKXzD6UwJd3vS7veofM9qXePegRLu96N30qLePWl3r60ATBzSh6gyPUU4NxRcCc OKcHqvupQ2O9FwLIb3pwc+uaqhz2NP8AM+lO4FjzD6Uok9agD4+lO3U7iLAenByKrbqduPrQBZEn 4U8PnvVTeaeGB74pisWg2KeH96qBz604Se1FwsWw1OD1VD+9PD4p3FYshqeHIqqH96cJPencC15g p4f0NVQ/vTg/vTuItBqcHqv5h9BTg4PtTuBZD07KupVgCDwQe9Vs+hpwb1ouI53WfAunajuls/8A Q5zz8o+Rj7jt+Fee6roGo6NJtu4CEz8sq8o3417MH96V1jnjaOVFdGGCrDINY1KEZarRmsaso7nm Xg/4j+IvBc6/2fdmS0zl7OfLRN9B/CfcV9F+CPjF4e8XCO1nkGm6m3H2edvlc/7DdD9OteH634At 7ndPpTrBJ18lvuH6HtXA3thd6ZcmG7heGUdMjr7g964p0pQ3N4zUtj70or5R8DfG3XfC/l2epltU 0xeAsjfvYx/ssev0NfR/hfxlofjCx+1aPerLgfvIW+WSP/eXt9elZlm/RRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
 RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVnazrem+HtNk1DVbyK1to+ruep9AO 59hQBo15t48+Meh+DxJZ2hXUtWHHkRt8kZ/22HT6DmvKfiD8ctS1/wA3TvDvmafppyrTZxNMOnUf dHsOea8kjiluZcIC7k5J/wAaANvxV4z1zxlffatYvGkAP7uFfljj/wB1f69azbTTZrohj8kf949/ pWhZ6VHDh5sO/p2FaPSto0+5Dl2I7W
 0t7Nf3a5bux6mrW9fWoaK1WmxmS+YKC9RUUwsSeZSeYaZR QA/zD6CjzD6UyigB+80buO9MooAfuFG73plFAyTd70bj61HRQIl3GjcaiozQBLu9qXd7VFk0ZPrQ FiXcKNwqLJo3GgLEuR60uRUW72o3e1AWJaKiyKMigLEtFR7vel3e9AWH0UzcfWlDGgLDqKbuNG72 oFYdRTd3tS7hQAtFJuFG4etAC0UZFGaACiiigAozRRQAZpc0lFAC5+tGTSUUALmjdSUUAOzRuptF ADs0ZFNooAdkUuaZRQA+imUZoAfRn3puaMmmA/Jo3GmZNGTQA/caN1M3UuaAH7qN1MzRmgCTcKNw qPNGRQBLu96M1HmjNAWJd3vRu96ioyfWgLEu49qXccVDk0uTQFiXeaXfUO40u6i4WJd9LvqHdRup hYm3CjcKi3CjcKLhYmyKMiodwpc0XETBsd6cHI96r596UP70XAs+ZTg+e9Vt9ODD1p3AsBqcGxVY N6GnBz3ouBZDmnCT1zVYOKeDTuIsB896cGBqtml3H1p3AtBvenB+OlVg59acslFxFkOKeGOOCarb qUHNO4FoOe9PDj1/OqgcjvTg4707hYtBs1IGNVA47Gnh6BWLQenB6qh/wp4encRaD+hp4k9eaqB6 eH96dwLYcGnA+hqqHpwancRaDmob2ztNStjBeQJLGezDkfQ9qBJTg4NG4Hn2ueBLi13T6YWnh6mI /fX6etc1p2pahoeopd2FzNaXcR4eM7WHsf8AA17VurG1rw1p+toWkXyrntMg5/H1rmqYdPWBtGr0 kdd4C+Plre+Xp/i0Ja3HRb5BiNv98fw/Xp9K9uimiuIVmhkSSJxlXRtwYeoIr4b1jw9faLJ+/TfC T8syfdP+FdF4F+KOu+B5lihlN3phPz2czEqPdD/Cf0rjaadmbpp6o+xqK5bwb4+0PxvYibTLnbcK oMtpKQJIz9O49xXU0hhRRRQAUU
 UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVHLLHBE 0ssixxoMs7tgKPUmvBPiR8dv9bpPhCT1WXUf6Rj/ANm/KgDv/iB8V9G8EQtbqVvdXK/JaRt9z0Ln +Ee3Wvl/xV4x1rxjqRvNXu
 2kx/q4V4jiHoq/1rHLT3tyzszzTSHLMxLFj6k1q2mmpDh5cO/p2FVG LYm0ilaabJPh5MpH+prZhijgTZGu0fzp9FbxikZOTYuRRmkoqhDs+9GTTaKAHZNGabRmgB+40bva mZozQA/NGRTM0uaAHZFGRTc0ZoAfn3opmfrRkUAPopmRS596LjHUU3PvRk0XAdRTcml3fSi4C0Um 72ozQAtFJkUZFAC0UmRS596YBRRRQAUUUUALRk0lFAC5NGTSUUALuNLuptFADt3tRkU2igB24Uu7 3plFAD93vS7j61HRQIk3Gl3GoqWgCTd7Ubvao8mjJ9aAsS7hRuFRZPrRuNAWJdw9aXI9ai3Ubvag LEuR60VFkUbhQFiWio93vRu96AsSUUzefWjcfWgLD6KbuNG40BYdRTd3tS7hQIWik3CjcPWgBaKM j1oyKACiiigAooooAM0tJRRcBcmjJpKKAFyaN1JRQAuaXNNooAdmjIptFADsijIptFAD8+9GfemU Zp3AkDGl3+1RUoNAEob0p4eoQ3vS7j60AT7xShvQ1CGzSg07hYnDkd808P61X3Y7U4Nmi4iwG96X dUGaUMaYFgNinB6gVweCadux3p3EWBIKcH96rBqcGNFwLII9acGIquHx2pwcU7gWA/tUit6VWDA0 ob0NMRbEg7inBveqgc+tSK/vTuFi0HPrTg/vVYOfXNOD560XEWg/vTw1VQcUobFMRbDkU8SetVQ+ fWnhwe9O4E8ginjaOVQ6MMFWGQa4jXvA4O+50n3Jtyf/AEE/0rsg3vTw5HepnCM1ZjjJx2PHLO91 DQ9TS5tJ57O8gbh0JVlP+e1fRHw6+Olrq5h0vxQ0dpfEhY7scRSntu/un9PpXCa1oFnrceZUEdwB 8syjkfX1Fecatol5o0+y4TMZPySr91v8+lcVSi4eh0wmpH3UrK6hlIZSMgg8EU6vlH4c/GTU/CLR adqhkv8AR84ClsyQD1
 QnqP8AZ/KvpzRNc03xFpcWo6Vdx3NtIOGQ8g9wR2PtWJZpUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABWXr3iDS/DOlS6lq12lvbRjq3Vj/dUdSfauc8ffE7RvAlqUmYX WqOuYrKNufYuf4
 V/U9q+WPFvjLWfGmqtfatclgCfKgTiOFfRR/Xqe9AHTfEb4tap41meztS9loyn 5YFPzS+7nv8ATpXA21pJctxwndjU9pp5kxJMCF7L3NaqqEUKoAA6AVpGF9WS5dhtvBHbptQc9yep qXNNorZaED6MmmUUAPzRmmZPrS5NAh+aTNNyfWjcaAH5ozTN1G72oCw/IoyKbuo3UBYdkUuaZket GRTCw+imZpaAsOoptFAWHUU3NLmgVhaKbmlzQFhc0ZpM0ZFAC5ozSZoyKAHZozSZozQAuaM0lFAC 5FGRSUUAOz70Z96bRQA7JoyfWm0ZoAfu+lGaZRmgB+fajIpmaM0APyKMim5ozQA/I9aKZmjNAD6K ZkUufegY6im596Mmi4DqKbk0u76UXAWikzRu9qAFopM0ZFAC0UmRS5FABRRn3opgFFFFABS5NJRQ AuSO9GT60lFADs0bqbRQA7d7UbqbRQA7IpdwHemUUAP3e9Lu96jooESbie9LuNRUUAS7vajd7VHk 0ZPrQFiXcKNwqLJ9aNxoCxLuHrRkHvUW40u72oCxLkUVFuoyKAsS0VHuFG73oCxJRTN3vRuPrQFh 9FN3GjcaAsOoBxTd3tS7vagQ/NGab1ooAlDU4N6GocmlDUwJgx9aeGqAMfWnBs0BYnpc1CDTg9O4 iUNin7gah3ClzTAnzShqhDkfSnBgetAE4Y+tPD1XDU4NTEWQ1KDmoA1PD5p3AmzTlb1qINTs+9O4 ifJ9TTg/rVcORUgbNFwJww7GnbjVfNPD+tO4idXNPD57VACDTgcUxFkMKjuIILuBoZ41kjbqrDg0 wN708P70AcBr/hCax3XNgGmtupTqyf4iofB/jbWfBOqLeaXPiNiPOt35jlHoR/XrXpAauW8QeEYr 0NdaeFjuOrR9Ff8AwNctWh1ibQq9JH0Z4E+Imj+O9P8AMs5BDfRj9/ZyH509x6r712FfCFlfal4f 1VLm0mms76
 3bhl+VlNfTnwy+MFl4vSLS9WMdprQGB2S4Pqvof9n8q5Tc9TooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiobm5hs7aS4uZUihjUs8jnAUDuTQBKSFBJIAHUmvEviX8cIdLM+j+FpEnvRlJb4fMkR7hP 7ze/QV
 yXxS+M1xr7y6L4dleDSwSstwDh7j6ei/zrx6ON5XCIMsaAJbm5udQvJLi4mknuJm3PI7bm Yn1NX7OwEeJJQC/YelTWtmluNx+aQ9T6VZraMLashy7BRRRWhIUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRk+tFFAC5NGT60lFAC5NGaSigBd3tS7qbRQA7dRkU2igB2RRmm0UAPoplFA D8mjNMzRk+tAh+aM03J9aMmi4D80ZpmaN3tQFh+RRkU3dRuoCw7IoyKbkUZHrTCw6lpmR60uaAsO optGTQFh1FNyaM0BYdRTc0uaAsLRn60maM0CFzRmkzRkUALmlzTcilzQAuaM0lFAC5FGRSUUALn3 pc02igB2TRk02igB+76UbqZmjNAD93tRmmZozQA/cKMim5ozQA7NLn3pmaM0APopmRRmgY+im596 Mmi4DqKbk0ZouA6ik3Gjd7UALRSZoyKAFopMijIoAWijPvRTAKKKKACjNFFAC5NGT60lFADgxFPD moqWgCUHI96Wocn1pwcnvQKxIDinZqMNnrTqBDwfQ04NUQpwOaYEoPoacGNQg4pwagLE26nA5qHN ODU7iJQcU8ODUIPvTqYEwNODVAGIp4fNAE6t708Nmq4NOBp3EWd3FKDUAanhvemBOr4p4bNQBqcD TuInBxTw3vVcOe9PDZpgTBs/Wn7qgzTg/qKBE4anhqgzTgfWmIz9b0C11qEkgR3Kj5JQP0PqK85v bG80e9EcwaKVDuR1OOnQg16wCRVbUtNttVtTBcpkfwsOqn1BrGpSU9VuaQm46M6z4V/GpbxoNC8U zhLg4S3v3OA57K57H3/OvdQQRkGvhXWNFudHudko3RMf3co6N/8AXr1z4UfGV9MMOg+JrhnsjhLe 8c5MPorHuvv2riaadmdCd9UfR9FMR1lRZEYMjAFWU5BB7in0hhRRRQAUUUUAFFFFABRRRQAUUUUA FF
 FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFRyyxwQvLK6pGilmZj gKB1JoAjvLy3sLOW7u5kgt4VLySOcBQO5r5Y+KfxXuvGV0+m6Y7waJE3C9GuCP4m9vQVJ8W/ilL4 uvX0nSpWTRYG6jj7Qw/iPt6CvMIIHuJAiD6n0oASGF55NiDnufSty2tkt0wOWPVvWlggS3j2IPq
 f Wpa3jCxm3cKKKKsQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABk+tLk+tJRQAuT RmkooAXdRu9qSigB26jIptFADsj1oyKbRQA7NLTKKAH5NGaZRk+tAh+aM03JoyaLgPzRmmZo3UAP zRkUzd7Uu6gLDsijIpuRRketAWH5opmRRmmFh9FNoyaAsOopuaM0BYdRSZpM0CsOozSZozQFhc0Z pMijIoAXNLmm5FLmgBc0ZpKKAFz9aMikooAXIpc+9NooAdn3oyabRQA7Jpd30pmaM0AP3e1GaZmj NAD8ilBzTM0bqBj6cGPc0wNmlBzTuBKrds06oKcDQKxNmlBzTAwPfmlBoESA4pwNRZpwNMCTNPDY qHNOB4oCxNketLUQNODincRIGI78U9W9aizmlBpgTg05WqAH3p4bI96AJg1SBqr5NODUxFgNTgcd DUAenhqYidX9afketQZpQaYE4YjvUitmoA4PXrS7h60wLIOKVWqAMfWpAwPegQl1awX1u1vcRh43 HINec694fm0ebeuZLVj8snp7GvSQTSTRR3MDwyorxuMFW71FSmprzKjNxG/CX4vS+G5ItB1+ZpNI Y7YZ25a1J7H1T+X0r6ailjnhSWF1kjcBldTkMD0INfEXiDw9JpMvnQgyWjHhu6H0P+Neg/CP4tP4 Zmi0LXZmfR5DiKZuTak/+yfyrhlFxdmdKaauj6gopkciSxLLG6vG4DKynIYHoQafUjCiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
 KKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr50+N/xO +2zTeFNFuM20Z230yHiRh/yzB9B39+K7v4y/EP8A4RHQf7N0+XGr36FUI6wx9C/17D/61fK8MT3U +3JJJyzH+dADYIHnkCIPqfSt2CBLeMIg+p9aWKJIYwiDAH60+t4xsZt3CiiirEFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABk+tLk0lFAC5PrRuNJRQAu6jd7UlFADt1G6m0UAOyPWjI ptFADs0tMooAfRTKMn1oEPzS5pmTRk+tFwHZpc0zJozQA/NGRTN3tS7qAsOzRkU3dRkUBYfmjNMy KM0wsPozTaKAsSBjSg1GDmlzQIkp26ogxp2aLjJg4I5604NmoKcGpisTZxTg3vUQcU4HNAiTcacG zUQNOzTAlBpwf1qAHFPBoCxMDmnA4qHJHenBs07iJw4NOqEGnByPpTAlBxTwTUQbNOBxTETBqeG4 qANTw2KYEwNOzUQYetOzTuIlD4608HPIqEGlDEUAWFfHWngjsarh808HFMRLJHHPE0UqB0cYZW6E V514h0B9Im82IF7Rz8rd1Poa9DDjvTZoYrqB4ZkDxuMEHvUVKamioycWWfg58WG0KWHw5rs5bTHb bbTuf+Pcn+E/7B/SvpZWV1DKQykZBB4Ir4Z13RJNIuuMtbuf3b/0PvXs3wW+K2xofCuvz/Kflsbq Q9P+mbH+R/CuCScXZnSndXR9BUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
 FFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFZuva1Z+HdDu9Wvn2W9tGXb1b0A9ycD8a0q+cP2gvGn2zU4fCtnL+4t cS3ZU/ekP3V/Ac/U+1AHk/ifxDe+K/EV3rF6xM1w/wAqZyEXoqj2AqWzthbw8j525Y1S0233yeaw +Venua1q1px6kSfQKKKK1JCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKADJ9acDmm0U ASZpc1Hk0oagViQMRTgc1HmlBpgSU4N+dRhvWlzzQBMHB+tOBzUFPDfnTFYlpQc0wMD35paBEgOK cDUQNOBpgShiKeGzUANPBoCxMDTw56GoAxFPBzTuInBzTt1QBsU8PntTAmV
 qeGFQA04NTEWA1OzU AYVIGBpiJKerVEDS07gT05WxUAYipA2aAC7tINQtHt503I4/I+orzTVNNn0i+MTk9d0cg43D1r00 MR3qnq2nQ6tZNBIAGHKP3U1nVp8603KhLlZ6b8GPigPEdmnh/WJh/atuuIZWP/Hwg/8AZh+tew18 HK19oWrJLFI9veW0gZJEPKkdCDX1x8MfiDb+O/D4eQomq2wC3cI457OB6H9K4WrHSdzRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
 FFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAY/inX4PDHhnUNZuMFbW Euqk/fboq/icCviO9vLnV9TnvLlzJc3MrSOx7sxya95/aN8SlINN8NQycyf6XcAHsMhAfx3H8BXh emQ7pTKRwnT600ruwm7GlDEIYljXsPzqSiiukzCiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKAFBpwNMpQaAJKUGmA06mIeD60tMBpwPY0ALT1amUtMCYHNLUQb86kBz QIXNOz70ylBoESBqeGqIHNOBpgSh6fUI5pytTuImD4p+4HvUQOaAaYE4NOBqJW9adTETq1PBzVcH NOBoAnBxTgfeog1Oz6UxEoc1IDnkVADmnBiKYGV4i0YanbebEv8ApUY+XH8Q9K5rwn4n1Dwb4it9 VsWIeJsSxN0kT+JTXeh89a5HxVo2xjqNuvyn/XKOx/vVz1qd/eRrTl0Z9e+G/EFj4p0G11fTpA8E 65xnlG7qfcGtavkv4P8AxDbwdr4sr6X/AIk98wWXPSF+gcfyPt9K+slZXRXRgysMgg5BFcpsOooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
 ooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorE8X6t/Yfg/V9TyQ1taSO hH97bhf1xQB8kfEvXj4j+IOr3wctCJjDD7Inyj88Z/GqFlF5VqgPUjcfxrGiQzXCqTks3JNdDWtN dSJBRRRWpIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTkU u6oByxAFNrX8MWf2/wAS2EGMgyhmHsOT/KkwPWbbwPoP2GB
 JtOjMojXewJBJxz3qOT4d+HJOlpIn +7Ka6qiufmZpZHFyfDHQm+490n0kz/MVUk+FWnNny9QuV9MqDXf0U+ZhZHm0nwnXnytVP/Aov/r1 Uk+FF8P9XqVu3+8hFeqUU+eQuVHkEnwv1tfuTWr/APAyP6VUk+HPiKPpbwv/ALsor2qij2jDlR4V J4H8Rx5zpkjf7rA/1rOuNC1a1P7/AE66T6xGvoain7RhynzW8ckZw6Mp/wBoYptfSElrbzDEsETj /aQGs+fwxodznzdLtiT3CY/lT9oLlPn+ivbZ/h74cnzi0ePP/POQis2f4WaS/wDqbu6i+uG/pT9o hcrPJKK9In+E8g/499UU+0kZ/oazZ/hhrcefKltZfo5GfzFVzxCzOJoro5/AniODOdOZ8d42Df1r Nn0HV7bPnabdJjrmI07oVmZ1FOeN4m2yIyn0YYptMAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBQacDTKUHFAEmaA aaDTqZI8GlqMH8qcD+VAx1PVvzplFMCYHNLUQP51IDke9BI4GnUylFAEgNO61GDmlBpjJQ2KkBzU Oc05WxTJJKkVqiBzS0wJqcDUatTqBEgNSA1CDmnA0wJqcDmolan0xD6VgskbRyAMjDBB7img5paY Hnut6U2l3xQAmF/mjb29K+gvgT8QTq+m/wDCL6lMWvbNM2rseZYh/D9V/l9K8z1XT01OweBsBx8y Nj7rVwunahfeHdbgvrVzDeWcodT6Edj7dvxriqw5XpsdEJXR930VgeDfFNp4x8MWmsWpA81dssee Y5B95f8APat+siwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
 KACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvMvjzqBsvh fdRK203dxFB9Rnef/QK9NrxD9pO4K+G9Etc8SXbyY/3Ux/7PQB8+aYm67z/dUn+lbNZmkr/rW+gr TreGxnLcKKKKsQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BXcfDCy8/wAQTXJHywRHB9zxXD1o6XrupaKZDp9
 y0PmY3gAHOPrSkrqwLc+haK8Ti+IniOPGbuN/ 96Jatx/E/XUxvS1fjvGR/I1j7Nl8yPYaK8pj+K2oLjzNPtm+jMKtR/Fg/wDLXSh77Zf/AK1HJIOZ HplFefx/FawP+s065X6Opq3H8T9Db78V2n1jB/rS5WO6O1ork0+I3hx+txMn+9CatJ468Nvj/iZI vP8AEjD+lLlYXR0VFZEHijQrn/Varak+hkx/OtGO7tpv9VcRP/uuDSsMmooooAKKKKACiiigAoor nvFPiy18OWuDiW8cfu4Qf1PoKaVwJPE2paNpNgZtShhmZh+7iKAs59s/zrxDUbxb++luEtobZWPy xRDCqP8APenanql5rF693eymSVvyUegHYVTraMbGbdwoooqxBRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACg4pwNMp QcUASUA/lTQacDmmSOB/KnVHnFOBoGOpytTaKYEwOR70tRA9qkBzxQIcDTgc0ygHFAiQGn5zUQOa cDTGSg4p4OaiB/OlU4pkktPVvyqMHNLTAmpwNRK35U+gRIDTwaiBpwNMCalBqMGn0xD65bxXpeQN QiXkcSgD8jXTg0kkaTRPHIoZGGCD3FKcVJWKi7O5H8FfHX/CK+KRp15Lt0zUmEb56RydFf8Aofr7 V9YV8G6nYtp1/JbnOAcofVe1fVXwa8b/APCW+EEtrqUNqenAQz5PLr/C/wCIGD7iuBqzszp3PSKK KKQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV4F+0y+I/DCdibo/l5X+Ne+14J+ 0xETa+Gpeyvcr+Yj/wAKAPEtKH7hz/tf0q/WfpJzDIPRs1oV0Q2M3uFFFFUIKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKje4hj+9Kg/GoG1G2Xoxb6CldILMt0VnNqyfwRMfqcVC2qzH7qIv5mp 50PlZr0VhtqFy3/LTH0ApoN3OflMz+wyaOe+yDltubpIHUgfU1G1zAvWVP8AvqspdNvpDxbyf8C4 /nUyaHesfmVE/wB5v8KtQqy2iyHOmt5
 IuG/tl/5aj8AajOp246bz9BTV8PTk/NNGPpk1MPDo/iuT +Cf/AF6tYfEP7JDxFFfaIDqsXaNz9cUw6sO0P/j3/wBatBfD9sB80spPsQP6VIuhWS9RI31b/CrW DxD7EPF0V3Mg6s/aJfxNNOqzdkj/AF/xrdGj2A/5Yf8Ajx/xp66ZZL0tk/Hmq+oVuskT9dpdmc8d Un7bB+FNOpXPqv5V04srQf8ALtD/AN+xSi1tx0t4v++BVf2fU/nF9eh/Kct/aNz/AHx/3yKT+0Lr /np/46K6wQQjpEg+iinCNB0Rfyp/2fL+cX1+P8pyP9oXX/PX/wAdH+FH9oXX/PX/AMdH+FdfgDtR gHsKP7Of8/4f8EX19fynIf2hdf8APT/x0VJFqd8HAilbcTgBRyfyrrYbQ3UyQwweZI5wqhckmvUP Cnge10nZe3sMUl91UbQRF9Pf3rCvhvYq7mb0cQ6rsomZ4B8L65CkWpa3f3KfxRWYkPHu/wDhXolF FcN7nWFFFFABRRXF+L/GI0+KWw0yUG9I2tKBuEX+Jq6dOVR8sVcidSMFeTHeNPH1l4ZjNpE6y6i6 8IORGPVv8K8ZutaGoXUlzc3RkmkOWZ85NMudEmuppJ5b1pZnO5mkXJY+5zVVvD9yPuyxEe5I/pXR 9Vrx+yY/WaMvtFpbmBukqf8AfVSAg9CD9DWU2i3y9Ilb6OP61C1heRt/x7y5/wBlc/yqXGrHeLKU 6b2kjcorA8y5hOC8qexyKeuoXK/8tM/UCo9p3NOXsblFZC6rMPvIjfTIrp/DGg6t4olH2WzaO3Bw 9zIcIv8Aj9BT54i5WZ9bmk+Eda1kBra0ZYj/AMtZflX9eteo6F4D0nRgskiC7uR/y0lXgH2WupAA AAGAOgqXU7DUe55xp/wqiChtRv3Zu6QLgfma3rf4e+HLfGbR5T6ySE/4V1NFQ5NlWRkReFtChA2a Va/jGD/OpxoOkAYGmWmP+uK/4Vo
 UUrsdjJl8L6FMCJNKtD7iMD+VZtz8PvDlznFm0J9YpCP8RXUU UXYrI83vfhTGcmx1Jl9FmTP6iuV1TwNrulgu1p58Q/5aQHdj8Ov6V7lRVKbE4o+amVkYqwKkdQR0 pK9/1fwxpOtoReWi+YeksY2uPx/xry3xJ4C1DRA9xbZu7Icl1HzoP9of1rSM0yXFo5KiiirEFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAA4p4PcUygHFAEoOaM4poP cUoNMkeDTqjzTgaBjqcGptFMCYHPFLUQNSBvWgVhacDmm0UCJAcU8HNRA5pwOKYEgOKkBzUINOBx TES09WqMHIpaYE3WnA1ErYp/WgCQHFPBqIGnA4piJgc0oPrUYNPBzTEYPiuw8+yW7QfPD97HdT/g f61D8NvF8ngvxja6gWb7HIfJu0B4aMnk/UHBH0ro2VZI2jcZVhgg9xXnWp2LadfyW7ZIByjHuvau avHXmNqctLH3fFIk0SSxuHjdQysDwQeQafXk/wAB/GH9veEjo11JuvdKwi5PLQn7p/DkfgK9YrnN QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAoo
 ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK8X/aQtDJ4P0q7AyIb7YT6Bkb/AOJr 2ivPfjZpp1H4WaoVGXtjHcD/AICwz/46TQB8qaS3zyr6gGtSsTTn2Xi+jAitut4PQzluFFFFWIKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiimvIkYy7qv1NADqKpyalAnCkufYVWk1WQ/6tFUe/NS5pDszVpjyxx/fdV+prEa5uJjg yMc9l/8ArVJHpt5NyIWA9W4/nSTlLSKuJ8sfidi++pW6ZwS30FVn1Y9EiH1JqeLQJD/rZlX2UZ/w q5HodomC++Q+7YH6VvHC15dLGMsTRj1uYr6jcv8AxhR/simBbq5+6ssn0BNdTHZW0ONkEYI77efz qeto5e38UjGWOS+GJy8ej3smMxBQe7MKtR+HpT/rJ0X/AHRn/Ct+it44Cit9TGWNqvbQyo9AtlHz ySMfbAFWU0mxTpAD/vEmrgpa3jh6UdooxlXqy3kyNLeCI5jhjU/7KgVJRRWySWxk23uFFFFMQUUU UAFFFFABRRRQAUUUUAF
 FFFABVvTtNutVu1trSIySN19FHqTVjRdDu9cvBBbJ8o+/IR8qD/PavXdF 0O00OzEFsnzH78h+85/z2rkxOKjRVlqzqw+GdV3exS8OeFrXQYQ5AlvGHzykdPYegrfoorw5zlOX NJ6nrwhGC5YhRRRUlBR0GTSO6xoXdgqgZJJ4Fea+LPGjXhew0xytv0kmHBf2HtW1GhKtK0TKrWjS jeRd8WeNgnmafpUmW+7JcKensv8AjXnZJJJJyT3Peiivdo0Y0o8sTxqtWVWV5BRRRWxkFFFFABUL 2dtJ963iOe+wZqau98E+ExNs1W/jzH1giYdf9o/0rGvUhThzTNaMJzlyxM3wv8MLK88u/wBVtikP 3kg3EF/97nge1epwW8NrAkFvEkUSDCogwAPpUnSivn6k+eXNax7cIckbXuFFFFQWFFFNkkSJC8jq iDqzHAFADqK5698baHZsV+0mZx2hXd+vSsW4+JttHn7Ppk0oH96QLn+dbLD1WrqLMnXpJ2ckd3RX mp+LsUJ/0jQL1VHVkdWxWjY/FjwxeMFlmntWP/PaPgfiM1nKMou0lY0UlLVM7miqOn6xpurJvsL6 C4Hfy3BI/DrV6pGFFFFAHB+K/h9BqCve6Sqw3XVoRwkn09DXlM8EtrO8E8bRyocMjDBBr6Srl/F/ g+DxDbGaELHqEY+SToH/ANlv8a0jO2jJcex4jRUtzbTWdzJb3EbRzRttZWHINRVsQFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAA4pwNNooAkBzS0wGnA5piHg06o6c DQA6nA9jTaKYEwPY0tQg1IrZ4NAh1OBptFAiQHFPBqIGnA4pjJAcVIDmoQacDimSS09WxUYOaWmB MDmlBqJWxUgOaAJAcU8NUINOBxTETA5rB8U2JuLJbpBl4T83+6f8/wA63AaHRZY2RxlWBBB7ilKP MrAnZ3Od+G3itvB
 /jax1FnItHbyboesTcE/hwfwr7PVldQykMrDIIOQRXwXfWrWd7Lbt1RsA+o7f pX1h8FvFP/CSeALaKaTdeacfss2TyVA+RvxXj8DXA1Y6j0aiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAqhrWmprGhX+mygFLu3eE5/2lI/rV+igD4Hljlsb14pV2ywSFWHowODW8rBlD DoRkVufGfw+
 dB+JOoFE2299i8iIXA+b73/jwauZ06XzLUKeqcVpTetiZIt0UUVsQFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUUtxFD99wD6d6VwJ aKzZdVAyIkz7tVOS7uJjgueey8VLmh8rNmS5hi+/IAfQdapy6qg4jjJ924qvDpl1Nz5ewer8VoQ6 HGOZpWY+ijArSNKtPZWM5VaUN2Zkl/cSfx7R6LxRHZXVwcpE7A/xNwPzNdHDZ28BHlxKD69T+Zqe uiGAv8cjnljf5EYcOhSnmWVVHoozV6LR7SPllaQ/7Rq/QK6oYWlHoc08TVl1GxxRxDEcaoP9kYqS koFdKSWxg3fcWiiimIWiiigQtFIKWmAUtJS0CCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABXUeDvA +oeLrz90DDZIf3tyw4HsPU1q+Avhzc+Jpkvb9Xg0tT16NN7L7e9e/WFja6ZZxWlnCkMES4REGAK8 /FYxU/chv+R24fCufvT2OZ07wNBpNmtraTIiL1Ozlj6nmrR8MS9rlPxU10tFeO227s9VJJWRzB8M 3PaeL8QaafDd4OkkJ/E/4V1NFIZyR8O3w6CM/wDAqqX2nz6ZZy3d4YobeIbndpBgCul1vXNP8Paa 99qM4jiXoP4nPoB3NfPHjPxzqHi67w5MNhGf3Vup4+reprpw+GlWfZHPXxEaS8w8U+MJtYdrW0LR WIPPYye59vauVoor3adONOPLFHjznKcuaQUUUVZAUUUUAFFFFAG94T0I63qyrID9mh+eU+voPxr2 NEWNFRAFVRgAdhUfg/wNcaZ4btyXiW4nUSyg5yCeg/AYrYfQdQTpGrj/AGWFeBi6/tammyPawtL2 cNd2ZlFWZNOvIs77WUD1C5quyspwylT6EYrlOkSiiuR8Z+KTpMP2GzYfbJF+Zh/yzX/GtKdOVSSj EipUjTj
 zSLXiHxhZ6JmCPFxd4/1YPC/7x/pXmWqa7qGsSl7u4ZlzxGOFX8Kz3dpHLuxZickk8mkr 3KGFhSWmr7nj1sROq9dgooorpOcKiltYJ8+bCj+5Xn86lopNJqzGm1qjPGkxRTLNaTTW0q8q0bng /wA/1rr9D8d+INJZYr9k1S1BxljsmA9j0P41gUVzTwdGfS3odEMXVj1ue56RrNnrVmLmzk3DoyNw yH0Iq/XhWlatd6NerdWkm1h95T0cehFex6HrVtrmnLdQHDdJIyeUb0ry8ThXR1WqPQw+JVXR6M0q KKK5DqON8deEl1qzN/Zxj7fCvQf8tVHb6+leOEEEgggjqD2r6Vrx74m6Euj3i6xbxH7JctibaP8A Vyev0P8AOtITtoyZLscVRUUVxFN9xwT6d6lrW5AUUUUwCiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigApwOabRQBIDS0wHNOBpiHg04HNR04GgB1KDSA5opgSq3Y06oQcVIrfl QIdTgabRQIkBxTgajBpwOKYyQHFSA5qEGnA4pkktOVsVGDmnUwJgc0oNRBsVIDmgB4OKeGqIGnA4 piOZ8W2uJYbtejDy2+o5H+faur+BPib+w/HqWEr4ttUTyCPSQcofzyP+BVm6zbm70meNRlgN6/Uc 1w1tcy2d1DcwNtmhdZEYdmByD+dclZWlc3pu6PvmisnwzrUfiLwzpurxfdu4FkI9Gx8w/A5H4VrV kWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFA
 BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHjv7Qfhg6n4Ut9cgTM+mviQgcmJ+D +RwfxNfN2nzeVcgE/K/H+FfdOoWFvqmnXNhdxiS3uYmikU91YYNfEfinw/c+FvE19o9yDvtpSqsf 406qw+owaadncGXaKgtJ/tFuGJ+YcN9anroTuZBRRRTAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACioZrqGAfO4z6DrVCbVHbIiUKPU8mpckhpNmm7qi5Zgo9TVObU4kyIw XP5Cs5VuLuTgPI38qvwaM7Yadwo/uryfzojGpU+BEynCHxMpy308uRu2j0Xilh0+5uORGQp/ibit 2Cyt7fGyMbv7x5NWK6oYK+tRnNPGdIIy4NFjXBmkLH0XgVoxW0MAxFGq+4HP51J3pa7IUacPhRyz
  qzn8TClpKXvWpkFLSUtMQtFIKWmIWiiimAtFFFMQClpKWgApaSlpiClFJRQAtFFFMQUUUUAFFFFA BRRRQAUUU5EaR1RFLOxwFAySaAG16l8P/he+pGPVddiaO0+9Fbtw0nu3oP51r/D74XC28rVtfiDT cNDat0T0Le/tXrQAAAA4ry8VjfsU/v8A8j0cNhPt1PuGxRRwRLFEipGgwqqMACn0UV5R6QUUUUAF YHinxZp3hPTjc3j7pW/1UCn5pD/Qe9Z3jXx9YeE7ZolK3GpOP3cAP3fdvQV89axrN/r2oSX2oztN O/c9FHoB2FduFwbq+9LRfmceIxSp+7Hct+JfFGpeKdSa7v5OBxHEv3Ix6Af1rFoor24xUVZbHkyk 5O7CiiimIKKKKACiiigAre8GaUNa8XadZMpaNpQ0mP7q8n+VYNelfBWzE/iu6uSP+Pe2OPqxArGv PkpSl5GtGPNUSPeQAqgAYAGBS0UV84e8FNZFcYZVYehGadRQBieIG0vSdFu9SuraPZBGWwBtyew4 96+Xr68l1C+mu5jl5WLH29q9o+NerGDR7PS0bBuJPMcf7K9P1rw+vZy+lyw53uzysdUvPk7BRRRX oHCFFFFABRRRQAUUUlABW14Y119C1ZZSSbeT5Jl9R6/UVi0VE4qcXGWzKhJxfMj6BR1ljWRGDKwy pHcU6uP+H2rm90hrKVsy2pwue6Hp+XSuwr52rTdObg+h71OanBSQVR1jS7fWtIudOulzFOhUn0PY j3BwavUVmWfKuraNe6LqE9pdRMGhcqWA4Pofx61Xiv54sDduHo3Nez/EnTBFfW+oovyzDy5P94dP 0/lXnNxpdpcZJj2N/eTj/wCtXfHCOcFOmzjlilCbhURmQ6nE+BICh/MVcR1dcqwYeoqjcaHPHzCw lX06Gs8+dbSYIeN/Q8VhONSnpNG0JQn8LOgorKh1R1wJVDD1HBq/DdQzj5HGfQ9aFJMppomo
 qzY2 F1qVyttZwPNM3RVFehaJ8Lsqsus3BBPPkQnp9W/wocktxJXPNQCSABk+gq1HpeoSjMdjcuD3WJj/ AEr3jT/D2k6UoFnYQxkD7+3LH8TzWn0qHUK5T53bRtUUZbTrsD18lv8ACqstvND/AK2GSP8A3lI/ nX0lUckEUylZYkkHoyg0e0DkPm2ivdtQ8E6BqIO+wSJz/HB8h/TiuJ1j4X3cG6TSrgXCf88pPlcf Q9DVKaYnFnn9FT3dldWFw0F3BJDKvVXXBqCrEFFFFABRRRQAUUUUAFFFFABRRRQAU4HNNooAkBpa YDTgaYrDwacDmo6UGgB9KDimg5paYEob8qdUIOKerUCY+nA02igQ8HFPBqIGnA4pjJQcU9WzUQNK DimKxNTlbFRq2adTESg5pwOKiVsU8HNAEnUY7GvO72E297PDjARyB9O1ehA4rjvEkXl6sWA4kQN+ PT+lZV17ty6b1PsD4fT2l14A0Sexgighe0QmOJQqhsYbgf7Wa6avLfgFqP2z4ax27Nl7S5ki59D8 w/8AQj+VepVymwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeJ/H/wAE/wBo6TF4 osos3Nkvl3QUctFnhv8AgJ/Q+1e2VFPBFdW8tvOiyRSqUdG6MpGCKAPg+xuPIn5+43B9q3Ku/Evw RN4H8VTWiqxsJyZbOT1Q/wAP1HT8qxNOuvMj8pz8y9PcVrTl0IkupeooorUkKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAoqrPfww8A729BWZPezTnBO1f7q1DmkNRbNSe+hh43bm9FrOm1 CaXIU7F9F/xp1vps82Cw2J6t1/KtS30+3gwdu9vVq0hQq1PJGc61OHmzHgsbi45C4U/xNxWnBpMM fMpMjenQVoUV2U8LThq9WclTEzltoCKqKFRQoHYCloorqOZi0tJS0xAKWkpaAFpaSimIWlpKO9MQ tLSUtMAFLSUtMQtFJS0CClpKWmAUCiimIWiiigBaKBRQIKKKKYBRRRQAUUVp6FoGoeItRSy0+AyO 33m/hQepPYUm1FXY0m3ZFOysrnULuO1tIXmnkOFRRkk1734D+Gtt4dRL/UlS41I8qCMrD9PU+9bH g3wNp/hG0BQCa+cfvbhhz9F9BXVV42Kxjqe5Db8z1cPhFD3p7hRRRXAdoUUU1mVF
 LOQqgZJJ4AoA dXm3j34nQ6F5mm6QyT6jjDydUh/xb2rD8f8AxULGXSfD0mF5Sa8Xv6hP8fyryAksxJJJJySe9enh cFf36n3f5nn4jF292n95Lc3M95cyXFzK8s0jbndzksaioor1jzQooooEFFFFABRRRQAUUUUAFev/ AAMT97rD46LGM/nXkFetfA2dRf6vAfvNEjj8CR/WuXG/wJHThP4yPaqKKK8A9oKKKKAPAvjRcmXx hDDniG2XA9MkmvOK774woV8dyE5w1vGRXA19FhVajH0PCxH8WXqFFFFbmIUUUUAFFFFABSUGigYU UUUgOk8C3jWvii3jGStwDEQO+eR+or1/ocEYPpXhmgTtbeItNmUkFLmM8f7wr6ums7a5H72BH9yO a8fMY2mpd0epgZXg12OEorqJ/Dds+TDI8R9D8wrLuNBvYeUVZV9UPP5V553HFeNbIXvhe6wMtDiV fw6/pXjdfQGoWzPZ3FvKjLvjZSGGOorwB1KOyn+E4r1suleDj2PMx0bSUhKZLDHMm2VFdfQin0le g0noziTad0ZFzoUT5a3fYf7rcj/GtDwt4A1PxFqOwj7PZxn97c9R9F9TW3oGiza7qaWsWVT70smP urXtVjZW+nWcVraxhIoxgAd/c+9eRjYUoO0VqenhJ1ZK8noVNE0HT/D9itrYw7QB80jcu59Sa06K K4DtCiiigAooooAKKKKAKOqaNYazbGC+t1lTsTwy/Q9RXk/inwHd6GHu7Qtc2IOScfPGPcenvXs1 IVDKVYAg8EEdaqMmhNXPmqivQfHHgf7F5mq6XGfs33poFH+r9x7e3avPq3TujNqwUUUUwCiiigAo oooAKKKKACiiigApwNNooAkBpaYDTgaYrDgacDmmUoNAh9KDimg5paYyRW/Kn1CDinq2PpQKw+lB pOtFAh9PBqIGnUxkmakVqiBpaYialBxTFanUxEoOa5vxWnzWzgHkMD+ldADi
 sbxRg2EJ7iXH6Goq fCyofEet/s13mbHXrIn7ssUqj6gg/wAhXvNfN37NsxHiTWoc8NaI+Po+P/Zq+ka4zcKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDlPiD4KtfHPhibTpdqXSZktZiP8AVyY4/A9D XxxqFhe6Jqs9jeRNDd20hSRCOQRX3lXk/wAY/hl/wlmnnWtKiH9s2qfM
 gGDcRj+H/eHb8qAPni2u FuIgw4I6j0NTVgxSy2dwcqVZTtdGGPqDW3FKk0YdDkH9K3jK5m1YfRRRViCiiigAooooAKKKKACi iigAooooAKKimuYoFy7c9gOprLuNQlmyqfInt1NS5JDSbNCe9ig4J3P/AHRWZPezTnGdq/3Vogsp Z8HG1P7xrUt7OGDkLub+8acKU6nkiJ1YQ82Z1vp003L/ACL6nr+VatvZQ2+Cq5b+8etTClFd1KhC GvU46lacxwpaQUtdBgApaSlpiClpKWgQtKKaKWmIWlpKBTAdRSUtMQtFFFMBaBRRTELS0lAoELS0 lLTEFFFFMBaKKKYhaKBRQAClpKWmIKKKKACiiu38D/Du98UzLdXAe30tT80pHMnsv+NRUqRpx5pP QuEJTfLEyfCfg/UfFt/5Nqvl26H99cMPlQf1PtX0X4d8Nad4Y05bPT4tveSQ/ekPqTVvS9KstFsI 7Kwt1hgjGAqjr7k9z71drw8TipVnZaI9fD4eNJX6hRRRXKdIUUUUARXFxDaW8k9xKsUMY3O7nAUV 4R8QPiZNrjy6XpLtFpoO15Bw0/8AgvtXq3izwgfFkKW82q3VtaryYYQNrt6t6/SuKk+BloQPL1uY eu6AH+tduFdCHvVHr6HJiFWn7sFoeLUV6rcfA7U1J+zavayL23oyn+tY9x8H/FcOdkVrMB/cnHP5 4r1FiqL2kjznhqq+ycFRXSz/AA98WWwJfQ7pgOvlgP8AyJrKuNB1i0/4+NLvI/doGA/lWqqQezRm 4SW6M+inPG8bbXRlI6hhim1ZAUUUUAFFFFABRRRQAV3fwj1EWPjmGF22pdRND9T1H6iuEq1pt9Lp upW19CSJIJFkXHsc1nVhzwce5dOXJNS7H11RVXTb6HU9Ntr6AhoriNZFI9CKtV801Z2Z9AnfUKKK KAPE/jfpxTUtN1FV+SSNoWPuDkfoa8nr6Z+Ifh8+IfCF1BEga5hH
 nQ8c5XqPxGRXzMQQSCMEdjXu YCpzUrdjx8ZDlqX7hRRRXacgUUUUAFFFJSAKKKKBhSUGigC7o8Zl1uwjH8VxGP8Ax4V9cDgYr5i+ HmntqXjnTIgMqknmt9F5/wAK+nq8jMXecUengF7rYUUUV5x3kc0EU6bZY1dT2YZr5I1eMRazfRqM BbhwB/wI19dMdqk+gr5E1WTzdXvZB0adz/48a9LLt5fI4MftEp0daK6f4faEPEHjGytZE3QRnzph /sr2/PA/GvSnJRi5PoefGLk0l1O88G6GNH0VGkXFzcASSHuPQfh/Wujrpbnw3CwJtpDGeytyKxrr S7y0yZIiV/vLyK+dnNzk5Pqe7CKhFRRToooqSgrJ1vxJpfh+Ay39xtIGRGg3OfwH86w/GHjIaTmw 09la9I+d+oiH+NeWTzy3UzzTyNJK5yzMck120MHKouaTsjkrYpQfLHVnW33xtt1kK2GkSSKOjTS7 c/gAaSz+MrTsBJpcanuolIP4cVwV1pcFxlgPLf8AvKOv1FYl1YT2hyy5T+8vSs6uGnS1aujSniIV NFoz37TviXot4wS5WWzcnq43L+Yrrre5gu4Vlt5kljPRkbIr5Vt9Qlhwr/Onv1FdFoviG706YT6b dvE/8S9j9R0NZcqexrdrc+jaK47wr48tdbKWl4Ftr48KM/JJ9PQ+1djUNNblJ3EIDAggEHqD3rx/ x54Q/sa4Oo2Kf6BK3zKP+WTHt9D2r2Gobu1hvrSW1uIxJDKpV1PcU4ysxNXPm+itfxJoU3h/WJbO TLRn5oZD/Eh6fj2P0rIrdO5mFFFFMAooooAKKKKACiiigAooooAKcDTaKAJAaWmA04GmKw4GnA5p lKDQIfSg4poOaWmMkVqf1qAHFSK1ArD6UGkB4ooEPpwNRg06mMkp6tUQNOzQImrJ8R5/sscZ/eDn 061pq1ZfiNsaYB/ekA/maU/hY47nc/s45PjXUh2+wE/jvUf1
 NfTVfNX7N8e7xZq0nZLMfq4r6Vrj NwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDwv4yfCY34m8TeH7f8A 0kDfd2sY/wBYO7qPX1FfPttcvayHg7c/Mpr72rwr4t/BwXpn8Q+GYALjl7qyQcP6sg9fUU07AeMR SpNGHQ5Bp9YMM0tpMRgqQcMjDH4GtmC4S4Tch57g9RW0
 ZXM2rEtFFFWIKKKKACiiigAooqrcX0UG QDvf0Hb60m7bgWWZUUsxAA7ms241POVgH/Aj/Sqcs0104ySfRR0qzBY9Gl/75FSuaekQbjDWRWSK W5ckZOerGtGCyjiwzfO3v0FTKoUYUAAdhT66adCMdXqznqVpS0WiHCnCmilFdKOZjxThTRSirRLH CnU2nCqRLClpKWmIKWkopiFpaSlpgLRQKKYhaWkpaYAKWkpaBAKWkpaYhaKBRTELQKKKYC0UUUxA KWkFLQAUtJS0xBSikoFAC0AEkADnsKkggluZ0hhQvI5wqjua9v8AAPwxt9L8vUtaEc9996O3zuWL 3Pqf5VjXrwoxvI1pUZVXZGB4B+Fkl/5eqa/G0dr96K1PDSe7eg9q9shhit4UhhjWOJBtVFGAB7Cp KK8OtXnWleR7FKjGkrRCiiisTUKKKKACiiigAooooAKKKKACiiigCCaytbj/AF1rDJx/HGG/nWXc eEPDt1uM2iWLE9cQgfyrboql

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/bolt.png
----------------------------------------------------------------------
diff --git a/docs/images/bolt.png b/docs/images/bolt.png
deleted file mode 100644
index 7f89d17..0000000
Binary files a/docs/images/bolt.png and /dev/null differ


[16/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/theme.css
----------------------------------------------------------------------
diff --git a/docs/assets/css/theme.css b/docs/assets/css/theme.css
deleted file mode 100644
index 0063889..0000000
--- a/docs/assets/css/theme.css
+++ /dev/null
@@ -1,18 +0,0 @@
-body {
-  padding-top: 70px;
-  padding-bottom: 30px;
-}
-
-.theme-dropdown .dropdown-menu {
-  position: static;
-  display: block;
-  margin-bottom: 20px;
-}
-
-.theme-showcase > p > .btn {
-  margin: 5px 0;
-}
-
-.theme-showcase .navbar .container {
-  width: auto;
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/favicon.ico
----------------------------------------------------------------------
diff --git a/docs/assets/favicon.ico b/docs/assets/favicon.ico
deleted file mode 100644
index 82b757a..0000000
Binary files a/docs/assets/favicon.ico and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/fonts/glyphicons-halflings-regular.eot
----------------------------------------------------------------------
diff --git a/docs/assets/fonts/glyphicons-halflings-regular.eot b/docs/assets/fonts/glyphicons-halflings-regular.eot
deleted file mode 100644
index 4a4ca86..0000000
Binary files a/docs/assets/fonts/glyphicons-halflings-regular.eot and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/fonts/glyphicons-halflings-regular.svg
----------------------------------------------------------------------
diff --git a/docs/assets/fonts/glyphicons-halflings-regular.svg b/docs/assets/fonts/glyphicons-halflings-regular.svg
deleted file mode 100644
index 25691af..0000000
--- a/docs/assets/fonts/glyphicons-halflings-regular.svg
+++ /dev/null
@@ -1,229 +0,0 @@
-<?xml version="1.0" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
-<svg xmlns="http://www.w3.org/2000/svg">
-<metadata></metadata>
-<defs>
-<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
-<font-face units-per-em="1200" ascent="960" descent="-240" />
-<missing-glyph horiz-adv-x="500" />
-<glyph />
-<glyph />
-<glyph unicode="&#xd;" />
-<glyph unicode=" " />
-<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
-<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
-<glyph unicode="&#xa0;" />
-<glyph unicode="&#x2000;" horiz-adv-x="652" />
-<glyph unicode="&#x2001;" horiz-adv-x="1304" />
-<glyph unicode="&#x2002;" horiz-adv-x="652" />
-<glyph unicode="&#x2003;" horiz-adv-x="1304" />
-<glyph unicode="&#x2004;" horiz-adv-x="434" />
-<glyph unicode="&#x2005;" horiz-adv-x="326" />
-<glyph unicode="&#x2006;" horiz-adv-x="217" />
-<glyph unicode="&#x2007;" horiz-adv-x="217" />
-<glyph unicode="&#x2008;" horiz-adv-x="163" />
-<glyph unicode="&#x2009;" horiz-adv-x="260" />
-<glyph unicode="&#x200a;" horiz-adv-x="72" />
-<glyph unicode="&#x202f;" horiz-adv-x="260" />
-<glyph unicode="&#x205f;" horiz-adv-x="326" />
-<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
-<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
-<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
-<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
-<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
-<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
-<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
-<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q18 -55 86 -75.5t147 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
-<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
-<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
-<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
-<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
-<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
-<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
-<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 
 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
-<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
-<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
-<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
-<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
-<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
-<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
-<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
-<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
-<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
-<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
-<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
-<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
-<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
-<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
-<glyph unicode="&#xe028;" d="M0 25v475l200 700h800l199 -700l1 -475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
-<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
-<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
-<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
-<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
-<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
-<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
-<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
-<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
-<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
-<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
-<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
-<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
-<glyph unicode="&#xe041;" d="M0 700l1 475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
-<glyph unicode="&#xe042;" d="M1 700l1 475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
-<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
-<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
-<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
-<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
-<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
-<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v71l471 -1q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
-<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
-<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
-<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
-<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
-<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
-<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-10
 0q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
-<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
-<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
-<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
-<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
-<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
-<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 139t-64 210zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
-<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
-<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
-<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q61 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l567 567l-137 137l-430 -431l-146 147z" />
-<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
-<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
-<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
-<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
-<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
-<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
-<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
-<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
-<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
-<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
-<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
-<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
-<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
-<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM300 500h600v200h-600v-200z" />
-<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141 z" />
-<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
-<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM364 700h143q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5 q19 0 30 -10t11 -26q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-50 0 -90.5 -12t-75 -38.5t-53.5 -74.5t-19 -114zM500 300h200v100h-200 v-100z" />
-<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
-<glyph unicode="&#xe087;" d="M0 500v200h195q31 125 98.5 199.5t206.5 100.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200v-206 q149 48 201 206h-201v200h200q-25 74 -75.5 127t-124.5 77v-204h-200v203q-75 -23 -130 -77t-79 -126h209v-200h-210z" />
-<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
-<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
-<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
-<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
-<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
-<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
-<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
-<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
-<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
-<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
-<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5h-207q-21 0 -33 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
-<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111q1 1 1 6.5t-1.5 15t-3.5 17.5l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6 h-111v-100zM100 0h400v400h-400v-400zM200 900q-3 0 14 48t36 96l18 47l213 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
-<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
-<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
-<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
-<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
-<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 34 -48 36.5t-48 -29.5l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
-<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -20 -13 -28.5t-32 0.5l-94 78h-222l-94 -78q-19 -9 -32 -0.5t-13 28.5 v64q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
-<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
-<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
-<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
-<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
-<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
-<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
-<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
-<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
-<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
-<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
-<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
-<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
-<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
-<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM100 500v250v8v8v7t0.5 7t1.5 5.5t2 5t3 4t4.5 3.5t6 1.5t7.5 0.5h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35 q-55 337 -55 351zM1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
-<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h18l117 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5q-18 -36 -18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-8 -3 -23 -8.5 t-65 -20t-103 -25t-132.5 -19.5t-158.5 -9q-125 0 -245.5 20.5t-178.5 40.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
-<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
-<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q124 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 213l100 212h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
-<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q124 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
-<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
-<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 38l302 -1l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 17 -10.5t26.5 -26t16.5 -36.5v-526q0 -13 -86 -93.5t-94 -80.5h-341q-16 0 -29.5 20t-19.5 41l-130 339h-107q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l107 89v502l-343 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM1000 201v600h200v-600h-200z" />
-<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6.5v7.5v6.5v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
-<glyph unicode="&#xe130;" d="M2 585q-16 -31 6 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85q0 -51 -0.5 -153.5t-0.5 -148.5q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM77 565l236 339h503 l89 -100v-294l-340 -130q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
-<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM298 701l2 -201h300l-2 -194l402 294l-402 298v-197h-300z" />
-<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l402 -294l-2 194h300l2 201h-300v197z" />
-<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
-<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
-<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -33 5.5 -92.5t7.5 -87.5q0 -9 17 -44t16 -60 q12 0 23 -5.5t23 -15t20 -13.5q24 -12 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55t-20 -57q42 -71 87 -80q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q104 -3 221 112q30 29 47 47t34.5 49t20.5 62q-14 9 -37 9.5t-36 7.5q-14 7 -49 15t-52 19q-9 0 -39.5 -0.5 t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5t5.5 57.5 q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 39 2 44q31 -13 58 -14.5t39 3.5l11 4q7 36 -16.5 53.5t-64.5 28.5t-5
 6 23q-19 -3 -37 0 q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -45.5 0.5t-45.5 -2.5q-21 -7 -52 -26.5t-34 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -90.5t-29.5 -79.5zM518 916q3 12 16 30t16 25q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -24 17 -66.5t17 -43.5 q-9 2 -31 5t-36 5t-32 8t-30 14zM692 1003h1h-1z" />
-<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
-<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
-<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
-<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
-<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
-<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM514 609q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-14 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
-<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -78.5 -16.5t-67.5 -51.5l-389 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23 q38 0 53 -36q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60 l517 511q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
-<glyph unicode="&#xe143;" d="M80 784q0 131 98.5 229.5t230.5 98.5q143 0 241 -129q103 129 246 129q129 0 226 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100q-71 70 -104.5 105.5t-77 89.5t-61 99 t-17.5 91zM250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-105 48.5q-74 0 -132 -83l-118 -171l-114 174q-51 80 -123 80q-60 0 -109.5 -49.5t-49.5 -118.5z" />
-<glyph unicode="&#xe144;" d="M57 353q0 -95 66 -159l141 -142q68 -66 159 -66q93 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-8 9 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141q7 -7 19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -17q47 -49 77 -100l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
-<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
-<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
-<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335q-6 1 -15.5 4t-11.5 3q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5 v-307l64 -14q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5 zM700 237q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
-<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -28 16.5 -69.5t28 -62.5t41.5 -72h241v-100h-197q8 -50 -2.5 -115 t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q33 1 103 -16t103 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221z" />
-<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
-<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
-<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
-<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
-<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
-<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
-<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
-<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
-<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
-<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
-<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
-<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
-<glyph unicode="&#xe162;" d="M217 519q8 -19 31 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8h9q14 0 26 15q11 13 274.5 321.5t264.5 308.5q14 19 5 36q-8 17 -31 17l-301 -1q1 4 78 219.5t79 227.5q2 15 -5 27l-9 9h-9q-15 0 -25 -16q-4 -6 -98 -111.5t-228.5 -257t-209.5 -237.5q-16 -19 -6 -41 z" />
-<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
-<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
-<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
-<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 400l697 1l3 699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l249 -237l-1 697zM900 150h100v50h-100v-50z" />
-<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
-<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
-<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
-<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
-<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
-<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
-<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
-<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
-<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -116q-25 -17 -43.5 -51.5t-18.5 -65.5v-359z" />
-<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
-<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
-<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q17 18 13.5 41t-22.5 37l-192 136q-19 14 -45 12t-42 -19l-118 -118q-142 101 -268 227t-227 268l118 118q17 17 20 41.5t-11 44.5 l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
-<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-20 0 -35 14.5t-15 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
-<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
-<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
-<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
-<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
-<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
-<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
-<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
-<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
-<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
-<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
-<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
-<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
-<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86.5t85 207.5t-85 207t-205 86q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300h200 l-300 -300z" />
-<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104.5t60.5 178.5q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
-<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
-<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -11.5t1 -11.5q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
-</font>
-</defs></svg>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/fonts/glyphicons-halflings-regular.ttf
----------------------------------------------------------------------
diff --git a/docs/assets/fonts/glyphicons-halflings-regular.ttf b/docs/assets/fonts/glyphicons-halflings-regular.ttf
deleted file mode 100644
index 67fa00b..0000000
Binary files a/docs/assets/fonts/glyphicons-halflings-regular.ttf and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/fonts/glyphicons-halflings-regular.woff
----------------------------------------------------------------------
diff --git a/docs/assets/fonts/glyphicons-halflings-regular.woff b/docs/assets/fonts/glyphicons-halflings-regular.woff
deleted file mode 100644
index 8c54182..0000000
Binary files a/docs/assets/fonts/glyphicons-halflings-regular.woff and /dev/null differ


[08/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Tutorial.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Tutorial.md b/docs/documentation/Tutorial.md
deleted file mode 100644
index 0d44177..0000000
--- a/docs/documentation/Tutorial.md
+++ /dev/null
@@ -1,320 +0,0 @@
----
-title: Tutorial
-layout: documentation
-documentation: true
----
-In this tutorial, you'll learn how to create Storm topologies and deploy them to a Storm cluster. Java will be the main language used, but a few examples will use Python to illustrate Storm's multi-language capabilities.
-
-## Preliminaries
-
-This tutorial uses examples from the [storm-starter](https://github.com/apache/storm/blob/master/examples/storm-starter) project. It's recommended that you clone the project and follow along with the examples. Read [Setting up a development environment](Setting-up-development-environment.html) and [Creating a new Storm project](Creating-a-new-Storm-project.html) to get your machine set up.
-
-## Components of a Storm cluster
-
-A Storm cluster is superficially similar to a Hadoop cluster. Whereas on Hadoop you run "MapReduce jobs", on Storm you run "topologies". "Jobs" and "topologies" themselves are very different -- one key difference is that a MapReduce job eventually finishes, whereas a topology processes messages forever (or until you kill it).
-
-There are two kinds of nodes on a Storm cluster: the master node and the worker nodes. The master node runs a daemon called "Nimbus" that is similar to Hadoop's "JobTracker". Nimbus is responsible for distributing code around the cluster, assigning tasks to machines, and monitoring for failures.
-
-Each worker node runs a daemon called the "Supervisor". The supervisor listens for work assigned to its machine and starts and stops worker processes as necessary based on what Nimbus has assigned to it. Each worker process executes a subset of a topology; a running topology consists of many worker processes spread across many machines.
-
-![Storm cluster](images/storm-cluster.png)
-
-All coordination between Nimbus and the Supervisors is done through a [Zookeeper](http://zookeeper.apache.org/) cluster. Additionally, the Nimbus daemon and Supervisor daemons are fail-fast and stateless; all state is kept in Zookeeper or on local disk. This means you can kill -9 Nimbus or the Supervisors and they'll start back up like nothing happened. This design leads to Storm clusters being incredibly stable.
-
-## Topologies
-
-To do realtime computation on Storm, you create what are called "topologies". A topology is a graph of computation. Each node in a topology contains processing logic, and links between nodes indicate how data should be passed around between nodes.
-
-Running a topology is straightforward. First, you package all your code and dependencies into a single jar. Then, you run a command like the following:
-
-```
-storm jar all-my-code.jar backtype.storm.MyTopology arg1 arg2
-```
-
-This runs the class `backtype.storm.MyTopology` with the arguments `arg1` and `arg2`. The main function of the class defines the topology and submits it to Nimbus. The `storm jar` part takes care of connecting to Nimbus and uploading the jar.
-
-Since topology definitions are just Thrift structs, and Nimbus is a Thrift service, you can create and submit topologies using any programming language. The above example is the easiest way to do it from a JVM-based language. See [Running topologies on a production cluster](Running-topologies-on-a-production-cluster.html) for more information on starting and stopping topologies.
-
-## Streams
-
-The core abstraction in Storm is the "stream". A stream is an unbounded sequence of tuples. Storm provides the primitives for transforming a stream into a new stream in a distributed and reliable way. For example, you may transform a stream of tweets into a stream of trending topics.
-
-The basic primitives Storm provides for doing stream transformations are "spouts" and "bolts". Spouts and bolts have interfaces that you implement to run your application-specific logic.
-
-A spout is a source of streams. For example, a spout may read tuples off of a [Kestrel](http://github.com/nathanmarz/storm-kestrel) queue and emit them as a stream. Or a spout may connect to the Twitter API and emit a stream of tweets.
-
-A bolt consumes any number of input streams, does some processing, and possibly emits new streams. Complex stream transformations, like computing a stream of trending topics from a stream of tweets, require multiple steps and thus multiple bolts. Bolts can do anything from run functions, filter tuples, do streaming aggregations, do streaming joins, talk to databases, and more.
-
-Networks of spouts and bolts are packaged into a "topology" which is the top-level abstraction that you submit to Storm clusters for execution. A topology is a graph of stream transformations where each node is a spout or bolt. Edges in the graph indicate which bolts are subscribing to which streams. When a spout or bolt emits a tuple to a stream, it sends the tuple to every bolt that subscribed to that stream.
-
-![A Storm topology](images/topology.png)
-
-Links between nodes in your topology indicate how tuples should be passed around. For example, if there is a link between Spout A and Bolt B, a link from Spout A to Bolt C, and a link from Bolt B to Bolt C, then everytime Spout A emits a tuple, it will send the tuple to both Bolt B and Bolt C. All of Bolt B's output tuples will go to Bolt C as well.
-
-Each node in a Storm topology executes in parallel. In your topology, you can specify how much parallelism you want for each node, and then Storm will spawn that number of threads across the cluster to do the execution.
-
-A topology runs forever, or until you kill it. Storm will automatically reassign any failed tasks. Additionally, Storm guarantees that there will be no data loss, even if machines go down and messages are dropped.
-
-## Data model
-
-Storm uses tuples as its data model. A tuple is a named list of values, and a field in a tuple can be an object of any type. Out of the box, Storm supports all the primitive types, strings, and byte arrays as tuple field values. To use an object of another type, you just need to implement [a serializer](Serialization.html) for the type.
-
-Every node in a topology must declare the output fields for the tuples it emits. For example, this bolt declares that it emits 2-tuples with the fields "double" and "triple":
-
-```java
-public class DoubleAndTripleBolt extends BaseRichBolt {
-    private OutputCollectorBase _collector;
-
-    @Override
-    public void prepare(Map conf, TopologyContext context, OutputCollectorBase collector) {
-        _collector = collector;
-    }
-
-    @Override
-    public void execute(Tuple input) {
-        int val = input.getInteger(0);        
-        _collector.emit(input, new Values(val*2, val*3));
-        _collector.ack(input);
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("double", "triple"));
-    }    
-}
-```
-
-The `declareOutputFields` function declares the output fields `["double", "triple"]` for the component. The rest of the bolt will be explained in the upcoming sections.
-
-## A simple topology
-
-Let's take a look at a simple topology to explore the concepts more and see how the code shapes up. Let's look at the `ExclamationTopology` definition from storm-starter:
-
-```java
-TopologyBuilder builder = new TopologyBuilder();        
-builder.setSpout("words", new TestWordSpout(), 10);        
-builder.setBolt("exclaim1", new ExclamationBolt(), 3)
-        .shuffleGrouping("words");
-builder.setBolt("exclaim2", new ExclamationBolt(), 2)
-        .shuffleGrouping("exclaim1");
-```
-
-This topology contains a spout and two bolts. The spout emits words, and each bolt appends the string "!!!" to its input. The nodes are arranged in a line: the spout emits to the first bolt which then emits to the second bolt. If the spout emits the tuples ["bob"] and ["john"], then the second bolt will emit the words ["bob!!!!!!"] and ["john!!!!!!"].
-
-This code defines the nodes using the `setSpout` and `setBolt` methods. These methods take as input a user-specified id, an object containing the processing logic, and the amount of parallelism you want for the node. In this example, the spout is given id "words" and the bolts are given ids "exclaim1" and "exclaim2". 
-
-The object containing the processing logic implements the [IRichSpout](/javadoc/apidocs/backtype/storm/topology/IRichSpout.html) interface for spouts and the [IRichBolt](/javadoc/apidocs/backtype/storm/topology/IRichBolt.html) interface for bolts.
-
-The last parameter, how much parallelism you want for the node, is optional. It indicates how many threads should execute that component across the cluster. If you omit it, Storm will only allocate one thread for that node.
-
-`setBolt` returns an [InputDeclarer](/javadoc/apidocs/backtype/storm/topology/InputDeclarer.html) object that is used to define the inputs to the Bolt. Here, component "exclaim1" declares that it wants to read all the tuples emitted by component "words" using a shuffle grouping, and component "exclaim2" declares that it wants to read all the tuples emitted by component "exclaim1" using a shuffle grouping. "shuffle grouping" means that tuples should be randomly distributed from the input tasks to the bolt's tasks. There are many ways to group data between components. These will be explained in a few sections.
-
-If you wanted component "exclaim2" to read all the tuples emitted by both component "words" and component "exclaim1", you would write component "exclaim2"'s definition like this:
-
-```java
-builder.setBolt("exclaim2", new ExclamationBolt(), 5)
-            .shuffleGrouping("words")
-            .shuffleGrouping("exclaim1");
-```
-
-As you can see, input declarations can be chained to specify multiple sources for the Bolt.
-
-Let's dig into the implementations of the spouts and bolts in this topology. Spouts are responsible for emitting new messages into the topology. `TestWordSpout` in this topology emits a random word from the list ["nathan", "mike", "jackson", "golda", "bertels"] as a 1-tuple every 100ms. The implementation of `nextTuple()` in TestWordSpout looks like this:
-
-```java
-public void nextTuple() {
-    Utils.sleep(100);
-    final String[] words = new String[] {"nathan", "mike", "jackson", "golda", "bertels"};
-    final Random rand = new Random();
-    final String word = words[rand.nextInt(words.length)];
-    _collector.emit(new Values(word));
-}
-```
-
-As you can see, the implementation is very straightforward.
-
-`ExclamationBolt` appends the string "!!!" to its input. Let's take a look at the full implementation for `ExclamationBolt`:
-
-```java
-public static class ExclamationBolt implements IRichBolt {
-    OutputCollector _collector;
-
-    @Override
-    public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
-        _collector = collector;
-    }
-
-    @Override
-    public void execute(Tuple tuple) {
-        _collector.emit(tuple, new Values(tuple.getString(0) + "!!!"));
-        _collector.ack(tuple);
-    }
-
-    @Override
-    public void cleanup() {
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("word"));
-    }
-    
-    @Override
-    public Map<String, Object> getComponentConfiguration() {
-        return null;
-    }
-}
-```
-
-The `prepare` method provides the bolt with an `OutputCollector` that is used for emitting tuples from this bolt. Tuples can be emitted at anytime from the bolt -- in the `prepare`, `execute`, or `cleanup` methods, or even asynchronously in another thread. This `prepare` implementation simply saves the `OutputCollector` as an instance variable to be used later on in the `execute` method.
-
-The `execute` method receives a tuple from one of the bolt's inputs. The `ExclamationBolt` grabs the first field from the tuple and emits a new tuple with the string "!!!" appended to it. If you implement a bolt that subscribes to multiple input sources, you can find out which component the [Tuple](/javadoc/apidocs/backtype/storm/tuple/Tuple.html) came from by using the `Tuple#getSourceComponent` method.
-
-There's a few other things going on in the `execute` method, namely that the input tuple is passed as the first argument to `emit` and the input tuple is acked on the final line. These are part of Storm's reliability API for guaranteeing no data loss and will be explained later in this tutorial. 
-
-The `cleanup` method is called when a Bolt is being shutdown and should cleanup any resources that were opened. There's no guarantee that this method will be called on the cluster: for example, if the machine the task is running on blows up, there's no way to invoke the method. The `cleanup` method is intended for when you run topologies in [local mode](Local-mode.html) (where a Storm cluster is simulated in process), and you want to be able to run and kill many topologies without suffering any resource leaks.
-
-The `declareOutputFields` method declares that the `ExclamationBolt` emits 1-tuples with one field called "word".
-
-The `getComponentConfiguration` method allows you to configure various aspects of how this component runs. This is a more advanced topic that is explained further on [Configuration](Configuration.html).
-
-Methods like `cleanup` and `getComponentConfiguration` are often not needed in a bolt implementation. You can define bolts more succinctly by using a base class that provides default implementations where appropriate. `ExclamationBolt` can be written more succinctly by extending `BaseRichBolt`, like so:
-
-```java
-public static class ExclamationBolt extends BaseRichBolt {
-    OutputCollector _collector;
-
-    @Override
-    public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
-        _collector = collector;
-    }
-
-    @Override
-    public void execute(Tuple tuple) {
-        _collector.emit(tuple, new Values(tuple.getString(0) + "!!!"));
-        _collector.ack(tuple);
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("word"));
-    }    
-}
-```
-
-## Running ExclamationTopology in local mode
-
-Let's see how to run the `ExclamationTopology` in local mode and see that it's working.
-
-Storm has two modes of operation: local mode and distributed mode. In local mode, Storm executes completely in process by simulating worker nodes with threads. Local mode is useful for testing and development of topologies. When you run the topologies in storm-starter, they'll run in local mode and you'll be able to see what messages each component is emitting. You can read more about running topologies in local mode on [Local mode](Local-mode.html).
-
-In distributed mode, Storm operates as a cluster of machines. When you submit a topology to the master, you also submit all the code necessary to run the topology. The master will take care of distributing your code and allocating workers to run your topology. If workers go down, the master will reassign them somewhere else. You can read more about running topologies on a cluster on [Running topologies on a production cluster](Running-topologies-on-a-production-cluster.html)]. 
-
-Here's the code that runs `ExclamationTopology` in local mode:
-
-```java
-Config conf = new Config();
-conf.setDebug(true);
-conf.setNumWorkers(2);
-
-LocalCluster cluster = new LocalCluster();
-cluster.submitTopology("test", conf, builder.createTopology());
-Utils.sleep(10000);
-cluster.killTopology("test");
-cluster.shutdown();
-```
-
-First, the code defines an in-process cluster by creating a `LocalCluster` object. Submitting topologies to this virtual cluster is identical to submitting topologies to distributed clusters. It submits a topology to the `LocalCluster` by calling `submitTopology`, which takes as arguments a name for the running topology, a configuration for the topology, and then the topology itself.
-
-The name is used to identify the topology so that you can kill it later on. A topology will run indefinitely until you kill it.
-
-The configuration is used to tune various aspects of the running topology. The two configurations specified here are very common:
-
-1. **TOPOLOGY_WORKERS** (set with `setNumWorkers`) specifies how many _processes_ you want allocated around the cluster to execute the topology. Each component in the topology will execute as many _threads_. The number of threads allocated to a given component is configured through the `setBolt` and `setSpout` methods. Those _threads_ exist within worker _processes_. Each worker _process_ contains within it some number of _threads_ for some number of components. For instance, you may have 300 threads specified across all your components and 50 worker processes specified in your config. Each worker process will execute 6 threads, each of which of could belong to a different component. You tune the performance of Storm topologies by tweaking the parallelism for each component and the number of worker processes those threads should run within.
-2. **TOPOLOGY_DEBUG** (set with `setDebug`), when set to true, tells Storm to log every message every emitted by a component. This is useful in local mode when testing topologies, but you probably want to keep this turned off when running topologies on the cluster.
-
-There's many other configurations you can set for the topology. The various configurations are detailed on [the Javadoc for Config](/javadoc/apidocs/backtype/storm/Config.html).
-
-To learn about how to set up your development environment so that you can run topologies in local mode (such as in Eclipse), see [Creating a new Storm project](Creating-a-new-Storm-project.html).
-
-## Stream groupings
-
-A stream grouping tells a topology how to send tuples between two components. Remember, spouts and bolts execute in parallel as many tasks across the cluster. If you look at how a topology is executing at the task level, it looks something like this:
-
-![Tasks in a topology](images/topology-tasks.png)
-
-When a task for Bolt A emits a tuple to Bolt B, which task should it send the tuple to?
-
-A "stream grouping" answers this question by telling Storm how to send tuples between sets of tasks. Before we dig into the different kinds of stream groupings, let's take a look at another topology from [storm-starter](http://github.com/apache/storm/blob/master/examples/storm-starter). This [WordCountTopology](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/WordCountTopology.java) reads sentences off of a spout and streams out of `WordCountBolt` the total number of times it has seen that word before:
-
-```java
-TopologyBuilder builder = new TopologyBuilder();
-        
-builder.setSpout("sentences", new RandomSentenceSpout(), 5);        
-builder.setBolt("split", new SplitSentence(), 8)
-        .shuffleGrouping("sentences");
-builder.setBolt("count", new WordCount(), 12)
-        .fieldsGrouping("split", new Fields("word"));
-```
-
-`SplitSentence` emits a tuple for each word in each sentence it receives, and `WordCount` keeps a map in memory from word to count. Each time `WordCount` receives a word, it updates its state and emits the new word count.
-
-There's a few different kinds of stream groupings.
-
-The simplest kind of grouping is called a "shuffle grouping" which sends the tuple to a random task. A shuffle grouping is used in the `WordCountTopology` to send tuples from `RandomSentenceSpout` to the `SplitSentence` bolt. It has the effect of evenly distributing the work of processing the tuples across all of `SplitSentence` bolt's tasks.
-
-A more interesting kind of grouping is the "fields grouping". A fields grouping is used between the `SplitSentence` bolt and the `WordCount` bolt. It is critical for the functioning of the `WordCount` bolt that the same word always go to the same task. Otherwise, more than one task will see the same word, and they'll each emit incorrect values for the count since each has incomplete information. A fields grouping lets you group a stream by a subset of its fields. This causes equal values for that subset of fields to go to the same task. Since `WordCount` subscribes to `SplitSentence`'s output stream using a fields grouping on the "word" field, the same word always goes to the same task and the bolt produces the correct output.
-
-Fields groupings are the basis of implementing streaming joins and streaming aggregations as well as a plethora of other use cases. Underneath the hood, fields groupings are implemented using mod hashing.
-
-There's a few other kinds of stream groupings. You can read more about them on [Concepts](Concepts.html). 
-
-## Defining Bolts in other languages
-
-Bolts can be defined in any language. Bolts written in another language are executed as subprocesses, and Storm communicates with those subprocesses with JSON messages over stdin/stdout. The communication protocol just requires an ~100 line adapter library, and Storm ships with adapter libraries for Ruby, Python, and Fancy. 
-
-Here's the definition of the `SplitSentence` bolt from `WordCountTopology`:
-
-```java
-public static class SplitSentence extends ShellBolt implements IRichBolt {
-    public SplitSentence() {
-        super("python", "splitsentence.py");
-    }
-
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("word"));
-    }
-}
-```
-
-`SplitSentence` overrides `ShellBolt` and declares it as running using `python` with the arguments `splitsentence.py`. Here's the implementation of `splitsentence.py`:
-
-```python
-import storm
-
-class SplitSentenceBolt(storm.BasicBolt):
-    def process(self, tup):
-        words = tup.values[0].split(" ")
-        for word in words:
-          storm.emit([word])
-
-SplitSentenceBolt().run()
-```
-
-For more information on writing spouts and bolts in other languages, and to learn about how to create topologies in other languages (and avoid the JVM completely), see [Using non-JVM languages with Storm](Using-non-JVM-languages-with-Storm.html).
-
-## Guaranteeing message processing
-
-Earlier on in this tutorial, we skipped over a few aspects of how tuples are emitted. Those aspects were part of Storm's reliability API: how Storm guarantees that every message coming off a spout will be fully processed. See [Guaranteeing message processing](Guaranteeing-message-processing.html) for information on how this works and what you have to do as a user to take advantage of Storm's reliability capabilities.
-
-## Transactional topologies
-
-Storm guarantees that every message will be played through the topology at least once. A common question asked is "how do you do things like counting on top of Storm? Won't you overcount?" Storm has a feature called transactional topologies that let you achieve exactly-once messaging semantics for most computations. Read more about transactional topologies [here](Transactional-topologies.html). 
-
-## Distributed RPC
-
-This tutorial showed how to do basic stream processing on top of Storm. There's lots more things you can do with Storm's primitives. One of the most interesting applications of Storm is Distributed RPC, where you parallelize the computation of intense functions on the fly. Read more about Distributed RPC [here](Distributed-RPC.html). 
-
-## Conclusion
-
-This tutorial gave a broad overview of developing, testing, and deploying Storm topologies. The rest of the documentation dives deeper into all the aspects of using Storm.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Understanding-the-parallelism-of-a-Storm-topology.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Understanding-the-parallelism-of-a-Storm-topology.md b/docs/documentation/Understanding-the-parallelism-of-a-Storm-topology.md
deleted file mode 100644
index 9b1e006..0000000
--- a/docs/documentation/Understanding-the-parallelism-of-a-Storm-topology.md
+++ /dev/null
@@ -1,122 +0,0 @@
----
-title: Understanding the Parallelism of a Storm Topology
-layout: documentation
-documentation: true
----
-## What makes a running topology: worker processes, executors and tasks
-
-Storm distinguishes between the following three main entities that are used to actually run a topology in a Storm cluster:
-
-1. Worker processes
-2. Executors (threads)
-3. Tasks
-
-Here is a simple illustration of their relationships:
-
-![The relationships of worker processes, executors (threads) and tasks in Storm](images/relationships-worker-processes-executors-tasks.png)
-
-A _worker process_ executes a subset of a topology. A worker process belongs to a specific topology and may run one or more executors for one or more components (spouts or bolts) of this topology. A running topology consists of many such processes running on many machines within a Storm cluster.
-
-An _executor_ is a thread that is spawned by a worker process. It may run one or more tasks for the same component (spout or bolt).
-
-A _task_ performs the actual data processing — each spout or bolt that you implement in your code executes as many tasks across the cluster. The number of tasks for a component is always the same throughout the lifetime of a topology, but the number of executors (threads) for a component can change over time. This means that the following condition holds true: ``#threads ≤ #tasks``. By default, the number of tasks is set to be the same as the number of executors, i.e. Storm will run one task per thread.
-
-## Configuring the parallelism of a topology
-
-Note that in Storm’s terminology "parallelism" is specifically used to describe the so-called _parallelism hint_, which means the initial number of executor (threads) of a component. In this document though we use the term "parallelism" in a more general sense to describe how you can configure not only the number of executors but also the number of worker processes and the number of tasks of a Storm topology. We will specifically call out when "parallelism" is used in the normal, narrow definition of Storm.
-
-The following sections give an overview of the various configuration options and how to set them in your code. There is more than one way of setting these options though, and the table lists only some of them. Storm currently has the following [order of precedence for configuration settings](Configuration.html): ``defaults.yaml`` < ``storm.yaml`` < topology-specific configuration < internal component-specific configuration < external component-specific configuration.
-
-### Number of worker processes
-
-* Description: How many worker processes to create _for the topology_ across machines in the cluster.
-* Configuration option: [TOPOLOGY_WORKERS](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_WORKERS)
-* How to set in your code (examples):
-    * [Config#setNumWorkers](/javadoc/apidocs/backtype/storm/Config.html)
-
-### Number of executors (threads)
-
-* Description: How many executors to spawn _per component_.
-* Configuration option: None (pass ``parallelism_hint`` parameter to ``setSpout`` or ``setBolt``)
-* How to set in your code (examples):
-    * [TopologyBuilder#setSpout()](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html)
-    * [TopologyBuilder#setBolt()](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html)
-    * Note that as of Storm 0.8 the ``parallelism_hint`` parameter now specifies the initial number of executors (not tasks!) for that bolt.
-
-### Number of tasks
-
-* Description: How many tasks to create _per component_.
-* Configuration option: [TOPOLOGY_TASKS](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_TASKS)
-* How to set in your code (examples):
-    * [ComponentConfigurationDeclarer#setNumTasks()](/javadoc/apidocs/backtype/storm/topology/ComponentConfigurationDeclarer.html)
-
-
-Here is an example code snippet to show these settings in practice:
-
-```java
-topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
-               .setNumTasks(4)
-               .shuffleGrouping("blue-spout");
-```
-
-In the above code we configured Storm to run the bolt ``GreenBolt`` with an initial number of two executors and four associated tasks. Storm will run two tasks per executor (thread). If you do not explicitly configure the number of tasks, Storm will run by default one task per executor.
-
-## Example of a running topology
-
-The following illustration shows how a simple topology would look like in operation. The topology consists of three components: one spout called ``BlueSpout`` and two bolts called ``GreenBolt`` and ``YellowBolt``. The components are linked such that ``BlueSpout`` sends its output to ``GreenBolt``, which in turns sends its own output to ``YellowBolt``.
-
-![Example of a running topology in Storm](images/example-of-a-running-topology.png)
-
-The ``GreenBolt`` was configured as per the code snippet above whereas ``BlueSpout`` and ``YellowBolt`` only set the parallelism hint (number of executors). Here is the relevant code:
-
-```java
-Config conf = new Config();
-conf.setNumWorkers(2); // use two worker processes
-
-topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); // set parallelism hint to 2
-
-topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
-               .setNumTasks(4)
-               .shuffleGrouping("blue-spout");
-
-topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6)
-               .shuffleGrouping("green-bolt");
-
-StormSubmitter.submitTopology(
-        "mytopology",
-        conf,
-        topologyBuilder.createTopology()
-    );
-```
-
-And of course Storm comes with additional configuration settings to control the parallelism of a topology, including:
-
-* [TOPOLOGY_MAX_TASK_PARALLELISM](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_MAX_TASK_PARALLELISM): This setting puts a ceiling on the number of executors that can be spawned for a single component. It is typically used during testing to limit the number of threads spawned when running a topology in local mode. You can set this option via e.g. [Config#setMaxTaskParallelism()](/javadoc/apidocs/backtype/storm/Config.html#setMaxTaskParallelism(int)).
-
-## How to change the parallelism of a running topology
-
-A nifty feature of Storm is that you can increase or decrease the number of worker processes and/or executors without being required to restart the cluster or the topology. The act of doing so is called rebalancing.
-
-You have two options to rebalance a topology:
-
-1. Use the Storm web UI to rebalance the topology.
-2. Use the CLI tool storm rebalance as described below.
-
-Here is an example of using the CLI tool:
-
-```
-## Reconfigure the topology "mytopology" to use 5 worker processes,
-## the spout "blue-spout" to use 3 executors and
-## the bolt "yellow-bolt" to use 10 executors.
-
-$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
-```
-
-## References
-
-* [Concepts](Concepts.html)
-* [Configuration](Configuration.html)
-* [Running topologies on a production cluster](Running-topologies-on-a-production-cluster.html)]
-* [Local mode](Local-mode.html)
-* [Tutorial](Tutorial.html)
-* [Storm API documentation](/javadoc/apidocs/), most notably the class ``Config``

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Using-non-JVM-languages-with-Storm.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Using-non-JVM-languages-with-Storm.md b/docs/documentation/Using-non-JVM-languages-with-Storm.md
deleted file mode 100644
index 2e5c67a..0000000
--- a/docs/documentation/Using-non-JVM-languages-with-Storm.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-layout: documentation
----
-- two pieces: creating topologies and implementing spouts and bolts in other languages
-- creating topologies in another language is easy since topologies are just thrift structures (link to storm.thrift)
-- implementing spouts and bolts in another language is called a "multilang components" or "shelling"
-   - Here's a specification of the protocol: [Multilang protocol](Multilang-protocol.html)
-   - the thrift structure lets you define multilang components explicitly as a program and a script (e.g., python and the file implementing your bolt)
-   - In Java, you override ShellBolt or ShellSpout to create multilang components
-       - note that output fields declarations happens in the thrift structure, so in Java you create multilang components like the following:
-            - declare fields in java, processing code in the other language by specifying it in constructor of shellbolt
-   - multilang uses json messages over stdin/stdout to communicate with the subprocess
-   - storm comes with ruby, python, and fancy adapters that implement the protocol. show an example of python
-      - python supports emitting, anchoring, acking, and logging
-- "storm shell" command makes constructing jar and uploading to nimbus easy
-  - makes jar and uploads it
-  - calls your program with host/port of nimbus and the jarfile id
-
-## Notes on implementing a DSL in a non-JVM language
-
-The right place to start is src/storm.thrift. Since Storm topologies are just Thrift structures, and Nimbus is a Thrift daemon, you can create and submit topologies in any language.
-
-When you create the Thrift structs for spouts and bolts, the code for the spout or bolt is specified in the ComponentObject struct:
-
-```
-union ComponentObject {
-  1: binary serialized_java;
-  2: ShellComponent shell;
-  3: JavaObject java_object;
-}
-```
-
-For a non-JVM DSL, you would want to make use of "2" and "3". ShellComponent lets you specify a script to run that component (e.g., your python code). And JavaObject lets you specify native java spouts and bolts for the component (and Storm will use reflection to create that spout or bolt).
-
-There's a "storm shell" command that will help with submitting a topology. Its usage is like this:
-
-```
-storm shell resources/ python topology.py arg1 arg2
-```
-
-storm shell will then package resources/ into a jar, upload the jar to Nimbus, and call your topology.py script like this:
-
-```
-python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location}
-```
-
-Then you can connect to Nimbus using the Thrift API and submit the topology, passing {uploaded-jar-location} into the submitTopology method. For reference, here's the submitTopology definition:
-
-```
-void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology)
-    throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
-```
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Windowing.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Windowing.md b/docs/documentation/Windowing.md
deleted file mode 100644
index 803e5ca..0000000
--- a/docs/documentation/Windowing.md
+++ /dev/null
@@ -1,235 +0,0 @@
-# Windowing support in core storm
-
-Storm core has support for processing a group of tuples that falls within a window. Windows are specified with the 
-following two parameters,
-
-1. Window length - the length or duration of the window
-2. Sliding interval - the interval at which the windowing slides
-
-## Sliding Window
-
-Tuples are grouped in windows and window slides every sliding interval. A tuple can belong to more than one window.
-
-For example a time duration based sliding window with length 10 secs and sliding interval of 5 seconds.
-
-```
-| e1 e2 | e3 e4 e5 e6 | e7 e8 e9 |...
-0       5             10         15    -> time
-
-|<------- w1 -------->|
-        |------------ w2 ------->|
-```
-
-The window is evaluated every 5 seconds and some of the tuples in the first window overlaps with the second one.
-		
-
-## Tumbling Window
-
-Tuples are grouped in a single window based on time or count. Any tuple belongs to only one of the windows.
-
-For example a time duration based tumbling window with length 5 secs.
-
-```
-| e1 e2 | e3 e4 e5 e6 | e7 e8 e9 |...
-0       5             10         15    -> time
-   w1         w2            w3
-```
-
-The window is evaluated every five seconds and none of the windows overlap.
-
-Storm supports specifying the window length and sliding intervals as a count of the number of tuples or as a time duration.
-
-The bolt interface `IWindowedBolt` is implemented by bolts that needs windowing support.
-
-```java
-public interface IWindowedBolt extends IComponent {
-    void prepare(Map stormConf, TopologyContext context, OutputCollector collector);
-    /**
-     * Process tuples falling within the window and optionally emit 
-     * new tuples based on the tuples in the input window.
-     */
-    void execute(TupleWindow inputWindow);
-    void cleanup();
-}
-```
-
-Every time the window activates, the `execute` method is invoked. The TupleWindow parameter gives access to the current tuples
-in the window, the tuples that expired and the new tuples that are added since last window was computed which will be useful 
-for efficient windowing computations.
-
-Bolts that needs windowing support typically would extend `BaseWindowedBolt` which has the apis for specifying the
-window length and sliding intervals.
-
-E.g. 
-
-```java
-public class SlidingWindowBolt extends BaseWindowedBolt {
-	private OutputCollector collector;
-	
-    @Override
-    public void prepare(Map stormConf, TopologyContext context, OutputCollector collector) {
-    	this.collector = collector;
-    }
-	
-    @Override
-    public void execute(TupleWindow inputWindow) {
-	  for(Tuple tuple: inputWindow.get()) {
-	    // do the windowing computation
-		...
-	  }
-	  // emit the results
-	  collector.emit(new Values(computedValue));
-    }
-}
-
-public static void main(String[] args) {
-    TopologyBuilder builder = new TopologyBuilder();
-     builder.setSpout("spout", new RandomSentenceSpout(), 1);
-     builder.setBolt("slidingwindowbolt", 
-                     new SlidingWindowBolt().withWindow(new Count(30), new Count(10)),
-                     1).shuffleGrouping("spout");
-    Config conf = new Config();
-    conf.setDebug(true);
-    conf.setNumWorkers(1);
-
-    StormSubmitter.submitTopologyWithProgressBar(args[0], conf, builder.createTopology());
-	
-}
-```
-
-The following window configurations are supported.
-
-```java
-withWindow(Count windowLength, Count slidingInterval)
-Tuple count based sliding window that slides after `slidingInterval` number of tuples.
-
-withWindow(Count windowLength)
-Tuple count based window that slides with every incoming tuple.
-
-withWindow(Count windowLength, Duration slidingInterval)
-Tuple count based sliding window that slides after `slidingInterval` time duration.
-
-withWindow(Duration windowLength, Duration slidingInterval)
-Time duration based sliding window that slides after `slidingInterval` time duration.
-
-withWindow(Duration windowLength)
-Time duration based window that slides with every incoming tuple.
-
-withWindow(Duration windowLength, Count slidingInterval)
-Time duration based sliding window configuration that slides after `slidingInterval` number of tuples.
-
-withTumblingWindow(BaseWindowedBolt.Count count)
-Count based tumbling window that tumbles after the specified count of tuples.
-
-withTumblingWindow(BaseWindowedBolt.Duration duration)
-Time duration based tumbling window that tumbles after the specified time duration.
-
-```
-
-## Tuple timestamp and out of order tuples
-By default the timestamp tracked in the window is the time when the tuple is processed by the bolt. The window calculations
-are performed based on the processing timestamp. Storm has support for tracking windows based on the source generated timestamp.
-
-```java
-/**
-* Specify a field in the tuple that represents the timestamp as a long value. If this
-* field is not present in the incoming tuple, an {@link IllegalArgumentException} will be thrown.
-*
-* @param fieldName the name of the field that contains the timestamp
-*/
-public BaseWindowedBolt withTimestampField(String fieldName)
-```
-
-The value for the above `fieldName` will be looked up from the incoming tuple and considered for windowing calculations. 
-If the field is not present in the tuple an exception will be thrown. Along with the timestamp field name, a time lag parameter 
-can also be specified which indicates the max time limit for tuples with out of order timestamps. 
-
-E.g. If the lag is 5 secs and a tuple `t1` arrived with timestamp `06:00:05` no tuples may arrive with tuple timestamp earlier than `06:00:00`. If a tuple
-arrives with timestamp 05:59:59 after `t1` and the window has moved past `t1`, it will be treated as a late tuple and not processed. Currently the late
- tuples are just logged in the worker log files at INFO level.
-
-```java
-/**
-* Specify the maximum time lag of the tuple timestamp in milliseconds. It means that the tuple timestamps
-* cannot be out of order by more than this amount.
-*
-* @param duration the max lag duration
-*/
-public BaseWindowedBolt withLag(Duration duration)
-```
-
-### Watermarks
-For processing tuples with timestamp field, storm internally computes watermarks based on the incoming tuple timestamp. Watermark is 
-the minimum of the latest tuple timestamps (minus the lag) across all the input streams. At a higher level this is similar to the watermark concept
-used by Flink and Google's MillWheel for tracking event based timestamps.
-
-Periodically (default every sec), the watermark timestamps are emitted and this is considered as the clock tick for the window calculation if 
-tuple based timestamps are in use. The interval at which watermarks are emitted can be changed with the below api.
- 
-```java
-/**
-* Specify the watermark event generation interval. For tuple based timestamps, watermark events
-* are used to track the progress of time
-*
-* @param interval the interval at which watermark events are generated
-*/
-public BaseWindowedBolt withWatermarkInterval(Duration interval)
-```
-
-
-When a watermark is received, all windows up to that timestamp will be evaluated.
-
-For example, consider tuple timestamp based processing with following window parameters,
-
-`Window length = 20s, sliding interval = 10s, watermark emit frequency = 1s, max lag = 5s`
-
-```
-|-----|-----|-----|-----|-----|-----|-----|
-0     10    20    30    40    50    60    70
-````
-
-Current ts = `09:00:00`
-
-Tuples `e1(6:00:03), e2(6:00:05), e3(6:00:07), e4(6:00:18), e5(6:00:26), e6(6:00:36)` are received between `9:00:00` and `9:00:01`
-
-At time t = `09:00:01`, watermark w1 = `6:00:31` is emitted since no tuples earlier than `6:00:31` can arrive.
-
-Three windows will be evaluated. The first window end ts (06:00:10) is computed by taking the earliest event timestamp (06:00:03) 
-and computing the ceiling based on the sliding interval (10s).
-
-1. `5:59:50 - 06:00:10` with tuples e1, e2, e3
-2. `6:00:00 - 06:00:20` with tuples e1, e2, e3, e4
-3. `6:00:10 - 06:00:30` with tuples e4, e5
-
-e6 is not evaluated since watermark timestamp `6:00:31` is older than the tuple ts `6:00:36`.
-
-Tuples `e7(8:00:25), e8(8:00:26), e9(8:00:27), e10(8:00:39)` are received between `9:00:01` and `9:00:02`
-
-At time t = `09:00:02` another watermark w2 = `08:00:34` is emitted since no tuples earlier than `8:00:34` can arrive now.
-
-Three windows will be evaluated,
-
-1. `6:00:20 - 06:00:40` with tuples e5, e6 (from earlier batch)
-2. `6:00:30 - 06:00:50` with tuple e6 (from earlier batch)
-3. `8:00:10 - 08:00:30` with tuples e7, e8, e9
-
-e10 is not evaluated since the tuple ts `8:00:39` is beyond the watermark time `8:00:34`.
-
-The window calculation considers the time gaps and computes the windows based on the tuple timestamp.
-
-## Guarentees
-The windowing functionality in storm core currently provides at-least once guarentee. The values emitted from the bolts
-`execute(TupleWindow inputWindow)` method are automatically anchored to all the tuples in the inputWindow. The downstream
-bolts are expected to ack the received tuple (i.e the tuple emitted from the windowed bolt) to complete the tuple tree. 
-If not the tuples will be replayed and the windowing computation will be re-evaluated. 
-
-The tuples in the window are automatically acked when the expire, i.e. when they fall out of the window after 
-`windowLength + slidingInterval`. Note that the configuration `topology.message.timeout.secs` should be sufficiently more 
-than `windowLength + slidingInterval` for time based windows; otherwise the tuples will timeout and get replayed and can result
-in duplicate evaluations. For count based windows, the configuration should be adjusted such that `windowLength + slidingInterval`
-tuples can be received within the timeout period.
-
-## Example topology
-An example toplogy `SlidingWindowTopology` shows how to use the apis to compute a sliding window sum and a tumbling window 
-average.
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/distcache-blobstore.md
----------------------------------------------------------------------
diff --git a/docs/documentation/distcache-blobstore.md b/docs/documentation/distcache-blobstore.md
deleted file mode 100644
index 2011ce3..0000000
--- a/docs/documentation/distcache-blobstore.md
+++ /dev/null
@@ -1,735 +0,0 @@
-# Storm Distributed Cache API
-
-The distributed cache feature in storm is used to efficiently distribute files
-(or blobs, which is the equivalent terminology for a file in the distributed
-cache and is used interchangeably in this document) that are large and can
-change during the lifetime of a topology, such as geo-location data,
-dictionaries, etc. Typical use cases include phrase recognition, entity
-extraction, document classification, URL re-writing, location/address detection
-and so forth. Such files may be several KB to several GB in size. For small
-datasets that don't need dynamic updates, including them in the topology jar
-could be fine. But for large files, the startup times could become very large.
-In these cases, the distributed cache feature can provide fast topology startup,
-especially if the files were previously downloaded for the same submitter and
-are still in the cache. This is useful with frequent deployments, sometimes few
-times a day with updated jars, because the large cached files will remain available
-without changes. The large cached blobs that do not change frequently will
-remain available in the distributed cache.
-
-At the starting time of a topology, the user specifies the set of files the
-topology needs. Once a topology is running, the user at any time can request for
-any file in the distributed cache to be updated with a newer version. The
-updating of blobs happens in an eventual consistency model. If the topology
-needs to know what version of a file it has access to, it is the responsibility
-of the user to find this information out. The files are stored in a cache with
-Least-Recently Used (LRU) eviction policy, where the supervisor decides which
-cached files are no longer needed and can delete them to free disk space. The
-blobs can be compressed, and the user can request the blobs to be uncompressed
-before it accesses them.
-
-## Motivation for Distributed Cache
-* Allows sharing blobs among topologies.
-* Allows updating the blobs from the command line.
-
-## Distributed Cache Implementations
-The current BlobStore interface has the following two implementations
-* LocalFsBlobStore
-* HdfsBlobStore
-
-Appendix A contains the interface for blobstore implementation.
-
-## LocalFsBlobStore
-![LocalFsBlobStore](images/local_blobstore.png)
-
-Local file system implementation of Blobstore can be depicted in the above timeline diagram.
-
-There are several stages from blob creation to blob download and corresponding execution of a topology. 
-The main stages can be depicted as follows
-
-### Blob Creation Command
-Blobs in the blobstore can be created through command line using the following command.
-
-```
-storm blobstore create --file README.txt --acl o::rwa --repl-fctr 4 key1
-```
-
-The above command creates a blob with a key name “key1” corresponding to the file README.txt. 
-The access given to all users being read, write and admin with a replication factor of 4.
-
-### Topology Submission and Blob Mapping
-Users can submit their topology with the following command. The command includes the 
-topology map configuration. The configuration holds two keys “key1” and “key2” with the 
-key “key1” having a local file name mapping named “blob_file” and it is not compressed.
-
-```
-storm jar /home/y/lib/storm-starter/current/storm-starter-jar-with-dependencies.jar 
-storm.starter.clj.word_count test_topo -c topology.blobstore.map='{"key1":{"localname":"blob_file", "uncompress":"false"},"key2":{}}'
-```
-
-### Blob Creation Process
-The creation of the blob takes place through the interface “ClientBlobStore”. Appendix B contains the “ClientBlobStore” interface. 
-The concrete implementation of this interface is the  “NimbusBlobStore”. In the case of local file system the client makes a 
-call to the nimbus to create the blobs within the local file system. The nimbus uses the local file system implementation to create these blobs. 
-When a user submits a topology, the jar, configuration and code files are uploaded as blobs with the help of blobstore. 
-Also, all the other blobs specified by the topology are mapped to it with the help of topology.blobstore.map configuration.
-
-### Blob Download by the Supervisor
-Finally, the blobs corresponding to a topology are downloaded by the supervisor once it receives the assignments from the nimbus through 
-the same “NimbusBlobStore” thrift client that uploaded the blobs. The supervisor downloads the code, jar and conf blobs by calling the 
-“NimbusBlobStore” client directly while the blobs specified in the topology.blobstore.map are downloaded and mapped locally with the help 
-of the Localizer. The Localizer talks to the “NimbusBlobStore” thrift client to download the blobs and adds the blob compression and local 
-blob name mapping logic to suit the implementation of a topology. Once all the blobs have been downloaded the workers are launched to run 
-the topologies.
-
-## HdfsBlobStore
-![HdfsBlobStore](images/hdfs_blobstore.png)
-
-The HdfsBlobStore functionality has a similar implementation and blob creation and download procedure barring how the replication 
-is handled in the two blobstore implementations. The replication in HDFS blobstore is obvious as HDFS is equipped to handle replication 
-and it requires no state to be stored inside the zookeeper. On the other hand, the local file system blobstore requires the state to be 
-stored on the zookeeper in order for it to work with nimbus HA. Nimbus HA allows the local filesystem to implement the replication feature 
-seamlessly by storing the state in the zookeeper about the running topologies and syncing the blobs on various nimbuses. On the supervisor’s 
-end, the supervisor and localizer talks to HdfsBlobStore through “HdfsClientBlobStore” implementation.
-
-## Additional Features and Documentation
-```
-storm jar /home/y/lib/storm-starter/current/storm-starter-jar-with-dependencies.jar storm.starter.clj.word_count test_topo 
--c topology.blobstore.map='{"key1":{"localname":"blob_file", "uncompress":"false"},"key2":{}}'
-```
- 
-### Compression
-The blobstore allows the user to specify the “uncompress” configuration to true or false. This configuration can be specified 
-in the topology.blobstore.map mentioned in the above command. This allows the user to upload a compressed file like a tarball/zip. 
-In local file system blobstore, the compressed blobs are stored on the nimbus node. The localizer code takes the responsibility to 
-uncompress the blob and store it on the supervisor node. Symbolic links to the blobs on the supervisor node are created within the worker 
-before the execution starts.
-
-### Local File Name Mapping
-Apart from compression the blobstore helps to give the blob a name that can be used by the workers. The localizer takes 
-the responsibility of mapping the blob to a local name on the supervisor node.
-
-## Additional Blobstore Implementation Details
-Blobstore uses a hashing function to create the blobs based on the key. The blobs are generally stored inside the directory specified by
-the blobstore.dir configuration. By default, it is stored under “storm.local.dir/nimbus/blobs” for local file system and a similar path on 
-hdfs file system.
-
-Once a file is submitted, the blobstore reads the configs and creates a metadata for the blob with all the access control details. The metadata 
-is generally used for authorization while accessing the blobs. The blob key and version contribute to the hash code and there by the directory 
-under “storm.local.dir/nimbus/blobs/data” where the data is placed. The blobs are generally placed in a positive number directory like 193,822 etc.
-
-Once the topology is launched and the relevant blobs have been created, the supervisor downloads blobs related to the storm.conf, storm.ser 
-and storm.code first and all the blobs uploaded by the command line separately using the localizer to uncompress and map them to a local name 
-specified in the topology.blobstore.map configuration. The supervisor periodically updates blobs by checking for the change of version. 
-This allows updating the blobs on the fly and thereby making it a very useful feature.
-
-For a local file system, the distributed cache on the supervisor node is set to 10240 MB as a soft limit and the clean up code attempts 
-to clean anything over the soft limit every 600 seconds based on LRU policy.
-
-The HDFS blobstore implementation handles load better by removing the burden on the nimbus to store the blobs, which avoids it becoming a bottleneck. Moreover, it provides seamless replication of blobs. On the other hand, the local file system blobstore is not very efficient in 
-replicating the blobs and is limited by the number of nimbuses. Moreover, the supervisor talks to the HDFS blobstore directly without the 
-involvement of the nimbus and thereby reduces the load and dependency on nimbus.
-
-## Highly Available Nimbus
-### Problem Statement:
-Currently the storm master aka nimbus, is a process that runs on a single machine under supervision. In most cases, the 
-nimbus failure is transient and it is restarted by the process that does supervision. However sometimes when disks fail and networks 
-partitions occur, nimbus goes down. Under these circumstances, the topologies run normally but no new topologies can be 
-submitted, no existing topologies can be killed/deactivated/activated and if a supervisor node fails then the 
-reassignments are not performed resulting in performance degradation or topology failures. With this project we intend, 
-to resolve this problem by running nimbus in a primary backup mode to guarantee that even if a nimbus server fails one 
-of the backups will take over. 
-
-### Requirements for Highly Available Nimbus:
-* Increase overall availability of nimbus.
-* Allow nimbus hosts to leave and join the cluster at will any time. A newly joined host should auto catch up and join 
-the list of potential leaders automatically. 
-* No topology resubmissions required in case of nimbus fail overs.
-* No active topology should ever be lost. 
-
-#### Leader Election:
-The nimbus server will use the following interface:
-
-```java
-public interface ILeaderElector {
-    /**
-     * queue up for leadership lock. The call returns immediately and the caller                     
-     * must check isLeader() to perform any leadership action.
-     */
-    void addToLeaderLockQueue();
-
-    /**
-     * Removes the caller from the leader lock queue. If the caller is leader
-     * also releases the lock.
-     */
-    void removeFromLeaderLockQueue();
-
-    /**
-     *
-     * @return true if the caller currently has the leader lock.
-     */
-    boolean isLeader();
-
-    /**
-     *
-     * @return the current leader's address , throws exception if noone has has    lock.
-     */
-    InetSocketAddress getLeaderAddress();
-
-    /**
-     * 
-     * @return list of current nimbus addresses, includes leader.
-     */
-    List<InetSocketAddress> getAllNimbusAddresses();
-}
-```
-Once a nimbus comes up it calls addToLeaderLockQueue() function. The leader election code selects a leader from the queue.
-If the topology code, jar or config blobs are missing, it would download the blobs from any other nimbus which is up and running.
-
-The first implementation will be Zookeeper based. If the zookeeper connection is lost/reset resulting in loss of lock
-or the spot in queue the implementation will take care of updating the state such that isLeader() will reflect the 
-current status. The leader like actions must finish in less than minimumOf(connectionTimeout, SessionTimeout) to ensure
-the lock was held by nimbus for the entire duration of the action (Not sure if we want to just state this expectation 
-and ensure that zk configurations are set high enough which will result in higher failover time or we actually want to 
-create some sort of rollback mechanism for all actions, the second option needs a lot of code). If a nimbus that is not 
-leader receives a request that only a leader can perform,  it will throw a RunTimeException.
-
-### Nimbus state store:
-
-To achieve fail over from primary to backup servers nimbus state/data needs to be replicated across all nimbus hosts or 
-needs to be stored in a distributed storage. Replicating the data correctly involves state management, consistency checks
-and it is hard to test for correctness. However many storm users do not want to take extra dependency on another replicated
-storage system like HDFS and still need high availability. The blobstore implementation along with the state storage helps
-to overcome the failover scenarios in case a leader nimbus goes down.
-
-To support replication we will allow the user to define a code replication factor which would reflect number of nimbus 
-hosts to which the code must be replicated before starting the topology. With replication comes the issue of consistency. 
-The topology is launched once the code, jar and conf blob files are replicated based on the "topology.min.replication" config.
-Maintaining state for failover scenarios is important for local file system. The current implementation makes sure one of the
-available nimbus is elected as a leader in the case of a failure. If the topology specific blobs are missing, the leader nimbus
-tries to download them as and when they are needed. With this current architecture, we do not have to download all the blobs 
-required for a topology for a nimbus to accept leadership. This helps us in case the blobs are very large and avoid causing any 
-inadvertant delays in electing a leader.
-
-The state for every blob is relevant for the local blobstore implementation. For HDFS blobstore the replication
-is taken care by the HDFS. For handling the fail over scenarios for a local blobstore we need to store the state of the leader and
-non-leader nimbuses within the zookeeper.
-
-The state is stored under /storm/blobstore/key/nimbusHostPort:SequenceNumber for the blobstore to work to make nimbus highly available. 
-This state is used in the local file system blobstore to support replication. The HDFS blobstore does not have to store the state inside the 
-zookeeper.
-
-* NimbusHostPort: This piece of information generally contains the parsed string holding the hostname and port of the nimbus. 
-  It uses the same class “NimbusHostPortInfo” used earlier by the code-distributor interface to store the state and parse the data.
-
-* SequenceNumber: This is the blob sequence number information. The SequenceNumber information is implemented by a KeySequenceNumber class. 
-The sequence numbers are generated for every key. For every update, the sequence numbers are assigned based ona global sequence number 
-stored under /storm/blobstoremaxsequencenumber/key. For more details about how the numbers are generated you can look at the java docs for KeySequenceNumber.
-
-![Nimbus High Availability - BlobStore](images/nimbus_ha_blobstore.png)
-
-The sequence diagram proposes how the blobstore works and the state storage inside the zookeeper makes the nimbus highly available.
-Currently, the thread to sync the blobs on a non-leader is within the nimbus. In the future, it will be nice to move the thread around
-to the blobstore to make the blobstore coordinate the state change and blob download as per the sequence diagram.
-
-## Thrift and Rest API 
-In order to avoid workers/supervisors/ui talking to zookeeper for getting master nimbus address we are going to modify the 
-`getClusterInfo` API so it can also return nimbus information. getClusterInfo currently returns `ClusterSummary` instance
-which has a list of `supervisorSummary` and a list of `topologySummary` instances. We will add a list of `NimbusSummary` 
-to the `ClusterSummary`. See the structures below:
-
-```thrift
-struct ClusterSummary {
-  1: required list<SupervisorSummary> supervisors;
-  3: required list<TopologySummary> topologies;
-  4: required list<NimbusSummary> nimbuses;
-}
-
-struct NimbusSummary {
-  1: required string host;
-  2: required i32 port;
-  3: required i32 uptime_secs;
-  4: required bool isLeader;
-  5: required string version;
-}
-```
-
-This will be used by StormSubmitter, Nimbus clients, supervisors and ui to discover the current leaders and participating 
-nimbus hosts. Any nimbus host will be able to respond to these requests. The nimbus hosts can read this information once 
-from zookeeper and cache it and keep updating the cache when the watchers are fired to indicate any changes,which should 
-be rare in general case.
-
-Note: All nimbus hosts have watchers on zookeeper to be notified immediately as soon as a new blobs is available for download, the callback may or may not download
-the code. Therefore, a background thread is triggered to download the respective blobs to run the topologies. The replication is achieved when the blobs are downloaded
-onto non-leader nimbuses. So you should expect your topology submission time to be somewhere between 0 to (2 * nimbus.code.sync.freq.secs) for any 
-nimbus.min.replication.count > 1.
-
-## Configuration
-
-```
-blobstore.dir: The directory where all blobs are stored. For local file system it represents the directory on the nimbus
-node and for HDFS file system it represents the hdfs file system path.
-
-supervisor.blobstore.class: This configuration is meant to set the client for  the supervisor  in order to talk to the blobstore. 
-For a local file system blobstore it is set to “backtype.storm.blobstore.NimbusBlobStore” and for the HDFS blobstore it is set 
-to “backtype.storm.blobstore.HdfsClientBlobStore”.
-
-supervisor.blobstore.download.thread.count: This configuration spawns multiple threads for from the supervisor in order download 
-blobs concurrently. The default is set to 5
-
-supervisor.blobstore.download.max_retries: This configuration is set to allow the supervisor to retry for the blob download. 
-By default it is set to 3.
-
-supervisor.localizer.cache.target.size.mb: The jvm opts provided to workers launched by this supervisor. All "%ID%" substrings 
-are replaced with an identifier for this worker. Also, "%WORKER-ID%", "%STORM-ID%" and "%WORKER-PORT%" are replaced with 
-appropriate runtime values for this worker. The distributed cache target size in MB. This is a soft limit to the size 
-of the distributed cache contents. It is set to 10240 MB.
-
-supervisor.localizer.cleanup.interval.ms: The distributed cache cleanup interval. Controls how often it scans to attempt to 
-cleanup anything over the cache target size. By default it is set to 600000 milliseconds.
-
-nimbus.blobstore.class:  Sets the blobstore implementation nimbus uses. It is set to "backtype.storm.blobstore.LocalFsBlobStore"
-
-nimbus.blobstore.expiration.secs: During operations with the blobstore, via master, how long a connection is idle before nimbus 
-considers it dead and drops the session and any associated connections. The default is set to 600.
-
-storm.blobstore.inputstream.buffer.size.bytes: The buffer size it uses for blobstore upload. It is set to 65536 bytes.
-
-client.blobstore.class: The blobstore implementation the storm client uses. The current implementation uses the default 
-config "backtype.storm.blobstore.NimbusBlobStore".
-
-blobstore.replication.factor: It sets the replication for each blob within the blobstore. The “topology.min.replication.count” 
-ensures the minimum replication the topology specific blobs are set before launching the topology. You might want to set the 
-“topology.min.replication.count <= blobstore.replication”. The default is set to 3.
-
-topology.min.replication.count : Minimum number of nimbus hosts where the code must be replicated before leader nimbus
-can mark the topology as active and create assignments. Default is 1.
-
-topology.max.replication.wait.time.sec: Maximum wait time for the nimbus host replication to achieve the nimbus.min.replication.count.
-Once this time is elapsed nimbus will go ahead and perform topology activation tasks even if required nimbus.min.replication.count is not achieved. 
-The default is 60 seconds, a value of -1 indicates to wait for ever.
-* nimbus.code.sync.freq.secs: Frequency at which the background thread on nimbus which syncs code for locally missing blobs. Default is 2 minutes.
-```
-
-## Using the Distributed Cache API, Command Line Interface (CLI)
-
-### Creating blobs 
-
-To use the distributed cache feature, the user first has to "introduce" files
-that need to be cached and bind them to key strings. To achieve this, the user
-uses the "blobstore create" command of the storm executable, as follows:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore create [-f|--file FILE] [-a|--acl ACL1,ACL2,...] [--repl-fctr NUMBER] [keyname]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The contents come from a FILE, if provided by -f or --file option, otherwise
-from STDIN.  
-The ACLs, which can also be a comma separated list of many ACLs, is of the
-following format:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-> [u|o]:[username]:[r-|w-|a-|_]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-where:  
-
-* u = user  
-* o = other  
-* username = user for this particular ACL  
-* r = read access  
-* w = write access  
-* a = admin access  
-* _ = ignored  
-
-The replication factor can be set to a value greater than 1 using --repl-fctr.
-
-Note: The replication right now is configurable for a hdfs blobstore but for a
-local blobstore the replication always stays at 1. For a hdfs blobstore
-the default replication is set to 3.
-
-###### Example:  
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore create --file README.txt --acl o::rwa --repl-fctr 4 key1
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In the above example, the *README.txt* file is added to the distributed cache.
-It can be accessed using the key string "*key1*" for any topology that needs
-it. The file is set to have read/write/admin access for others, a.k.a world
-everything and the replication is set to 4.
-
-###### Example:  
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore create mytopo:data.tgz -f data.tgz -a u:alice:rwa,u:bob:rw,o::r  
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-The above example createss a mytopo:data.tgz key using the data stored in
-data.tgz.  User alice would have full access, bob would have read/write access
-and everyone else would have read access.
-
-### Making dist. cache files accessible to topologies
-
-Once a blob is created, we can use it for topologies. This is generally achieved
-by including the key string among the configurations of a topology, with the
-following format. A shortcut is to add the configuration item on the command
-line when starting a topology by using the **-c** command:
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
--c topology.blobstore.map='{"[KEY]":{"localname":"[VALUE]", "uncompress":"[true|false]"}}'
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Note: Please take care of the quotes.
-
-The cache file would then be accessible to the topology as a local file with the
-name [VALUE].  
-The localname parameter is optional, if omitted the local cached file will have
-the same name as [KEY].  
-The uncompress parameter is optional, if omitted the local cached file will not
-be uncompressed.  Note that the key string needs to have the appropriate
-file-name-like format and extension, so it can be uncompressed correctly.
-
-###### Example:  
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm jar /home/y/lib/storm-starter/current/storm-starter-jar-with-dependencies.jar storm.starter.clj.word_count test_topo -c topology.blobstore.map='{"key1":{"localname":"blob_file", "uncompress":"false"},"key2":{}}'
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Note: Please take care of the quotes.
-
-In the above example, we start the *word_count* topology (stored in the
-*storm-starter-jar-with-dependencies.jar* file), and ask it to have access
-to the cached file stored with key string = *key1*. This file would then be
-accessible to the topology as a local file called *blob_file*, and the
-supervisor will not try to uncompress the file. Note that in our example, the
-file's content originally came from *README.txt*. We also ask for the file
-stored with the key string = *key2* to be accessible to the topology. Since
-both the optional parameters are omitted, this file will get the local name =
-*key2*, and will not be uncompressed.
-
-### Updating a cached file
-
-It is possible for the cached files to be updated while topologies are running.
-The update happens in an eventual consistency model, where the supervisors poll
-Nimbus every 30 seconds, and update their local copies. In the current version,
-it is the user's responsibility to check whether a new file is available.
-
-To update a cached file, use the following command. Contents come from a FILE or
-STDIN. Write access is required to be able to update a cached file.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore update [-f|--file NEW_FILE] [KEYSTRING]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-###### Example:  
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore update -f updates.txt key1
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-In the above example, the topologies will be presented with the contents of the
-file *updates.txt* instead of *README.txt* (from the previous example), even
-though their access by the topology is still through a file called
-*blob_file*.
-
-### Removing a cached file
-
-To remove a file from the distributed cache, use the following command. Removing
-a file requires write access.
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore delete [KEYSTRING]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-### Listing Blobs currently in the distributed cache blobstore
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore list [KEY...]
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-lists blobs currently in the blobstore
-
-### Reading the contents of a blob
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore cat [-f|--file FILE] KEY
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-read a blob and then either write it to a file, or STDOUT. Reading a blob
-requires read access.
-
-### Setting the access control for a blob
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-set-acl [-s ACL] KEY
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-ACL is in the form [uo]:[username]:[r-][w-][a-] can be comma  separated list
-(requires admin access).
-
-### Update the replication factor for a blob
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore replication --update --repl-fctr 5 key1
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-### Read the replication factor of a blob
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm blobstore replication --read key1
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-### Command line help
-
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-storm help blobstore
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-## Using the Distributed Cache API from Java
-
-We start by getting a ClientBlobStore object by calling this function:
-
-``` java
-Config theconf = new Config();
-theconf.putAll(Utils.readStormConfig());
-ClientBlobStore clientBlobStore = Utils.getClientBlobStore(theconf);
-```
-
-The required Utils package can by imported by:
-
-```java
-import backtype.storm.utils.Utils;
-```
-
-ClientBlobStore and other blob-related classes can be imported by:
-
-```java
-import backtype.storm.blobstore.ClientBlobStore;
-import backtype.storm.blobstore.AtomicOutputStream;
-import backtype.storm.blobstore.InputStreamWithMeta;
-import backtype.storm.blobstore.BlobStoreAclHandler;
-import backtype.storm.generated.*;
-```
-
-### Creating ACLs to be used for blobs
-
-```java
-String stringBlobACL = "u:username:rwa";
-AccessControl blobACL = BlobStoreAclHandler.parseAccessControl(stringBlobACL);
-List<AccessControl> acls = new LinkedList<AccessControl>();
-acls.add(blobACL); // more ACLs can be added here
-SettableBlobMeta settableBlobMeta = new SettableBlobMeta(acls);
-settableBlobMeta.set_replication_factor(4); // Here we can set the replication factor
-```
-
-The settableBlobMeta object is what we need to create a blob in the next step. 
-
-### Creating a blob
-
-```java
-AtomicOutputStream blobStream = clientBlobStore.createBlob("some_key", settableBlobMeta);
-blobStream.write("Some String or input data".getBytes());
-blobStream.close();
-```
-
-Note that the settableBlobMeta object here comes from the last step, creating ACLs.
-It is recommended that for very large files, the user writes the bytes in smaller chunks (for example 64 KB, up to 1 MB chunks).
-
-### Updating a blob
-
-Similar to creating a blob, but we get the AtomicOutputStream in a different way:
-
-```java
-String blobKey = "some_key";
-AtomicOutputStream blobStream = clientBlobStore.updateBlob(blobKey);
-```
-
-Pass a byte stream to the returned AtomicOutputStream as before. 
-
-### Updating the ACLs of a blob
-
-```java
-String blobKey = "some_key";
-AccessControl updateAcl = BlobStoreAclHandler.parseAccessControl("u:USER:--a");
-List<AccessControl> updateAcls = new LinkedList<AccessControl>();
-updateAcls.add(updateAcl);
-SettableBlobMeta modifiedSettableBlobMeta = new SettableBlobMeta(updateAcls);
-clientBlobStore.setBlobMeta(blobKey, modifiedSettableBlobMeta);
-
-//Now set write only
-updateAcl = BlobStoreAclHandler.parseAccessControl("u:USER:-w-");
-updateAcls = new LinkedList<AccessControl>();
-updateAcls.add(updateAcl);
-modifiedSettableBlobMeta = new SettableBlobMeta(updateAcls);
-clientBlobStore.setBlobMeta(blobKey, modifiedSettableBlobMeta);
-```
-
-### Updating and Reading the replication of a blob
-
-```java
-String blobKey = "some_key";
-BlobReplication replication = clientBlobStore.updateBlobReplication(blobKey, 5);
-int replication_factor = replication.get_replication();
-```
-
-Note: The replication factor gets updated and reflected only for hdfs blobstore
-
-### Reading a blob
-
-```java
-String blobKey = "some_key";
-InputStreamWithMeta blobInputStream = clientBlobStore.getBlob(blobKey);
-BufferedReader r = new BufferedReader(new InputStreamReader(blobInputStream));
-String blobContents =  r.readLine();
-```
-
-### Deleting a blob
-
-```java
-String blobKey = "some_key";
-clientBlobStore.deleteBlob(blobKey);
-```
-
-### Getting a list of blob keys already in the blobstore
-
-```java
-Iterator <String> stringIterator = clientBlobStore.listKeys();
-```
-
-## Appendix A
-
-```java
-public abstract void prepare(Map conf, String baseDir);
-
-public abstract AtomicOutputStream createBlob(String key, SettableBlobMeta meta, Subject who) throws AuthorizationException, KeyAlreadyExistsException;
-
-public abstract AtomicOutputStream updateBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException;
-
-public abstract ReadableBlobMeta getBlobMeta(String key, Subject who) throws AuthorizationException, KeyNotFoundException;
-
-public abstract void setBlobMeta(String key, SettableBlobMeta meta, Subject who) throws AuthorizationException, KeyNotFoundException;
-
-public abstract void deleteBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException;
-
-public abstract InputStreamWithMeta getBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException;
-
-public abstract Iterator<String> listKeys(Subject who);
-
-public abstract BlobReplication getBlobReplication(String key, Subject who) throws Exception;
-
-public abstract BlobReplication updateBlobReplication(String key, int replication, Subject who) throws AuthorizationException, KeyNotFoundException, IOException
-```
-
-## Appendix B
-
-```java
-public abstract void prepare(Map conf);
-
-protected abstract AtomicOutputStream createBlobToExtend(String key, SettableBlobMeta meta) throws AuthorizationException, KeyAlreadyExistsException;
-
-public abstract AtomicOutputStream updateBlob(String key) throws AuthorizationException, KeyNotFoundException;
-
-public abstract ReadableBlobMeta getBlobMeta(String key) throws AuthorizationException, KeyNotFoundException;
-
-protected abstract void setBlobMetaToExtend(String key, SettableBlobMeta meta) throws AuthorizationException, KeyNotFoundException;
-
-public abstract void deleteBlob(String key) throws AuthorizationException, KeyNotFoundException;
-
-public abstract InputStreamWithMeta getBlob(String key) throws AuthorizationException, KeyNotFoundException;
-
-public abstract Iterator<String> listKeys();
-
-public abstract void watchBlob(String key, IBlobWatcher watcher) throws AuthorizationException;
-
-public abstract void stopWatchingBlob(String key) throws AuthorizationException;
-
-public abstract BlobReplication getBlobReplication(String Key) throws AuthorizationException, KeyNotFoundException;
-
-public abstract BlobReplication updateBlobReplication(String Key, int replication) throws AuthorizationException, KeyNotFoundException
-```
-
-## Appendix C
-
-``` thrift
-service Nimbus {
-...
-string beginCreateBlob(1: string key, 2: SettableBlobMeta meta) throws (1: AuthorizationException aze, 2: KeyAlreadyExistsException kae);
-
-string beginUpdateBlob(1: string key) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-
-void uploadBlobChunk(1: string session, 2: binary chunk) throws (1: AuthorizationException aze);
-
-void finishBlobUpload(1: string session) throws (1: AuthorizationException aze);
-
-void cancelBlobUpload(1: string session) throws (1: AuthorizationException aze);
-
-ReadableBlobMeta getBlobMeta(1: string key) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-
-void setBlobMeta(1: string key, 2: SettableBlobMeta meta) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-
-BeginDownloadResult beginBlobDownload(1: string key) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-
-binary downloadBlobChunk(1: string session) throws (1: AuthorizationException aze);
-
-void deleteBlob(1: string key) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-
-ListBlobsResult listBlobs(1: string session);
-
-BlobReplication getBlobReplication(1: string key) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-
-BlobReplication updateBlobReplication(1: string key, 2: i32 replication) throws (1: AuthorizationException aze, 2: KeyNotFoundException knf);
-...
-}
-
-struct BlobReplication {
-1: required i32 replication;
-}
-
-exception AuthorizationException {
- 1: required string msg;
-}
-
-exception KeyNotFoundException {
- 1: required string msg;
-}
-
-exception KeyAlreadyExistsException {
- 1: required string msg;
-}
-
-enum AccessControlType {
- OTHER = 1,
- USER = 2
- //eventually ,GROUP=3
-}
-
-struct AccessControl {
- 1: required AccessControlType type;
- 2: optional string name; //Name of user or group in ACL
- 3: required i32 access; //bitmasks READ=0x1, WRITE=0x2, ADMIN=0x4
-}
-
-struct SettableBlobMeta {
- 1: required list<AccessControl> acl;
- 2: optional i32 replication_factor
-}
-
-struct ReadableBlobMeta {
- 1: required SettableBlobMeta settable;
- //This is some indication of a version of a BLOB.  The only guarantee is
- // if the data changed in the blob the version will be different.
- 2: required i64 version;
-}
-
-struct ListBlobsResult {
- 1: required list<string> keys;
- 2: required string session;
-}
-
-struct BeginDownloadResult {
- //Same version as in ReadableBlobMeta
- 1: required i64 version;
- 2: required string session;
- 3: optional i64 data_size;
-}
-```

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/dynamic-log-level-settings.md
----------------------------------------------------------------------
diff --git a/docs/documentation/dynamic-log-level-settings.md b/docs/documentation/dynamic-log-level-settings.md
deleted file mode 100644
index f38b708..0000000
--- a/docs/documentation/dynamic-log-level-settings.md
+++ /dev/null
@@ -1,41 +0,0 @@
-Dynamic Log Level Settings
-==========================
-
-We have added the ability to set log level settings for a running topology using the Storm UI and the Storm CLI. 
-
-The log level settings apply the same way as you'd expect from log4j, as all we are doing is telling log4j to set the level of the logger you provide. If you set the log level of a parent logger, the children loggers start using that level (unless the children have a more restrictive level already). A timeout can optionally be provided (except for DEBUG mode, where it’s required in the UI), if workers should reset log levels automatically.
-
-This revert action is triggered using a polling mechanism (every 30 seconds, but this is configurable), so you should expect your timeouts to be the value you provided plus anywhere between 0 and the setting's value.
-
-Using the Storm UI
--------------
-
-In order to set a level, click on a running topology, and then click on “Change Log Level” in the Topology Actions section.
-
-![Change Log Level dialog](images/dynamic_log_level_settings_1.png "Change Log Level dialog")
-
-Next, provide the logger name, select the level you expect (e.g. WARN), and a timeout in seconds (or 0 if not needed). Then click on “Add”.
-
-![After adding a log level setting](images/dynamic_log_level_settings_2.png "After adding a log level setting")
-
-To clear the log level click on the “Clear” button. This reverts the log level back to what it was before you added the setting. The log level line will disappear from the UI.
-
-While there is a delay resetting log levels back, setting the log level in the first place is immediate (or as quickly as the message can travel from the UI/CLI to the workers by way of nimbus and zookeeper).
-
-Using the CLI
--------------
-
-Using the CLI, issue the command:
-
-`./bin/storm set_log_level [topology name] -l [logger name]=[LEVEL]:[TIMEOUT]`
-
-For example:
-
-`./bin/storm set_log_level my_topology -l ROOT=DEBUG:30`
-
-Sets the ROOT logger to DEBUG for 30 seconds.
-
-`./bin/storm set_log_level my_topology -r ROOT`
-
-Clears the ROOT logger dynamic log level, resetting it to its original value.
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/dynamic-worker-profiling.md
----------------------------------------------------------------------
diff --git a/docs/documentation/dynamic-worker-profiling.md b/docs/documentation/dynamic-worker-profiling.md
deleted file mode 100644
index 088a232..0000000
--- a/docs/documentation/dynamic-worker-profiling.md
+++ /dev/null
@@ -1,33 +0,0 @@
-Dynamic Worker Profiling
-==========================
-
-In multi-tenant mode, storm launches long-running JVMs across cluster without sudo access to user. Self-serving of Java heap-dumps, jstacks and java profiling of these JVMs would improve users' ability to analyze and debug issues when monitoring it actively.
-
-The storm dynamic profiler lets you dynamically take heap-dumps, jprofile or jstack for a worker jvm running on stock cluster. It let user download these dumps from the browser and use your favorite tools to analyze it  The UI component page provides list workers for the component and action buttons. The logviewer lets you download the dumps generated by these logs. Please see the screenshots for more information.
-
-Using the Storm UI
--------------
-
-In order to request for heap-dump, jstack, start/stop/dump jprofile or restart a worker, click on a running topology, then click on specific component, then you can select workers by checking the box of any of the worker's executors in the Executors table, and then click on “Start","Heap", "Jstack" or "Restart Worker" in the "Profiling and Debugging" section.
-
-![Selecting Workers](images/dynamic_profiling_debugging_4.png "Selecting Workers")
-
-In the Executors table, click the checkbox in the Actions column next to any executor, and any other executors belonging to the same worker are automatically selected. When the action has completed, any output files created will available at the link in the Actions column.
-
-![Profiling and Debugging](images/dynamic_profiling_debugging_1.png "Profiling and Debugging")
-
-For start jprofile, provide a timeout in minutes (or 10 if not needed). Then click on “Start”.
-
-![After starting jprofile for worker](images/dynamic_profiling_debugging_2.png "After jprofile for worker ")
-
-To stop the jprofile logging click on the “Stop” button. This dumps the jprofile stats and stops the profiling. Refresh the page for the line to disappear from the UI.
-
-Click on "My Dump Files" to go the logviewer UI for list of worker specific dump files.
-
-![Dump Files Links for worker](images/dynamic_profiling_debugging_3.png "Dump Files Links for worker")
-
-Configuration
--------------
-
-The "worker.profiler.command" can be configured to point to specific pluggable profiler, heapdump commands. The "worker.profiler.enabled" can be disabled if plugin is not available or jdk does not support Jprofile flight recording so that worker JVM options will not have "worker.profiler.childopts". To use different profiler plugin, you can change these configuration.
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/ack_tree.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/ack_tree.png b/docs/documentation/images/ack_tree.png
deleted file mode 100644
index 2134cc8..0000000
Binary files a/docs/documentation/images/ack_tree.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/batched-stream.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/batched-stream.png b/docs/documentation/images/batched-stream.png
deleted file mode 100644
index 1e6aa01..0000000
Binary files a/docs/documentation/images/batched-stream.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/images/drpc-workflow.png
----------------------------------------------------------------------
diff --git a/docs/documentation/images/drpc-workflow.png b/docs/documentation/images/drpc-workflow.png
deleted file mode 100644
index 9905648..0000000
Binary files a/docs/documentation/images/drpc-workflow.png and /dev/null differ


[12/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Lifecycle-of-a-topology.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Lifecycle-of-a-topology.md b/docs/documentation/Lifecycle-of-a-topology.md
deleted file mode 100644
index 68e5757..0000000
--- a/docs/documentation/Lifecycle-of-a-topology.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-title: Lifecycle of a Storm Topology
-layout: documentation
-documentation: true
----
-(**NOTE**: this page is based on the 0.7.1 code; many things have changed since then, including a split between tasks and executors, and a reorganization of the code under `storm-core/src` rather than `src/`.)
-
-This page explains in detail the lifecycle of a topology from running the "storm jar" command to uploading the topology to Nimbus to the supervisors starting/stopping workers to workers and tasks setting themselves up. It also explains how Nimbus monitors topologies and how topologies are shutdown when they are killed.
-
-First a couple of important notes about topologies:
-
-1. The actual topology that runs is different than the topology the user specifies. The actual topology has implicit streams and an implicit "acker" bolt added to manage the acking framework (used to guarantee data processing). The implicit topology is created via the [system-topology!](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/common.clj#L188) function.
-2. `system-topology!` is used in two places:
-  - when Nimbus is creating tasks for the topology [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L316)
-  - in the worker so it knows where it needs to route messages to [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L90)
-
-## Starting a topology
-
-- "storm jar" command executes your class with the specified arguments. The only special thing that "storm jar" does is set the "storm.jar" environment variable for use by `StormSubmitter` later. [code](https://github.com/apache/storm/blob/0.7.1/bin/storm#L101)
-- When your code uses `StormSubmitter.submitTopology`, `StormSubmitter` takes the following actions:
-  - First, `StormSubmitter` uploads the jar if it hasn't been uploaded before. [code](https://github.com/apache/storm/blob/0.7.1/src/jvm/backtype/storm/StormSubmitter.java#L83)
-    - Jar uploading is done via Nimbus's Thrift interface [code](https://github.com/apache/storm/blob/0.7.1/src/storm.thrift#L200)
-    - `beginFileUpload` returns a path in Nimbus's inbox
-    - 15 kilobytes are uploaded at a time through `uploadChunk`
-    - `finishFileUpload` is called when it's finished uploading
-    - Here is Nimbus's implementation of those Thrift methods: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L694)
-  - Second, `StormSubmitter` calls `submitTopology` on the Nimbus thrift interface [code](https://github.com/apache/storm/blob/0.7.1/src/jvm/backtype/storm/StormSubmitter.java#L60)
-    - The topology config is serialized using JSON (JSON is used so that writing DSL's in any language is as easy as possible)
-    - Notice that the Thrift `submitTopology` call takes in the Nimbus inbox path where the jar was uploaded
-
-- Nimbus receives the topology submission. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L639)
-- Nimbus normalizes the topology configuration. The main purpose of normalization is to ensure that every single task will have the same serialization registrations, which is critical for getting serialization working correctly. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L557)
-- Nimbus sets up the static state for the topology [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L661)
-    - Jars and configs are kept on local filesystem because they're too big for Zookeeper. The jar and configs are copied into the path {nimbus local dir}/stormdist/{topology id}
-    - `setup-storm-static` writes task -> component mapping into ZK
-    - `setup-heartbeats` creates a ZK "directory" in which tasks can heartbeat
-- Nimbus calls `mk-assignment` to assign tasks to machines [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L458)
-    - Assignment record definition is here: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/common.clj#L25)
-    - Assignment contains:
-      - `master-code-dir`: used by supervisors to download the correct jars/configs for the topology from Nimbus
-      - `task->node+port`: Map from a task id to the worker that task should be running on. (A worker is identified by a node/port pair)
-      - `node->host`: A map from node id to hostname. This is used so workers know which machines to connect to to communicate with other workers. Node ids are used to identify supervisors so that multiple supervisors can be run on one machine. One place this is done is with Mesos integration.
-      - `task->start-time-secs`: Contains a map from task id to the timestamp at which Nimbus launched that task. This is used by Nimbus when monitoring topologies, as tasks are given a longer timeout to heartbeat when they're first launched (the launch timeout is configured by "nimbus.task.launch.secs" config)
-- Once topologies are assigned, they're initially in a deactivated mode. `start-storm` writes data into Zookeeper so that the cluster knows the topology is active and can start emitting tuples from spouts. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L504)
-
-- TODO cluster state diagram (show all nodes and what's kept everywhere)
-
-- Supervisor runs two functions in the background:
-    - `synchronize-supervisor`: This is called whenever assignments in Zookeeper change and also every 10 seconds. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/supervisor.clj#L241)
-      - Downloads code from Nimbus for topologies assigned to this machine for which it doesn't have the code yet. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/supervisor.clj#L258)
-      - Writes into local filesystem what this node is supposed to be running. It writes a map from port -> LocalAssignment. LocalAssignment contains a topology id as well as the list of task ids for that worker. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/supervisor.clj#L13)
-    - `sync-processes`: Reads from the LFS what `synchronize-supervisor` wrote and compares that to what's actually running on the machine. It then starts/stops worker processes as necessary to synchronize. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/supervisor.clj#L177)
-    
-- Worker processes start up through the `mk-worker` function [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L67)
-  - Worker connects to other workers and starts a thread to monitor for changes. So if a worker gets reassigned, the worker will automatically reconnect to the other worker's new location. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L123)
-  - Monitors whether a topology is active or not and stores that state in the `storm-active-atom` variable. This variable is used by tasks to determine whether or not to call `nextTuple` on the spouts. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L155)
-  - The worker launches the actual tasks as threads within it [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L178)
-- Tasks are set up through the `mk-task` function [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L160)
-  - Tasks set up routing function which takes in a stream and an output tuple and returns a list of task ids to send the tuple to [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L207) (there's also a 3-arity version used for direct streams)
-  - Tasks set up the spout-specific or bolt-specific code with [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L241)
-   
-## Topology Monitoring
-
-- Nimbus monitors the topology during its lifetime
-   - Schedules recurring task on the timer thread to check the topologies [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L623)
-   - Nimbus's behavior is represented as a finite state machine [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L98)
-   - The "monitor" event is called on a topology every "nimbus.monitor.freq.secs", which calls `reassign-topology` through `reassign-transition` [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L497)
-   - `reassign-topology` calls `mk-assignments`, the same function used to assign the topology the first time. `mk-assignments` is also capable of incrementally updating a topology
-      - `mk-assignments` checks heartbeats and reassigns workers as necessary
-      - Any reassignments change the state in ZK, which will trigger supervisors to synchronize and start/stop workers
-      
-## Killing a topology
-
-- "storm kill" command runs this code which just calls the Nimbus Thrift interface to kill the topology: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/command/kill_topology.clj)
-- Nimbus receives the kill command [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L671)
-- Nimbus applies the "kill" transition to the topology [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L676)
-- The kill transition function changes the status of the topology to "killed" and schedules the "remove" event to run "wait time seconds" in the future. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L63)
-   - The wait time defaults to the topology message timeout but can be overridden with the -w flag in the "storm kill" command
-   - This causes the topology to be deactivated for the wait time before its actually shut down. This gives the topology a chance to finish processing what it's currently processing before shutting down the workers
-   - Changing the status during the kill transition ensures that the kill protocol is fault-tolerant to Nimbus crashing. On startup, if the status of the topology is "killed", Nimbus schedules the remove event to run "wait time seconds" in the future [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L111)
-- Removing a topology cleans out the assignment and static information from ZK [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L116)
-- A separate cleanup thread runs the `do-cleanup` function which will clean up the heartbeat dir and the jars/configs stored locally. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/nimbus.clj#L577)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Local-mode.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Local-mode.md b/docs/documentation/Local-mode.md
deleted file mode 100644
index 5ffd365..0000000
--- a/docs/documentation/Local-mode.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: Local Mode
-layout: documentation
-documentation: true
----
-Local mode simulates a Storm cluster in process and is useful for developing and testing topologies. Running topologies in local mode is similar to running topologies [on a cluster](Running-topologies-on-a-production-cluster.html). 
-
-To create an in-process cluster, simply use the `LocalCluster` class. For example:
-
-```java
-import backtype.storm.LocalCluster;
-
-LocalCluster cluster = new LocalCluster();
-```
-
-You can then submit topologies using the `submitTopology` method on the `LocalCluster` object. Just like the corresponding method on [StormSubmitter](/javadoc/apidocs/backtype/storm/StormSubmitter.html), `submitTopology` takes a name, a topology configuration, and the topology object. You can then kill a topology using the `killTopology` method which takes the topology name as an argument.
-
-To shutdown a local cluster, simple call:
-
-```java
-cluster.shutdown();
-```
-
-### Common configurations for local mode
-
-You can see a full list of configurations [here](/javadoc/apidocs/backtype/storm/Config.html).
-
-1. **Config.TOPOLOGY_MAX_TASK_PARALLELISM**: This config puts a ceiling on the number of threads spawned for a single component. Oftentimes production topologies have a lot of parallelism (hundreds of threads) which places unreasonable load when trying to test the topology in local mode. This config lets you easy control that parallelism.
-2. **Config.TOPOLOGY_DEBUG**: When this is set to true, Storm will log a message every time a tuple is emitted from any spout or bolt. This is extremely useful for debugging.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Logs.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Logs.md b/docs/documentation/Logs.md
deleted file mode 100644
index 28e6693..0000000
--- a/docs/documentation/Logs.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Storm Logs
-layout: documentation
-documentation: true
----
-Logs in Storm are essential for tracking the status, operations, error messages and debug information for all the 
-daemons (e.g., nimbus, supervisor, logviewer, drpc, ui, pacemaker) and topologies' workers.
-
-### Location of the Logs
-All the daemon logs are placed under ${storm.log.dir} directory, which an administrator can set in the System properties or
-in the cluster configuration. By default, ${storm.log.dir} points to ${storm.home}/logs.
-
-All the worker logs are placed under the workers-artifacts directory in a hierarchical manner, e.g.,
-${workers-artifacts}/${topologyId}/${port}/worker.log. Users can set the workers-artifacts directory
-by configuring the variable "storm.workers.artifacts.dir". By default, workers-artifacts directory
-locates at ${storm.log.dir}/logs/workers-artifacts.
-
-### Using the Storm UI for Log View/Download and Log Search
-Daemon and worker logs are allowed to view and download through Storm UI by authorized users.
-
-To improve the debugging of Storm, we provide the Log Search feature.
-Log Search supports searching in a certain log file or in all of a topology's log files:
-
-String search in a log file: In the log page for a worker, a user can search a certain string, e.g., "Exception", in a certain worker log. This search can happen for both normal text log or rolled zip log files. In the results, the offset and matched lines will be displayed.
-
-![Search in a log](images/search-for-a-single-worker-log.png "Search in a log")
-
-Search in a topology: a user can also search a string for a certain topology by clicking the icon of magnifying lens at the top right corner of the UI page. This means the UI will try to search on all the supervisor nodes in a distributed way to find the matched string in all logs for this topology. The search can happen for either normal text log files or rolled zip log files by checking/unchecking the "Search archived logs:" box. Then the matched results can be shown on the UI with url links, directing the user to the certain logs on each supervisor node. This powerful feature is very helpful for users to find certain problematic supervisor nodes running this topology.
-
-![Search in a topology](images/search-a-topology.png "Search in a topology")

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Maven.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Maven.md b/docs/documentation/Maven.md
deleted file mode 100644
index 83e1d1c..0000000
--- a/docs/documentation/Maven.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-layout: documentation
----
-To develop topologies, you'll need the Storm jars on your classpath. You should either include the unpacked jars in the classpath for your project or use Maven to include Storm as a development dependency. Storm is hosted on Maven Central. To include Storm in your project as a development dependency, add the following to your pom.xml:
-
-
-```xml
-<dependency>
-  <groupId>org.apache.storm</groupId>
-  <artifactId>storm-core</artifactId>
-  <version>0.9.5</version>
-  <scope>provided</scope>
-</dependency>
-```
-
-[Here's an example](https://github.com/apache/storm/blob/master/examples/storm-starter/pom.xml) of a pom.xml for a Storm project.
-
-### Developing Storm
-
-Please refer to [DEVELOPER.md](https://github.com/apache/storm/blob/master/DEVELOPER.md) for more details.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Message-passing-implementation.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Message-passing-implementation.md b/docs/documentation/Message-passing-implementation.md
deleted file mode 100644
index a17f66a..0000000
--- a/docs/documentation/Message-passing-implementation.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Message Passing Implementation
-layout: documentation
-documentation: true
----
-(Note: this walkthrough is out of date as of 0.8.0. 0.8.0 revamped the message passing infrastructure to be based on the Disruptor)
-
-This page walks through how emitting and transferring tuples works in Storm.
-
-- Worker is responsible for message transfer
-   - `refresh-connections` is called every "task.refresh.poll.secs" or whenever assignment in ZK changes. It manages connections to other workers and maintains a mapping from task -> worker [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L123)
-   - Provides a "transfer function" that is used by tasks to send tuples to other tasks. The transfer function takes in a task id and a tuple, and it serializes the tuple and puts it onto a "transfer queue". There is a single transfer queue for each worker. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L56)
-   - The serializer is thread-safe [code](https://github.com/apache/storm/blob/0.7.1/src/jvm/backtype/storm/serialization/KryoTupleSerializer.java#L26)
-   - The worker has a single thread which drains the transfer queue and sends the messages to other workers [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L185)
-   - Message sending happens through this protocol: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/messaging/protocol.clj)
-   - The implementation for distributed mode uses ZeroMQ [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/messaging/zmq.clj)
-   - The implementation for local mode uses in memory Java queues (so that it's easy to use Storm locally without needing to get ZeroMQ installed) [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/messaging/local.clj)
-- Receiving messages in tasks works differently in local mode and distributed mode
-   - In local mode, the tuple is sent directly to an in-memory queue for the receiving task [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/messaging/local.clj#L21)
-   - In distributed mode, each worker listens on a single TCP port for incoming messages and then routes those messages in-memory to tasks. The TCP port is called a "virtual port", because it receives [task id, message] and then routes it to the actual task. [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/worker.clj#L204)
-      - The virtual port implementation is here: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/zilch/virtual_port.clj)
-      - Tasks listen on an in-memory ZeroMQ port for messages from the virtual port [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L201)
-        - Bolts listen here: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L489)
-        - Spouts listen here: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L382)
-- Tasks are responsible for message routing. A tuple is emitted either to a direct stream (where the task id is specified) or a regular stream. In direct streams, the message is only sent if that bolt subscribes to that direct stream. In regular streams, the stream grouping functions are used to determine the task ids to send the tuple to.
-  - Tasks have a routing map from {stream id} -> {component id} -> {stream grouping function} [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L198)
-  - The "tasks-fn" returns the task ids to send the tuples to for either regular stream emit or direct stream emit [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L207)
-  - After getting the output task ids, bolts and spouts use the transfer-fn provided by the worker to actually transfer the tuples
-      - Bolt transfer code here: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L429)
-      - Spout transfer code here: [code](https://github.com/apache/storm/blob/0.7.1/src/clj/backtype/storm/daemon/task.clj#L329)

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Metrics.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Metrics.md b/docs/documentation/Metrics.md
deleted file mode 100644
index a84649d..0000000
--- a/docs/documentation/Metrics.md
+++ /dev/null
@@ -1,36 +0,0 @@
----
-title: Storm Metrics
-layout: documentation
-documentation: true
----
-Storm exposes a metrics interface to report summary statistics across the full topology.
-It's used internally to track the numbers you see in the Nimbus UI console: counts of executes and acks; average process latency per bolt; worker heap usage; and so forth.
-
-### Metric Types
-
-Metrics have to implement just one method, `getValueAndReset` -- do any remaining work to find the summary value, and reset back to an initial state. For example, the MeanReducer divides the running total by its running count to find the mean, then initializes both values back to zero.
-
-Storm gives you these metric types:
-
-* [AssignableMetric](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/AssignableMetric.java) -- set the metric to the explicit value you supply. Useful if it's an external value or in the case that you are already calculating the summary statistic yourself.
-* [CombinedMetric](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/CombinedMetric.java) -- generic interface for metrics that can be updated associatively. 
-* [CountMetric](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/CountMetric.java) -- a running total of the supplied values. Call `incr()` to increment by one, `incrBy(n)` to add/subtract the given number.
-  - [MultiCountMetric](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/MultiCountMetric.java) -- a hashmap of count metrics.
-* [ReducedMetric](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/ReducedMetric.java)
-  - [MeanReducer](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/MeanReducer.java) -- track a running average of values given to its `reduce()` method. (It accepts `Double`, `Integer` or `Long` values, and maintains the internal average as a `Double`.) Despite his reputation, the MeanReducer is actually a pretty nice guy in person.
-  - [MultiReducedMetric](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/metric/api/MultiReducedMetric.java) -- a hashmap of reduced metrics.
-
-
-### Metric Consumer
-
-
-### Build your own metric
-
-
-
-### Builtin Metrics
-
-The [builtin metrics](https://github.com/apache/storm/blob/46c3ba7/storm-core/src/clj/backtype/storm/daemon/builtin_metrics.clj) instrument Storm itself.
-
-[builtin_metrics.clj](https://github.com/apache/storm/blob/46c3ba7/storm-core/src/clj/backtype/storm/daemon/builtin_metrics.clj) sets up data structures for the built-in metrics, and facade methods that the other framework components can use to update them. The metrics themselves are calculated in the calling code -- see for example [`ack-spout-msg`](https://github.com/apache/storm/blob/46c3ba7/storm-core/src/clj/backtype/storm/daemon/executor.clj#358)  in `clj/b/s/daemon/daemon/executor.clj`
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Multilang-protocol.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Multilang-protocol.md b/docs/documentation/Multilang-protocol.md
deleted file mode 100644
index 2a90059..0000000
--- a/docs/documentation/Multilang-protocol.md
+++ /dev/null
@@ -1,287 +0,0 @@
----
-title: Multi-Lang Protocol
-layout: documentation
-documentation: true
----
-This page explains the multilang protocol as of Storm 0.7.1. Versions prior to 0.7.1 used a somewhat different protocol, documented [here](Storm-multi-language-protocol-(versions-0.7.0-and-below\).html).
-
-# Storm Multi-Language Protocol
-
-## Shell Components
-
-Support for multiple languages is implemented via the ShellBolt,
-ShellSpout, and ShellProcess classes.  These classes implement the
-IBolt and ISpout interfaces and the protocol for executing a script or
-program via the shell using Java's ProcessBuilder class.
-
-## Output fields
-
-Output fields are part of the Thrift definition of the topology. This means that when you multilang in Java, you need to create a bolt that extends ShellBolt, implements IRichBolt, and declare the fields in `declareOutputFields` (similarly for ShellSpout).
-
-You can learn more about this on [Concepts](Concepts.html)
-
-## Protocol Preamble
-
-A simple protocol is implemented via the STDIN and STDOUT of the
-executed script or program. All data exchanged with the process is
-encoded in JSON, making support possible for pretty much any language.
-
-# Packaging Your Stuff
-
-To run a shell component on a cluster, the scripts that are shelled
-out to must be in the `resources/` directory within the jar submitted
-to the master.
-
-However, during development or testing on a local machine, the resources
-directory just needs to be on the classpath.
-
-## The Protocol
-
-Notes:
-
-* Both ends of this protocol use a line-reading mechanism, so be sure to
-trim off newlines from the input and to append them to your output.
-* All JSON inputs and outputs are terminated by a single line containing "end". Note that this delimiter is not itself JSON encoded.
-* The bullet points below are written from the perspective of the script writer's
-STDIN and STDOUT.
-
-### Initial Handshake
-
-The initial handshake is the same for both types of shell components:
-
-* STDIN: Setup info. This is a JSON object with the Storm configuration, a PID directory, and a topology context, like this:
-
-```
-{
-    "conf": {
-        "topology.message.timeout.secs": 3,
-        // etc
-    },
-    "pidDir": "...",
-    "context": {
-        "task->component": {
-            "1": "example-spout",
-            "2": "__acker",
-            "3": "example-bolt1",
-            "4": "example-bolt2"
-        },
-        "taskid": 3,
-        // Everything below this line is only available in Storm 0.10.0+
-        "componentid": "example-bolt"
-        "stream->target->grouping": {
-        	"default": {
-        		"example-bolt2": {
-        			"type": "SHUFFLE"}}},
-        "streams": ["default"],
- 		"stream->outputfields": {"default": ["word"]},
-	    "source->stream->grouping": {
-	    	"example-spout": {
-	    		"default": {
-	    			"type": "FIELDS",
-	    			"fields": ["word"]
-	    		}
-	    	}
-	    }
-	    "source->stream->fields": {
-	    	"example-spout": {
-	    		"default": ["word"]
-	    	}
-	    }
-	}
-}
-```
-
-Your script should create an empty file named with its PID in this directory. e.g.
-the PID is 1234, so an empty file named 1234 is created in the directory. This
-file lets the supervisor know the PID so it can shutdown the process later on.
-
-As of Storm 0.10.0, the context sent by Storm to shell components has been
-enhanced substantially to include all aspects of the topology context available
-to JVM components.  One key addition is the ability to determine a shell
-component's source and targets (i.e., inputs and outputs) in the topology via
-the `stream->target->grouping` and `source->stream->grouping` dictionaries.  At
-the innermost level of these nested dictionaries, groupings are represented as
-a dictionary that minimally has a `type` key, but can also have a `fields` key
-to specify which fields are involved in a `FIELDS` grouping.
-
-* STDOUT: Your PID, in a JSON object, like `{"pid": 1234}`. The shell component will log the PID to its log.
-
-What happens next depends on the type of component:
-
-### Spouts
-
-Shell spouts are synchronous. The rest happens in a while(true) loop:
-
-* STDIN: Either a next, ack, or fail command.
-
-"next" is the equivalent of ISpout's `nextTuple`. It looks like:
-
-```
-{"command": "next"}
-```
-
-"ack" looks like:
-
-```
-{"command": "ack", "id": "1231231"}
-```
-
-"fail" looks like:
-
-```
-{"command": "fail", "id": "1231231"}
-```
-
-* STDOUT: The results of your spout for the previous command. This can
-  be a sequence of emits and logs.
-
-An emit looks like:
-
-```
-{
-	"command": "emit",
-	// The id for the tuple. Leave this out for an unreliable emit. The id can
-    // be a string or a number.
-	"id": "1231231",
-	// The id of the stream this tuple was emitted to. Leave this empty to emit to default stream.
-	"stream": "1",
-	// If doing an emit direct, indicate the task to send the tuple to
-	"task": 9,
-	// All the values in this tuple
-	"tuple": ["field1", 2, 3]
-}
-```
-
-If not doing an emit direct, you will immediately receive the task ids to which the tuple was emitted on STDIN as a JSON array.
-
-A "log" will log a message in the worker log. It looks like:
-
-```
-{
-	"command": "log",
-	// the message to log
-	"msg": "hello world!"
-}
-```
-
-* STDOUT: a "sync" command ends the sequence of emits and logs. It looks like:
-
-```
-{"command": "sync"}
-```
-
-After you sync, ShellSpout will not read your output until it sends another next, ack, or fail command.
-
-Note that, similarly to ISpout, all of the spouts in the worker will be locked up after a next, ack, or fail, until you sync. Also like ISpout, if you have no tuples to emit for a next, you should sleep for a small amount of time before syncing. ShellSpout will not automatically sleep for you.
-
-
-### Bolts
-
-The shell bolt protocol is asynchronous. You will receive tuples on STDIN as soon as they are available, and you may emit, ack, and fail, and log at any time by writing to STDOUT, as follows:
-
-* STDIN: A tuple! This is a JSON encoded structure like this:
-
-```
-{
-    // The tuple's id - this is a string to support languages lacking 64-bit precision
-	"id": "-6955786537413359385",
-	// The id of the component that created this tuple
-	"comp": "1",
-	// The id of the stream this tuple was emitted to
-	"stream": "1",
-	// The id of the task that created this tuple
-	"task": 9,
-	// All the values in this tuple
-	"tuple": ["snow white and the seven dwarfs", "field2", 3]
-}
-```
-
-* STDOUT: An ack, fail, emit, or log. Emits look like:
-
-```
-{
-	"command": "emit",
-	// The ids of the tuples this output tuples should be anchored to
-	"anchors": ["1231231", "-234234234"],
-	// The id of the stream this tuple was emitted to. Leave this empty to emit to default stream.
-	"stream": "1",
-	// If doing an emit direct, indicate the task to send the tuple to
-	"task": 9,
-	// All the values in this tuple
-	"tuple": ["field1", 2, 3]
-}
-```
-
-If not doing an emit direct, you will receive the task ids to which
-the tuple was emitted on STDIN as a JSON array. Note that, due to the
-asynchronous nature of the shell bolt protocol, when you read after
-emitting, you may not receive the task ids. You may instead read the
-task ids for a previous emit or a new tuple to process. You will
-receive the task id lists in the same order as their corresponding
-emits, however.
-
-An ack looks like:
-
-```
-{
-	"command": "ack",
-	// the id of the tuple to ack
-	"id": "123123"
-}
-```
-
-A fail looks like:
-
-```
-{
-	"command": "fail",
-	// the id of the tuple to fail
-	"id": "123123"
-}
-```
-
-A "log" will log a message in the worker log. It looks like:
-
-```
-{
-	"command": "log",
-	// the message to log
-	"msg": "hello world!"
-}
-```
-
-* Note that, as of version 0.7.1, there is no longer any need for a
-  shell bolt to 'sync'.
-
-### Handling Heartbeats (0.9.3 and later)
-
-As of Storm 0.9.3, heartbeats have been between ShellSpout/ShellBolt and their
-multi-lang subprocesses to detect hanging/zombie subprocesses.  Any libraries
-for interfacing with Storm via multi-lang must take the following actions
-regarding hearbeats:
-
-#### Spout
-
-Shell spouts are synchronous, so subprocesses always send `sync` commands at the
-end of `next()`,  so you should not have to do much to support heartbeats for
-spouts.  That said, you must not let subprocesses sleep more than the worker
-timeout during `next()`.
-
-#### Bolt
-
-Shell bolts are asynchronous, so a ShellBolt will send heartbeat tuples to its
-subprocess periodically.  Heartbeat tuple looks like:
-
-```
-{
-	"id": "-6955786537413359385",
-	"comp": "1",
-	"stream": "__heartbeat",
-	// this shell bolt's system task id
-	"task": -1,
-	"tuple": []
-}
-```
-
-When subprocess receives heartbeat tuple, it must send a `sync` command back to
-ShellBolt.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Pacemaker.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Pacemaker.md b/docs/documentation/Pacemaker.md
deleted file mode 100644
index 24e3e7f..0000000
--- a/docs/documentation/Pacemaker.md
+++ /dev/null
@@ -1,108 +0,0 @@
-# Pacemaker
-
-### Introduction
-Pacemaker is a storm daemon designed to process heartbeats from workers. As Storm is scaled up, ZooKeeper begins to become a bottleneck due to high volumes of writes from workers doing heartbeats. Lots of writes to disk and too much traffic across the network is generated as ZooKeeper tries to maintain consistency.
-
-Because heartbeats are of an ephemeral nature, they do not need to be persisted to disk or synced across nodes; an in-memory store will do. This is the role of Pacemaker. Pacemaker functions as a simple in-memory key/value store with ZooKeeper-like, directory-style keys and byte array values.
-
-The corresponding Pacemaker client is a plugin for the `ClusterState` interface, `org.apache.storm.pacemaker.pacemaker_state_factory`. Heartbeat calls are funneled by the `ClusterState` produced by `pacemaker_state_factory` into the Pacemaker daemon, while other set/get operations are forwarded to ZooKeeper.
-
-------
-
-### Configuration
-
- - `pacemaker.host` : The host that the Pacemaker daemon is running on
- - `pacemaker.port` : The port that Pacemaker will listen on
- - `pacemaker.max.threads` : Maximum number of threads Pacemaker daemon will use to handle requests.
- - `pacemaker.childopts` : Any JVM parameters that need to go to the Pacemaker. (used by storm-deploy project)
- - `pacemaker.auth.method` : The authentication method that is used (more info below)
-
-#### Example
-
-To get Pacemaker up and running, set the following option in the cluster config on all nodes:
-```
-storm.cluster.state.store: "org.apache.storm.pacemaker.pacemaker_state_factory"
-```
-
-The Pacemaker host also needs to be set on all nodes:
-```
-pacemaker.host: somehost.mycompany.com
-```
-
-And then start all of your daemons
-
-(including Pacemaker):
-```
-$ storm pacemaker
-```
-
-The Storm cluster should now be pushing all worker heartbeats through Pacemaker.
-
-### Security
-
-Currently digest (password-based) and Kerberos security are supported. Security is currently only around reads, not writes. Writes may be performed by anyone, whereas reads may only be performed by authorized and authenticated users. This is an area for future development, as it leaves the cluster open to DoS attacks, but it prevents any sensitive information from reaching unauthorized eyes, which was the main goal.
-
-#### Digest
-To configure digest authentication, set `pacemaker.auth.method: DIGEST` in the cluster config on the nodes hosting Nimbus and Pacemaker.
-The nodes must also have `java.security.auth.login.config` set to point to a JAAS config file containing the following structure:
-```
-PacemakerDigest {
-    username="some username"
-    password="some password";
-};
-```
-
-Any node with these settings configured will be able to read from Pacemaker.
-Worker nodes need not have these configs set, and may keep `pacemaker.auth.method: NONE` set, since they do not need to read from the Pacemaker daemon.
-
-#### Kerberos
-To configure Kerberos authentication, set `pacemaker.auth.method: KERBEROS` in the cluster config on the nodes hosting Nimbus and Pacemaker.
-The nodes must also have `java.security.auth.login.config` set to point to a JAAS config.
-
-The JAAS config on Nimbus must look something like this:
-```
-PacemakerClient {
-    com.sun.security.auth.module.Krb5LoginModule required
-    useKeyTab=true
-    keyTab="/etc/keytabs/nimbus.keytab"
-    storeKey=true
-    useTicketCache=false
-    serviceName="pacemaker"
-    principal="nimbus@MY.COMPANY.COM";
-};
-                         
-```
-
-The JAAS config on Pacemaker must look something like this:
-```
-PacemakerServer {
-   com.sun.security.auth.module.Krb5LoginModule required
-   useKeyTab=true
-   keyTab="/etc/keytabs/pacemaker.keytab"
-   storeKey=true
-   useTicketCache=false
-   principal="pacemaker@MY.COMPANY.COM";
-};
-```
-
- - The client's user principal in the `PacemakerClient` section on the Nimbus host must match the `nimbus.daemon.user` storm cluster config value.
- - The client's `serviceName` value must match the server's user principal in the `PacemakerServer` section on the Pacemaker host.
-
-
-### Fault Tolerance
-
-Pacemaker runs as a single daemon instance, making it a potential Single Point of Failure.
-
-If Pacemaker becomes unreachable by Nimbus, through crash or network partition, the workers will continue to run, and Nimbus will repeatedly attempt to reconnect. Nimbus functionality will be disrupted, but the topologies themselves will continue to run.
-In case of partition of the cluster where Nimbus and Pacemaker are on the same side of the partition, the workers that are on the other side of the partition will not be able to heartbeat, and Nimbus will reschedule the tasks elsewhere. This is probably what we want to happen anyway.
-
-
-### ZooKeeper Comparison
-Compared to ZooKeeper, Pacemaker uses less CPU, less memory, and of course no disk for the same load, thanks to lack of overhead from maintaining consistency between nodes.
-On Gigabit networking, there is a theoretical limit of about 6000 nodes. However, the real limit is likely around 2000-3000 nodes. These limits have not yet been tested.
-On a 270 supervisor cluster, fully scheduled with topologies, Pacemaker resource utilization was 70% of one core and nearly 1GiB of RAM on a machine with 4 `Intel(R) Xeon(R) CPU E5530 @ 2.40GHz` and 24GiB of RAM.
-
-
-There is an easy route to HA for Pacemaker. Unlike ZooKeeper, Pacemaker should be able to scale horizontally without overhead. By contrast, with ZooKeeper, there are diminishing returns when adding ZK nodes.
-
-In short, a single Pacemaker node should be able to handle many times the load that a ZooKeeper cluster can, and future HA work allowing horizontal scaling will increase that even farther.


[09/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Trident-API-Overview.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Trident-API-Overview.md b/docs/documentation/Trident-API-Overview.md
deleted file mode 100644
index bc5dcb1..0000000
--- a/docs/documentation/Trident-API-Overview.md
+++ /dev/null
@@ -1,312 +0,0 @@
----
-title: Trident API Overview
-layout: documentation
-documentation: true
----
-
-The core data model in Trident is the "Stream", processed as a series of batches. A stream is partitioned among the nodes in the cluster, and operations applied to a stream are applied in parallel across each partition.
-
-There are five kinds of operations in Trident:
-
-1. Operations that apply locally to each partition and cause no network transfer
-2. Repartitioning operations that repartition a stream but otherwise don't change the contents (involves network transfer)
-3. Aggregation operations that do network transfer as part of the operation
-4. Operations on grouped streams
-5. Merges and joins
-
-## Partition-local operations
-
-Partition-local operations involve no network transfer and are applied to each batch partition independently.
-
-### Functions
-
-A function takes in a set of input fields and emits zero or more tuples as output. The fields of the output tuple are appended to the original input tuple in the stream. If a function emits no tuples, the original input tuple is filtered out. Otherwise, the input tuple is duplicated for each output tuple. Suppose you have this function:
-
-```java
-public class MyFunction extends BaseFunction {
-    public void execute(TridentTuple tuple, TridentCollector collector) {
-        for(int i=0; i < tuple.getInteger(0); i++) {
-            collector.emit(new Values(i));
-        }
-    }
-}
-```
-
-Now suppose you have a stream in the variable "mystream" with the fields ["a", "b", "c"] with the following tuples:
-
-```
-[1, 2, 3]
-[4, 1, 6]
-[3, 0, 8]
-```
-
-If you run this code:
-
-```java
-mystream.each(new Fields("b"), new MyFunction(), new Fields("d")))
-```
-
-The resulting tuples would have fields ["a", "b", "c", "d"] and look like this:
-
-```
-[1, 2, 3, 0]
-[1, 2, 3, 1]
-[4, 1, 6, 0]
-```
-
-### Filters
-
-Filters take in a tuple as input and decide whether or not to keep that tuple or not. Suppose you had this filter:
-
-```java
-public class MyFilter extends BaseFilter {
-    public boolean isKeep(TridentTuple tuple) {
-        return tuple.getInteger(0) == 1 && tuple.getInteger(1) == 2;
-    }
-}
-```
-
-Now suppose you had these tuples with fields ["a", "b", "c"]:
-
-```
-[1, 2, 3]
-[2, 1, 1]
-[2, 3, 4]
-```
-
-If you ran this code:
-
-```java
-mystream.each(new Fields("b", "a"), new MyFilter())
-```
-
-The resulting tuples would be:
-
-```
-[2, 1, 1]
-```
-
-### partitionAggregate
-
-partitionAggregate runs a function on each partition of a batch of tuples. Unlike functions, the tuples emitted by partitionAggregate replace the input tuples given to it. Consider this example:
-
-```java
-mystream.partitionAggregate(new Fields("b"), new Sum(), new Fields("sum"))
-```
-
-Suppose the input stream contained fields ["a", "b"] and the following partitions of tuples:
-
-```
-Partition 0:
-["a", 1]
-["b", 2]
-
-Partition 1:
-["a", 3]
-["c", 8]
-
-Partition 2:
-["e", 1]
-["d", 9]
-["d", 10]
-```
-
-Then the output stream of that code would contain these tuples with one field called "sum":
-
-```
-Partition 0:
-[3]
-
-Partition 1:
-[11]
-
-Partition 2:
-[20]
-```
-
-There are three different interfaces for defining aggregators: CombinerAggregator, ReducerAggregator, and Aggregator.
-
-Here's the interface for CombinerAggregator:
-
-```java
-public interface CombinerAggregator<T> extends Serializable {
-    T init(TridentTuple tuple);
-    T combine(T val1, T val2);
-    T zero();
-}
-```
-
-A CombinerAggregator returns a single tuple with a single field as output. CombinerAggregators run the init function on each input tuple and use the combine function to combine values until there's only one value left. If there's no tuples in the partition, the CombinerAggregator emits the output of the zero function. For example, here's the implementation of Count:
-
-```java
-public class Count implements CombinerAggregator<Long> {
-    public Long init(TridentTuple tuple) {
-        return 1L;
-    }
-
-    public Long combine(Long val1, Long val2) {
-        return val1 + val2;
-    }
-
-    public Long zero() {
-        return 0L;
-    }
-}
-```
-
-The benefits of CombinerAggregators are seen when you use them with the aggregate method instead of partitionAggregate. In that case, Trident automatically optimizes the computation by doing partial aggregations before transferring tuples over the network.
-
-A ReducerAggregator has the following interface:
-
-```java
-public interface ReducerAggregator<T> extends Serializable {
-    T init();
-    T reduce(T curr, TridentTuple tuple);
-}
-```
-
-A ReducerAggregator produces an initial value with init, and then it iterates on that value for each input tuple to produce a single tuple with a single value as output. For example, here's how you would define Count as a ReducerAggregator:
-
-```java
-public class Count implements ReducerAggregator<Long> {
-    public Long init() {
-        return 0L;
-    }
-    
-    public Long reduce(Long curr, TridentTuple tuple) {
-        return curr + 1;
-    }
-}
-```
-
-ReducerAggregator can also be used with persistentAggregate, as you'll see later.
-
-The most general interface for performing aggregations is Aggregator, which looks like this:
-
-```java
-public interface Aggregator<T> extends Operation {
-    T init(Object batchId, TridentCollector collector);
-    void aggregate(T state, TridentTuple tuple, TridentCollector collector);
-    void complete(T state, TridentCollector collector);
-}
-```
-
-Aggregators can emit any number of tuples with any number of fields. They can emit tuples at any point during execution. Aggregators execute in the following way:
-
-1. The init method is called before processing the batch. The return value of init is an Object that will represent the state of the aggregation and will be passed into the aggregate and complete methods.
-2. The aggregate method is called for each input tuple in the batch partition. This method can update the state and optionally emit tuples.
-3. The complete method is called when all tuples for the batch partition have been processed by aggregate. 
-
-Here's how you would implement Count as an Aggregator:
-
-```java
-public class CountAgg extends BaseAggregator<CountState> {
-    static class CountState {
-        long count = 0;
-    }
-
-    public CountState init(Object batchId, TridentCollector collector) {
-        return new CountState();
-    }
-
-    public void aggregate(CountState state, TridentTuple tuple, TridentCollector collector) {
-        state.count+=1;
-    }
-
-    public void complete(CountState state, TridentCollector collector) {
-        collector.emit(new Values(state.count));
-    }
-}
-```
-
-Sometimes you want to execute multiple aggregators at the same time. This is called chaining and can be accomplished like this:
-
-```java
-mystream.chainedAgg()
-        .partitionAggregate(new Count(), new Fields("count"))
-        .partitionAggregate(new Fields("b"), new Sum(), new Fields("sum"))
-        .chainEnd()
-```
-
-This code will run the Count and Sum aggregators on each partition. The output will contain a single tuple with the fields ["count", "sum"].
-
-### stateQuery and partitionPersist
-
-stateQuery and partitionPersist query and update sources of state, respectively. You can read about how to use them on [Trident state doc](Trident-state.html).
-
-### projection
-
-The projection method on Stream keeps only the fields specified in the operation. If you had a Stream with fields ["a", "b", "c", "d"] and you ran this code:
-
-```java
-mystream.project(new Fields("b", "d"))
-```
-
-The output stream would contain only the fields ["b", "d"].
-
-
-## Repartitioning operations
-
-Repartitioning operations run a function to change how the tuples are partitioned across tasks. The number of partitions can also change as a result of repartitioning (for example, if the parallelism hint is greater after repartioning). Repartitioning requires network transfer. Here are the repartitioning functions:
-
-1. shuffle: Use random round robin algorithm to evenly redistribute tuples across all target partitions
-2. broadcast: Every tuple is replicated to all target partitions. This can useful during DRPC – for example, if you need to do a stateQuery on every partition of data.
-3. partitionBy: partitionBy takes in a set of fields and does semantic partitioning based on that set of fields. The fields are hashed and modded by the number of target partitions to select the target partition. partitionBy guarantees that the same set of fields always goes to the same target partition.
-4. global: All tuples are sent to the same partition. The same partition is chosen for all batches in the stream.
-5. batchGlobal: All tuples in the batch are sent to the same partition. Different batches in the stream may go to different partitions. 
-6. partition: This method takes in a custom partitioning function that implements backtype.storm.grouping.CustomStreamGrouping
-
-## Aggregation operations
-
-Trident has aggregate and persistentAggregate methods for doing aggregations on Streams. aggregate is run on each batch of the stream in isolation, while persistentAggregate will aggregation on all tuples across all batches in the stream and store the result in a source of state.
-
-Running aggregate on a Stream does a global aggregation. When you use a ReducerAggregator or an Aggregator, the stream is first repartitioned into a single partition, and then the aggregation function is run on that partition. When you use a CombinerAggregator, on the other hand, first Trident will compute partial aggregations of each partition, then repartition to a single partition, and then finish the aggregation after the network transfer. CombinerAggregator's are far more efficient and should be used when possible.
-
-Here's an example of using aggregate to get a global count for a batch:
-
-```java
-mystream.aggregate(new Count(), new Fields("count"))
-```
-
-Like partitionAggregate, aggregators for aggregate can be chained. However, if you chain a CombinerAggregator with a non-CombinerAggregator, Trident is unable to do the partial aggregation optimization.
-
-You can read more about how to use persistentAggregate in the [Trident state doc](https://github.com/apache/storm/wiki/Trident-state).
-
-## Operations on grouped streams
-
-The groupBy operation repartitions the stream by doing a partitionBy on the specified fields, and then within each partition groups tuples together whose group fields are equal. For example, here's an illustration of a groupBy operation:
-
-![Grouping](images/grouping.png)
-
-If you run aggregators on a grouped stream, the aggregation will be run within each group instead of against the whole batch. persistentAggregate can also be run on a GroupedStream, in which case the results will be stored in a [MapState](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/state/map/MapState.java) with the key being the grouping fields. You can read more about persistentAggregate in the [Trident state doc](Trident-state.html).
-
-Like regular streams, aggregators on grouped streams can be chained.
-
-## Merges and joins
-
-The last part of the API is combining different streams together. The simplest way to combine streams is to merge them into one stream. You can do that with the TridentTopology#merge method, like so:
-
-```java
-topology.merge(stream1, stream2, stream3);
-```
-
-Trident will name the output fields of the new, merged stream as the output fields of the first stream.
-
-Another way to combine streams is with a join. Now, a standard join, like the kind from SQL, require finite input. So they don't make sense with infinite streams. Joins in Trident only apply within each small batch that comes off of the spout. 
-
-Here's an example join between a stream containing fields ["key", "val1", "val2"] and another stream containing ["x", "val1"]:
-
-```java
-topology.join(stream1, new Fields("key"), stream2, new Fields("x"), new Fields("key", "a", "b", "c"));
-```
-
-This joins stream1 and stream2 together using "key" and "x" as the join fields for each respective stream. Then, Trident requires that all the output fields of the new stream be named, since the input streams could have overlapping field names. The tuples emitted from the join will contain:
-
-1. First, the list of join fields. In this case, "key" corresponds to "key" from stream1 and "x" from stream2.
-2. Next, a list of all non-join fields from all streams, in order of how the streams were passed to the join method. In this case, "a" and "b" correspond to "val1" and "val2" from stream1, and "c" corresponds to "val1" from stream2.
-
-When a join happens between streams originating from different spouts, those spouts will be synchronized with how they emit batches. That is, a batch of processing will include tuples from each spout.
-
-You might be wondering – how do you do something like a "windowed join", where tuples from one side of the join are joined against the last hour of tuples from the other side of the join.
-
-To do this, you would make use of partitionPersist and stateQuery. The last hour of tuples from one side of the join would be stored and rotated in a source of state, keyed by the join field. Then the stateQuery would do lookups by the join field to perform the "join".
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Trident-spouts.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Trident-spouts.md b/docs/documentation/Trident-spouts.md
deleted file mode 100644
index f460908..0000000
--- a/docs/documentation/Trident-spouts.md
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Trident Spouts
-layout: documentation
-documentation: true
----
-# Trident spouts
-
-Like in the vanilla Storm API, spouts are the source of streams in a Trident topology. On top of the vanilla Storm spouts, Trident exposes additional APIs for more sophisticated spouts.
-
-There is an inextricable link between how you source your data streams and how you update state (e.g. databases) based on those data streams. See [Trident state doc](Trident-state.html) for an explanation of this – understanding this link is imperative for understanding the spout options available.
-
-Regular Storm spouts will be non-transactional spouts in a Trident topology. To use a regular Storm IRichSpout, create the stream like this in a TridentTopology:
-
-```java
-TridentTopology topology = new TridentTopology();
-topology.newStream("myspoutid", new MyRichSpout());
-```
-
-All spouts in a Trident topology are required to be given a unique identifier for the stream – this identifier must be unique across all topologies run on the cluster. Trident will use this identifier to store metadata about what the spout has consumed in Zookeeper, including the txid and any metadata associated with the spout.
-
-You can configure the Zookeeper storage of spout metadata via the following configuration options:
-
-1. `transactional.zookeeper.servers`: A list of Zookeeper hostnames 
-2. `transactional.zookeeper.port`: The port of the Zookeeper cluster
-3. `transactional.zookeeper.root`: The root dir in Zookeeper where metadata is stored. Metadata will be stored at the path <root path>/<spout id>
-
-## Pipelining
-
-By default, Trident processes a single batch at a time, waiting for the batch to succeed or fail before trying another batch. You can get significantly higher throughput – and lower latency of processing of each batch – by pipelining the batches. You configure the maximum amount of batches to be processed simultaneously with the "topology.max.spout.pending" property. 
-
-Even while processing multiple batches simultaneously, Trident will order any state updates taking place in the topology among batches. For example, suppose you're doing a global count aggregation into a database. The idea is that while you're updating the count in the database for batch 1, you can still be computing the partial counts for batches 2 through 10. Trident won't move on to the state updates for batch 2 until the state updates for batch 1 have succeeded. This is essential for achieving exactly-once processing semantics, as outline in [Trident state doc](Trident-state.html).
-
-## Trident spout types
-
-Here are the following spout APIs available:
-
-1. [ITridentSpout](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/spout/ITridentSpout.java): The most general API that can support transactional or opaque transactional semantics. Generally you'll use one of the partitioned flavors of this API rather than this one directly.
-2. [IBatchSpout](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/spout/IBatchSpout.java): A non-transactional spout that emits batches of tuples at a time
-3. [IPartitionedTridentSpout](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/spout/IPartitionedTridentSpout.java): A transactional spout that reads from a partitioned data source (like a cluster of Kafka servers)
-4. [IOpaquePartitionedTridentSpout](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/spout/IOpaquePartitionedTridentSpout.java): An opaque transactional spout that reads from a partitioned data source
-
-And, like mentioned in the beginning of this tutorial, you can use regular IRichSpout's as well.
- 
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Trident-state.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Trident-state.md b/docs/documentation/Trident-state.md
deleted file mode 100644
index d7fc75e..0000000
--- a/docs/documentation/Trident-state.md
+++ /dev/null
@@ -1,331 +0,0 @@
----
-title: Trident State
-layout: documentation
----
-
-
-Trident has first-class abstractions for reading from and writing to stateful sources. The state can either be internal to the topology – e.g., kept in-memory and backed by HDFS – or externally stored in a database like Memcached or Cassandra. There's no difference in the Trident API for either case.
-
-Trident manages state in a fault-tolerant way so that state updates are idempotent in the face of retries and failures. This lets you reason about Trident topologies as if each message were processed exactly-once.
-
-There's various levels of fault-tolerance possible when doing state updates. Before getting to those, let's look at an example that illustrates the tricks necessary to achieve exactly-once semantics. Suppose that you're doing a count aggregation of your stream and want to store the running count in a database. Now suppose you store in the database a single value representing the count, and every time you process a new tuple you increment the count.
-
-When failures occur, tuples will be replayed. This brings up a problem when doing state updates (or anything with side effects) – you have no idea if you've ever successfully updated the state based on this tuple before. Perhaps you never processed the tuple before, in which case you should increment the count. Perhaps you've processed the tuple and successfully incremented the count, but the tuple failed processing in another step. In this case, you should not increment the count. Or perhaps you saw the tuple before but got an error when updating the database. In this case, you *should* update the database.
-
-By just storing the count in the database, you have no idea whether or not this tuple has been processed before. So you need more information in order to make the right decision. Trident provides the following semantics which are sufficient for achieving exactly-once processing semantics:
-
-1. Tuples are processed as small batches (see [the tutorial](Trident-tutorial.html))
-2. Each batch of tuples is given a unique id called the "transaction id" (txid). If the batch is replayed, it is given the exact same txid.
-3. State updates are ordered among batches. That is, the state updates for batch 3 won't be applied until the state updates for batch 2 have succeeded.
-
-With these primitives, your State implementation can detect whether or not the batch of tuples has been processed before and take the appropriate action to update the state in a consistent way. The action you take depends on the exact semantics provided by your input spouts as to what's in each batch. There's three kinds of spouts possible with respect to fault-tolerance: "non-transactional", "transactional", and "opaque transactional". Likewise, there's three kinds of state possible with respect to fault-tolerance: "non-transactional", "transactional", and "opaque transactional". Let's take a look at each spout type and see what kind of fault-tolerance you can achieve with each.
-
-## Transactional spouts
-
-Remember, Trident processes tuples as small batches with each batch being given a unique transaction id. The properties of spouts vary according to the guarantees they can provide as to what's in each batch. A transactional spout has the following properties:
-
-1. Batches for a given txid are always the same. Replays of batches for a txid will exact same set of tuples as the first time that batch was emitted for that txid.
-2. There's no overlap between batches of tuples (tuples are in one batch or another, never multiple).
-3. Every tuple is in a batch (no tuples are skipped)
-
-This is a pretty easy type of spout to understand, the stream is divided into fixed batches that never change. storm-contrib has [an implementation of a transactional spout](https://github.com/apache/storm/tree/master/external/storm-kafka/src/jvm/storm/kafka/trident/TransactionalTridentKafkaSpout.java) for Kafka.
-
-You might be wondering – why wouldn't you just always use a transactional spout? They're simple and easy to understand. One reason you might not use one is because they're not necessarily very fault-tolerant. For example, the way TransactionalTridentKafkaSpout works is the batch for a txid will contain tuples from all the Kafka partitions for a topic. Once a batch has been emitted, any time that batch is re-emitted in the future the exact same set of tuples must be emitted to meet the semantics of transactional spouts. Now suppose a batch is emitted from TransactionalTridentKafkaSpout, the batch fails to process, and at the same time one of the Kafka nodes goes down. You're now incapable of replaying the same batch as you did before (since the node is down and some partitions for the topic are not unavailable), and processing will halt. 
-
-This is why "opaque transactional" spouts exist – they are fault-tolerant to losing source nodes while still allowing you to achieve exactly-once processing semantics. We'll cover those spouts in the next section though.
-
-(One side note – once Kafka supports replication, it will be possible to have transactional spouts that are fault-tolerant to node failure, but that feature does not exist yet.)
-
-Before we get to "opaque transactional" spouts, let's look at how you would design a State implementation that has exactly-once semantics for transactional spouts. This State type is called a "transactional state" and takes advantage of the fact that any given txid is always associated with the exact same set of tuples.
-
-Suppose your topology computes word count and you want to store the word counts in a key/value database. The key will be the word, and the value will contain the count. You've already seen that storing just the count as the value isn't sufficient to know whether you've processed a batch of tuples before. Instead, what you can do is store the transaction id with the count in the database as an atomic value. Then, when updating the count, you can just compare the transaction id in the database with the transaction id for the current batch. If they're the same, you skip the update – because of the strong ordering, you know for sure that the value in the database incorporates the current batch. If they're different, you increment the count. This logic works because the batch for a txid never changes, and Trident ensures that state updates are ordered among batches.
-
-Consider this example of why it works. Suppose you are processing txid 3 which consists of the following batch of tuples:
-
-```
-["man"]
-["man"]
-["dog"]
-```
-
-Suppose the database currently holds the following key/value pairs:
-
-```
-man => [count=3, txid=1]
-dog => [count=4, txid=3]
-apple => [count=10, txid=2]
-```
-
-The txid associated with "man" is txid 1. Since the current txid is 3, you know for sure that this batch of tuples is not represented in that count. So you can go ahead and increment the count by 2 and update the txid. On the other hand, the txid for "dog" is the same as the current txid. So you know for sure that the increment from the current batch is already represented in the database for the "dog" key. So you can skip the update. After completing updates, the database looks like this:
-
-```
-man => [count=5, txid=3]
-dog => [count=4, txid=3]
-apple => [count=10, txid=2]
-```
-
-Let's now look at opaque transactional spouts and how to design states for that type of spout.
-
-## Opaque transactional spouts
-
-As described before, an opaque transactional spout cannot guarantee that the batch of tuples for a txid remains constant. An opaque transactional spout has the following property:
-
-1. Every tuple is *successfully* processed in exactly one batch. However, it's possible for a tuple to fail to process in one batch and then succeed to process in a later batch.
-
-[OpaqueTridentKafkaSpout](https://github.com/apache/storm/tree/master/external/storm-kafka/src/jvm/storm/kafka/trident/OpaqueTridentKafkaSpout.java) is a spout that has this property and is fault-tolerant to losing Kafka nodes. Whenever it's time for OpaqueTridentKafkaSpout to emit a batch, it emits tuples starting from where the last batch finished emitting. This ensures that no tuple is ever skipped or successfully processed by multiple batches.
-
-With opaque transactional spouts, it's no longer possible to use the trick of skipping state updates if the transaction id in the database is the same as the transaction id for the current batch. This is because the batch may have changed between state updates.
-
-What you can do is store more state in the database. Rather than store a value and transaction id in the database, you instead store a value, transaction id, and the previous value in the database. Let's again use the example of storing a count in the database. Suppose the partial count for your batch is "2" and it's time to apply a state update. Suppose the value in the database looks like this:
-
-```
-{ value = 4,
-  prevValue = 1,
-  txid = 2
-}
-```
-
-Suppose your current txid is 3, different than what's in the database. In this case, you set "prevValue" equal to "value", increment "value" by your partial count, and update the txid. The new database value will look like this:
-
-```
-{ value = 6,
-  prevValue = 4,
-  txid = 3
-}
-```
-
-Now suppose your current txid is 2, equal to what's in the database. Now you know that the "value" in the database contains an update from a previous batch for your current txid, but that batch may have been different so you have to ignore it. What you do in this case is increment "prevValue" by your partial count to compute the new "value". You then set the value in the database to this:
-
-```
-{ value = 3,
-  prevValue = 1,
-  txid = 2
-}
-```
-
-This works because of the strong ordering of batches provided by Trident. Once Trident moves onto a new batch for state updates, it will never go back to a previous batch. And since opaque transactional spouts guarantee no overlap between batches – that each tuple is successfully processed by one batch – you can safely update based on the previous value.
-
-## Non-transactional spouts
-
-Non-transactional spouts don't provide any guarantees about what's in each batch. So it might have at-most-once processing, in which case tuples are not retried after failed batches. Or it might have at-least-once processing, where tuples can be processed successfully by multiple batches. There's no way to achieve exactly-once semantics for this kind of spout.
-
-## Summary of spout and state types
-
-This diagram shows which combinations of spouts / states enable exactly-once messaging semantics:
-
-![Spouts vs States](images/spout-vs-state.png)
-
-Opaque transactional states have the strongest fault-tolerance, but this comes at the cost of needing to store the txid and two values in the database. Transactional states require less state in the database, but only work with transactional spouts. Finally, non-transactional states require the least state in the database but cannot achieve exactly-once semantics.
-
-The state and spout types you choose are a tradeoff between fault-tolerance and storage costs, and ultimately your application requirements will determine which combination is right for you.
-
-## State APIs
-
-You've seen the intricacies of what it takes to achieve exactly-once semantics. The nice thing about Trident is that it internalizes all the fault-tolerance logic within the State – as a user you don't have to deal with comparing txids, storing multiple values in the database, or anything like that. You can write code like this:
-
-```java
-TridentTopology topology = new TridentTopology();        
-TridentState wordCounts =
-      topology.newStream("spout1", spout)
-        .each(new Fields("sentence"), new Split(), new Fields("word"))
-        .groupBy(new Fields("word"))
-        .persistentAggregate(MemcachedState.opaque(serverLocations), new Count(), new Fields("count"))                
-        .parallelismHint(6);
-```
-
-All the logic necessary to manage opaque transactional state logic is internalized in the MemcachedState.opaque call. Additionally, updates are automatically batched to minimize roundtrips to the database.
-
-The base State interface just has two methods:
-
-```java
-public interface State {
-    void beginCommit(Long txid); // can be null for things like partitionPersist occurring off a DRPC stream
-    void commit(Long txid);
-}
-```
-
-You're told when a state update is beginning, when a state update is ending, and you're given the txid in each case. Trident assumes nothing about how your state works, what kind of methods there are to update it, and what kind of methods there are to read from it.
-
-Suppose you have a home-grown database that contains user location information and you want to be able to access it from Trident. Your State implementation would have methods for getting and setting user information:
-
-```java
-public class LocationDB implements State {
-    public void beginCommit(Long txid) {    
-    }
-    
-    public void commit(Long txid) {    
-    }
-    
-    public void setLocation(long userId, String location) {
-      // code to access database and set location
-    }
-    
-    public String getLocation(long userId) {
-      // code to get location from database
-    }
-}
-```
-
-You then provide Trident a StateFactory that can create instances of your State object within Trident tasks. The StateFactory for your LocationDB might look something like this:
-
-```java
-public class LocationDBFactory implements StateFactory {
-   public State makeState(Map conf, int partitionIndex, int numPartitions) {
-      return new LocationDB();
-   } 
-}
-```
-
-Trident provides the QueryFunction interface for writing Trident operations that query a source of state, and the StateUpdater interface for writing Trident operations that update a source of state. For example, let's write an operation "QueryLocation" that queries the LocationDB for the locations of users. Let's start off with how you would use it in a topology. Let's say this topology consumes an input stream of userids:
-
-```java
-TridentTopology topology = new TridentTopology();
-TridentState locations = topology.newStaticState(new LocationDBFactory());
-topology.newStream("myspout", spout)
-        .stateQuery(locations, new Fields("userid"), new QueryLocation(), new Fields("location"))
-```
-
-Now let's take a look at what the implementation of QueryLocation would look like:
-
-```java
-public class QueryLocation extends BaseQueryFunction<LocationDB, String> {
-    public List<String> batchRetrieve(LocationDB state, List<TridentTuple> inputs) {
-        List<String> ret = new ArrayList();
-        for(TridentTuple input: inputs) {
-            ret.add(state.getLocation(input.getLong(0)));
-        }
-        return ret;
-    }
-
-    public void execute(TridentTuple tuple, String location, TridentCollector collector) {
-        collector.emit(new Values(location));
-    }    
-}
-```
-
-QueryFunction's execute in two steps. First, Trident collects a batch of reads together and passes them to batchRetrieve. In this case, batchRetrieve will receive multiple user ids. batchRetrieve is expected to return a list of results that's the same size as the list of input tuples. The first element of the result list corresponds to the result for the first input tuple, the second is the result for the second input tuple, and so on.
-
-You can see that this code doesn't take advantage of the batching that Trident does, since it just queries the LocationDB one at a time. So a better way to write the LocationDB would be like this:
-
-```java
-public class LocationDB implements State {
-    public void beginCommit(Long txid) {    
-    }
-    
-    public void commit(Long txid) {    
-    }
-    
-    public void setLocationsBulk(List<Long> userIds, List<String> locations) {
-      // set locations in bulk
-    }
-    
-    public List<String> bulkGetLocations(List<Long> userIds) {
-      // get locations in bulk
-    }
-}
-```
-
-Then, you can write the QueryLocation function like this:
-
-```java
-public class QueryLocation extends BaseQueryFunction<LocationDB, String> {
-    public List<String> batchRetrieve(LocationDB state, List<TridentTuple> inputs) {
-        List<Long> userIds = new ArrayList<Long>();
-        for(TridentTuple input: inputs) {
-            userIds.add(input.getLong(0));
-        }
-        return state.bulkGetLocations(userIds);
-    }
-
-    public void execute(TridentTuple tuple, String location, TridentCollector collector) {
-        collector.emit(new Values(location));
-    }    
-}
-```
-
-This code will be much more efficient by reducing roundtrips to the database. 
-
-To update state, you make use of the StateUpdater interface. Here's a StateUpdater that updates a LocationDB with new location information:
-
-```java
-public class LocationUpdater extends BaseStateUpdater<LocationDB> {
-    public void updateState(LocationDB state, List<TridentTuple> tuples, TridentCollector collector) {
-        List<Long> ids = new ArrayList<Long>();
-        List<String> locations = new ArrayList<String>();
-        for(TridentTuple t: tuples) {
-            ids.add(t.getLong(0));
-            locations.add(t.getString(1));
-        }
-        state.setLocationsBulk(ids, locations);
-    }
-}
-```
-
-Here's how you would use this operation in a Trident topology:
-
-```java
-TridentTopology topology = new TridentTopology();
-TridentState locations = 
-    topology.newStream("locations", locationsSpout)
-        .partitionPersist(new LocationDBFactory(), new Fields("userid", "location"), new LocationUpdater())
-```
-
-The partitionPersist operation updates a source of state. The StateUpdater receives the State and a batch of tuples with updates to that State. This code just grabs the userids and locations from the input tuples and does a bulk set into the State. 
-
-partitionPersist returns a TridentState object representing the location db being updated by the Trident topology. You could then use this state in stateQuery operations elsewhere in the topology. 
-
-You can also see that StateUpdaters are given a TridentCollector. Tuples emitted to this collector go to the "new values stream". In this case, there's nothing interesting to emit to that stream, but if you were doing something like updating counts in a database, you could emit the updated counts to that stream. You can then get access to the new values stream for further processing via the TridentState#newValuesStream method.
-
-## persistentAggregate
-
-Trident has another method for updating States called persistentAggregate. You've seen this used in the streaming word count example, shown again below:
-
-```java
-TridentTopology topology = new TridentTopology();        
-TridentState wordCounts =
-      topology.newStream("spout1", spout)
-        .each(new Fields("sentence"), new Split(), new Fields("word"))
-        .groupBy(new Fields("word"))
-        .persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"))
-```
-
-persistentAggregate is an additional abstraction built on top of partitionPersist that knows how to take a Trident aggregator and use it to apply updates to the source of state. In this case, since this is a grouped stream, Trident expects the state you provide to implement the "MapState" interface. The grouping fields will be the keys in the state, and the aggregation result will be the values in the state. The "MapState" interface looks like this:
-
-```java
-public interface MapState<T> extends State {
-    List<T> multiGet(List<List<Object>> keys);
-    List<T> multiUpdate(List<List<Object>> keys, List<ValueUpdater> updaters);
-    void multiPut(List<List<Object>> keys, List<T> vals);
-}
-```
-
-When you do aggregations on non-grouped streams (a global aggregation), Trident expects your State object to implement the "Snapshottable" interface:
-
-```java
-public interface Snapshottable<T> extends State {
-    T get();
-    T update(ValueUpdater updater);
-    void set(T o);
-}
-```
-
-[MemoryMapState](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/testing/MemoryMapState.java) and [MemcachedState](https://github.com/nathanmarz/trident-memcached/blob/master/src/jvm/trident/memcached/MemcachedState.java) each implement both of these interfaces.
-
-## Implementing Map States
-
-Trident makes it easy to implement MapState's, doing almost all the work for you. The OpaqueMap, TransactionalMap, and NonTransactionalMap classes implement all the logic for doing the respective fault-tolerance logic. You simply provide these classes with an IBackingMap implementation that knows how to do multiGets and multiPuts of the respective key/values. IBackingMap looks like this:
-
-```java
-public interface IBackingMap<T> {
-    List<T> multiGet(List<List<Object>> keys); 
-    void multiPut(List<List<Object>> keys, List<T> vals); 
-}
-```
-
-OpaqueMap's will call multiPut with [OpaqueValue](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/state/OpaqueValue.java)'s for the vals, TransactionalMap's will give [TransactionalValue](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/state/TransactionalValue.java)'s for the vals, and NonTransactionalMaps will just pass the objects from the topology through.
-
-Trident also provides the [CachedMap](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/state/map/CachedMap.java) class to do automatic LRU caching of map key/vals.
-
-Finally, Trident provides the [SnapshottableMap](https://github.com/apache/storm/blob/master/storm-core/src/jvm/storm/trident/state/map/SnapshottableMap.java) class that turns a MapState into a Snapshottable object, by storing global aggregations into a fixed key.
-
-Take a look at the implementation of [MemcachedState](https://github.com/nathanmarz/trident-memcached/blob/master/src/jvm/trident/memcached/MemcachedState.java) to see how all these utilities can be put together to make a high performance MapState implementation. MemcachedState allows you to choose between opaque transactional, transactional, and non-transactional semantics.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Trident-tutorial.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Trident-tutorial.md b/docs/documentation/Trident-tutorial.md
deleted file mode 100644
index 48fdd8d..0000000
--- a/docs/documentation/Trident-tutorial.md
+++ /dev/null
@@ -1,254 +0,0 @@
----
-title: Trident Tutorial
-layout: documentation
-documentation: true
----
-
-Trident is a high-level abstraction for doing realtime computing on top of Storm. It allows you to seamlessly intermix high throughput (millions of messages per second), stateful stream processing with low latency distributed querying. If you're familiar with high level batch processing tools like Pig or Cascading, the concepts of Trident will be very familiar – Trident has joins, aggregations, grouping, functions, and filters. In addition to these, Trident adds primitives for doing stateful, incremental processing on top of any database or persistence store. Trident has consistent, exactly-once semantics, so it is easy to reason about Trident topologies.
-
-## Illustrative example
-
-Let's look at an illustrative example of Trident. This example will do two things:
-
-1. Compute streaming word count from an input stream of sentences
-2. Implement queries to get the sum of the counts for a list of words
-
-For the purposes of illustration, this example will read an infinite stream of sentences from the following source:
-
-```java
-FixedBatchSpout spout = new FixedBatchSpout(new Fields("sentence"), 3,
-               new Values("the cow jumped over the moon"),
-               new Values("the man went to the store and bought some candy"),
-               new Values("four score and seven years ago"),
-               new Values("how many apples can you eat"));
-spout.setCycle(true);
-```
-
-This spout cycles through that set of sentences over and over to produce the sentence stream. Here's the code to do the streaming word count part of the computation:
-
-```java
-TridentTopology topology = new TridentTopology();        
-TridentState wordCounts =
-     topology.newStream("spout1", spout)
-       .each(new Fields("sentence"), new Split(), new Fields("word"))
-       .groupBy(new Fields("word"))
-       .persistentAggregate(new MemoryMapState.Factory(), new Count(), new Fields("count"))                
-       .parallelismHint(6);
-```
-
-Let's go through the code line by line. First a TridentTopology object is created, which exposes the interface for constructing Trident computations. TridentTopology has a method called newStream that creates a new stream of data in the topology reading from an input source. In this case, the input source is just the FixedBatchSpout defined from before. Input sources can also be queue brokers like Kestrel or Kafka. Trident keeps track of a small amount of state for each input source (metadata about what it has consumed) in Zookeeper, and the "spout1" string here specifies the node in Zookeeper where Trident should keep that metadata.
-
-Trident processes the stream as small batches of tuples. For example, the incoming stream of sentences might be divided into batches like so:
-
-![Batched stream](images/batched-stream.png)
-
-Generally the size of those small batches will be on the order of thousands or millions of tuples, depending on your incoming throughput.
-
-Trident provides a fully fledged batch processing API to process those small batches. The API is very similar to what you see in high level abstractions for Hadoop like Pig or Cascading: you can do group by's, joins, aggregations, run functions, run filters, and so on. Of course, processing each small batch in isolation isn't that interesting, so Trident provides functions for doing aggregations across batches and persistently storing those aggregations – whether in memory, in Memcached, in Cassandra, or some other store. Finally, Trident has first-class functions for querying sources of realtime state. That state could be updated by Trident (like in this example), or it could be an independent source of state.
-
-Back to the example, the spout emits a stream containing one field called "sentence". The next line of the topology definition applies the Split function to each tuple in the stream, taking the "sentence" field and splitting it into words. Each sentence tuple creates potentially many word tuples – for instance, the sentence "the cow jumped over the moon" creates six "word" tuples. Here's the definition of Split:
-
-```java
-public class Split extends BaseFunction {
-   public void execute(TridentTuple tuple, TridentCollector collector) {
-       String sentence = tuple.getString(0);
-       for(String word: sentence.split(" ")) {
-           collector.emit(new Values(word));                
-       }
-   }
-}
-```
-
-As you can see, it's really simple. It simply grabs the sentence, splits it on whitespace, and emits a tuple for each word.
-
-The rest of the topology computes word count and keeps the results persistently stored. First the stream is grouped by the "word" field. Then, each group is persistently aggregated using the Count aggregator. The persistentAggregate function knows how to store and update the results of the aggregation in a source of state. In this example, the word counts are kept in memory, but this can be trivially swapped to use Memcached, Cassandra, or any other persistent store. Swapping this topology to store counts in Memcached is as simple as replacing the persistentAggregate line with this (using [trident-memcached](https://github.com/nathanmarz/trident-memcached)), where the "serverLocations" is a list of host/ports for the Memcached cluster:
-
-```java
-.persistentAggregate(MemcachedState.transactional(serverLocations), new Count(), new Fields("count"))        
-MemcachedState.transactional()
-```
-
-The values stored by persistentAggregate represents the aggregation of all batches ever emitted by the stream.
-
-One of the cool things about Trident is that it has fully fault-tolerant, exactly-once processing semantics. This makes it easy to reason about your realtime processing. Trident persists state in a way so that if failures occur and retries are necessary, it won't perform multiple updates to the database for the same source data.
-
-The persistentAggregate method transforms a Stream into a TridentState object. In this case the TridentState object represents all the word counts. We will use this TridentState object to implement the distributed query portion of the computation.
-
-The next part of the topology implements a low latency distributed query on the word counts. The query takes as input a whitespace separated list of words and return the sum of the counts for those words. These queries are executed just like normal RPC calls, except they are parallelized in the background. Here's an example of how you might invoke one of these queries:
-
-```java
-DRPCClient client = new DRPCClient("drpc.server.location", 3772);
-System.out.println(client.execute("words", "cat dog the man");
-// prints the JSON-encoded result, e.g.: "[[5078]]"
-```
-
-As you can see, it looks just like a regular remote procedure call (RPC), except it's executing in parallel across a Storm cluster. The latency for small queries like this are typically around 10ms. More intense DRPC queries can take longer of course, although the latency largely depends on how many resources you have allocated for the computation.
-
-The implementation of the distributed query portion of the topology looks like this:
-
-```java
-topology.newDRPCStream("words")
-       .each(new Fields("args"), new Split(), new Fields("word"))
-       .groupBy(new Fields("word"))
-       .stateQuery(wordCounts, new Fields("word"), new MapGet(), new Fields("count"))
-       .each(new Fields("count"), new FilterNull())
-       .aggregate(new Fields("count"), new Sum(), new Fields("sum"));
-```
-
-The same TridentTopology object is used to create the DRPC stream, and the function is named "words". The function name corresponds to the function name given in the first argument of execute when using a DRPCClient.
-
-Each DRPC request is treated as its own little batch processing job that takes as input a single tuple representing the request. The tuple contains one field called "args" that contains the argument provided by the client. In this case, the argument is a whitespace separated list of words.
-
-First, the Split function is used to split the arguments for the request into its constituent words. The stream is grouped by "word", and the stateQuery operator is used to query the TridentState object that the first part of the topology generated. stateQuery takes in a source of state – in this case, the word counts computed by the other portion of the topology – and a function for querying that state. In this case, the MapGet function is invoked, which gets the count for each word. Since the DRPC stream is grouped the exact same way as the TridentState was (by the "word" field), each word query is routed to the exact partition of the TridentState object that manages updates for that word.
-
-Next, words that didn't have a count are filtered out via the FilterNull filter and the counts are summed using the Sum aggregator to get the result. Then, Trident automatically sends the result back to the waiting client.
-
-Trident is intelligent about how it executes a topology to maximize performance. There's two interesting things happening automatically in this topology:
-
-1. Operations that read from or write to state (like persistentAggregate and stateQuery) automatically batch operations to that state. So if there's 20 updates that need to be made to the database for the current batch of processing, rather than do 20 read requests and 20 writes requests to the database, Trident will automatically batch up the reads and writes, doing only 1 read request and 1 write request (and in many cases, you can use caching in your State implementation to eliminate the read request). So you get the best of both words of convenience – being able to express your computation in terms of what should be done with each tuple – and performance.
-2. Trident aggregators are heavily optimized. Rather than transfer all tuples for a group to the same machine and then run the aggregator, Trident will do partial aggregations when possible before sending tuples over the network. For example, the Count aggregator computes the count on each partition, sends the partial count over the network, and then sums together all the partial counts to get the total count. This technique is similar to the use of combiners in MapReduce.
-
-Let's look at another example of Trident.
-
-## Reach
-
-The next example is a pure DRPC topology that computes the reach of a URL on demand. Reach is the number of unique people exposed to a URL on Twitter. To compute reach, you need to fetch all the people who ever tweeted a URL, fetch all the followers of all those people, unique that set of followers, and that count that uniqued set. Computing reach is too intense for a single machine – it can require thousands of database calls and tens of millions of tuples. With Storm and Trident, you can parallelize the computation of each step across a cluster.
-
-This topology will read from two sources of state. One database maps URLs to a list of people who tweeted that URL. The other database maps a person to a list of followers for that person. The topology definition looks like this:
-
-```java
-TridentState urlToTweeters =
-       topology.newStaticState(getUrlToTweetersState());
-TridentState tweetersToFollowers =
-       topology.newStaticState(getTweeterToFollowersState());
-
-topology.newDRPCStream("reach")
-       .stateQuery(urlToTweeters, new Fields("args"), new MapGet(), new Fields("tweeters"))
-       .each(new Fields("tweeters"), new ExpandList(), new Fields("tweeter"))
-       .shuffle()
-       .stateQuery(tweetersToFollowers, new Fields("tweeter"), new MapGet(), new Fields("followers"))
-       .parallelismHint(200)
-       .each(new Fields("followers"), new ExpandList(), new Fields("follower"))
-       .groupBy(new Fields("follower"))
-       .aggregate(new One(), new Fields("one"))
-       .parallelismHint(20)
-       .aggregate(new Count(), new Fields("reach"));
-```
-
-The topology creates TridentState objects representing each external database using the newStaticState method. These can then be queried in the topology. Like all sources of state, queries to these databases will be automatically batched for maximum efficiency.
-
-The topology definition is straightforward – it's just a simple batch processing job. First, the urlToTweeters database is queried to get the list of people who tweeted the URL for this request. That returns a list, so the ExpandList function is invoked to create a tuple for each tweeter.
-
-Next, the followers for each tweeter must be fetched. It's important that this step be parallelized, so shuffle is invoked to evenly distribute the tweeters among all workers for the topology. Then, the followers database is queried to get the list of followers for each tweeter. You can see that this portion of the topology is given a large parallelism since this is the most intense portion of the computation.
-
-Next, the set of followers is uniqued and counted. This is done in two steps. First a "group by" is done on the batch by "follower", running the "One" aggregator on each group. The "One" aggregator simply emits a single tuple containing the number one for each group. Then, the ones are summed together to get the unique count of the followers set. Here's the definition of the "One" aggregator:
-
-```java
-public class One implements CombinerAggregator<Integer> {
-   public Integer init(TridentTuple tuple) {
-       return 1;
-   }
-
-   public Integer combine(Integer val1, Integer val2) {
-       return 1;
-   }
-
-   public Integer zero() {
-       return 1;
-   }        
-}
-```
-
-This is a "combiner aggregator", which knows how to do partial aggregations before transferring tuples over the network to maximize efficiency. Sum is also defined as a combiner aggregator, so the global sum done at the end of the topology will be very efficient.
-
-Let's now look at Trident in more detail.
-
-## Fields and tuples
-
-The Trident data model is the TridentTuple which is a named list of values. During a topology, tuples are incrementally built up through a sequence of operations. Operations generally take in a set of input fields and emit a set of "function fields". The input fields are used to select a subset of the tuple as input to the operation, while the "function fields" name the fields the operation emits.
-
-Consider this example. Suppose you have a stream called "stream" that contains the fields "x", "y", and "z". To run a filter MyFilter that takes in "y" as input, you would say:
-
-```java
-stream.each(new Fields("y"), new MyFilter())
-```
-
-Suppose the implementation of MyFilter is this:
-
-```java
-public class MyFilter extends BaseFilter {
-   public boolean isKeep(TridentTuple tuple) {
-       return tuple.getInteger(0) < 10;
-   }
-}
-```
-
-This will keep all tuples whose "y" field is less than 10. The TridentTuple given as input to MyFilter will only contain the "y" field. Note that Trident is able to project a subset of a tuple extremely efficiently when selecting the input fields: the projection is essentially free.
-
-Let's now look at how "function fields" work. Suppose you had this function:
-
-```java
-public class AddAndMultiply extends BaseFunction {
-   public void execute(TridentTuple tuple, TridentCollector collector) {
-       int i1 = tuple.getInteger(0);
-       int i2 = tuple.getInteger(1);
-       collector.emit(new Values(i1 + i2, i1 * i2));
-   }
-}
-```
-
-This function takes two numbers as input and emits two new values: the addition of the numbers and the multiplication of the numbers. Suppose you had a stream with the fields "x", "y", and "z". You would use this function like this:
-
-```java
-stream.each(new Fields("x", "y"), new AddAndMultiply(), new Fields("added", "multiplied"));
-```
-
-The output of functions is additive: the fields are added to the input tuple. So the output of this each call would contain tuples with the five fields "x", "y", "z", "added", and "multiplied". "added" corresponds to the first value emitted by AddAndMultiply, while "multiplied" corresponds to the second value.
-
-With aggregators, on the other hand, the function fields replace the input tuples. So if you had a stream containing the fields "val1" and "val2", and you did this:
-
-```java
-stream.aggregate(new Fields("val2"), new Sum(), new Fields("sum"))
-```
-
-The output stream would only contain a single tuple with a single field called "sum", representing the sum of all "val2" fields in that batch.
-
-With grouped streams, the output will contain the grouping fields followed by the fields emitted by the aggregator. For example:
-
-```java
-stream.groupBy(new Fields("val1"))
-     .aggregate(new Fields("val2"), new Sum(), new Fields("sum"))
-```
-
-In this example, the output will contain the fields "val1" and "sum".
-
-## State
-
-A key problem to solve with realtime computation is how to manage state so that updates are idempotent in the face of failures and retries. It's impossible to eliminate failures, so when a node dies or something else goes wrong, batches need to be retried. The question is – how do you do state updates (whether external databases or state internal to the topology) so that it's like each message was only processed only once?
-
-This is a tricky problem, and can be illustrated with the following example. Suppose that you're doing a count aggregation of your stream and want to store the running count in a database. If you store only the count in the database and it's time to apply a state update for a batch, there's no way to know if you applied that state update before. The batch could have been attempted before, succeeded in updating the database, and then failed at a later step. Or the batch could have been attempted before and failed to update the database. You just don't know.
-
-Trident solves this problem by doing two things:
-
-1. Each batch is given a unique id called the "transaction id". If a batch is retried it will have the exact same transaction id.
-2. State updates are ordered among batches. That is, the state updates for batch 3 won't be applied until the state updates for batch 2 have succeeded.
-
-With these two primitives, you can achieve exactly-once semantics with your state updates. Rather than store just the count in the database, what you can do instead is store the transaction id with the count in the database as an atomic value. Then, when updating the count, you can just compare the transaction id in the database with the transaction id for the current batch. If they're the same, you skip the update – because of the strong ordering, you know for sure that the value in the database incorporates the current batch. If they're different, you increment the count.
-
-Of course, you don't have to do this logic manually in your topologies. This logic is wrapped by the State abstraction and done automatically. Nor is your State object required to implement the transaction id trick: if you don't want to pay the cost of storing the transaction id in the database, you don't have to. In that case the State will have at-least-once-processing semantics in the case of failures (which may be fine for your application). You can read more about how to implement a State and the various fault-tolerance tradeoffs possible [in this doc](/documentation/Trident-state).
-
-A State is allowed to use whatever strategy it wants to store state. So it could store state in an external database or it could keep the state in-memory but backed by HDFS (like how HBase works). State's are not required to hold onto state forever. For example, you could have an in-memory State implementation that only keeps the last X hours of data available and drops anything older. Take a look at the implementation of the [Memcached integration](https://github.com/nathanmarz/trident-memcached/blob/master/src/jvm/trident/memcached/MemcachedState.java) for an example State implementation.
-
-## Execution of Trident topologies
-
-Trident topologies compile down into as efficient of a Storm topology as possible. Tuples are only sent over the network when a repartitioning of the data is required, such as if you do a groupBy or a shuffle. So if you had this Trident topology:
-
-![Compiling Trident to Storm 1](images/trident-to-storm1.png)
-
-It would compile into Storm spouts/bolts like this:
-
-![Compiling Trident to Storm 2](images/trident-to-storm2.png)
-
-## Conclusion
-
-Trident makes realtime computation elegant. You've seen how high throughput stream processing, state manipulation, and low-latency querying can be seamlessly intermixed via Trident's API. Trident lets you express your realtime computations in a natural way while still getting maximal performance.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Troubleshooting.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Troubleshooting.md b/docs/documentation/Troubleshooting.md
deleted file mode 100644
index 17aceb9..0000000
--- a/docs/documentation/Troubleshooting.md
+++ /dev/null
@@ -1,182 +0,0 @@
----
-title: Troubleshooting
-layout: documentation
-documentation: true
----
-
-This page lists issues people have run into when using Storm along with their solutions.
-
-### Worker processes are crashing on startup with no stack trace
-
-Possible symptoms:
- 
- * Topologies work with one node, but workers crash with multiple nodes
-
-Solutions:
-
- * You may have a misconfigured subnet, where nodes can't locate other nodes based on their hostname. ZeroMQ sometimes crashes the process when it can't resolve a host. There are two solutions:
-  * Make a mapping from hostname to IP address in /etc/hosts
-  * Set up an internal DNS so that nodes can locate each other based on hostname.
-  
-### Nodes are unable to communicate with each other
-
-Possible symptoms:
-
- * Every spout tuple is failing
- * Processing is not working
-
-Solutions:
-
- * Storm doesn't work with ipv6. You can force ipv4 by adding `-Djava.net.preferIPv4Stack=true` to the supervisor child options and restarting the supervisor. 
- * You may have a misconfigured subnet. See the solutions for `Worker processes are crashing on startup with no stack trace`
-
-### Topology stops processing tuples after awhile
-
-Symptoms:
-
- * Processing works fine for awhile, and then suddenly stops and spout tuples start failing en masse. 
- 
-Solutions:
-
- * This is a known issue with ZeroMQ 2.1.10. Downgrade to ZeroMQ 2.1.7.
- 
-### Not all supervisors appear in Storm UI
-
-Symptoms:
- 
- * Some supervisor processes are missing from the Storm UI
- * List of supervisors in Storm UI changes on refreshes
-
-Solutions:
-
- * Make sure the supervisor local dirs are independent (e.g., not sharing a local dir over NFS)
- * Try deleting the local dirs for the supervisors and restarting the daemons. Supervisors create a unique id for themselves and store it locally. When that id is copied to other nodes, Storm gets confused. 
-
-### "Multiple defaults.yaml found" error
-
-Symptoms:
-
- * When deploying a topology with "storm jar", you get this error
-
-Solution:
-
- * You're most likely including the Storm jars inside your topology jar. When packaging your topology jar, don't include the Storm jars as Storm will put those on the classpath for you.
-
-### "NoSuchMethodError" when running storm jar
-
-Symptoms:
-
- * When running storm jar, you get a cryptic "NoSuchMethodError"
-
-Solution:
-
- * You're deploying your topology with a different version of Storm than you built your topology against. Make sure the storm client you use comes from the same version as the version you compiled your topology against.
-
-
-### Kryo ConcurrentModificationException
-
-Symptoms:
-
- * At runtime, you get a stack trace like the following:
-
-```
-java.lang.RuntimeException: java.util.ConcurrentModificationException
-	at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:84)
-	at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:55)
-	at backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:56)
-	at backtype.storm.disruptor$consume_loop_STAR_$fn__1597.invoke(disruptor.clj:67)
-	at backtype.storm.util$async_loop$fn__465.invoke(util.clj:377)
-	at clojure.lang.AFn.run(AFn.java:24)
-	at java.lang.Thread.run(Thread.java:679)
-Caused by: java.util.ConcurrentModificationException
-	at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:390)
-	at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:409)
-	at java.util.LinkedHashMap$EntryIterator.next(LinkedHashMap.java:408)
-	at java.util.HashMap.writeObject(HashMap.java:1016)
-	at sun.reflect.GeneratedMethodAccessor17.invoke(Unknown Source)
-	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
-	at java.lang.reflect.Method.invoke(Method.java:616)
-	at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:959)
-	at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1480)
-	at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1416)
-	at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174)
-	at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
-	at backtype.storm.serialization.SerializableSerializer.write(SerializableSerializer.java:21)
-	at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:554)
-	at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:77)
-	at com.esotericsoftware.kryo.serializers.CollectionSerializer.write(CollectionSerializer.java:18)
-	at com.esotericsoftware.kryo.Kryo.writeObject(Kryo.java:472)
-	at backtype.storm.serialization.KryoValuesSerializer.serializeInto(KryoValuesSerializer.java:27)
-```
-
-Solution: 
-
- * This means that you're emitting a mutable object as an output tuple. Everything you emit into the output collector must be immutable. What's happening is that your bolt is modifying the object while it is being serialized to be sent over the network.
-
-
-### NullPointerException from deep inside Storm
-
-Symptoms:
-
- * You get a NullPointerException that looks something like:
-
-```
-java.lang.RuntimeException: java.lang.NullPointerException
-    at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:84)
-    at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:55)
-    at backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:56)
-    at backtype.storm.disruptor$consume_loop_STAR_$fn__1596.invoke(disruptor.clj:67)
-    at backtype.storm.util$async_loop$fn__465.invoke(util.clj:377)
-    at clojure.lang.AFn.run(AFn.java:24)
-    at java.lang.Thread.run(Thread.java:662)
-Caused by: java.lang.NullPointerException
-    at backtype.storm.serialization.KryoTupleSerializer.serialize(KryoTupleSerializer.java:24)
-    at backtype.storm.daemon.worker$mk_transfer_fn$fn__4126$fn__4130.invoke(worker.clj:99)
-    at backtype.storm.util$fast_list_map.invoke(util.clj:771)
-    at backtype.storm.daemon.worker$mk_transfer_fn$fn__4126.invoke(worker.clj:99)
-    at backtype.storm.daemon.executor$start_batch_transfer__GT_worker_handler_BANG_$fn__3904.invoke(executor.clj:205)
-    at backtype.storm.disruptor$clojure_handler$reify__1584.onEvent(disruptor.clj:43)
-    at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:81)
-    ... 6 more
-```
-
-or 
-
-```
-java.lang.RuntimeException: java.lang.NullPointerException
-        at
-backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128)
-~[storm-core-0.9.3.jar:0.9.3]
-        at
-backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99)
-~[storm-core-0.9.3.jar:0.9.3]
-        at
-backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:80)
-~[storm-core-0.9.3.jar:0.9.3]
-        at
-backtype.storm.disruptor$consume_loop_STAR_$fn__759.invoke(disruptor.clj:94)
-~[storm-core-0.9.3.jar:0.9.3]
-        at backtype.storm.util$async_loop$fn__458.invoke(util.clj:463)
-~[storm-core-0.9.3.jar:0.9.3]
-        at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]
-        at java.lang.Thread.run(Thread.java:745) [na:1.7.0_65]
-Caused by: java.lang.NullPointerException: null
-        at clojure.lang.RT.intCast(RT.java:1087) ~[clojure-1.5.1.jar:na]
-        at
-backtype.storm.daemon.worker$mk_transfer_fn$fn__3548.invoke(worker.clj:129)
-~[storm-core-0.9.3.jar:0.9.3]
-        at
-backtype.storm.daemon.executor$start_batch_transfer__GT_worker_handler_BANG_$fn__3282.invoke(executor.clj:258)
-~[storm-core-0.9.3.jar:0.9.3]
-        at
-backtype.storm.disruptor$clojure_handler$reify__746.onEvent(disruptor.clj:58)
-~[storm-core-0.9.3.jar:0.9.3]
-        at
-backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:125)
-~[storm-core-0.9.3.jar:0.9.3]
-        ... 6 common frames omitted
-```
-
-Solution:
-
- * This is caused by having multiple threads issue methods on the `OutputCollector`. All emits, acks, and fails must happen on the same thread. One subtle way this can happen is if you make a `IBasicBolt` that emits on a separate thread. `IBasicBolt`'s automatically ack after execute is called, so this would cause multiple threads to use the `OutputCollector` leading to this exception. When using a basic bolt, all emits must happen in the same thread that runs `execute`.
\ No newline at end of file


[22/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
STORM-1468: remove {master}/docs


Project: http://git-wip-us.apache.org/repos/asf/storm/repo
Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/2f5c31d2
Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/2f5c31d2
Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/2f5c31d2

Branch: refs/heads/master
Commit: 2f5c31d24ccc2cb220732f8bc85c9218fbeda221
Parents: 2289d36
Author: P. Taylor Goetz <pt...@gmail.com>
Authored: Tue Jan 12 20:40:58 2016 -0500
Committer: P. Taylor Goetz <pt...@gmail.com>
Committed: Tue Jan 12 20:40:58 2016 -0500

----------------------------------------------------------------------
 docs/README.md                                  |   47 -
 docs/_config.yml                                |   11 -
 docs/_includes/footer.html                      |   16 -
 docs/_includes/head.html                        |   31 -
 docs/_includes/header.html                      |   32 -
 docs/_layouts/about.html                        |   40 -
 docs/_layouts/default.html                      |   19 -
 docs/_layouts/documentation.html                |   16 -
 docs/_layouts/page.html                         |   14 -
 docs/_layouts/post.html                         |   15 -
 docs/_posts/2012-08-02-storm080-released.md     |  120 -
 docs/_posts/2012-09-06-storm081-released.md     |   47 -
 docs/_posts/2013-01-11-storm082-released.md     |   82 -
 docs/_posts/2013-12-08-storm090-released.md     |  127 -
 docs/_posts/2014-04-10-storm-logo-contest.md    |   66 -
 docs/_posts/2014-04-17-logo-pforrest.md         |   10 -
 docs/_posts/2014-04-17-logo-squinones.md        |    9 -
 docs/_posts/2014-04-19-logo-ssuleman.md         |    8 -
 docs/_posts/2014-04-21-logo-rmarshall.md        |   12 -
 docs/_posts/2014-04-22-logo-zsayari.md          |    9 -
 docs/_posts/2014-04-23-logo-abartos.md          |   15 -
 docs/_posts/2014-04-27-logo-cboustead.md        |   12 -
 docs/_posts/2014-04-27-logo-sasili.md           |   10 -
 docs/_posts/2014-04-29-logo-jlee1.md            |   10 -
 docs/_posts/2014-04-29-logo-jlee2.md            |   10 -
 docs/_posts/2014-04-29-logo-jlee3.md            |   10 -
 docs/_posts/2014-05-27-round1-results.md        |   38 -
 docs/_posts/2014-06-17-contest-results.md       |   24 -
 docs/_posts/2014-06-25-storm092-released.md     |  137 -
 .../2014-10-20-storm093-release-candidate.md    |   11 -
 docs/_posts/2014-11-25-storm093-released.md     |  164 -
 docs/_posts/2015-03-25-storm094-released.md     |   24 -
 docs/_posts/2015-06-04-storm095-released.md     |   23 -
 .../2015-06-15-storm0100-beta-released.md       |  294 -
 docs/_sass/_syntax-highlighting.scss            |   70 -
 docs/about.md                                   |    7 -
 docs/about/deployment.md                        |    9 -
 docs/about/fault-tolerant.md                    |    9 -
 docs/about/free-and-open-source.md              |   15 -
 docs/about/guarantees-data-processing.md        |   10 -
 docs/about/integrates.md                        |   13 -
 docs/about/multi-language.md                    |    9 -
 docs/about/scalable.md                          |   10 -
 docs/about/simple-api.md                        |   15 -
 docs/assets/css/bootstrap-theme.css             |  470 --
 docs/assets/css/bootstrap-theme.css.map         |    1 -
 docs/assets/css/bootstrap-theme.min.css         |    5 -
 docs/assets/css/bootstrap.css                   | 6332 ------------------
 docs/assets/css/bootstrap.css.map               |    1 -
 docs/assets/css/bootstrap.min.css               |    5 -
 docs/assets/css/theme.css                       |   18 -
 docs/assets/favicon.ico                         |  Bin 1150 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.eot      |  Bin 20335 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.svg      |  229 -
 .../fonts/glyphicons-halflings-regular.ttf      |  Bin 41280 -> 0 bytes
 .../fonts/glyphicons-halflings-regular.woff     |  Bin 23320 -> 0 bytes
 docs/assets/js/bootstrap.js                     | 2320 -------
 docs/assets/js/bootstrap.min.js                 |    7 -
 docs/assets/js/npm.js                           |   13 -
 docs/css/main.scss                              |   48 -
 docs/doc-index.html                             |   11 -
 .../Acking-framework-implementation.md          |   38 -
 docs/documentation/BYLAWS.md                    |   98 -
 docs/documentation/Clojure-DSL.md               |  266 -
 docs/documentation/Command-line-client.md       |  102 -
 docs/documentation/Common-patterns.md           |  100 -
 docs/documentation/Concepts.md                  |  118 -
 docs/documentation/Configuration.md             |   31 -
 docs/documentation/Contributing-to-Storm.md     |   33 -
 .../Creating-a-new-Storm-project.md             |   25 -
 .../DSLs-and-multilang-adapters.md              |   10 -
 ...Defining-a-non-jvm-language-dsl-for-storm.md |   38 -
 docs/documentation/Distributed-RPC.md           |  199 -
 docs/documentation/Documentation.md             |   56 -
 docs/documentation/FAQ.md                       |  130 -
 docs/documentation/Fault-tolerance.md           |   30 -
 .../Guaranteeing-message-processing.md          |  181 -
 docs/documentation/Home.md                      |   69 -
 docs/documentation/Hooks.md                     |    9 -
 docs/documentation/Implementation-docs.md       |   20 -
 .../Installing-native-dependencies.md           |   38 -
 docs/documentation/Kestrel-and-Storm.md         |  200 -
 docs/documentation/Lifecycle-of-a-topology.md   |   82 -
 docs/documentation/Local-mode.md                |   29 -
 docs/documentation/Logs.md                      |   30 -
 docs/documentation/Maven.md                     |   20 -
 .../Message-passing-implementation.md           |   30 -
 docs/documentation/Metrics.md                   |   36 -
 docs/documentation/Multilang-protocol.md        |  287 -
 docs/documentation/Pacemaker.md                 |  108 -
 docs/documentation/Powered-By.md                | 1040 ---
 docs/documentation/Project-ideas.md             |    6 -
 docs/documentation/Rationale.md                 |   33 -
 .../Resource_Aware_Scheduler_overview.md        |  227 -
 ...unning-topologies-on-a-production-cluster.md |   77 -
 .../Serialization-(prior-to-0.6.0).md           |   52 -
 docs/documentation/Serialization.md             |   62 -
 docs/documentation/Serializers.md               |    4 -
 .../documentation/Setting-up-a-Storm-cluster.md |  115 -
 .../Setting-up-a-Storm-project-in-Eclipse.md    |    1 -
 .../Setting-up-development-environment.md       |   41 -
 docs/documentation/Spout-implementations.md     |   10 -
 docs/documentation/State-checkpointing.md       |  147 -
 ...guage-protocol-(versions-0.7.0-and-below).md |  124 -
 docs/documentation/Structure-of-the-codebase.md |  142 -
 .../Support-for-non-java-languages.md           |    9 -
 docs/documentation/Transactional-topologies.md  |  361 -
 docs/documentation/Trident-API-Overview.md      |  312 -
 docs/documentation/Trident-spouts.md            |   44 -
 docs/documentation/Trident-state.md             |  331 -
 docs/documentation/Trident-tutorial.md          |  254 -
 docs/documentation/Troubleshooting.md           |  182 -
 docs/documentation/Tutorial.md                  |  320 -
 ...nding-the-parallelism-of-a-Storm-topology.md |  122 -
 .../Using-non-JVM-languages-with-Storm.md       |   52 -
 docs/documentation/Windowing.md                 |  235 -
 docs/documentation/distcache-blobstore.md       |  735 --
 .../documentation/dynamic-log-level-settings.md |   41 -
 docs/documentation/dynamic-worker-profiling.md  |   33 -
 docs/documentation/images/ack_tree.png          |  Bin 31463 -> 0 bytes
 docs/documentation/images/batched-stream.png    |  Bin 66336 -> 0 bytes
 docs/documentation/images/drpc-workflow.png     |  Bin 66199 -> 0 bytes
 .../images/dynamic_log_level_settings_1.png     |  Bin 93689 -> 0 bytes
 .../images/dynamic_log_level_settings_2.png     |  Bin 78785 -> 0 bytes
 .../images/dynamic_profiling_debugging_1.png    |  Bin 56876 -> 0 bytes
 .../images/dynamic_profiling_debugging_2.png    |  Bin 99164 -> 0 bytes
 .../images/dynamic_profiling_debugging_3.png    |  Bin 96974 -> 0 bytes
 .../images/dynamic_profiling_debugging_4.png    |  Bin 121994 -> 0 bytes
 .../images/eclipse-project-properties.png       |  Bin 80810 -> 0 bytes
 .../images/example-of-a-running-topology.png    |  Bin 81430 -> 0 bytes
 docs/documentation/images/grouping.png          |  Bin 39701 -> 0 bytes
 docs/documentation/images/hdfs_blobstore.png    |  Bin 82180 -> 0 bytes
 .../images/ld-library-path-eclipse-linux.png    |  Bin 114597 -> 0 bytes
 docs/documentation/images/local_blobstore.png   |  Bin 81212 -> 0 bytes
 .../images/nimbus_ha_blobstore.png              |  Bin 113991 -> 0 bytes
 .../nimbus_ha_leader_election_and_failover.png  |  Bin 154316 -> 0 bytes
 .../images/nimbus_ha_topology_submission.png    |  Bin 134180 -> 0 bytes
 ...onships-worker-processes-executors-tasks.png |  Bin 54804 -> 0 bytes
 docs/documentation/images/search-a-topology.png |  Bin 671031 -> 0 bytes
 .../images/search-for-a-single-worker-log.png   |  Bin 736579 -> 0 bytes
 docs/documentation/images/spout-vs-state.png    |  Bin 24804 -> 0 bytes
 docs/documentation/images/storm-cluster.png     |  Bin 34604 -> 0 bytes
 docs/documentation/images/topology-tasks.png    |  Bin 45960 -> 0 bytes
 docs/documentation/images/topology.png          |  Bin 23147 -> 0 bytes
 .../images/transactional-batches.png            |  Bin 23293 -> 0 bytes
 .../images/transactional-commit-flow.png        |  Bin 17725 -> 0 bytes
 .../images/transactional-design-2.png           |  Bin 13537 -> 0 bytes
 .../images/transactional-spout-structure.png    |  Bin 25067 -> 0 bytes
 docs/documentation/images/trident-to-storm1.png |  Bin 67173 -> 0 bytes
 docs/documentation/images/trident-to-storm2.png |  Bin 68943 -> 0 bytes
 docs/documentation/images/tuple-dag.png         |  Bin 18849 -> 0 bytes
 docs/documentation/images/tuple_tree.png        |  Bin 58186 -> 0 bytes
 .../storm-metrics-profiling-internal-actions.md |   70 -
 docs/documentation/ui-rest-api.md               |  996 ---
 docs/downloads.html                             |  241 -
 docs/feed.xml                                   |   30 -
 docs/images/architecture.png                    |  Bin 69825 -> 0 bytes
 docs/images/architecture.svg                    | 1458 ----
 docs/images/bolt.png                            |  Bin 24796 -> 0 bytes
 docs/images/bolt.svg                            |  743 --
 docs/images/bullet.gif                          |  Bin 82 -> 0 bytes
 docs/images/download.png                        |  Bin 16272 -> 0 bytes
 docs/images/incubator-logo.png                  |  Bin 11651 -> 0 bytes
 .../logocontest/abartos/stationery_mockup.jpg   |  Bin 146498 -> 0 bytes
 docs/images/logocontest/abartos/storm_logo.png  |  Bin 153974 -> 0 bytes
 docs/images/logocontest/abartos/storm_logo2.png |  Bin 115425 -> 0 bytes
 docs/images/logocontest/abartos/storm_logo3.png |  Bin 94950 -> 0 bytes
 .../images/logocontest/cboustead/storm_logo.png |  Bin 67149 -> 0 bytes
 .../logocontest/cboustead/storm_logo1.png       |  Bin 16327 -> 0 bytes
 docs/images/logocontest/jlee1/storm_logo.jpg    |  Bin 189382 -> 0 bytes
 docs/images/logocontest/jlee2/storm_logo.jpg    |  Bin 155666 -> 0 bytes
 docs/images/logocontest/jlee3/storm_logo.jpg    |  Bin 158134 -> 0 bytes
 docs/images/logocontest/pforrest/storm1.png     |  Bin 84569 -> 0 bytes
 .../pforrest/storm_logo_composite.png           |  Bin 139223 -> 0 bytes
 .../rmarshall/StormLogo_Horizontal.png          |  Bin 16481 -> 0 bytes
 .../rmarshall/StormLogo_Horizontal_NoColour.png |  Bin 14358 -> 0 bytes
 .../logocontest/rmarshall/StormLogo_Square.png  |  Bin 14392 -> 0 bytes
 docs/images/logocontest/sasili/storm_logo.png   |  Bin 92196 -> 0 bytes
 .../images/logocontest/squinones/storm_logo.png |  Bin 203263 -> 0 bytes
 .../logocontest/squinones/storm_logo1.png       |  Bin 53325 -> 0 bytes
 docs/images/logocontest/ssuleman/storm_logo.png |  Bin 95509 -> 0 bytes
 docs/images/logocontest/storm_logo_winner.png   |  Bin 34490 -> 0 bytes
 docs/images/logocontest/zsayari/storm_logo.png  |  Bin 120794 -> 0 bytes
 docs/images/logos/8digits.png                   |  Bin 19557 -> 0 bytes
 docs/images/logos/Yahoo_Japan_logo.png          |  Bin 3707 -> 0 bytes
 docs/images/logos/aeris.png                     |  Bin 6268 -> 0 bytes
 docs/images/logos/alibaba.jpg                   |  Bin 43703 -> 0 bytes
 docs/images/logos/baidu.jpeg                    |  Bin 3413 -> 0 bytes
 docs/images/logos/cerner.gif                    |  Bin 2591 -> 0 bytes
 docs/images/logos/flipboard.jpeg                |  Bin 2909 -> 0 bytes
 docs/images/logos/fullcontact.png               |  Bin 24567 -> 0 bytes
 docs/images/logos/groupon.jpg                   |  Bin 41413 -> 0 bytes
 docs/images/logos/holidaycheck.png              |  Bin 3129 -> 0 bytes
 docs/images/logos/idexx.gif                     |  Bin 38689 -> 0 bytes
 docs/images/logos/mercadolibre.png              |  Bin 73388 -> 0 bytes
 docs/images/logos/navisite.jpg                  |  Bin 9358 -> 0 bytes
 docs/images/logos/ooyala.gif                    |  Bin 7830 -> 0 bytes
 docs/images/logos/parc.png                      |  Bin 7256 -> 0 bytes
 docs/images/logos/quicklizard.png               |  Bin 5667 -> 0 bytes
 docs/images/logos/rocketfuel.png                |  Bin 9719 -> 0 bytes
 docs/images/logos/rubicon.png                   |  Bin 10663 -> 0 bytes
 docs/images/logos/spiderio.png                  |  Bin 46790 -> 0 bytes
 docs/images/logos/spotify.jpeg                  |  Bin 3282 -> 0 bytes
 docs/images/logos/taobao.gif                    |  Bin 3262 -> 0 bytes
 docs/images/logos/twitter.png                   |  Bin 4392 -> 0 bytes
 docs/images/logos/weatherchannel.gif            |  Bin 3425 -> 0 bytes
 docs/images/logos/webmd.jpg                     |  Bin 6193 -> 0 bytes
 docs/images/logos/yelp.png                      |  Bin 98431 -> 0 bytes
 docs/images/mailinglist.png                     |  Bin 4245 -> 0 bytes
 ...ware_scheduler_default_eviction_strategy.svg |    3 -
 docs/images/security.png                        |  Bin 72415 -> 0 bytes
 docs/images/security.svg                        | 1779 -----
 docs/images/spout.png                           |  Bin 22911 -> 0 bytes
 docs/images/spout.svg                           |  833 ---
 docs/images/storm.svg                           | 1326 ----
 docs/images/storm_header.png                    |  Bin 17291 -> 0 bytes
 docs/images/storm_logo_tagline_color copy.png   |  Bin 67928 -> 0 bytes
 docs/images/storm_logo_tagline_color.png        |  Bin 33568 -> 0 bytes
 docs/images/top_bg.gif                          |  Bin 113 -> 0 bytes
 docs/images/topology.png                        |  Bin 64740 -> 0 bytes
 docs/images/topology.svg                        | 1044 ---
 docs/images/topology_dark.png                   |  Bin 49692 -> 0 bytes
 docs/images/topology_dark.svg                   | 1101 ---
 docs/images/ui_topology_viz.png                 |  Bin 112831 -> 0 bytes
 docs/images/viewing_metrics_with_VisualVM.png   |  Bin 225100 -> 0 bytes
 docs/index.html                                 |  104 -
 docs/news.html                                  |   12 -
 227 files changed, 28405 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/README.md
----------------------------------------------------------------------
diff --git a/docs/README.md b/docs/README.md
deleted file mode 100644
index c8ec761..0000000
--- a/docs/README.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Apache Storm Website and Documentation
-This is the source for the Storm website and documentation. It is statically generated using [jekyll](http://jekyllrb.com).
-
-## Generate Javadoc
-
-You have to generate javadoc on project root before generating document site.
-
-```
-mvn clean install -Pdist # you may skip tests with `-DskipTests=true` to save time
-```
-
-You need to create distribution package with gpg certificate. Please refer [here](https://github.com/apache/storm/blob/master/DEVELOPER.md#packaging).
-
-## Site Generation
-First install jekyll (assuming you have ruby installed):
-
-```
-gem install jekyll
-```
-
-Generate the site, and start a server locally:
-```
-cd docs
-jekyll serve -w
-```
-
-The `-w` option tells jekyll to watch for changes to files and regenerate the site automatically when any content changes.
-
-Point your browser to http://localhost:4000
-
-By default, jekyll will generate the site in a `_site` directory.
-
-
-## Publishing the Website
-In order to publish the website, you must have committer access to Storm's subversion repository.
-
-The Storm website is published using Apache svnpubsub. Any changes committed to subversion will be automatically published to storm.apache.org.
-
-To publish changes, tell jekyll to generate the site in the `publish` directory of subversion, then commit the changes:
-
-
-```
-cd docs
-jekyll build -d /path/to/svn/repo/publish
-cd /path/to/svn/repo/publish
-svn commit
-```

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_config.yml
----------------------------------------------------------------------
diff --git a/docs/_config.yml b/docs/_config.yml
deleted file mode 100644
index 14aaa5d..0000000
--- a/docs/_config.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-# Site settings
-title: Apache Storm
-baseurl: "" # the subpath of your site, e.g. /blog/
-url: "http://storm.apache.org" # the base hostname & protocol for your site
-twitter_username: stormprocessor
-github_username:  apache/storm
-
-# Build settings
-markdown: redcarpet
-redcarpet:
-  extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"]
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_includes/footer.html
----------------------------------------------------------------------
diff --git a/docs/_includes/footer.html b/docs/_includes/footer.html
deleted file mode 100644
index bf766f4..0000000
--- a/docs/_includes/footer.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<hr/>
-<div id="footer" class="container text-center">
-	
-            <p class="text-muted credit"><p>
-Copyright © 2014 <a href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved. Apache Storm, Apache, the Apache feather logo, and the Apache Storm project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners.</p>
-
-</div>
-
-    <!-- Bootstrap core JavaScript
-    ================================================== -->
-    <!-- Placed at the end of the document so the pages load faster -->
-    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
-    <script src="/assets/js/bootstrap.min.js"></script>
-    <script src="/assets/js/docs.min.js"></script>
-    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
-    <script src="/assets/js/ie10-viewport-bug-workaround.js"></script>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_includes/head.html
----------------------------------------------------------------------
diff --git a/docs/_includes/head.html b/docs/_includes/head.html
deleted file mode 100644
index 781492c..0000000
--- a/docs/_includes/head.html
+++ /dev/null
@@ -1,31 +0,0 @@
-  <head>
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="viewport" content="width=device-width, initial-scale=1">
-    <meta name="description" content="">
-    <meta name="author" content="">
-    <link rel="icon" href="/assets/favicon.ico">
-
-    <title>{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
-
-    <!-- Bootstrap core CSS -->
-    <link href="/assets/css/bootstrap.min.css" rel="stylesheet">
-    <!-- Bootstrap theme -->
-    <link href="/assets/css/bootstrap-theme.min.css" rel="stylesheet">
-
-    <!-- Custom styles for this template -->
-    <link href="/assets/css/theme.css" rel="stylesheet">
-	
-	<link href="/css/main.css" rel="stylesheet">
-
-    <!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
-    <!--[if lt IE 9]><script src="../../assets/js/ie8-responsive-file-warning.js"></script><![endif]-->
-    <script src="/assets/js/ie-emulation-modes-warning.js"></script>
-
-    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
-    <!--[if lt IE 9]>
-      <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
-      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
-    <![endif]-->
-  </head>
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_includes/header.html
----------------------------------------------------------------------
diff --git a/docs/_includes/header.html b/docs/_includes/header.html
deleted file mode 100644
index 78b0ff1..0000000
--- a/docs/_includes/header.html
+++ /dev/null
@@ -1,32 +0,0 @@
-    <!-- Fixed navbar -->
-    <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
-      <div class="container">
-        <div class="navbar-header">
-          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-          </button>
-          <a class="navbar-brand" href="/">Apache Storm<!-- <img alt="Apache Storm" src="/images/storm_logo_tagline_color.png"></a> -->
-        </div>
-        <div id="navbar" class="navbar-collapse collapse">
-          <ul class="nav navbar-nav">
-            <li><a href="/">Home</a></li>
-            <li class="dropdown">
-              <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">About<span class="caret"></span></a>
-              <ul class="dropdown-menu" role="menu">
-                <li><a href="/about/integrates.html">About</a></li>
-                <li><a href="/documentation/Contributing-to-Storm.html">Contributing</a></li>
-                <li><a href="/documentation/BYLAWS.html">Bylaws</a></li>
-              </ul>
-            </li>
-            <li><a href="/downloads.html">Download</a></li>
-            <li><a href="/documentation/Home.html">Documentation</a></li>
-            <li><a href="/news.html">News</a></li>
-          </ul>
-        </div><!--/.nav-collapse -->
-      </div>
-    </nav>
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_layouts/about.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/about.html b/docs/_layouts/about.html
deleted file mode 100644
index 28b958b..0000000
--- a/docs/_layouts/about.html
+++ /dev/null
@@ -1,40 +0,0 @@
----
-layout: default
-title: About Storm
-items:
-    - 
-      - "/about/integrates.html"
-      - "Integrates"
-    - 
-      - "/about/simple-api.html"
-      - "Simple API"
-    - 
-      - "/about/scalable.html"
-      - "Scalable"
-    - 
-      - "/about/fault-tolerant.html"
-      - "Fault tolerant"
-    - 
-      - "/about/guarantees-data-processing.html"
-      - "Guarantees data processing"
-    - 
-      - "/about/multi-language.html"
-      - "Use with any language"
-    - 
-      - "/about/deployment.html"
-      - "Easy to deploy and operate"
-    - 
-      - "/about/free-and-open-source.html"
-      - "Free and open source"
----
-
-<div id="sidebar">
-  <ul>
-  {% for post in page.items %}
-<li><a class="{% if page.url == post[0] then %}current{% else %}{% endif %}" href="{{ post[0] }}">{{ post[1] }}</a></li>
-  {% endfor %}
-  </ul>
-</div>
-<div id="aboutcontent">
-{{ content }}
-</div>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_layouts/default.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html
deleted file mode 100644
index de13299..0000000
--- a/docs/_layouts/default.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<html>
-
-  {% include head.html %}
-
-  <body>
-    <div class="container">
-    {% include header.html %}
-
-      
-        {{ content }}
-      
-
-    {% include footer.html %}
-    </div>
-	
-  </body>
-
-</html>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_layouts/documentation.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/documentation.html b/docs/_layouts/documentation.html
deleted file mode 100644
index 6d175a3..0000000
--- a/docs/_layouts/documentation.html
+++ /dev/null
@@ -1,16 +0,0 @@
----
-layout: default
----
-<!-- Documentation -->
-<!-- <div class="container"> -->
-
-  <header class="post-header">
-    <h1 class="post-title">{{ page.title }}</h1>
-    <p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} by {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
-  </header>
-
-  <article class="post-content">
-    {{ content }}
-  </article>
-
-<!-- </div> -->

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_layouts/page.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/page.html b/docs/_layouts/page.html
deleted file mode 100644
index 74c1a11..0000000
--- a/docs/_layouts/page.html
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: default
----
-<div class="post">
-
-  <header class="post-header">
-    <h1 class="post-title">{{ page.title }}</h1>
-  </header>
-
-  <article class="post-content">
-    {{ content }}
-  </article>
-
-</div>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_layouts/post.html
----------------------------------------------------------------------
diff --git a/docs/_layouts/post.html b/docs/_layouts/post.html
deleted file mode 100644
index 932ce28..0000000
--- a/docs/_layouts/post.html
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: default
----
-<div class="container">
-
-  <header class="post-header">
-    <h1 class="post-title">{{ page.title }}</h1>
-    <p class="text-muted credit">Posted on {{ page.date | date: "%b %-d, %Y" }}{% if page.author %} by {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
-  </header>
-
-  <article class="post-content">
-    {{ content }}
-  </article>
-
-</div>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2012-08-02-storm080-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2012-08-02-storm080-released.md b/docs/_posts/2012-08-02-storm080-released.md
deleted file mode 100644
index d5636e4..0000000
--- a/docs/_posts/2012-08-02-storm080-released.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-layout: post
-title: Storm 0.8.0 and Trident released
-author: Nathan Marz
----
-
-I'm happy to announce the release of Storm 0.8.0. This is a *huge* release. Thanks to everyone who tested out the dev release and helped find and fix issues. And thanks to everyone who contributed pull requests. There's one big new thing available in the release: Trident. You may have heard me hint about Trident before, and now it's finally public. 
-
-Trident is a higher level abstraction for Storm. It allows you to seamlessly mix high throughput (millions of messages per second), stateful stream processing with low latency distributed querying. If you're familiar with high level batch processing tools like Pig or Cascading, the concepts of Trident will be very familiar - Trident has joins, aggregations, grouping, functions, and filters. In addition to these, Trident adds primitives for doing stateful, incremental processing on top of any database or persistence store. Trident has consistent, exactly-once semantics, so it is easy to reason about Trident topologies. Trident is bundled with Storm, and you can read documentation about it on [this page](https://github.com/apache/incubator-storm/wiki/Documentation) (start with "Trident tutorial").
-
-Trident supersedes both LinearDRPCTopologyBuilder and transactional topologies, both of which will be deprecated soon and eventually removed from the codebase. 
-
-Here are the other highlights of this release: 
-
-
-Executors
----------
-
-Prior to Storm 0.8.0, a running topology consisted of some number of workers and some number of tasks that ran on those workers. In the old model, worker = process and task = thread. Storm 0.8.0 changes this model by introducing executors. In this model, a worker = process, an executor = thread, and one executor runs many tasks from the same spout/bolt. 
-
-The reason for the change is that the old model complected the semantics of the topology with its physical execution. For example, if you had a bolt with 4 tasks doing a fields grouping on some stream, in order to maintain the semantics of the fields grouping (that the same value always goes to the same task id for that bolt), the number of tasks for that bolt needs to be fixed for the lifetime of the topology, and since task = thread, the number of threads for that bolt is fixed for the lifetime of the topology. In the new model, the number of threads for a bolt is disassociated from the number of tasks, meaning you can change the number of threads for a spout/bolt dynamically without affecting semantics. Similarly, if you're keeping large amounts of state in your bolts, and you want to increase the parallelism of the bolt without having to repartition the state, you can do this with the new executors. 
-
-At the API level, the "parallelism_hint" now specifies the initial number of executors for that bolt. You can specify the number of tasks using the TOPOLOGY_TASKS component config. For example:
-
-<code>
-builder.setBolt(new MyBolt(), 3).setNumTasks(128).shuffleGrouping("spout"); 
-</code>
-
-This sets the initial number of executors to 3 and the number of tasks to 128. If you don't specify the number of tasks for a component, it will be fixed to the initial number of executors for the lifetime of the topology. 
-
-Finally, you can change the number of workers and/or number of executors for components using the "storm rebalance" command. The following command changes the number of workers for the "demo" topology to 3, the number of executors for the "myspout" component to 5, and the number of executors for the "mybolt" component to 1: 
-
-<code>
-storm rebalance demo -n 3 -e myspout=5 -e mybolt=1 
-</code>
-
-Pluggable scheduler
--------------------
-
-You can now implement your own scheduler to replace the default scheduler to assign executors to workers. You configure the class to use using the "storm.scheduler" config in your storm.yaml, and your scheduler must implement [this interface](https://github.com/apache/incubator-storm/blob/master/src/jvm/backtype/storm/scheduler/IScheduler.java).
-
-Throughput improvements
------------------------
-
-The internals of Storm have been rearchitected for extremely significant performance gains. I'm seeing throughput increases of anywhere from 5-10x of what it was before. I've benchmarked Storm at 1M tuples / sec / node on an internal Twitter cluster. 
-
-The key changes made were: 
-
-a) Replacing all the internal in-memory queuing with the LMAX Disruptor 
-b) Doing intelligent auto-batching of processing so that the consumers can keep up with the producers 
-
-Here are the configs which affect how buffering/batching is done: 
-
-topology.executor.receive.buffer.size 
-topology.executor.send.buffer.size 
-topology.receiver.buffer.size 
-topology.transfer.buffer.size 
-
-These may require some tweaking to optimize your topologies, but most likely the default values will work fine for you out of the box. 
-
-Decreased Zookeeper load / increased Storm UI performance
------------------------
-Storm sends significantly less traffic to Zookeeper now (on the order of 10x less). Since it also uses so many fewer znodes to store state, the UI is significantly faster as well. 
-
-Abstractions for shared resources
------------------------
-
-The TopologyContext has methods "getTaskData", "getExecutorData", and "getResource" for sharing resources at the task level, executor level, or worker level respectively. Currently you can't set any worker resources, but this is in development. Storm currently provides a shared ExecutorService worker resource (via "getSharedExecutor" method) that can be used for launching background tasks on a shared thread pool. 
-
-Tick tuples
------------------------
-
-It's common to require a bolt to "do something" at a fixed interval, like flush writes to a database. Many people have been using variants of a ClockSpout to send these ticks. The problem with a ClockSpout is that you can't internalize the need for ticks within your bolt, so if you forget to set up your bolt correctly within your topology it won't work correctly. 0.8.0 introduces a new "tick tuple" config that lets you specify the frequency at which you want to receive tick tuples via the "topology.tick.tuple.freq.secs" component- specific config, and then your bolt will receive a tuple from the __system component and __tick stream at that frequency. 
-
-Improved Storm UI
------------------------
-
-The Storm UI now has a button for showing/hiding the "system stats" (tuples sent on streams other than ones you've defined, like acker streams), making it easier to digest what your topology is doing.
-
-Here's the full changelog for Storm 0.8.0: 
-
- * Added Trident, the new high-level abstraction for intermixing high throughput, stateful stream processing with low-latency distributed querying 
- * Added executor abstraction between workers and tasks. Workers = processes, executors = threads that run many tasks from the same spout or bolt. 
- * Pluggable scheduler (thanks xumingming) 
- * Eliminate explicit storage of task->component in Zookeeper 
- * Number of workers can be dynamically changed at runtime through rebalance command and -n switch 
- * Number of executors for a component can be dynamically changed at runtime through rebalance command and -e switch (multiple -e switches allowed) 
- * Use worker heartbeats instead of task heartbeats (thanks xumingming) 
- * UI performance for topologies with many executors/tasks much faster due to optimized usage of Zookeeper (10x improvement) 
- * Added button to show/hide system stats (e.g., acker component and stream stats) from the Storm UI (thanks xumingming) 
- * Stats are tracked on a per-executor basis instead of per-task basis 
- * Major optimization for unreliable spouts and unanchored tuples (will use far less CPU) 
- * Revamped internals of Storm to use LMAX disruptor for internal queuing. Dramatic reductions in contention and CPU usage. 
- * Numerous micro-optimizations all throughout the codebase to reduce CPU usage. 
- * Optimized internals of Storm to use much fewer threads - two fewer threads per spout and one fewer thread per acker. 
- * Removed error method from task hooks (to be re-added at a later time) 
- * Validate that subscriptions come from valid components and streams, and if it's a field grouping that the schema is correct (thanks xumingming) 
- * MemoryTransactionalSpout now works in cluster mode 
- * Only track errors on a component by component basis to reduce the amount stored in zookeeper (to speed up UI). A side effect of this change is the removal of the task page in the UI. 
- * Add TOPOLOGY-TICK-TUPLE-FREQ-SECS config to have Storm automatically send "tick" tuples to a bolt's execute method coming from the __system component and __tick stream at the configured frequency. Meant to be used as a component-specific configuration. 
- * Upgrade Kryo to v2.17 
- * Tuple is now an interface and is much cleaner. The Clojure DSL helpers have been moved to TupleImpl 
- * Added shared worker resources. Storm provides a shared ExecutorService thread pool by default. The number of threads in the pool can be configured with topology.worker.shared.thread.pool.size 
- * Improve CustomStreamGrouping interface to make it more flexible by providing more information 
- * Enhanced INimbus interface to allow for forced schedulers and better integration with global scheduler 
- * Added assigned method to ISupervisor so it knows exactly what's running and not running 
- * Custom serializers can now have one of four constructors: (), (Kryo), (Class), or (Kryo, Class) 
- * Disallow ":", ".", and "\" from topology names 
- * Errors in multilang subprocesses that go to stderr will be captured and logged to the worker logs (thanks vinodc) 
- * Workers detect and warn for missing outbound connections from assignment, drop messages for which there's no outbound connection 
- * Zookeeper connection timeout is now configurable (via storm.zookeeper.connection.timeout config) 
- * Storm is now less aggressive about halting process when there are Zookeeper errors, preferring to wait until client calls return exceptions. 
- * Can configure Zookeeper authentication for Storm's Zookeeper clients via "storm.zookeeper.auth.scheme" and "storm.zookeeper.auth.payload" configs 
- * Supervisors only download code for topologies assigned to them 
- * Include task id information in task hooks (thanks velvia) 
- * Use execvp to spawn daemons (replaces the python launcher process) (thanks ept) 
- * Expanded INimbus/ISupervisor interfaces to provide more information (used in Storm/Mesos integration) 
- * Bug fix: Realize task ids when worker heartbeats to supervisor. Some users were hitting deserialization problems here in very rare cases (thanks herberteuler) 
- * Bug fix: Fix bug where a topology's status would get corrupted to true if nimbus is restarted while status is rebalancing 
- 
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2012-09-06-storm081-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2012-09-06-storm081-released.md b/docs/_posts/2012-09-06-storm081-released.md
deleted file mode 100644
index da24349..0000000
--- a/docs/_posts/2012-09-06-storm081-released.md
+++ /dev/null
@@ -1,47 +0,0 @@
----
-layout: post
-title: Storm 0.8.1 released
-author: Nathan Marz
----
-
-Storm 0.8.1 is now available on the downloads page and in Maven. This release contains many bug fixes as well as a few important new features. These include: 
-
-Storm's unit testing facilities have been exposed via Java
------------------------
-This is an extremely powerful API that lets you do things like: 
-   a) Easily bring up and tear down local clusters 
-   b) Run a fixed set of tuples through a topology and see all the tuples emitted by all components 
-   c) Feed some tuples through the topology, wait until they've been processed, and then run your assertions 
-   d) Use time simulation and step through time via an API. This is useful for testing topologies that do things based on time advancing. You can see examples of the unit testing API [here](https://github.com/xumingming/storm-lib/blob/master/src/jvm/storm/TestingApiDemo.java).
-   
-Spout wait strategies
----------------------
-
-There's two situations in which a spout needs to wait. The first is when the max spout pending limit is reached. The second is when nothing is emitted from nextTuple. Previously, Storm would just have that spout sit in a busy loop in those cases. What Storm does in those situations is now pluggable, and the default is now for the spout to sleep for 1 ms. This will cause the spout to use dramatically less CPU when it hits those cases, and it also obviates the need for spouts to do any sleeping in their implementation to be "polite". The wait strategy can be configured with TOPOLOGY_SPOUT_WAIT_STRATEGY and can be configured on a spout by spout basis. The interface to implement for a wait strategy is backtype.storm.spout.ISpoutWaitStrategy 
-
-The full changelog is below: 
-
- * Exposed Storm's unit testing facilities via the backtype.storm.Testing class. Notable functions are Testing/withLocalCluster and Testing/completeTopology 
- * Implemented pluggable spout wait strategy that is invoked when a spout emits nothing from nextTuple or when a spout hits the MAX_SPOUT_PENDING limit 
- * Spouts now have a default wait strategy of a 1 millisecond sleep 
- * Changed log level of "Failed message" logging to DEBUG 
- * Deprecated LinearDRPCTopologyBuilder, TimeCacheMap, and transactional topologies 
- * During "storm jar", whether topology is already running or not is checked before submitting jar to save time (thanks jasonjckn) 
- * Added BaseMultiReducer class to Trident that provides empty implementations of prepare and cleanup 
- * Added Negate builtin operation to reverse a Filter 
- * Added topology.kryo.decorators config that allows functions to be plugged in to customize Kryo (thanks jasonjckn) 
- * Enable message timeouts when using LocalCluster 
- * Multilang subprocesses can set "need_task_ids" to false when emitting tuples to tell Storm not to send task ids back (performance optimization) (thanks barrywhart) 
- * Add contains method on Tuple (thanks okapies) 
- * Added ISchemableSpout interface 
- * Bug fix: When an item is consumed off an internal buffer, the entry on the buffer is nulled to allow GC to happen on that data 
- * Bug fix: Helper class for Trident MapStates now clear their read cache when a new commit happens, preventing updates from spilling over from a failed batch attempt to the next attempt 
- * Bug fix: Fix NonTransactionalMap to take in an IBackingMap for regular values rather than TransactionalValue (thanks sjoerdmulder) 
- * Bug fix: Fix NPE when no input fields given for regular Aggregator 
- * Bug fix: Fix IndexOutOfBoundsExceptions when a bolt for global aggregation had a parallelism greater than 1 (possible with splitting, stateQuerying, and multiReduce) 
- * Bug fix: Fix "fields size" error that would sometimes occur when splitting a stream with multiple eaches 
- * Bug fix: Fix bug where a committer spout (including opaque spouts) could cause Trident batches to fail 
- * Bug fix: Fix Trident bug where multiple groupings on same stream would cause tuples to be duplicated to all consumers 
- * Bug fix: Fixed error when repartitioning stream twice in a row without any operations in between 
- * Bug fix: Fix rare bug in supervisor where it would continuously fail to clean up workers because the worker was already partially cleaned up 
- * Bug fix: Fix emitDirect in storm.py 

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2013-01-11-storm082-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2013-01-11-storm082-released.md b/docs/_posts/2013-01-11-storm082-released.md
deleted file mode 100644
index e657d09..0000000
--- a/docs/_posts/2013-01-11-storm082-released.md
+++ /dev/null
@@ -1,82 +0,0 @@
----
-layout: post
-title: Storm 0.8.2 released
-author: Nathan Marz
----
-
-Storm 0.8.2 has been released and is available from [the downloads page](/downloads.html). This release contains a ton of improvements and fixes and is a highly recommended upgrade for everyone.
-
-Isolation Scheduler
--------------------
-
-The highlight of this release is the new "Isolation scheduler" that makes it easy and safe to share a cluster among many topologies. The isolation scheduler lets you specify which topologies should be "isolated", meaning that they run on a dedicated set of machines within the cluster where no other topologies will be running. These isolated topologies are given priority on the cluster, so resources will be allocated to isolated topologies if there's competition with non-isolated topologies, and resources will be taken away from non-isolated topologies if necessary to get resources for an isolated topology. Once all isolated topologies are allocated, the remaining machines on the cluster are shared among all non-isolated topologies.
-
-You configure the isolation scheduler in the Nimbus configuration. Set "storm.scheduler" to "backtype.storm.scheduler.IsolationScheduler". Then, use the "isolation.scheduler.machines" config to specify how many machines each topology should get. This config is a map from topology name to number of machines. For example:
-
-<script src="https://gist.github.com/4514691.js"></script>
-
-Any topologies submitted to the cluster not listed there will not be isolated. Note that there is no way for a user of Storm to affect their isolation settings – this is only allowed by the administrator of the cluster (this is very much intentional).
-
-The isolation scheduler solves the multi-tenancy problem – avoiding resource contention between topologies – by providing full isolation between topologies. The intention is that "productionized" topologies should be listed in the isolation config, and test or in-development topologies should not. The remaining machines on the cluster serve the dual role of failover for isolated topologies and for running the non-isolated topologies.
-
-Storm UI improvements
--------------------
-
-The Storm UI has also been made significantly more useful. There are new stats "#executed", "execute latency", and "capacity" tracked for all bolts. The "capacity" metric is very useful and tells you what % of the time in the last 10 minutes the bolt spent executing tuples. If this value is close to 1, then the bolt is "at capacity" and is a bottleneck in your topology. The solution to at-capacity bolts is to increase the parallelism of that bolt.
-
-Another useful improvement is the ability to kill, activate, deactivate, and rebalance topologies from the Storm UI.
-
-
-Important bug fixes
--------------------
-
-There are also a few important bug fixes in this release. We fixed two bugs that could cause a topology to freeze up and stop processing. One of these bugs was extremely unlikely to hit, but the other one was a regression in 0.8.1 and there was a small chance of hitting it anytime a worker was restarted.
-
-
-Changelog
----------
-
- * Added backtype.storm.scheduler.IsolationScheduler. This lets you run topologies that are completely isolated at the machine level. Configure Nimbus to isolate certain topologies, and how many machines to give to each of those topologies, with the isolation.scheduler.machines config in Nimbus's storm.yaml. Topologies run on the cluster that are not listed there will share whatever remaining machines there are on the cluster after machines are allocated to the listed topologies.
- * Storm UI now uses nimbus.host to find Nimbus rather than always using localhost (thanks Frostman)
- * Added report-error! to Clojure DSL
- * Automatically throttle errors sent to Zookeeper/Storm UI when too many are reported in a time interval (all errors are still logged) Configured with TOPOLOGY_MAX_ERROR_REPORT_PER_INTERVAL and TOPOLOGY_ERROR_THROTTLE_INTERVAL_SECS
- * Kryo instance used for serialization can now be controlled via IKryoFactory interface and TOPOLOGY_KRYO_FACTORY config
- * Add ability to plug in custom code into Nimbus to allow/disallow topologies to be submitted via NIMBUS_TOPOLOGY_VALIDATOR config
- * Added TOPOLOGY_TRIDENT_BATCH_EMIT_INTERVAL_MILLIS config to control how often a batch can be emitted in a Trident topology. Defaults to 500 milliseconds. This is used to prevent too much load from being placed on Zookeeper in the case that batches are being processed super quickly.
- * Log any topology submissions errors in nimbus.log
- * Add static helpers in Config when using regular maps
- * Make Trident much more memory efficient during failures by immediately removing state for failed attempts when a more recent attempt is seen
- * Add ability to name portions of a Trident computation and have those names appear in the Storm UI
- * Show Nimbus and topology configurations through Storm UI (thanks rnfein)
- * Added ITupleCollection interface for TridentState's and TupleCollectionGet QueryFunction for getting the full contents of a state. MemoryMapState and LRUMemoryMapState implement this
- * Can now submit a topology in inactive state. Storm will wait to call open/prepare on the spouts/bolts until it is first activated.
- * Can now activate, deactive, rebalance, and kill topologies from the Storm UI (thanks Frostman)
- * Can now use --config option to override which yaml file from ~/.storm to use for the config (thanks tjun)
- * Redesigned the pluggable resource scheduler (INimbus, ISupervisor) interfaces to allow for much simpler integrations
- * Added prepare method to IScheduler
- * Added "throws Exception" to TestJob interface
- * Added reportError to multilang protocol and updated Python and Ruby adapters to use it (thanks Lazyshot)
- * Number tuples executed now tracked and shown in Storm UI
- * Added ReportedFailedException which causes a batch to fail without killing worker and reports the error to the UI
- * Execute latency now tracked and shown in Storm UI
- * Adding testTuple methods for easily creating Tuple instances to Testing API (thanks xumingming)
- * Trident now throws an error during construction of a topology when try to select fields that don't exist in a stream (thanks xumingming)
- * Compute the capacity of a bolt based on execute latency and #executed over last 10 minutes and display in UI
- * Storm UI displays exception instead of blank page when there's an error rendering the page (thanks Frostman)
- * Added MultiScheme interface (thanks sritchie)
- * Added MockTridentTuple for testing (thanks emblem)
- * Add whitelist methods to Cluster to allow only a subset of hosts to be revealed as available slots
- * Updated Trident Debug filter to take in an identifier to use when logging (thanks emblem)
- * Number of DRPC server worker threads now customizable (thanks xiaokang)
- * DRPC server now uses a bounded queue for requests to prevent being overloaded with requests (thanks xiaokang)
- * Add __hash__ method to all generated Python Thrift objects so that Python code can read Nimbus stats which use Thrift objects as dict keys
- * Bug fix: Fix for bug that could cause topology to hang when ZMQ blocks sending to a worker that got reassigned
- * Bug fix: Fix deadlock bug due to variant of dining philosophers problem. Spouts now use an overflow buffer to prevent blocking and guarantee that it can consume the incoming queue of acks/fails.
- * Bug fix: Fix race condition in supervisor that would lead to supervisor continuously crashing due to not finding "stormconf.ser" file for an already killed topology
- * Bug fix: bin/storm script now displays a helpful error message when an invalid command is specified
- * Bug fix: fixed NPE when emitting during emit method of Aggregator
- * Bug fix: URLs with periods in them in Storm UI now route correctly
- * Bug fix: Fix occasional cascading worker crashes due when a worker dies due to not removing connections from connection cache appropriately
- 
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2013-12-08-storm090-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2013-12-08-storm090-released.md b/docs/_posts/2013-12-08-storm090-released.md
deleted file mode 100644
index 8e1e948..0000000
--- a/docs/_posts/2013-12-08-storm090-released.md
+++ /dev/null
@@ -1,127 +0,0 @@
----
-layout: post
-title: Storm 0.9.0 Released
-author: P. Taylor Goetz
----
-
-We are pleased to announce that Storm 0.9.0 has been released and is available from [the downloads page](/downloads.html). This release represents an important milestone in the evolution of Storm.
-
-While a number of new features have been added, a key focus area for this release has been stability-related fixes. Though many users are successfully running work-in-progress builds for Storm 0.9.x in production, this release represents the most stable version to-date, and is highly recommended for everyone, especially users of 0.8.x versions.
-
-
-Netty Transport
----------------
-The first hightlight of this release is the new [Netty](http://netty.io/index.html) Transport contributed by [Yahoo! Engineering](http://yahooeng.tumblr.com/). Storm's core network transport mechanism is now plugable, and Storm now comes with two implementations: The original 0MQ transport, and a new Netty-based implementation.
-
-In earlier versions, Storm relied solely on 0MQ for transport. Since 0MQ is a native library, it was highly platform-dependent and, at times, challenging to install properly. In addition, stability between versions varied widely between versions and only a relatively old 0MQ version (2.1.7) was certified to work with Storm.
-
-The Netty transport offers a pure Java alternative that eliminates Storm's dependency on native libraries. The Netty transport's performance is up to twice as fast as 0MQ, and it will open the door for authorization and authentication between worker processes. For an in-depth performance comparison of the 0MQ and Netty transports, see [this blog post](http://yahooeng.tumblr.com/post/64758709722/making-storm-fly-with-netty) by Storm contributor [Bobby Evans](https://github.com/revans2).
-
-To configure Storm to use the Netty transport simply add the following to your `storm.yaml` configuration and adjust the values to best suit your use-case:
-
-```
-storm.messaging.transport: "backtype.storm.messaging.netty.Context"
-storm.messaging.netty.server_worker_threads: 1
-storm.messaging.netty.client_worker_threads: 1
-storm.messaging.netty.buffer_size: 5242880
-storm.messaging.netty.max_retries: 100
-storm.messaging.netty.max_wait_ms: 1000
-storm.messaging.netty.min_wait_ms: 100
-```
-You can also write your own transport implementation by implementing the [`backtype.storm.messaging.IContext`](https://github.com/apache/incubator-storm/blob/master/storm-core/src/jvm/backtype/storm/messaging/IContext.java) interface.
-
-
-Log Viewer UI
--------------
-Storm now includes a helpful new feature for debugging and monitoring topologies: The `logviewer` daemon.
-
-In earlier versions of Storm, viewing worker logs involved determining a worker's location (host/port), typically through Storm UI, then `ssh`ing to that host and `tail`ing the corresponding worker log file. With the new log viewer. You can now easily access a specific worker's log in a web browser by clicking on a worker's port number right from Storm UI.
-
-The `logviewer` daemon runs as a separate process on Storm supervisor nodes. To enable the `logviewer` run the following command (under supervision) on your cluster's supervisor nodes:
-
-```
-$ storm logviewer
-```
-
-
-Improved Windows Support
-------------------------
-In previous versions, running Storm on Microsoft Windows required installing third-party binaries (0MQ), modifying Storm's source, and adding Windows-specific scripts. With the addition of the platform-independent Netty transport, as well as numerous enhancements to make Storm more platform-independent, running Storm on Windows is easier than ever.
-
-
-Security Improvements
----------------------
-Security, Authentication, and Authorization have been and will continue to be important focus areas for upcoming features. Storm 0.9.0 introduces an API for pluggable tuple serialization and a blowfish encryption based implementation for encrypting tuple data for sensitive use cases.
-
-
-API Compatibility and Upgrading
--------------------------------
-For most Storm topology developers, upgrading to 0.9.0 is simply a matter of updating the [dependency](https://clojars.org/storm). Storm's core API has changed very little since the 0.8.2 release.
-
-On the devops side, when upgrading to a new Storm release, it is safest to clear any existing state (Zookeeper, `storm.local.dir`), prior to upgrading.
-
-Logging Changes
----------------
-Another important change in 0.9.0 has to do with logging. Storm has largely switched over to the [slf4j API](http://www.slf4j.org) (backed by a [logback](http://logback.qos.ch) logger implementation). Some Storm dependencies rely on the log4j API, so Storm currently depends on [log4j-over-slf4j](http://www.slf4j.org/legacy.html#log4j-over-slf4j).
-
-These changes have implications for existing topologies and topology components that use the log4j API.
-
-In general, and when possible, Storm topologies and topology components should use the [slf4j API](http://www.slf4j.org) for logging.
-
-
-Thanks
-------
-Special thanks are due to all those who have contributed to Storm -- whether through direct code contributions, documentation, bug reports, or helping other users on the mailing lists. Your efforts are much appreciated.
-
-
-Changelog
----------
-
-* Update build configuration to force compatibility with Java 1.6
-* Fixed a netty client issue where sleep times for reconnection could be negative (thanks brndnmtthws)
-* Fixed an issue that would cause storm-netty unit tests to fail
-* Added configuration to limit ShellBolt internal _pendingWrites queue length (thanks xiaokang)
-* Fixed a a netty client issue where sleep times for reconnection could be negative (thanks brndnmtthws)
-* Fixed a display issue with system stats in Storm UI (thanks d2r)
-* Nimbus now does worker heartbeat timeout checks as soon as heartbeats are updated (thanks d2r)
-* The logviewer now determines log file location by examining the logback configuration (thanks strongh)
-* Allow tick tuples to work with the system bolt (thanks xumingming)
-* Add default configuration values for the netty transport and the ability to configure the number of worker threads (thanks revans2)
-* Added timeout to unit tests to prevent a situation where tests would hang indefinitely (thanks d2r)
-* Fixed an issue in the system bolt where local mode would not be detected accurately (thanks miofthena)
-* Fixed `storm jar` command to work properly when STORM_JAR_JVM_OPTS is not specified (thanks roadkill001)
-* All logging now done with slf4j
-* Replaced log4j logging system with logback
-* Logs are now limited to 1GB per worker (configurable via logging configuration file)
-* Build upgraded to leiningen 2.0
-* Revamped Trident spout interfaces to support more dynamic spouts, such as a spout who reads from a changing set of brokers
-* How tuples are serialized is now pluggable (thanks anfeng)
-* Added blowfish encryption based tuple serialization (thanks anfeng)
-* Have storm fall back to installed storm.yaml (thanks revans2)
-* Improve error message when Storm detects bundled storm.yaml to show the URL's for offending resources (thanks revans2)
-* Nimbus throws NotAliveException instead of FileNotFoundException from various query methods when topology is no longer alive (thanks revans2)
-* Escape HTML and Javascript appropriately in Storm UI (thanks d2r)
-* Storm's Zookeeper client now uses bounded exponential backoff strategy on failures
-* Automatically drain and log error stream of multilang subprocesses
-* Append component name to thread name of running executors so that logs are easier to read
-* Messaging system used for passing messages between workers is now pluggable (thanks anfeng)
-* Netty implementation of messaging (thanks anfeng)
-* Include topology id, worker port, and worker id in properties for worker processes, useful for logging (thanks d2r)
-* Tick tuples can now be scheduled using floating point seconds (thanks tscurtu)
-* Added log viewer daemon and links from UI to logviewers (thanks xiaokang)
-* DRPC server childopts now configurable (thanks strongh)
-* Default number of ackers to number of workers, instead of just one (thanks lyogavin)
-* Validate that Storm configs are of proper types/format/structure (thanks d2r)
-* FixedBatchSpout will now replay batches appropriately on batch failure (thanks ptgoetz)
-* Can set JAR_JVM_OPTS env variable to add jvm options when calling 'storm jar' (thanks srmelody)
-* Throw error if batch id for transaction is behind the batch id in the opaque value (thanks mrflip)
-* Sort topologies by name in UI (thanks jaked)
-* Added LoggingMetricsConsumer to log all metrics to a file, by default not enabled (thanks mrflip)
-* Add prepare(Map conf) method to TopologyValidator (thanks ankitoshniwal)
-* Bug fix: Supervisor provides full path to workers to logging config rather than relative path (thanks revans2) 
-* Bug fix: Call ReducerAggregator#init properly when used within persistentAggregate (thanks lorcan)
-* Bug fix: Set component-specific configs correctly for Trident spouts
-
- 
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-10-storm-logo-contest.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-10-storm-logo-contest.md b/docs/_posts/2014-04-10-storm-logo-contest.md
deleted file mode 100644
index 59f2a5d..0000000
--- a/docs/_posts/2014-04-10-storm-logo-contest.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-layout: post
-title: Apache Storm Logo Contest
-author: P. Taylor Goetz
----
-
-Apache Storm is a platform for distributed, real-time computation that has been undergoing incubation at Apache since September 18, 2013. You can contribute by helping establish the Storm brand by submitting a proposal for the Apache Storm logo.
-
-Your proposal will be published on the [Storm project website](http://storm.incubator.apache.org) next to the other proposals. On **Wednesday, April 30, 2014** the community will choose the new logo through a vote on the [Apache Storm Mailing List](http://mail-archives.apache.org/mod_mbox/incubator-storm-dev/). If more than 10 proposals are received, voting will take place in two rounds, with the first round selecting 10 proposals to move to round two.
-
-The winning artist will be credited on the Apache Storm website as having designed the logo, and may include a link to her/his website or blog. Prizes for the winner(s) are currently TBD.
-
-##GUIDELINES 
-
-The logo should meet the following requirements: 
-
- * Include 2 versions of the logo: a rectangular layout (full brand) and a square layout (icon, stand-alone logo) 
- * Be scalable up or down (hi-res raster, or vector) 
- * Translate to a 2-color representation (black/white, 2 greys, etc.) 
- * Able to be inverted if running on a dark background 
- * Comply with the [Apache branding requirements](http://www.apache.org/foundation/marks/)
- 
-Optional, but nice to have:
- 
- * Icons representing storm components (suitable for use in diagrams, presentations, etc.):
-    * Spouts
-    * Bolts
-    * Streams
-    * Trident
-    * Functions/Filters
-
-Note: The winning design as accepted by popular vote will be treated as a proposal that can be modified and iterated upon to reach its final form. 
-
-There is no limit on the number of entries per individual.
-
-##INSPIRATION 
-
-While designing the logo, keep in mind what describes Storm: 
-
- * Distributed Computation
- * High Performance
- * Fault Tolerance
- * Community Driven
-
-
-##DEADLINE 
-
-The contest will be open until **Wednesday, April 30, 2014**.
-
-##HOW TO ENTER 
-
-Send the [Apache Storm Mailing List](mailto:dev@storm.incubator.apache.org) links to:
-
- * A PNG version of the logo (and it's scalable variations) 
- * A ZIP file with all assets
- * (Optional) A link to a blog post, etc. describing the proposal
-
-Alternatively, contributers can mail the above to the [contest coordinator](mailto:ptgoetz@apache.org) to have them forwarded to the mailing list.
-
-Contributors may also publicise their proposal by tweeting links to a proposal with the hashtag #stormlogocontest
-
-
-##LICENSE 
-
-The authors of the selected Apache Storm logo(s) will be required to donate them to the Apache Storm project and complete and [Apache Individual Contributor License Agreement(ICLA)](http://www.apache.org/licenses/icla.txt)
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-17-logo-pforrest.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-17-logo-pforrest.md b/docs/_posts/2014-04-17-logo-pforrest.md
deleted file mode 100644
index cd47938..0000000
--- a/docs/_posts/2014-04-17-logo-pforrest.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: post
-title: Logo Entry No. 1 - Patricia Forrest
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/pforrest/storm1.png)
-
-![Storm Brand](/images/logocontest/pforrest/storm_logo_composite.png)
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-17-logo-squinones.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-17-logo-squinones.md b/docs/_posts/2014-04-17-logo-squinones.md
deleted file mode 100644
index 31c00a3..0000000
--- a/docs/_posts/2014-04-17-logo-squinones.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: post
-title: Logo Entry No. 2 - Samuel Quiñones
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/squinones/storm_logo1.png)
-
-![Storm Brand](/images/logocontest/squinones/storm_logo.png)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-19-logo-ssuleman.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-19-logo-ssuleman.md b/docs/_posts/2014-04-19-logo-ssuleman.md
deleted file mode 100644
index e0d49b5..0000000
--- a/docs/_posts/2014-04-19-logo-ssuleman.md
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: post
-title: Logo Entry No. 3- Shaan Shiv Suleman
-author: P. Taylor Goetz
----
-
-
-![Storm Brand](/images/logocontest/ssuleman/storm_logo.png)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-21-logo-rmarshall.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-21-logo-rmarshall.md b/docs/_posts/2014-04-21-logo-rmarshall.md
deleted file mode 100644
index 98edbb9..0000000
--- a/docs/_posts/2014-04-21-logo-rmarshall.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-layout: post
-title: Logo Entry No. 4 - Richard Brownlie-Marshall
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/rmarshall/StormLogo_Square.png)
-
-![Storm Brand](/images/logocontest/rmarshall/StormLogo_Horizontal.png)
-
-![Storm Brand](/images/logocontest/rmarshall/StormLogo_Horizontal_NoColour.png)
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-22-logo-zsayari.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-22-logo-zsayari.md b/docs/_posts/2014-04-22-logo-zsayari.md
deleted file mode 100644
index 859b32e..0000000
--- a/docs/_posts/2014-04-22-logo-zsayari.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: post
-title: Logo Entry No. 5 - Ziba Sayari
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/zsayari/storm_logo.png)
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-23-logo-abartos.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-23-logo-abartos.md b/docs/_posts/2014-04-23-logo-abartos.md
deleted file mode 100644
index eee2e82..0000000
--- a/docs/_posts/2014-04-23-logo-abartos.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: post
-title: Logo Entry No. 6 - Alec Bartos
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/abartos/storm_logo.png)
-
-![Storm Brand](/images/logocontest/abartos/storm_logo2.png)
-
-![Storm Brand](/images/logocontest/abartos/storm_logo3.png)
-
-![Storm Brand](/images/logocontest/abartos/stationery_mockup.jpg)
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-27-logo-cboustead.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-27-logo-cboustead.md b/docs/_posts/2014-04-27-logo-cboustead.md
deleted file mode 100644
index b2b053b..0000000
--- a/docs/_posts/2014-04-27-logo-cboustead.md
+++ /dev/null
@@ -1,12 +0,0 @@
----
-layout: post
-title: Logo Entry No. 7 - Calum Boustead
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/cboustead/storm_logo1.png)
-
-![Storm Brand](/images/logocontest/cboustead/storm_logo.png)
-
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-27-logo-sasili.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-27-logo-sasili.md b/docs/_posts/2014-04-27-logo-sasili.md
deleted file mode 100644
index bcd8c4f..0000000
--- a/docs/_posts/2014-04-27-logo-sasili.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: post
-title: Logo Entry No. 8 - Stefano Asili
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/sasili/storm_logo.png)
-
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-29-logo-jlee1.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-29-logo-jlee1.md b/docs/_posts/2014-04-29-logo-jlee1.md
deleted file mode 100644
index 1f99b1a..0000000
--- a/docs/_posts/2014-04-29-logo-jlee1.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: post
-title: Logo Entry No. 9 - Jennifer Lee
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/jlee1/storm_logo.jpg)
-
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-29-logo-jlee2.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-29-logo-jlee2.md b/docs/_posts/2014-04-29-logo-jlee2.md
deleted file mode 100644
index 7149b3c..0000000
--- a/docs/_posts/2014-04-29-logo-jlee2.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: post
-title: Logo Entry No. 10 - Jennifer Lee
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/jlee3/storm_logo.jpg)
-
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-04-29-logo-jlee3.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-04-29-logo-jlee3.md b/docs/_posts/2014-04-29-logo-jlee3.md
deleted file mode 100644
index c034fca..0000000
--- a/docs/_posts/2014-04-29-logo-jlee3.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: post
-title: Logo Entry No. 11 - Jennifer Lee
-author: P. Taylor Goetz
----
-
-![Storm Brand](/images/logocontest/jlee2/storm_logo.jpg)
-
-
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-05-27-round1-results.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-05-27-round1-results.md b/docs/_posts/2014-05-27-round1-results.md
deleted file mode 100644
index 015e167..0000000
--- a/docs/_posts/2014-05-27-round1-results.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: post
-title: Logo Contest - Round 1 Results
-author: P. Taylor Goetz
----
-
-Round one of the Apache Storm logo contest is now complete and was a great success. We received votes from 7 PPMC members as well as 46 votes from the greater Storm community.
-
-We would like to extend a very special thanks to all those who took the time and effort to create and submit a logo proposal. We would also like to thank everyone who voted.
-
-## Results ##
-The Storm PPMC and community votes were closely aligned, with the community vote resolving a PPMC tie for the 3rd finalist as shown in the result table below.
-
-The three finalists entering the final round are:
-
- * [No. 6 - Alec Bartos](/2014/04/23/logo-abartos.html)
- * [No. 9 - Jennifer Lee](/2014/04/29/logo-jlee1.html)
- * [No. 10 - Jennifer Lee](/2014/04/29/logo-jlee2.html)
- 
-Congratulations Alec and Jennifer!
-
-Stay tuned for the final vote, which will be announced shortly.
-
-------
-
-| Entry                        | PPMC | Community |
-|:-----------------------------|-----:|----------:|
-|1 - Patricia Forrest          | 2    | 23        |
-|2 - Samuel Quiñones           | 3    | 6         |
-|3- Shaan Shiv Suleman         | 0    | 7         |
-|4 - Richard Brownlie-Marshall | 0    | 6         |
-|5 - Ziba Sayari               | 0    | 9         |
-|6 - Alec Bartos               | 3    | 32        |
-|7 - Calum Boustead            | 0    | 0         |
-|8 - Stefano Asili             | 0    | 2         |
-|9 - Jennifer Lee              | 9    | 63        |
-|10 - Jennifer Lee             | 18   | 64        |
-|11 - Jennifer Lee             | 0    | 18        |
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-06-17-contest-results.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-06-17-contest-results.md b/docs/_posts/2014-06-17-contest-results.md
deleted file mode 100644
index 4b6b7de..0000000
--- a/docs/_posts/2014-06-17-contest-results.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: post
-title: Storm Logo Contest Results
-author: P. Taylor Goetz
----
-
-The Apache Storm logo contest is now complete and was a great success. We received votes from 7 PPMC members as well as 55 votes from the greater Storm community. Thank you to everyone who participated by voting.
-
-## The Winner ##
-Congratulations to Jennifer Lee, whose [3rd entry](/2014/04/29/logo-jlee2.html) received the most points from both the PPMC as well as the Storm community. Final vote tallies are listed below.
-
-![Storm Logo](/images/logocontest/storm_logo_winner.png)
-
-The Apache Storm project management team will now begin the process of finalizing the logo and making it official.
-
-Congratulations Jennifer, and thanks again to everyone who participated!
-
-------
-
-| Entry                        | PPMC |&nbsp;&nbsp;&nbsp; Community |
-|:-----------------------------|-----:|----------:|
-|[6 - Alec Bartos](/2014/04/23/logo-abartos.html)               | 2    | 41        |
-|[9 - Jennifer Lee](/2014/04/29/logo-jlee1.html)              | 7    | 111       |
-|[10 - Jennifer Lee](/2014/04/29/logo-jlee2.html)             | 26   | 123       |

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-06-25-storm092-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-06-25-storm092-released.md b/docs/_posts/2014-06-25-storm092-released.md
deleted file mode 100644
index 7f8c438..0000000
--- a/docs/_posts/2014-06-25-storm092-released.md
+++ /dev/null
@@ -1,137 +0,0 @@
----
-layout: post
-title: Storm 0.9.2 released
-author: P. Taylor Goetz
----
-
-We are pleased to announce that Storm 0.9.2-incubating has been released and is available from [the downloads page](/downloads.html). This release includes many important fixes and improvements.
-
-Netty Transport Improvements
-----------------------------
-Storm's Netty-based transport has been overhauled to significantly improve performance through better utilization of thread, CPU, and network resources, particularly in cases where message sizes are small. Storm contributor Sean Zhong ([@clockfly](https://github.com/clockfly)) deserves a great deal of credit not only for discovering, analyzing, documenting and fixing the root cause, but also for persevering through an extended review process and promptly addressing all concerns.
-
-Those interested in the technical details and evolution of this patch can find out more in the [JIRA ticket for STORM-297](https://issues.apache.org/jira/browse/STORM-297).
-
-Sean also discovered and fixed an [elusive bug](https://issues.apache.org/jira/browse/STORM-342) in Storm's usage of the Disruptor queue that could lead to out-of-order or lost messages. 
-
-Many thanks to Sean for contributing these important fixes.
-
-Storm UI Improvements
----------------------
-This release also includes a number of improvements to the Storm UI service. Contributor Sriharsha Chintalapani([@harshach](https://github.com/harshach)) added a REST API to the Storm UI service to expose metrics and operations in JSON format, and updated the UI to use that API.
-
-The new REST API will make it considerably easier for other services to consume availabe cluster and topology metrics for monitoring and visualization applications. Kyle Nusbaum ([@knusbaum](https://github.com/knusbaum)) has already leveraged the REST API to create a topology visualization tool now included in Storm UI and illustrated in the screenshot below.
-
-&nbsp;
-
-![Storm UI Topology Visualization](/images/ui_topology_viz.png)
-
-&nbsp;
-
-In the visualization, spout components are represented as blue, while bolts are colored between green and red depending on their associated capacity metric. The width of the lines between the components represent the flow of tuples relative to the other visible streams. 
-
-Kafka Spout
------------
-This is the first Storm release to include official support for consuming data from Kafka 0.8.x. In the past, development of Kafka spouts for Storm had become somewhat fragmented and finding an implementation that worked with certain versions of Storm and Kafka proved burdensome for some developers. This is no longer the case, as the `storm-kafka` module is now part of the Storm project and associated artifacts are released to official channels (Maven Central) along with Storm's other components.
-
-Thanks are due to GitHub user [@wurstmeister]() for picking up Nathan Marz' original Kafka 0.7.x implementation, updating it to work with Kafka 0.8.x, and contributing that work back to the Storm community.
-
-The `storm-kafka` module can be found in the `/external/` directory of the source tree and binary distributions. The `external` area has been set up to contain projects that while not required by Storm, are often used in conjunction with Storm to integrate with some other technology. Such projects also come with a maintenance committment from at least one Storm committer to ensure compatibility with Storm's main codebase as it evolves.
-
-The `storm-kafka` dependency is available now from Maven Central at the following coordinates:
-
-
-	groupId: org.apache.storm
-	artifactId: storm-kafka
-	version: 0.9.2-incubating
-
-Users, and Scala developers in particular, should note that the Kafka dependency is listed as `provided`. This allows users to choose a specific Scala version as described in the [project README](https://github.com/apache/incubator-storm/tree/v0.9.2-incubating/external/storm-kafka).
-
-
-Storm Starter and Examples
---------------------------
-
-Similar to the `external` section of the codebase, we have also added an `examples` directory and pulled in the `storm-starter` project to ensure it will be maintained in lock-step with Storm's main codebase.
-
-Thank you to Storm committer Michael G. Noll for his continued work in maintaining and improving the `storm-starter` project.
-
-
-Plugable Serialization for Multilang
-------------------------------------
-In previous versions of Storm, serialization of data to and from multilang components was limited to JSON, imposing somewhat of performance penalty. Thanks to a contribution from John Gilmore ([@jsgilmore](https://github.com/jsgilmore)) the serialization mechanism is now plugable and enables the use of more performant serialization frameworks like protocol buffers in addition to JSON.
-
-
-Thanks
-------
-Special thanks are due to all those who have contributed to Storm -- whether through direct code contributions, documentation, bug reports, or helping other users on the mailing lists. Your efforts are much appreciated.
-
-
-Changelog
----------
-
- * STORM-352: [storm-kafka] PartitionManager does not save offsets to ZooKeeper
- * STORM-66: send taskid on initial handshake
- * STORM-342: Contention in Disruptor Queue which may cause out of order or lost messages
- * STORM-338: Move towards idiomatic Clojure style 
- * STORM-335: add drpc test for removing timed out requests from queue
- * STORM-69: Storm UI Visualizations for Topologies
- * STORM-297: Performance scaling with CPU
- * STORM-244: DRPC timeout can return null instead of throwing an exception
- * STORM-63: remove timeout drpc request from its function's request queue
- * STORM-313: Remove log-level-page from logviewer
- * STORM-205: Add REST API To Storm UI
- * STORM-326: tasks send duplicate metrics
- * STORM-331: Update the Kafka dependency of storm-kafka to 0.8.1.1
- * STORM-308: Add support for config_value to {supervisor,nimbus,ui,drpc,logviewer} childopts
- * STORM-309: storm-starter Readme: windows documentation update
- * STORM-318: update storm-kafka to use apache curator-2.4.0
- * STORM-303: storm-kafka reliability improvements
- * STORM-233: Removed inline heartbeat to nimbus to avoid workers being killed when under heavy ZK load
- * STORM-267: fix package name of LoggingMetricsConsumer in storm.yaml.example
- * STORM-265: upgrade to clojure 1.5.1
- * STORM-232: ship JNI dependencies with the topology jar
- * STORM-295: Add storm configuration to define JAVA_HOME
- * STORM-138: Pluggable serialization for multilang
- * STORM-264: Removes references to the deprecated topology.optimize
- * STORM-245: implement Stream.localOrShuffle() for trident
- * STORM-317: Add SECURITY.md to release binaries
- * STORM-310: Change Twitter authentication
- * STORM-305: Create developer documentation
- * STORM-280: storm unit tests are failing on windows
- * STORM-298: Logback file does not include full path for metrics appender fileNamePattern
- * STORM-316: added validation to registermetrics to have timebucketSizeInSecs >= 1
- * STORM-315: Added progress bar when submitting topology
- * STORM-214: Windows: storm.cmd does not properly handle multiple -c arguments
- * STORM-306: Add security documentation
- * STORM-302: Fix Indentation for pom.xml in storm-dist
- * STORM-235: Registering a null metric should blow up early
- * STORM-113: making thrift usage thread safe for local cluster
- * STORM-223: use safe parsing for reading YAML
- * STORM-238: LICENSE and NOTICE files are duplicated in storm-core jar
- * STORM-276: Add support for logviewer in storm.cmd.
- * STORM-286: Use URLEncoder#encode with the encoding specified.
- * STORM-296: Storm kafka unit tests are failing on windows
- * STORM-291: upgrade http-client to 4.3.3
- * STORM-252: Upgrade curator to latest version
- * STORM-294: Commas not escaped in command line
- * STORM-287: Fix the positioning of documentation strings in clojure code
- * STORM-290: Fix a log binding conflict caused by curator dependencies
- * STORM-289: Fix Trident DRPC memory leak
- * STORM-173: Treat command line "-c" option number config values as such
- * STORM-194: Support list of strings in *.worker.childopts, handle spaces
- * STORM-288: Fixes version spelling in pom.xml
- * STORM-208: Add storm-kafka as an external module
- * STORM-285: Fix storm-core shade plugin config
- * STORM-12: reduce thread usage of netty transport
- * STORM-281: fix and issue with config parsing that could lead to leaking file descriptors
- * STORM-196: When JVM_OPTS are set, storm jar fails to detect storm.jar from environment
- * STORM-260: Fix a potential race condition with simulated time in Storm's unit tests
- * STORM-258: Update commons-io version to 2.4
- * STORM-270: don't package .clj files in release jars.
- * STORM-273: Error while running storm topologies on Windows using "storm jar"
- * STROM-247: Replace links to github resources in storm script
- * STORM-263: Update Kryo version to 2.21+
- * STORM-187: Fix Netty error "java.lang.IllegalArgumentException: timeout value is negative"
- * STORM-186: fix float secs to millis long convertion
- * STORM-70: Upgrade to ZK-3.4.5 and curator-1.3.3
- * STORM-146: Unit test regression when storm is compiled with 3.4.5 zookeeper

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-10-20-storm093-release-candidate.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-10-20-storm093-release-candidate.md b/docs/_posts/2014-10-20-storm093-release-candidate.md
deleted file mode 100644
index 6270283..0000000
--- a/docs/_posts/2014-10-20-storm093-release-candidate.md
+++ /dev/null
@@ -1,11 +0,0 @@
----
-layout: post
-title: Storm 0.9.3 release candidate 1 available
-author: Michael G. Noll
----
-
-We are pleased to announce that Apache Storm version 0.9.3 has reached the release candidate stage.  The latest release is 0.9.3-rc1.  We are moving closer to the GA release, so this is a good time to give this new 0.9.3 version a try!
-
-Storm 0.9.3 is a maintenance release with bug fixes and better stability as summarized in the [0.9.3 changelog](https://github.com/apache/storm/blob/master/CHANGELOG.md).  On top of that version 0.9.3 continues to improve the integration with [Apache Kafka](http://kafka.apache.org/) as well as the [documentation of the core spout and Trident spout for Kafka](https://github.com/apache/storm/blob/master/external/storm-kafka/README.md), which will provide our users with the best Kafka connectivity for Storm to date.
-
-We heartily encourage you to [test the 0.9.3 release candidate](http://storm.apache.org/downloads.html) and provide your feedback regarding any issues via [our mailing lists](http://storm.apache.org/community.html), which is an easy and valuable way to contribute back to the Storm community and to help us moving to an official 0.9.3 release.  You can find the [0.9.3 release candidate in our Downloads section](http://storm.apache.org/downloads.html).


[18/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/bootstrap.css.map
----------------------------------------------------------------------
diff --git a/docs/assets/css/bootstrap.css.map b/docs/assets/css/bootstrap.css.map
deleted file mode 100644
index a02f6ba..0000000
--- a/docs/assets/css/bootstrap.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["bootstrap.css","less/normalize.less","less/print.less","less/glyphicons.less","less/scaffolding.less","less/mixins/vendor-prefixes.less","less/mixins/tab-focus.less","less/mixins/image.less","less/type.less","less/mixins/text-emphasis.less","less/mixins/background-variant.less","less/mixins/text-overflow.less","less/code.less","less/grid.less","less/mixins/grid.less","less/mixins/grid-framework.less","less/tables.less","less/mixins/table-row.less","less/forms.less","less/mixins/forms.less","less/buttons.less","less/mixins/buttons.less","less/mixins/opacity.less","less/component-animations.less","less/dropdowns.less","less/mixins/nav-divider.less","less/mixins/reset-filter.less","less/button-groups.less","less/mixins/border-radius.less","less/input-groups.less","less/navs.less","less/navbar.less","less/mixins/nav-vertical-align.less","less/utilities.less","less/breadcrumbs.less","less/pagination.less","less/mixins/pagination.less","less/pager.less","less/labe
 ls.less","less/mixins/labels.less","less/badges.less","less/jumbotron.less","less/thumbnails.less","less/alerts.less","less/mixins/alerts.less","less/progress-bars.less","less/mixins/gradients.less","less/mixins/progress-bar.less","less/media.less","less/list-group.less","less/mixins/list-group.less","less/panels.less","less/mixins/panels.less","less/responsive-embed.less","less/wells.less","less/close.less","less/modals.less","less/tooltip.less","less/popovers.less","less/carousel.less","less/mixins/clearfix.less","less/mixins/center-block.less","less/mixins/hide-text.less","less/responsive-utilities.less","less/mixins/responsive-visibility.less"],"names":[],"mappings":"AAAA,6DAA4D;ACQ5D;EACE,yBAAA;EACA,4BAAA;EACA,gCAAA;EDND;ACaD;EACE,WAAA;EDXD;ACwBD;;;;;;;;;;;;;EAaE,gBAAA;EDtBD;AC8BD;;;;EAIE,uBAAA;EACA,0BAAA;ED5BD;ACoCD;EACE,eAAA;EACA,WAAA;EDlCD;AC0CD;;EAEE,eAAA;EDxCD;ACkDD;EACE,+BAAA;EDhDD;ACuDD;;EAEE,YAAA;EDrDD;AC+DD;EACE,2BAAA;ED7DD;ACoED;;EAEE,mBAAA;EDlED;ACyED;EACE,oBAAA;EDvE
 D;AC+ED;EACE,gBAAA;EACA,kBAAA;ED7ED;ACoFD;EACE,kBAAA;EACA,aAAA;EDlFD;ACyFD;EACE,gBAAA;EDvFD;AC8FD;;EAEE,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,0BAAA;ED5FD;AC+FD;EACE,aAAA;ED7FD;ACgGD;EACE,iBAAA;ED9FD;ACwGD;EACE,WAAA;EDtGD;AC6GD;EACE,kBAAA;ED3GD;ACqHD;EACE,kBAAA;EDnHD;AC0HD;EACE,8BAAA;EACA,iCAAA;UAAA,yBAAA;EACA,WAAA;EDxHD;AC+HD;EACE,gBAAA;ED7HD;ACoID;;;;EAIE,mCAAA;EACA,gBAAA;EDlID;ACoJD;;;;;EAKE,gBAAA;EACA,eAAA;EACA,WAAA;EDlJD;ACyJD;EACE,mBAAA;EDvJD;ACiKD;;EAEE,sBAAA;ED/JD;AC0KD;;;;EAIE,4BAAA;EACA,iBAAA;EDxKD;AC+KD;;EAEE,iBAAA;ED7KD;ACoLD;;EAEE,WAAA;EACA,YAAA;EDlLD;AC0LD;EACE,qBAAA;EDxLD;ACmMD;;EAEE,gCAAA;KAAA,6BAAA;UAAA,wBAAA;EACA,YAAA;EDjMD;AC0MD;;EAEE,cAAA;EDxMD;ACiND;EACE,+BAAA;EACA,8BAAA;EACA,iCAAA;EACA,yBAAA;ED/MD;ACwND;;EAEE,0BAAA;EDtND;AC6ND;EACE,2BAAA;EACA,eAAA;EACA,gCAAA;ED3ND;ACmOD;EACE,WAAA;EACA,YAAA;EDjOD;ACwOD;EACE,gBAAA;EDtOD;AC8OD;EACE,mBAAA;ED5OD;ACsPD;EACE,2BAAA;EACA,mBAAA;EDpPD;ACuPD;;EAEE,YAAA;EDrPD;AACD,sFAAqF;AE1ErF;EAnGI;;;IAGI,oCAAA;IACA,wBAAA;IACA,qCAAA;YAAA,6BAAA;
 IACA,8BAAA;IFgLL;EE7KC;;IAEI,4BAAA;IF+KL;EE5KC;IACI,8BAAA;IF8KL;EE3KC;IACI,+BAAA;IF6KL;EExKC;;IAEI,aAAA;IF0KL;EEvKC;;IAEI,wBAAA;IACA,0BAAA;IFyKL;EEtKC;IACI,6BAAA;IFwKL;EErKC;;IAEI,0BAAA;IFuKL;EEpKC;IACI,4BAAA;IFsKL;EEnKC;;;IAGI,YAAA;IACA,WAAA;IFqKL;EElKC;;IAEI,yBAAA;IFoKL;EE7JC;IACI,6BAAA;IF+JL;EE3JC;IACI,eAAA;IF6JL;EE3JC;;IAGQ,mCAAA;IF4JT;EEzJC;IACI,wBAAA;IF2JL;EExJC;IACI,sCAAA;IF0JL;EE3JC;;IAKQ,mCAAA;IF0JT;EEvJC;;IAGQ,mCAAA;IFwJT;EACF;AGpPD;EACE,qCAAA;EACA,uDAAA;EACA,6TAAA;EHsPD;AG/OD;EACE,oBAAA;EACA,UAAA;EACA,uBAAA;EACA,qCAAA;EACA,oBAAA;EACA,qBAAA;EACA,gBAAA;EACA,qCAAA;EACA,oCAAA;EHiPD;AG7OmC;EAAW,gBAAA;EHgP9C;AG/OmC;EAAW,gBAAA;EHkP9C;AGhPmC;;EAAW,kBAAA;EHoP9C;AGnPmC;EAAW,kBAAA;EHsP9C;AGrPmC;EAAW,kBAAA;EHwP9C;AGvPmC;EAAW,kBAAA;EH0P9C;AGzPmC;EAAW,kBAAA;EH4P9C;AG3PmC;EAAW,kBAAA;EH8P9C;AG7PmC;EAAW,kBAAA;EHgQ9C;AG/PmC;EAAW,kBAAA;EHkQ9C;AGjQmC;EAAW,kBAAA;EHoQ9C;AGnQmC;EAAW,kBAAA;EHsQ9C;AGrQmC;EAAW,kBAAA;EHwQ9C;AGvQmC;EAAW,kBAAA;EH0Q9C;AGzQmC;EAAW,kBAAA;EH4Q9C;AG3QmC;EAAW,kBAAA;EH8Q9C;
 AG7QmC;EAAW,kBAAA;EHgR9C;AG/QmC;EAAW,kBAAA;EHkR9C;AGjRmC;EAAW,kBAAA;EHoR9C;AGnRmC;EAAW,kBAAA;EHsR9C;AGrRmC;EAAW,kBAAA;EHwR9C;AGvRmC;EAAW,kBAAA;EH0R9C;AGzRmC;EAAW,kBAAA;EH4R9C;AG3RmC;EAAW,kBAAA;EH8R9C;AG7RmC;EAAW,kBAAA;EHgS9C;AG/RmC;EAAW,kBAAA;EHkS9C;AGjSmC;EAAW,kBAAA;EHoS9C;AGnSmC;EAAW,kBAAA;EHsS9C;AGrSmC;EAAW,kBAAA;EHwS9C;AGvSmC;EAAW,kBAAA;EH0S9C;AGzSmC;EAAW,kBAAA;EH4S9C;AG3SmC;EAAW,kBAAA;EH8S9C;AG7SmC;EAAW,kBAAA;EHgT9C;AG/SmC;EAAW,kBAAA;EHkT9C;AGjTmC;EAAW,kBAAA;EHoT9C;AGnTmC;EAAW,kBAAA;EHsT9C;AGrTmC;EAAW,kBAAA;EHwT9C;AGvTmC;EAAW,kBAAA;EH0T9C;AGzTmC;EAAW,kBAAA;EH4T9C;AG3TmC;EAAW,kBAAA;EH8T9C;AG7TmC;EAAW,kBAAA;EHgU9C;AG/TmC;EAAW,kBAAA;EHkU9C;AGjUmC;EAAW,kBAAA;EHoU9C;AGnUmC;EAAW,kBAAA;EHsU9C;AGrUmC;EAAW,kBAAA;EHwU9C;AGvUmC;EAAW,kBAAA;EH0U9C;AGzUmC;EAAW,kBAAA;EH4U9C;AG3UmC;EAAW,kBAAA;EH8U9C;AG7UmC;EAAW,kBAAA;EHgV9C;AG/UmC;EAAW,kBAAA;EHkV9C;AGjVmC;EAAW,kBAAA;EHoV9C;AGnVmC;EAAW,kBAAA;EHsV9C;AGrVmC;EAAW,kBAAA;EHwV9C;AGvVmC;EAAW,kBAAA;EH0V9C;AGzVmC;EAAW,kBAAA;EH4V9C;AG3VmC;EAAW,kBAAA;EH8V
 9C;AG7VmC;EAAW,kBAAA;EHgW9C;AG/VmC;EAAW,kBAAA;EHkW9C;AGjWmC;EAAW,kBAAA;EHoW9C;AGnWmC;EAAW,kBAAA;EHsW9C;AGrWmC;EAAW,kBAAA;EHwW9C;AGvWmC;EAAW,kBAAA;EH0W9C;AGzWmC;EAAW,kBAAA;EH4W9C;AG3WmC;EAAW,kBAAA;EH8W9C;AG7WmC;EAAW,kBAAA;EHgX9C;AG/WmC;EAAW,kBAAA;EHkX9C;AGjXmC;EAAW,kBAAA;EHoX9C;AGnXmC;EAAW,kBAAA;EHsX9C;AGrXmC;EAAW,kBAAA;EHwX9C;AGvXmC;EAAW,kBAAA;EH0X9C;AGzXmC;EAAW,kBAAA;EH4X9C;AG3XmC;EAAW,kBAAA;EH8X9C;AG7XmC;EAAW,kBAAA;EHgY9C;AG/XmC;EAAW,kBAAA;EHkY9C;AGjYmC;EAAW,kBAAA;EHoY9C;AGnYmC;EAAW,kBAAA;EHsY9C;AGrYmC;EAAW,kBAAA;EHwY9C;AGvYmC;EAAW,kBAAA;EH0Y9C;AGzYmC;EAAW,kBAAA;EH4Y9C;AG3YmC;EAAW,kBAAA;EH8Y9C;AG7YmC;EAAW,kBAAA;EHgZ9C;AG/YmC;EAAW,kBAAA;EHkZ9C;AGjZmC;EAAW,kBAAA;EHoZ9C;AGnZmC;EAAW,kBAAA;EHsZ9C;AGrZmC;EAAW,kBAAA;EHwZ9C;AGvZmC;EAAW,kBAAA;EH0Z9C;AGzZmC;EAAW,kBAAA;EH4Z9C;AG3ZmC;EAAW,kBAAA;EH8Z9C;AG7ZmC;EAAW,kBAAA;EHga9C;AG/ZmC;EAAW,kBAAA;EHka9C;AGjamC;EAAW,kBAAA;EHoa9C;AGnamC;EAAW,kBAAA;EHsa9C;AGramC;EAAW,kBAAA;EHwa9C;AGvamC;EAAW,kBAAA;EH0a9C;AGzamC;EAAW,kBAAA;EH4a9C;AG3amC;EAAW,kBAAA;E
 H8a9C;AG7amC;EAAW,kBAAA;EHgb9C;AG/amC;EAAW,kBAAA;EHkb9C;AGjbmC;EAAW,kBAAA;EHob9C;AGnbmC;EAAW,kBAAA;EHsb9C;AGrbmC;EAAW,kBAAA;EHwb9C;AGvbmC;EAAW,kBAAA;EH0b9C;AGzbmC;EAAW,kBAAA;EH4b9C;AG3bmC;EAAW,kBAAA;EH8b9C;AG7bmC;EAAW,kBAAA;EHgc9C;AG/bmC;EAAW,kBAAA;EHkc9C;AGjcmC;EAAW,kBAAA;EHoc9C;AGncmC;EAAW,kBAAA;EHsc9C;AGrcmC;EAAW,kBAAA;EHwc9C;AGvcmC;EAAW,kBAAA;EH0c9C;AGzcmC;EAAW,kBAAA;EH4c9C;AG3cmC;EAAW,kBAAA;EH8c9C;AG7cmC;EAAW,kBAAA;EHgd9C;AG/cmC;EAAW,kBAAA;EHkd9C;AGjdmC;EAAW,kBAAA;EHod9C;AGndmC;EAAW,kBAAA;EHsd9C;AGrdmC;EAAW,kBAAA;EHwd9C;AGvdmC;EAAW,kBAAA;EH0d9C;AGzdmC;EAAW,kBAAA;EH4d9C;AG3dmC;EAAW,kBAAA;EH8d9C;AG7dmC;EAAW,kBAAA;EHge9C;AG/dmC;EAAW,kBAAA;EHke9C;AGjemC;EAAW,kBAAA;EHoe9C;AGnemC;EAAW,kBAAA;EHse9C;AGremC;EAAW,kBAAA;EHwe9C;AGvemC;EAAW,kBAAA;EH0e9C;AGzemC;EAAW,kBAAA;EH4e9C;AG3emC;EAAW,kBAAA;EH8e9C;AG7emC;EAAW,kBAAA;EHgf9C;AG/emC;EAAW,kBAAA;EHkf9C;AGjfmC;EAAW,kBAAA;EHof9C;AGnfmC;EAAW,kBAAA;EHsf9C;AGrfmC;EAAW,kBAAA;EHwf9C;AGvfmC;EAAW,kBAAA;EH0f9C;AGzfmC;EAAW,kBAAA;EH4f9C;AG3fmC;EAAW,kBAA
 A;EH8f9C;AG7fmC;EAAW,kBAAA;EHggB9C;AG/fmC;EAAW,kBAAA;EHkgB9C;AGjgBmC;EAAW,kBAAA;EHogB9C;AGngBmC;EAAW,kBAAA;EHsgB9C;AGrgBmC;EAAW,kBAAA;EHwgB9C;AGvgBmC;EAAW,kBAAA;EH0gB9C;AGzgBmC;EAAW,kBAAA;EH4gB9C;AG3gBmC;EAAW,kBAAA;EH8gB9C;AG7gBmC;EAAW,kBAAA;EHghB9C;AG/gBmC;EAAW,kBAAA;EHkhB9C;AGjhBmC;EAAW,kBAAA;EHohB9C;AGnhBmC;EAAW,kBAAA;EHshB9C;AGrhBmC;EAAW,kBAAA;EHwhB9C;AGvhBmC;EAAW,kBAAA;EH0hB9C;AGzhBmC;EAAW,kBAAA;EH4hB9C;AG3hBmC;EAAW,kBAAA;EH8hB9C;AG7hBmC;EAAW,kBAAA;EHgiB9C;AG/hBmC;EAAW,kBAAA;EHkiB9C;AGjiBmC;EAAW,kBAAA;EHoiB9C;AGniBmC;EAAW,kBAAA;EHsiB9C;AGriBmC;EAAW,kBAAA;EHwiB9C;AGviBmC;EAAW,kBAAA;EH0iB9C;AGziBmC;EAAW,kBAAA;EH4iB9C;AG3iBmC;EAAW,kBAAA;EH8iB9C;AG7iBmC;EAAW,kBAAA;EHgjB9C;AG/iBmC;EAAW,kBAAA;EHkjB9C;AGjjBmC;EAAW,kBAAA;EHojB9C;AGnjBmC;EAAW,kBAAA;EHsjB9C;AGrjBmC;EAAW,kBAAA;EHwjB9C;AGvjBmC;EAAW,kBAAA;EH0jB9C;AGzjBmC;EAAW,kBAAA;EH4jB9C;AG3jBmC;EAAW,kBAAA;EH8jB9C;AG7jBmC;EAAW,kBAAA;EHgkB9C;AG/jBmC;EAAW,kBAAA;EHkkB9C;AGjkBmC;EAAW,kBAAA;EHokB9C;AGnkBmC;EAAW,kBAAA;EHskB9C;AGrkBmC;EAAW,kBAAA
 ;EHwkB9C;AGvkBmC;EAAW,kBAAA;EH0kB9C;AGzkBmC;EAAW,kBAAA;EH4kB9C;AG3kBmC;EAAW,kBAAA;EH8kB9C;AG7kBmC;EAAW,kBAAA;EHglB9C;AG/kBmC;EAAW,kBAAA;EHklB9C;AGjlBmC;EAAW,kBAAA;EHolB9C;AGnlBmC;EAAW,kBAAA;EHslB9C;AGrlBmC;EAAW,kBAAA;EHwlB9C;AGvlBmC;EAAW,kBAAA;EH0lB9C;AGzlBmC;EAAW,kBAAA;EH4lB9C;AG3lBmC;EAAW,kBAAA;EH8lB9C;AG7lBmC;EAAW,kBAAA;EHgmB9C;AG/lBmC;EAAW,kBAAA;EHkmB9C;AGjmBmC;EAAW,kBAAA;EHomB9C;AGnmBmC;EAAW,kBAAA;EHsmB9C;AGrmBmC;EAAW,kBAAA;EHwmB9C;AGvmBmC;EAAW,kBAAA;EH0mB9C;AGzmBmC;EAAW,kBAAA;EH4mB9C;AG3mBmC;EAAW,kBAAA;EH8mB9C;AG7mBmC;EAAW,kBAAA;EHgnB9C;AG/mBmC;EAAW,kBAAA;EHknB9C;AGjnBmC;EAAW,kBAAA;EHonB9C;AGnnBmC;EAAW,kBAAA;EHsnB9C;AGrnBmC;EAAW,kBAAA;EHwnB9C;AGvnBmC;EAAW,kBAAA;EH0nB9C;AGznBmC;EAAW,kBAAA;EH4nB9C;AG3nBmC;EAAW,kBAAA;EH8nB9C;AI71BD;ECgEE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELgyBT;AI/1BD;;EC6DE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELsyBT;AI71BD;EACE,iBAAA;EACA,+CAAA;EJ+1BD;AI51BD;EACE,6DAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,2BAAA;EJ81BD;AI11BD;;;;EAIE,sBAAA;EACA,oBAAA;EACA,sBAAA;EJ41BD;AIt1BD;
 EACE,gBAAA;EACA,uBAAA;EJw1BD;AIt1BC;;EAEE,gBAAA;EACA,4BAAA;EJw1BH;AIr1BC;EErDA,sBAAA;EAEA,4CAAA;EACA,sBAAA;EN44BD;AI/0BD;EACE,WAAA;EJi1BD;AI30BD;EACE,wBAAA;EJ60BD;AIz0BD;;;;;EGvEE,gBAAA;EACA,iBAAA;EACA,cAAA;EPu5BD;AI70BD;EACE,oBAAA;EJ+0BD;AIz0BD;EACE,cAAA;EACA,yBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EC6FA,0CAAA;EACK,qCAAA;EACG,kCAAA;EEvLR,uBAAA;EACA,iBAAA;EACA,cAAA;EPu6BD;AIz0BD;EACE,oBAAA;EJ20BD;AIr0BD;EACE,kBAAA;EACA,qBAAA;EACA,WAAA;EACA,+BAAA;EJu0BD;AI/zBD;EACE,oBAAA;EACA,YAAA;EACA,aAAA;EACA,cAAA;EACA,YAAA;EACA,kBAAA;EACA,wBAAA;EACA,WAAA;EJi0BD;AIzzBC;;EAEE,kBAAA;EACA,aAAA;EACA,cAAA;EACA,WAAA;EACA,mBAAA;EACA,YAAA;EJ2zBH;AQt8BD;;;;;;;;;;;;EAEE,sBAAA;EACA,kBAAA;EACA,kBAAA;EACA,gBAAA;ERk9BD;AQv9BD;;;;;;;;;;;;;;;;;;;;;;;;EASI,qBAAA;EACA,gBAAA;EACA,gBAAA;ERw+BH;AQp+BD;;;;;;EAGE,kBAAA;EACA,qBAAA;ERy+BD;AQ7+BD;;;;;;;;;;;;EAQI,gBAAA;ERm/BH;AQh/BD;;;;;;EAGE,kBAAA;EACA,qBAAA;ERq/BD;AQz/BD;;;;;;;;;;;;EAQI,gBAAA;ER+/BH;AQ3/BD;;EAAU,iBAAA;ER+/BT;AQ9/BD;;EAAU,iBAAA;ERkgCT;AQjgCD;;EAAU,iBAAA;ERq
 gCT;AQpgCD;;EAAU,iBAAA;ERwgCT;AQvgCD;;EAAU,iBAAA;ER2gCT;AQ1gCD;;EAAU,iBAAA;ER8gCT;AQxgCD;EACE,kBAAA;ER0gCD;AQvgCD;EACE,qBAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;ERygCD;AQpgCD;EAAA;IAFI,iBAAA;IR0gCD;EACF;AQlgCD;;EAEE,gBAAA;ERogCD;AQjgCD;;EAEE,2BAAA;EACA,eAAA;ERmgCD;AQ//BD;EAAuB,kBAAA;ERkgCtB;AQjgCD;EAAuB,mBAAA;ERogCtB;AQngCD;EAAuB,oBAAA;ERsgCtB;AQrgCD;EAAuB,qBAAA;ERwgCtB;AQvgCD;EAAuB,qBAAA;ER0gCtB;AQvgCD;EAAuB,2BAAA;ER0gCtB;AQzgCD;EAAuB,2BAAA;ER4gCtB;AQ3gCD;EAAuB,4BAAA;ER8gCtB;AQ3gCD;EACE,gBAAA;ER6gCD;AQ3gCD;ECrGE,gBAAA;ETmnCD;ASlnCC;EACE,gBAAA;ETonCH;AQ9gCD;ECxGE,gBAAA;ETynCD;ASxnCC;EACE,gBAAA;ET0nCH;AQjhCD;EC3GE,gBAAA;ET+nCD;AS9nCC;EACE,gBAAA;ETgoCH;AQphCD;EC9GE,gBAAA;ETqoCD;ASpoCC;EACE,gBAAA;ETsoCH;AQvhCD;ECjHE,gBAAA;ET2oCD;AS1oCC;EACE,gBAAA;ET4oCH;AQthCD;EAGE,aAAA;EE3HA,2BAAA;EVkpCD;AUjpCC;EACE,2BAAA;EVmpCH;AQvhCD;EE9HE,2BAAA;EVwpCD;AUvpCC;EACE,2BAAA;EVypCH;AQ1hCD;EEjIE,2BAAA;EV8pCD;AU7pCC;EACE,2BAAA;EV+pCH;AQ7hCD;EEpIE,2BAAA;EVoqCD;AUnqCC;EACE,2BAAA;EVqqCH;AQhiCD;EEvIE,2BAAA;EV0qCD
 ;AUzqCC;EACE,2BAAA;EV2qCH;AQ9hCD;EACE,qBAAA;EACA,qBAAA;EACA,kCAAA;ERgiCD;AQxhCD;;EAEE,eAAA;EACA,qBAAA;ER0hCD;AQ7hCD;;;;EAMI,kBAAA;ER6hCH;AQthCD;EACE,iBAAA;EACA,kBAAA;ERwhCD;AQphCD;EALE,iBAAA;EACA,kBAAA;EAMA,mBAAA;ERuhCD;AQzhCD;EAKI,uBAAA;EACA,mBAAA;EACA,oBAAA;ERuhCH;AQlhCD;EACE,eAAA;EACA,qBAAA;ERohCD;AQlhCD;;EAEE,yBAAA;ERohCD;AQlhCD;EACE,mBAAA;ERohCD;AQlhCD;EACE,gBAAA;ERohCD;AQ3/BD;EAAA;IAVM,aAAA;IACA,cAAA;IACA,aAAA;IACA,mBAAA;IGtNJ,kBAAA;IACA,yBAAA;IACA,qBAAA;IXguCC;EQrgCH;IAHM,oBAAA;IR2gCH;EACF;AQlgCD;;EAGE,cAAA;EACA,mCAAA;ERmgCD;AQjgCD;EACE,gBAAA;EACA,2BAAA;ERmgCD;AQ//BD;EACE,oBAAA;EACA,kBAAA;EACA,mBAAA;EACA,gCAAA;ERigCD;AQ5/BG;;;EACE,kBAAA;ERggCL;AQ1gCD;;;EAmBI,gBAAA;EACA,gBAAA;EACA,yBAAA;EACA,gBAAA;ER4/BH;AQ1/BG;;;EACE,wBAAA;ER8/BL;AQt/BD;;EAEE,qBAAA;EACA,iBAAA;EACA,iCAAA;EACA,gBAAA;EACA,mBAAA;ERw/BD;AQl/BG;;;;;;EAAW,aAAA;ER0/Bd;AQz/BG;;;;;;EACE,wBAAA;ERggCL;AQ1/BD;EACE,qBAAA;EACA,oBAAA;EACA,yBAAA;ER4/BD;AYlyCD;;;;EAIE,gEAAA;EZoyCD;AYhyCD;EACE,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,2
 BAAA;EACA,oBAAA;EZkyCD;AY9xCD;EACE,kBAAA;EACA,gBAAA;EACA,gBAAA;EACA,2BAAA;EACA,oBAAA;EACA,wDAAA;UAAA,gDAAA;EZgyCD;AYtyCD;EASI,YAAA;EACA,iBAAA;EACA,mBAAA;EACA,0BAAA;UAAA,kBAAA;EZgyCH;AY3xCD;EACE,gBAAA;EACA,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,yBAAA;EACA,uBAAA;EACA,uBAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EZ6xCD;AYxyCD;EAeI,YAAA;EACA,oBAAA;EACA,gBAAA;EACA,uBAAA;EACA,+BAAA;EACA,kBAAA;EZ4xCH;AYvxCD;EACE,mBAAA;EACA,oBAAA;EZyxCD;Aan1CD;ECHE,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;Edy1CD;Aan1CC;EAAA;IAFE,cAAA;Iby1CD;EACF;Aar1CC;EAAA;IAFE,cAAA;Ib21CD;EACF;Aav1CD;EAAA;IAFI,eAAA;Ib61CD;EACF;Aap1CD;ECvBE,oBAAA;EACA,mBAAA;EACA,oBAAA;EACA,qBAAA;Ed82CD;Aaj1CD;ECvBE,oBAAA;EACA,qBAAA;Ed22CD;Ae32CG;EACE,oBAAA;EAEA,iBAAA;EAEA,oBAAA;EACA,qBAAA;Ef22CL;Ae31CG;EACE,aAAA;Ef61CL;Aet1CC;EACE,aAAA;Efw1CH;Aez1CC;EACE,qBAAA;Ef21CH;Ae51CC;EACE,qBAAA;Ef81CH;Ae/1CC;EACE,YAAA;Efi2CH;Ael2CC;EACE,qBAAA;Efo2CH;Aer2CC;EACE,qBAAA;Efu2CH;Aex2CC;EACE,YAAA;Ef02CH;Ae32CC;EACE,qBAAA;Ef62CH;Ae92CC;EACE,qBAAA;Efg3CH;Aej3C
 C;EACE,YAAA;Efm3CH;Aep3CC;EACE,qBAAA;Efs3CH;Aev3CC;EACE,oBAAA;Efy3CH;Ae32CC;EACE,aAAA;Ef62CH;Ae92CC;EACE,qBAAA;Efg3CH;Aej3CC;EACE,qBAAA;Efm3CH;Aep3CC;EACE,YAAA;Efs3CH;Aev3CC;EACE,qBAAA;Efy3CH;Ae13CC;EACE,qBAAA;Ef43CH;Ae73CC;EACE,YAAA;Ef+3CH;Aeh4CC;EACE,qBAAA;Efk4CH;Aen4CC;EACE,qBAAA;Efq4CH;Aet4CC;EACE,YAAA;Efw4CH;Aez4CC;EACE,qBAAA;Ef24CH;Ae54CC;EACE,oBAAA;Ef84CH;Ae14CC;EACE,aAAA;Ef44CH;Ae55CC;EACE,YAAA;Ef85CH;Ae/5CC;EACE,oBAAA;Efi6CH;Ael6CC;EACE,oBAAA;Efo6CH;Aer6CC;EACE,WAAA;Efu6CH;Aex6CC;EACE,oBAAA;Ef06CH;Ae36CC;EACE,oBAAA;Ef66CH;Ae96CC;EACE,WAAA;Efg7CH;Aej7CC;EACE,oBAAA;Efm7CH;Aep7CC;EACE,oBAAA;Efs7CH;Aev7CC;EACE,WAAA;Efy7CH;Ae17CC;EACE,oBAAA;Ef47CH;Ae77CC;EACE,mBAAA;Ef+7CH;Ae37CC;EACE,YAAA;Ef67CH;Ae/6CC;EACE,mBAAA;Efi7CH;Ael7CC;EACE,2BAAA;Efo7CH;Aer7CC;EACE,2BAAA;Efu7CH;Aex7CC;EACE,kBAAA;Ef07CH;Ae37CC;EACE,2BAAA;Ef67CH;Ae97CC;EACE,2BAAA;Efg8CH;Aej8CC;EACE,kBAAA;Efm8CH;Aep8CC;EACE,2BAAA;Efs8CH;Aev8CC;EACE,2BAAA;Efy8CH;Ae18CC;EACE,kBAAA;Ef48CH;Ae78CC;EACE,2BAAA;Ef+8CH;Aeh9CC;EACE,0
 BAAA;Efk9CH;Aen9CC;EACE,iBAAA;Efq9CH;Aaz9CD;EE9BI;IACE,aAAA;If0/CH;Een/CD;IACE,aAAA;Ifq/CD;Eet/CD;IACE,qBAAA;Ifw/CD;Eez/CD;IACE,qBAAA;If2/CD;Ee5/CD;IACE,YAAA;If8/CD;Ee//CD;IACE,qBAAA;IfigDD;EelgDD;IACE,qBAAA;IfogDD;EergDD;IACE,YAAA;IfugDD;EexgDD;IACE,qBAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,YAAA;IfghDD;EejhDD;IACE,qBAAA;IfmhDD;EephDD;IACE,oBAAA;IfshDD;EexgDD;IACE,aAAA;If0gDD;Ee3gDD;IACE,qBAAA;If6gDD;Ee9gDD;IACE,qBAAA;IfghDD;EejhDD;IACE,YAAA;IfmhDD;EephDD;IACE,qBAAA;IfshDD;EevhDD;IACE,qBAAA;IfyhDD;Ee1hDD;IACE,YAAA;If4hDD;Ee7hDD;IACE,qBAAA;If+hDD;EehiDD;IACE,qBAAA;IfkiDD;EeniDD;IACE,YAAA;IfqiDD;EetiDD;IACE,qBAAA;IfwiDD;EeziDD;IACE,oBAAA;If2iDD;EeviDD;IACE,aAAA;IfyiDD;EezjDD;IACE,YAAA;If2jDD;Ee5jDD;IACE,oBAAA;If8jDD;Ee/jDD;IACE,oBAAA;IfikDD;EelkDD;IACE,WAAA;IfokDD;EerkDD;IACE,oBAAA;IfukDD;EexkDD;IACE,oBAAA;If0kDD;Ee3kDD;IACE,WAAA;If6kDD;Ee9kDD;IACE,oBAAA;IfglDD;EejlDD;IACE,oBAAA;IfmlDD;EeplDD;IACE,WAAA;IfslDD;EevlDD;IACE,oBAAA;IfylDD;Ee1lDD;IACE,mBAAA;If4lDD;EexlDD;IACE,YAAA;I
 f0lDD;Ee5kDD;IACE,mBAAA;If8kDD;Ee/kDD;IACE,2BAAA;IfilDD;EellDD;IACE,2BAAA;IfolDD;EerlDD;IACE,kBAAA;IfulDD;EexlDD;IACE,2BAAA;If0lDD;Ee3lDD;IACE,2BAAA;If6lDD;Ee9lDD;IACE,kBAAA;IfgmDD;EejmDD;IACE,2BAAA;IfmmDD;EepmDD;IACE,2BAAA;IfsmDD;EevmDD;IACE,kBAAA;IfymDD;Ee1mDD;IACE,2BAAA;If4mDD;Ee7mDD;IACE,0BAAA;If+mDD;EehnDD;IACE,iBAAA;IfknDD;EACF;Aa9mDD;EEvCI;IACE,aAAA;IfwpDH;EejpDD;IACE,aAAA;IfmpDD;EeppDD;IACE,qBAAA;IfspDD;EevpDD;IACE,qBAAA;IfypDD;Ee1pDD;IACE,YAAA;If4pDD;Ee7pDD;IACE,qBAAA;If+pDD;EehqDD;IACE,qBAAA;IfkqDD;EenqDD;IACE,YAAA;IfqqDD;EetqDD;IACE,qBAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,YAAA;If8qDD;Ee/qDD;IACE,qBAAA;IfirDD;EelrDD;IACE,oBAAA;IforDD;EetqDD;IACE,aAAA;IfwqDD;EezqDD;IACE,qBAAA;If2qDD;Ee5qDD;IACE,qBAAA;If8qDD;Ee/qDD;IACE,YAAA;IfirDD;EelrDD;IACE,qBAAA;IforDD;EerrDD;IACE,qBAAA;IfurDD;EexrDD;IACE,YAAA;If0rDD;Ee3rDD;IACE,qBAAA;If6rDD;Ee9rDD;IACE,qBAAA;IfgsDD;EejsDD;IACE,YAAA;IfmsDD;EepsDD;IACE,qBAAA;IfssDD;EevsDD;IACE,oBAAA;IfysDD;EersDD;IACE,aAAA;IfusDD;EevtDD;IACE,YAA
 A;IfytDD;Ee1tDD;IACE,oBAAA;If4tDD;Ee7tDD;IACE,oBAAA;If+tDD;EehuDD;IACE,WAAA;IfkuDD;EenuDD;IACE,oBAAA;IfquDD;EetuDD;IACE,oBAAA;IfwuDD;EezuDD;IACE,WAAA;If2uDD;Ee5uDD;IACE,oBAAA;If8uDD;Ee/uDD;IACE,oBAAA;IfivDD;EelvDD;IACE,WAAA;IfovDD;EervDD;IACE,oBAAA;IfuvDD;EexvDD;IACE,mBAAA;If0vDD;EetvDD;IACE,YAAA;IfwvDD;Ee1uDD;IACE,mBAAA;If4uDD;Ee7uDD;IACE,2BAAA;If+uDD;EehvDD;IACE,2BAAA;IfkvDD;EenvDD;IACE,kBAAA;IfqvDD;EetvDD;IACE,2BAAA;IfwvDD;EezvDD;IACE,2BAAA;If2vDD;Ee5vDD;IACE,kBAAA;If8vDD;Ee/vDD;IACE,2BAAA;IfiwDD;EelwDD;IACE,2BAAA;IfowDD;EerwDD;IACE,kBAAA;IfuwDD;EexwDD;IACE,2BAAA;If0wDD;Ee3wDD;IACE,0BAAA;If6wDD;Ee9wDD;IACE,iBAAA;IfgxDD;EACF;AarwDD;EE9CI;IACE,aAAA;IfszDH;Ee/yDD;IACE,aAAA;IfizDD;EelzDD;IACE,qBAAA;IfozDD;EerzDD;IACE,qBAAA;IfuzDD;EexzDD;IACE,YAAA;If0zDD;Ee3zDD;IACE,qBAAA;If6zDD;Ee9zDD;IACE,qBAAA;Ifg0DD;Eej0DD;IACE,YAAA;Ifm0DD;Eep0DD;IACE,qBAAA;Ifs0DD;Eev0DD;IACE,qBAAA;Ify0DD;Ee10DD;IACE,YAAA;If40DD;Ee70DD;IACE,qBAAA;If+0DD;Eeh1DD;IACE,oBAAA;Ifk1DD;Eep0DD;IACE,aAAA;Ifs0DD;Eev0DD;IACE,
 qBAAA;Ify0DD;Ee10DD;IACE,qBAAA;If40DD;Ee70DD;IACE,YAAA;If+0DD;Eeh1DD;IACE,qBAAA;Ifk1DD;Een1DD;IACE,qBAAA;Ifq1DD;Eet1DD;IACE,YAAA;Ifw1DD;Eez1DD;IACE,qBAAA;If21DD;Ee51DD;IACE,qBAAA;If81DD;Ee/1DD;IACE,YAAA;Ifi2DD;Eel2DD;IACE,qBAAA;Ifo2DD;Eer2DD;IACE,oBAAA;Ifu2DD;Een2DD;IACE,aAAA;Ifq2DD;Eer3DD;IACE,YAAA;Ifu3DD;Eex3DD;IACE,oBAAA;If03DD;Ee33DD;IACE,oBAAA;If63DD;Ee93DD;IACE,WAAA;Ifg4DD;Eej4DD;IACE,oBAAA;Ifm4DD;Eep4DD;IACE,oBAAA;Ifs4DD;Eev4DD;IACE,WAAA;Ify4DD;Ee14DD;IACE,oBAAA;If44DD;Ee74DD;IACE,oBAAA;If+4DD;Eeh5DD;IACE,WAAA;Ifk5DD;Een5DD;IACE,oBAAA;Ifq5DD;Eet5DD;IACE,mBAAA;Ifw5DD;Eep5DD;IACE,YAAA;Ifs5DD;Eex4DD;IACE,mBAAA;If04DD;Ee34DD;IACE,2BAAA;If64DD;Ee94DD;IACE,2BAAA;Ifg5DD;Eej5DD;IACE,kBAAA;Ifm5DD;Eep5DD;IACE,2BAAA;Ifs5DD;Eev5DD;IACE,2BAAA;Ify5DD;Ee15DD;IACE,kBAAA;If45DD;Ee75DD;IACE,2BAAA;If+5DD;Eeh6DD;IACE,2BAAA;Ifk6DD;Een6DD;IACE,kBAAA;Ifq6DD;Eet6DD;IACE,2BAAA;Ifw6DD;Eez6DD;IACE,0BAAA;If26DD;Ee56DD;IACE,iBAAA;If86DD;EACF;AgBl/DD;EACE,+BAAA;EhBo/DD;AgBl/DD;EACE,kBAAA;EACA,qBAAA;EACA,g
 BAAA;EACA,kBAAA;EhBo/DD;AgBl/DD;EACE,kBAAA;EhBo/DD;AgB9+DD;EACE,aAAA;EACA,iBAAA;EACA,qBAAA;EhBg/DD;AgBn/DD;;;;;;EAWQ,cAAA;EACA,yBAAA;EACA,qBAAA;EACA,+BAAA;EhBg/DP;AgB9/DD;EAoBI,wBAAA;EACA,kCAAA;EhB6+DH;AgBlgED;;;;;;EA8BQ,eAAA;EhB4+DP;AgB1gED;EAoCI,+BAAA;EhBy+DH;AgB7gED;EAyCI,2BAAA;EhBu+DH;AgBh+DD;;;;;;EAOQ,cAAA;EhBi+DP;AgBt9DD;EACE,2BAAA;EhBw9DD;AgBz9DD;;;;;;EAQQ,2BAAA;EhBy9DP;AgBj+DD;;EAeM,0BAAA;EhBs9DL;AgB58DD;EAEI,2BAAA;EhB68DH;AgBp8DD;EAEI,2BAAA;EhBq8DH;AgB57DD;EACE,kBAAA;EACA,aAAA;EACA,uBAAA;EhB87DD;AgBz7DG;;EACE,kBAAA;EACA,aAAA;EACA,qBAAA;EhB47DL;AiBxkEC;;;;;;;;;;;;EAOI,2BAAA;EjB+kEL;AiBzkEC;;;;;EAMI,2BAAA;EjB0kEL;AiB7lEC;;;;;;;;;;;;EAOI,2BAAA;EjBomEL;AiB9lEC;;;;;EAMI,2BAAA;EjB+lEL;AiBlnEC;;;;;;;;;;;;EAOI,2BAAA;EjBynEL;AiBnnEC;;;;;EAMI,2BAAA;EjBonEL;AiBvoEC;;;;;;;;;;;;EAOI,2BAAA;EjB8oEL;AiBxoEC;;;;;EAMI,2BAAA;EjByoEL;AiB5pEC;;;;;;;;;;;;EAOI,2BAAA;EjBmqEL;AiB7pEC;;;;;EAMI,2BAAA;EjB8pEL;AgB5gED;EACE,kBAAA;EACA,mBAAA;EhB8gED;AgBj9DD;EAAA;IA1DI,aAAA;IACA,qBAAA;IACA,oBAAA;IACA,8CAA
 A;IACA,2BAAA;IhB+gED;EgBz9DH;IAlDM,kBAAA;IhB8gEH;EgB59DH;;;;;;IAzCY,qBAAA;IhB6gET;EgBp+DH;IAjCM,WAAA;IhBwgEH;EgBv+DH;;;;;;IAxBY,gBAAA;IhBugET;EgB/+DH;;;;;;IApBY,iBAAA;IhB2gET;EgBv/DH;;;;IAPY,kBAAA;IhBogET;EACF;AkB9tED;EACE,YAAA;EACA,WAAA;EACA,WAAA;EAIA,cAAA;ElB6tED;AkB1tED;EACE,gBAAA;EACA,aAAA;EACA,YAAA;EACA,qBAAA;EACA,iBAAA;EACA,sBAAA;EACA,gBAAA;EACA,WAAA;EACA,kCAAA;ElB4tED;AkBztED;EACE,uBAAA;EACA,iBAAA;EACA,oBAAA;EACA,mBAAA;ElB2tED;AkBhtED;Eb4BE,gCAAA;EACG,6BAAA;EACK,wBAAA;ELurET;AkBhtED;;EAEE,iBAAA;EACA,oBAAA;EACA,qBAAA;ElBktED;AkB9sED;EACE,gBAAA;ElBgtED;AkB5sED;EACE,gBAAA;EACA,aAAA;ElB8sED;AkB1sED;;EAEE,cAAA;ElB4sED;AkBxsED;;;EZxEE,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENoxED;AkBxsED;EACE,gBAAA;EACA,kBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;ElB0sED;AkBhrED;EACE,gBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,2BAAA;EACA,wBAAA;EACA,2BAAA;EACA,oBAAA;EbzDA,0DAAA;EACQ,kDAAA;EAyHR,wFAAA;EACK,2EAAA;EACG,wEAAA;ELonET;AmB5vEC;EACE,uBAAA;EACA,YAAA;EdUF,wFAAA;EACQ,gFAAA;ELqvE
 T;AKptEC;EACE,gBAAA;EACA,YAAA;ELstEH;AKptEC;EAA0B,gBAAA;ELutE3B;AKttEC;EAAgC,gBAAA;ELytEjC;AkBxrEC;;;EAGE,qBAAA;EACA,2BAAA;EACA,YAAA;ElB0rEH;AkBtrEC;EACE,cAAA;ElBwrEH;AkB5qED;EACE,0BAAA;ElB8qED;AkB7oED;EArBE;;;;IAIE,mBAAA;IlBqqED;EkBnqED;;;;IAIE,mBAAA;IlBqqED;EkBnqED;;;;IAIE,mBAAA;IlBqqED;EACF;AkB5pED;EACE,qBAAA;ElB8pED;AkBtpED;;EAEE,oBAAA;EACA,gBAAA;EACA,kBAAA;EACA,qBAAA;ElBwpED;AkB7pED;;EAQI,kBAAA;EACA,oBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;ElBypEH;AkBtpED;;;;EAIE,oBAAA;EACA,oBAAA;EACA,oBAAA;ElBwpED;AkBrpED;;EAEE,kBAAA;ElBupED;AkBnpED;;EAEE,uBAAA;EACA,oBAAA;EACA,kBAAA;EACA,wBAAA;EACA,qBAAA;EACA,iBAAA;ElBqpED;AkBnpED;;EAEE,eAAA;EACA,mBAAA;ElBqpED;AkB5oEC;;;;;;EAGE,qBAAA;ElBipEH;AkB3oEC;;;;EAEE,qBAAA;ElB+oEH;AkBzoEC;;;;EAGI,qBAAA;ElB4oEL;AkBjoED;EAEE,kBAAA;EACA,qBAAA;EAEA,kBAAA;ElBioED;AkB/nEC;;EAEE,iBAAA;EACA,kBAAA;ElBioEH;AkBvnED;;ECnPE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnB82ED;AmB52EC;;EACE,cAAA;EACA,mBAAA;EnB+2EH;AmB52EC;;;;EAEE,cAAA;EnBg3EH;AkBroED;;ECxPE,cAAA;EA
 CA,oBAAA;EACA,iBAAA;EACA,mBAAA;EACA,oBAAA;EnBi4ED;AmB/3EC;;EACE,cAAA;EACA,mBAAA;EnBk4EH;AmB/3EC;;;;EAEE,cAAA;EnBm4EH;AkB9oED;EAEE,oBAAA;ElB+oED;AkBjpED;EAMI,uBAAA;ElB8oEH;AkB1oED;EACE,oBAAA;EACA,QAAA;EACA,UAAA;EACA,YAAA;EACA,gBAAA;EACA,aAAA;EACA,cAAA;EACA,mBAAA;EACA,oBAAA;EACA,sBAAA;ElB4oED;AkB1oED;EACE,aAAA;EACA,cAAA;EACA,mBAAA;ElB4oED;AkB1oED;EACE,aAAA;EACA,cAAA;EACA,mBAAA;ElB4oED;AkBxoED;;;;;;;;;;ECxVI,gBAAA;EnB4+EH;AkBppED;ECpVI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;EL67ET;AmB3+EG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;ELk8ET;AkB9pED;EC1UI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnB2+EH;AkBnqED;ECpUI,gBAAA;EnB0+EH;AkBnqED;;;;;;;;;;EC3VI,gBAAA;EnB0gFH;AkB/qED;ECvVI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;EL29ET;AmBzgFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;ELg+ET;AkBzrED;EC7UI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBygFH;AkB9rED;ECvUI,gBAAA;EnBwgFH;AkB9rED;;;;;;;;;;EC9VI,gBAAA;EnBwiFH;AkB1sED;EC1VI,uBAAA;Ed+CF,0DAAA;EACQ,kDAAA;ELy/ET;AmBviFG;EACE,uBAAA;Ed4CJ,2EAAA;EACQ,mEAAA;EL8/ET;AkBptED;EChVI,gBAAA;EACA,uBAAA;EACA,2BAAA;EnBui
 FH;AkBztED;EC1UI,gBAAA;EnBsiFH;AkBrtEC;EACG,WAAA;ElButEJ;AkBrtEC;EACG,QAAA;ElButEJ;AkB7sED;EACE,gBAAA;EACA,iBAAA;EACA,qBAAA;EACA,gBAAA;ElB+sED;AkB3nED;EAAA;IA/DM,uBAAA;IACA,kBAAA;IACA,wBAAA;IlB8rEH;EkBjoEH;IAxDM,uBAAA;IACA,aAAA;IACA,wBAAA;IlB4rEH;EkBtoEH;IAjDM,uBAAA;IlB0rEH;EkBzoEH;IA7CM,uBAAA;IACA,wBAAA;IlByrEH;EkB7oEH;;;IAvCQ,aAAA;IlByrEL;EkBlpEH;IAjCM,aAAA;IlBsrEH;EkBrpEH;IA7BM,kBAAA;IACA,wBAAA;IlBqrEH;EkBzpEH;;IApBM,uBAAA;IACA,eAAA;IACA,kBAAA;IACA,wBAAA;IlBirEH;EkBhqEH;;IAdQ,iBAAA;IlBkrEL;EkBpqEH;;IATM,oBAAA;IACA,gBAAA;IlBirEH;EkBzqEH;IAHM,QAAA;IlB+qEH;EACF;AkBrqED;;;;EASI,eAAA;EACA,kBAAA;EACA,kBAAA;ElBkqEH;AkB7qED;;EAiBI,kBAAA;ElBgqEH;AkBjrED;EJrdE,oBAAA;EACA,qBAAA;EdyoFD;AkBlpEC;EAAA;IANI,mBAAA;IACA,kBAAA;IACA,kBAAA;IlB4pEH;EACF;AkB5rED;EAwCI,aAAA;ElBupEH;AkB1oEC;EAAA;IAHM,qBAAA;IlBipEL;EACF;AkBxoEC;EAAA;IAHM,kBAAA;IlB+oEL;EACF;AoBrqFD;EACE,uBAAA;EACA,kBAAA;EACA,qBAAA;EACA,oBAAA;EACA,wBAAA;EACA,gCAAA;MAAA,4BAAA;EACA,iBAAA;EACA,wBAAA;EACA,+BAAA;EACA,qBAAA;EC6BA,mBAAA;EACA,iBAAA
 ;EACA,yBAAA;EACA,oBAAA;EhB4KA,2BAAA;EACG,wBAAA;EACC,uBAAA;EACI,mBAAA;ELg+ET;AoBxqFG;;;;;;EdrBF,sBAAA;EAEA,4CAAA;EACA,sBAAA;ENosFD;AoB5qFC;;;EAGE,gBAAA;EACA,uBAAA;EpB8qFH;AoB3qFC;;EAEE,YAAA;EACA,wBAAA;Ef2BF,0DAAA;EACQ,kDAAA;ELmpFT;AoB3qFC;;;EAGE,qBAAA;EACA,sBAAA;EE9CF,eAAA;EAGA,2BAAA;EjB8DA,0BAAA;EACQ,kBAAA;EL6pFT;AoBvqFD;ECrDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB+tFD;AqB7tFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB+tFP;AqB7tFC;;;EAGE,wBAAA;ErB+tFH;AqB1tFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBwuFT;AoBhtFD;ECnBI,gBAAA;EACA,2BAAA;ErBsuFH;AoBjtFD;ECxDE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErB4wFD;AqB1wFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErB4wFP;AqB1wFC;;;EAGE,wBAAA;ErB4wFH;AqBvwFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBqxFT;AoB1vFD;ECtBI,gBAAA;EACA,2BAAA;ErBmxFH;AoB1vFD;EC5DE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErByzFD;AqBvzFC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErByzFP;AqBvzFC;;;EAGE,wBAAA;ErByzFH;AqBpzFG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBk0FT;AoBnyFD;EC1BI,gBAAA;EACA,2BAAA;ErBg0FH;A
 oBnyFD;EChEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBs2FD;AqBp2FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBs2FP;AqBp2FC;;;EAGE,wBAAA;ErBs2FH;AqBj2FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB+2FT;AoB50FD;EC9BI,gBAAA;EACA,2BAAA;ErB62FH;AoB50FD;ECpEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBm5FD;AqBj5FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBm5FP;AqBj5FC;;;EAGE,wBAAA;ErBm5FH;AqB94FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErB45FT;AoBr3FD;EClCI,gBAAA;EACA,2BAAA;ErB05FH;AoBr3FD;ECxEE,gBAAA;EACA,2BAAA;EACA,uBAAA;ErBg8FD;AqB97FC;;;;;;EAME,gBAAA;EACA,2BAAA;EACI,uBAAA;ErBg8FP;AqB97FC;;;EAGE,wBAAA;ErBg8FH;AqB37FG;;;;;;;;;;;;;;;;;;EAME,2BAAA;EACI,uBAAA;ErBy8FT;AoB95FD;ECtCI,gBAAA;EACA,2BAAA;ErBu8FH;AoBz5FD;EACE,gBAAA;EACA,qBAAA;EACA,kBAAA;EpB25FD;AoBz5FC;;;;;EAKE,+BAAA;Ef7BF,0BAAA;EACQ,kBAAA;ELy7FT;AoB15FC;;;;EAIE,2BAAA;EpB45FH;AoB15FC;;EAEE,gBAAA;EACA,4BAAA;EACA,+BAAA;EpB45FH;AoBx5FG;;;;EAEE,gBAAA;EACA,uBAAA;EpB45FL;AoBn5FD;;EC/EE,oBAAA;EACA,iBAAA;EACA,mBAAA;EACA,oBAAA;ErBs+FD;AoBt5FD;;ECnFE,mBAAA;EACA,iBAAA;
 EACA,kBAAA;EACA,oBAAA;ErB6+FD;AoBz5FD;;ECvFE,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;ErBo/FD;AoBx5FD;EACE,gBAAA;EACA,aAAA;EpB05FD;AoBt5FD;EACE,iBAAA;EpBw5FD;AoBj5FC;;;EACE,aAAA;EpBq5FH;AuBziGD;EACE,YAAA;ElBoLA,0CAAA;EACK,qCAAA;EACG,kCAAA;ELw3FT;AuB5iGC;EACE,YAAA;EvB8iGH;AuB1iGD;EACE,eAAA;EACA,oBAAA;EvB4iGD;AuB1iGC;EAAY,gBAAA;EAAgB,qBAAA;EvB8iG7B;AuB7iGC;EAAY,oBAAA;EvBgjGb;AuB/iGC;EAAY,0BAAA;EvBkjGb;AuB/iGD;EACE,oBAAA;EACA,WAAA;EACA,kBAAA;ElBsKA,iDAAA;EACQ,4CAAA;KAAA,yCAAA;EAOR,oCAAA;EACQ,+BAAA;KAAA,4BAAA;EAGR,0CAAA;EACQ,qCAAA;KAAA,kCAAA;ELo4FT;AwB9kGD;EACE,uBAAA;EACA,UAAA;EACA,WAAA;EACA,kBAAA;EACA,wBAAA;EACA,uBAAA;EACA,qCAAA;EACA,oCAAA;ExBglGD;AwB5kGD;EACE,oBAAA;ExB8kGD;AwB1kGD;EACE,YAAA;ExB4kGD;AwBxkGD;EACE,oBAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,aAAA;EACA,kBAAA;EACA,gBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,kBAAA;EACA,2BAAA;EACA,2BAAA;EACA,uCAAA;EACA,oBAAA;EnBwBA,qDAAA;EACQ,6CAAA;EmBvBR,sCAAA;UAAA,8BAAA;ExB2kGD;AwBtkGC;EACE,UAAA;EACA,YAAA;ExBwkGH;AwBjmGD;ECvBE,aAAA;EAC
 A,eAAA;EACA,kBAAA;EACA,2BAAA;EzB2nGD;AwBvmGD;EAmCI,gBAAA;EACA,mBAAA;EACA,aAAA;EACA,qBAAA;EACA,yBAAA;EACA,gBAAA;EACA,qBAAA;ExBukGH;AwBjkGC;;EAEE,uBAAA;EACA,gBAAA;EACA,2BAAA;ExBmkGH;AwB7jGC;;;EAGE,gBAAA;EACA,uBAAA;EACA,YAAA;EACA,2BAAA;ExB+jGH;AwBtjGC;;;EAGE,gBAAA;ExBwjGH;AwBpjGC;;EAEE,uBAAA;EACA,+BAAA;EACA,wBAAA;EEzGF,qEAAA;EF2GE,qBAAA;ExBsjGH;AwBjjGD;EAGI,gBAAA;ExBijGH;AwBpjGD;EAQI,YAAA;ExB+iGH;AwBviGD;EACE,YAAA;EACA,UAAA;ExByiGD;AwBjiGD;EACE,SAAA;EACA,aAAA;ExBmiGD;AwB/hGD;EACE,gBAAA;EACA,mBAAA;EACA,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,qBAAA;ExBiiGD;AwB7hGD;EACE,iBAAA;EACA,SAAA;EACA,UAAA;EACA,WAAA;EACA,QAAA;EACA,cAAA;ExB+hGD;AwB3hGD;EACE,UAAA;EACA,YAAA;ExB6hGD;AwBrhGD;;EAII,eAAA;EACA,0BAAA;EACA,aAAA;ExBqhGH;AwB3hGD;;EAUI,WAAA;EACA,cAAA;EACA,oBAAA;ExBqhGH;AwBhgGD;EAXE;IAnEA,YAAA;IACA,UAAA;IxBklGC;EwBhhGD;IAzDA,SAAA;IACA,aAAA;IxB4kGC;EACF;A2B1tGD;;EAEE,oBAAA;EACA,uBAAA;EACA,wBAAA;E3B4tGD;A2BhuGD;;EAMI,oBAAA;EACA,aAAA;E3B8tGH;A2B5tGG;;;;;;;;EAIE,YAAA;E3BkuGL;A2B5tGD;;;;EAKI,mBAAA;E3B6tGH;A2
 BxtGD;EACE,mBAAA;E3B0tGD;A2B3tGD;;EAMI,aAAA;E3BytGH;A2B/tGD;;;EAWI,kBAAA;E3BytGH;A2BrtGD;EACE,kBAAA;E3ButGD;A2BntGD;EACE,gBAAA;E3BqtGD;A2BptGC;ECjDA,+BAAA;EACG,4BAAA;E5BwwGJ;A2BntGD;;EC9CE,8BAAA;EACG,2BAAA;E5BqwGJ;A2BltGD;EACE,aAAA;E3BotGD;A2BltGD;EACE,kBAAA;E3BotGD;A2BltGD;;EClEE,+BAAA;EACG,4BAAA;E5BwxGJ;A2BjtGD;EChEE,8BAAA;EACG,2BAAA;E5BoxGJ;A2BhtGD;;EAEE,YAAA;E3BktGD;A2BjsGD;EACE,mBAAA;EACA,oBAAA;E3BmsGD;A2BjsGD;EACE,oBAAA;EACA,qBAAA;E3BmsGD;A2B9rGD;EtB9CE,0DAAA;EACQ,kDAAA;EL+uGT;A2B9rGC;EtBlDA,0BAAA;EACQ,kBAAA;ELmvGT;A2B3rGD;EACE,gBAAA;E3B6rGD;A2B1rGD;EACE,yBAAA;EACA,wBAAA;E3B4rGD;A2BzrGD;EACE,yBAAA;E3B2rGD;A2BprGD;;;EAII,gBAAA;EACA,aAAA;EACA,aAAA;EACA,iBAAA;E3BqrGH;A2B5rGD;EAcM,aAAA;E3BirGL;A2B/rGD;;;;EAsBI,kBAAA;EACA,gBAAA;E3B+qGH;A2B1qGC;EACE,kBAAA;E3B4qGH;A2B1qGC;EACE,8BAAA;ECnKF,+BAAA;EACC,8BAAA;E5Bg1GF;A2B3qGC;EACE,gCAAA;EC/KF,4BAAA;EACC,2BAAA;E5B61GF;A2B3qGD;EACE,kBAAA;E3B6qGD;A2B3qGD;;EC9KE,+BAAA;EACC,8BAAA;E5B61GF;A2B1qGD;EC5LE,4BAAA;EACC,2BAAA;E5By2GF;A2BtqGD;EACE,gBAA
 A;EACA,aAAA;EACA,qBAAA;EACA,2BAAA;E3BwqGD;A2B5qGD;;EAOI,aAAA;EACA,qBAAA;EACA,WAAA;E3ByqGH;A2BlrGD;EAYI,aAAA;E3ByqGH;A2BrrGD;EAgBI,YAAA;E3BwqGH;A2BvpGD;;;;EAKM,oBAAA;EACA,wBAAA;EACA,sBAAA;E3BwpGL;A6Bj4GD;EACE,oBAAA;EACA,gBAAA;EACA,2BAAA;E7Bm4GD;A6Bh4GC;EACE,aAAA;EACA,iBAAA;EACA,kBAAA;E7Bk4GH;A6B34GD;EAeI,oBAAA;EACA,YAAA;EAKA,aAAA;EAEA,aAAA;EACA,kBAAA;E7B03GH;A6Bj3GD;;;EV8BE,cAAA;EACA,oBAAA;EACA,iBAAA;EACA,mBAAA;EACA,oBAAA;EnBw1GD;AmBt1GC;;;EACE,cAAA;EACA,mBAAA;EnB01GH;AmBv1GC;;;;;;EAEE,cAAA;EnB61GH;A6Bn4GD;;;EVyBE,cAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;EnB+2GD;AmB72GC;;;EACE,cAAA;EACA,mBAAA;EnBi3GH;AmB92GC;;;;;;EAEE,cAAA;EnBo3GH;A6Bj5GD;;;EAGE,qBAAA;E7Bm5GD;A6Bj5GC;;;EACE,kBAAA;E7Bq5GH;A6Bj5GD;;EAEE,WAAA;EACA,qBAAA;EACA,wBAAA;E7Bm5GD;A6B94GD;EACE,mBAAA;EACA,iBAAA;EACA,qBAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;E7Bg5GD;A6B74GC;EACE,mBAAA;EACA,iBAAA;EACA,oBAAA;E7B+4GH;A6B74GC;EACE,oBAAA;EACA,iBAAA;EACA,oBAAA;E7B+4GH;A6Bn6GD;;EA0BI,eAAA;E7B64GH;A6B
 x4GD;;;;;;;EDhGE,+BAAA;EACG,4BAAA;E5Bi/GJ;A6Bz4GD;EACE,iBAAA;E7B24GD;A6Bz4GD;;;;;;;EDpGE,8BAAA;EACG,2BAAA;E5Bs/GJ;A6B14GD;EACE,gBAAA;E7B44GD;A6Bv4GD;EACE,oBAAA;EAGA,cAAA;EACA,qBAAA;E7Bu4GD;A6B54GD;EAUI,oBAAA;E7Bq4GH;A6B/4GD;EAYM,mBAAA;E7Bs4GL;A6Bn4GG;;;EAGE,YAAA;E7Bq4GL;A6Bh4GC;;EAGI,oBAAA;E7Bi4GL;A6B93GC;;EAGI,mBAAA;E7B+3GL;A8BzhHD;EACE,kBAAA;EACA,iBAAA;EACA,kBAAA;E9B2hHD;A8B9hHD;EAOI,oBAAA;EACA,gBAAA;E9B0hHH;A8BliHD;EAWM,oBAAA;EACA,gBAAA;EACA,oBAAA;E9B0hHL;A8BzhHK;;EAEE,uBAAA;EACA,2BAAA;E9B2hHP;A8BthHG;EACE,gBAAA;E9BwhHL;A8BthHK;;EAEE,gBAAA;EACA,uBAAA;EACA,+BAAA;EACA,qBAAA;E9BwhHP;A8BjhHG;;;EAGE,2BAAA;EACA,uBAAA;E9BmhHL;A8B5jHD;ELHE,aAAA;EACA,eAAA;EACA,kBAAA;EACA,2BAAA;EzBkkHD;A8BlkHD;EA0DI,iBAAA;E9B2gHH;A8BlgHD;EACE,kCAAA;E9BogHD;A8BrgHD;EAGI,aAAA;EAEA,qBAAA;E9BogHH;A8BzgHD;EASM,mBAAA;EACA,yBAAA;EACA,+BAAA;EACA,4BAAA;E9BmgHL;A8BlgHK;EACE,uCAAA;E9BogHP;A8B9/GK;;;EAGE,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,kCAAA;EACA,iBAAA;E9BggHP;A8B3/GC;EAqDA,aAAA;EA8BA,kBAAA;E9B46GD;A8B//GC;EAwDE,aAAA
 ;E9B08GH;A8BlgHC;EA0DI,oBAAA;EACA,oBAAA;E9B28GL;A8BtgHC;EAgEE,WAAA;EACA,YAAA;E9By8GH;A8B77GD;EAAA;IAPM,qBAAA;IACA,WAAA;I9Bw8GH;E8Bl8GH;IAJQ,kBAAA;I9By8GL;EACF;A8BnhHC;EAuFE,iBAAA;EACA,oBAAA;E9B+7GH;A8BvhHC;;;EA8FE,2BAAA;E9B87GH;A8Bh7GD;EAAA;IATM,kCAAA;IACA,4BAAA;I9B67GH;E8Br7GH;;;IAHM,8BAAA;I9B67GH;EACF;A8B9hHD;EAEI,aAAA;E9B+hHH;A8BjiHD;EAMM,oBAAA;E9B8hHL;A8BpiHD;EASM,kBAAA;E9B8hHL;A8BzhHK;;;EAGE,gBAAA;EACA,2BAAA;E9B2hHP;A8BnhHD;EAEI,aAAA;E9BohHH;A8BthHD;EAIM,iBAAA;EACA,gBAAA;E9BqhHL;A8BzgHD;EACE,aAAA;E9B2gHD;A8B5gHD;EAII,aAAA;E9B2gHH;A8B/gHD;EAMM,oBAAA;EACA,oBAAA;E9B4gHL;A8BnhHD;EAYI,WAAA;EACA,YAAA;E9B0gHH;A8B9/GD;EAAA;IAPM,qBAAA;IACA,WAAA;I9BygHH;E8BngHH;IAJQ,kBAAA;I9B0gHL;EACF;A8BlgHD;EACE,kBAAA;E9BogHD;A8BrgHD;EAKI,iBAAA;EACA,oBAAA;E9BmgHH;A8BzgHD;;;EAYI,2BAAA;E9BkgHH;A8Bp/GD;EAAA;IATM,kCAAA;IACA,4BAAA;I9BigHH;E8Bz/GH;;;IAHM,8BAAA;I9BigHH;EACF;A8Bx/GD;EAEI,eAAA;EACA,oBAAA;E9By/GH;A8B5/GD;EAMI,gBAAA;EACA,qBAAA;E9By/GH;A8Bh/GD;EAEE,kBAAA;EF7OA,4BAAA;EACC,2BAAA;E5B+tHF;A+BztHD;EACE
 ,oBAAA;EACA,kBAAA;EACA,qBAAA;EACA,+BAAA;E/B2tHD;A+BntHD;EAAA;IAFI,oBAAA;I/BytHD;EACF;A+B1sHD;EAAA;IAFI,aAAA;I/BgtHD;EACF;A+BlsHD;EACE,qBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,4DAAA;UAAA,oDAAA;EAEA,mCAAA;E/BmsHD;A+BjsHC;EACE,kBAAA;E/BmsHH;A+BtqHD;EAAA;IAzBI,aAAA;IACA,eAAA;IACA,0BAAA;YAAA,kBAAA;I/BmsHD;E+BjsHC;IACE,2BAAA;IACA,gCAAA;IACA,yBAAA;IACA,mBAAA;IACA,8BAAA;I/BmsHH;E+BhsHC;IACE,qBAAA;I/BksHH;E+B7rHC;;;IAGE,iBAAA;IACA,kBAAA;I/B+rHH;EACF;A+B3rHD;;EAGI,mBAAA;E/B4rHH;A+BvrHC;EAAA;;IAFI,mBAAA;I/B8rHH;EACF;A+BrrHD;;;;EAII,qBAAA;EACA,oBAAA;E/BurHH;A+BjrHC;EAAA;;;;IAHI,iBAAA;IACA,gBAAA;I/B2rHH;EACF;A+B/qHD;EACE,eAAA;EACA,uBAAA;E/BirHD;A+B5qHD;EAAA;IAFI,kBAAA;I/BkrHD;EACF;A+B9qHD;;EAEE,iBAAA;EACA,UAAA;EACA,SAAA;EACA,eAAA;E/BgrHD;A+B1qHD;EAAA;;IAFI,kBAAA;I/BirHD;EACF;A+B/qHD;EACE,QAAA;EACA,uBAAA;E/BirHD;A+B/qHD;EACE,WAAA;EACA,kBAAA;EACA,uBAAA;E/BirHD;A+B3qHD;EACE,aAAA;EACA,oBAAA;EACA,iBAAA;EACA,mBAAA;EACA,cAAA;E/B6qHD;A+B3qHC;;EAEE,uBAAA;E/B6qHH;A+BtrHD;EAaI,gBAAA;E/B4qHH;A+BnqHD;EALI
 ;;IAEE,oBAAA;I/B2qHH;EACF;A+BjqHD;EACE,oBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EC/LA,iBAAA;EACA,oBAAA;EDgMA,+BAAA;EACA,wBAAA;EACA,+BAAA;EACA,oBAAA;E/BoqHD;A+BhqHC;EACE,YAAA;E/BkqHH;A+BhrHD;EAmBI,gBAAA;EACA,aAAA;EACA,aAAA;EACA,oBAAA;E/BgqHH;A+BtrHD;EAyBI,iBAAA;E/BgqHH;A+B1pHD;EAAA;IAFI,eAAA;I/BgqHD;EACF;A+BvpHD;EACE,qBAAA;E/BypHD;A+B1pHD;EAII,mBAAA;EACA,sBAAA;EACA,mBAAA;E/BypHH;A+B9nHC;EAAA;IArBI,kBAAA;IACA,aAAA;IACA,aAAA;IACA,eAAA;IACA,+BAAA;IACA,WAAA;IACA,0BAAA;YAAA,kBAAA;I/BupHH;E+BxoHD;;IAZM,4BAAA;I/BwpHL;E+B5oHD;IATM,mBAAA;I/BwpHL;E+BvpHK;;IAEE,wBAAA;I/BypHP;EACF;A+BvoHD;EAAA;IAXI,aAAA;IACA,WAAA;I/BspHD;E+B5oHH;IAPM,aAAA;I/BspHH;E+B/oHH;IALQ,mBAAA;IACA,sBAAA;I/BupHL;EACF;A+B5oHD;EACE,oBAAA;EACA,qBAAA;EACA,oBAAA;EACA,mCAAA;EACA,sCAAA;E1B/NA,8FAAA;EACQ,sFAAA;E2B/DR,iBAAA;EACA,oBAAA;EhC86HD;AkBz9GD;EAAA;IA/DM,uBAAA;IACA,kBAAA;IACA,wBAAA;IlB4hHH;EkB/9GH;IAxDM,uBAAA;IACA,aAAA;IACA,wBAAA;IlB0hHH;EkBp+GH;IAjDM,uBAAA;IlBwhHH;EkBv+GH;IA7CM,uBAAA;IACA,wBAAA;IlBuhHH;EkB3+GH;;;IAvCQ,aAAA;IlBu
 hHL;EkBh/GH;IAjCM,aAAA;IlBohHH;EkBn/GH;IA7BM,kBAAA;IACA,wBAAA;IlBmhHH;EkBv/GH;;IApBM,uBAAA;IACA,eAAA;IACA,kBAAA;IACA,wBAAA;IlB+gHH;EkB9/GH;;IAdQ,iBAAA;IlBghHL;EkBlgHH;;IATM,oBAAA;IACA,gBAAA;IlB+gHH;EkBvgHH;IAHM,QAAA;IlB6gHH;EACF;A+BrrHC;EAAA;IANI,oBAAA;I/B+rHH;E+B7rHG;IACE,kBAAA;I/B+rHL;EACF;A+B9qHD;EAAA;IARI,aAAA;IACA,WAAA;IACA,gBAAA;IACA,iBAAA;IACA,gBAAA;IACA,mBAAA;I1B1PF,0BAAA;IACQ,kBAAA;ILq7HP;EACF;A+BprHD;EACE,eAAA;EHrUA,4BAAA;EACC,2BAAA;E5B4/HF;A+BprHD;EHzUE,8BAAA;EACC,6BAAA;EAOD,+BAAA;EACC,8BAAA;E5B0/HF;A+BhrHD;EChVE,iBAAA;EACA,oBAAA;EhCmgID;A+BjrHC;ECnVA,kBAAA;EACA,qBAAA;EhCugID;A+BlrHC;ECtVA,kBAAA;EACA,qBAAA;EhC2gID;A+B5qHD;EChWE,kBAAA;EACA,qBAAA;EhC+gID;A+BxqHD;EAAA;IAJI,aAAA;IACA,mBAAA;IACA,oBAAA;I/BgrHD;EACF;A+BvpHD;EAZE;IExWA,wBAAA;IjC+gIC;E+BtqHD;IE5WA,yBAAA;IF8WE,qBAAA;I/BwqHD;E+B1qHD;IAKI,iBAAA;I/BwqHH;EACF;A+B/pHD;EACE,2BAAA;EACA,uBAAA;E/BiqHD;A+BnqHD;EAKI,gBAAA;E/BiqHH;A+BhqHG;;EAEE,gBAAA;EACA,+BAAA;E/BkqHL;A+B3qHD;EAcI,gBAAA;E/BgqHH;A+B9qHD;EAmBM,gBAAA;E/B8pHL;A+B
 5pHK;;EAEE,gBAAA;EACA,+BAAA;E/B8pHP;A+B1pHK;;;EAGE,gBAAA;EACA,2BAAA;E/B4pHP;A+BxpHK;;;EAGE,gBAAA;EACA,+BAAA;E/B0pHP;A+BlsHD;EA8CI,uBAAA;E/BupHH;A+BtpHG;;EAEE,2BAAA;E/BwpHL;A+BzsHD;EAoDM,2BAAA;E/BwpHL;A+B5sHD;;EA0DI,uBAAA;E/BspHH;A+B/oHK;;;EAGE,2BAAA;EACA,gBAAA;E/BipHP;A+BhnHC;EAAA;IAzBQ,gBAAA;I/B6oHP;E+B5oHO;;IAEE,gBAAA;IACA,+BAAA;I/B8oHT;E+B1oHO;;;IAGE,gBAAA;IACA,2BAAA;I/B4oHT;E+BxoHO;;;IAGE,gBAAA;IACA,+BAAA;I/B0oHT;EACF;A+B5uHD;EA8GI,gBAAA;E/BioHH;A+BhoHG;EACE,gBAAA;E/BkoHL;A+BlvHD;EAqHI,gBAAA;E/BgoHH;A+B/nHG;;EAEE,gBAAA;E/BioHL;A+B7nHK;;;;EAEE,gBAAA;E/BioHP;A+BznHD;EACE,2BAAA;EACA,uBAAA;E/B2nHD;A+B7nHD;EAKI,gBAAA;E/B2nHH;A+B1nHG;;EAEE,gBAAA;EACA,+BAAA;E/B4nHL;A+BroHD;EAcI,gBAAA;E/B0nHH;A+BxoHD;EAmBM,gBAAA;E/BwnHL;A+BtnHK;;EAEE,gBAAA;EACA,+BAAA;E/BwnHP;A+BpnHK;;;EAGE,gBAAA;EACA,2BAAA;E/BsnHP;A+BlnHK;;;EAGE,gBAAA;EACA,+BAAA;E/BonHP;A+B5pHD;EA+CI,uBAAA;E/BgnHH;A+B/mHG;;EAEE,2BAAA;E/BinHL;A+BnqHD;EAqDM,2BAAA;E/BinHL;A+BtqHD;;EA2DI,uBAAA;E/B+mHH;A+BzmHK;;;EAGE,2BAAA;EACA,gBAAA;E/B2mHP
 ;A+BpkHC;EAAA;IA/BQ,uBAAA;I/BumHP;E+BxkHD;IA5BQ,2BAAA;I/BumHP;E+B3kHD;IAzBQ,gBAAA;I/BumHP;E+BtmHO;;IAEE,gBAAA;IACA,+BAAA;I/BwmHT;E+BpmHO;;;IAGE,gBAAA;IACA,2BAAA;I/BsmHT;E+BlmHO;;;IAGE,gBAAA;IACA,+BAAA;I/BomHT;EACF;A+B5sHD;EA+GI,gBAAA;E/BgmHH;A+B/lHG;EACE,gBAAA;E/BimHL;A+BltHD;EAsHI,gBAAA;E/B+lHH;A+B9lHG;;EAEE,gBAAA;E/BgmHL;A+B5lHK;;;;EAEE,gBAAA;E/BgmHP;AkC1uID;EACE,mBAAA;EACA,qBAAA;EACA,kBAAA;EACA,2BAAA;EACA,oBAAA;ElC4uID;AkCjvID;EAQI,uBAAA;ElC4uIH;AkCpvID;EAWM,mBAAA;EACA,gBAAA;EACA,gBAAA;ElC4uIL;AkCzvID;EAkBI,gBAAA;ElC0uIH;AmC9vID;EACE,uBAAA;EACA,iBAAA;EACA,gBAAA;EACA,oBAAA;EnCgwID;AmCpwID;EAOI,iBAAA;EnCgwIH;AmCvwID;;EAUM,oBAAA;EACA,aAAA;EACA,mBAAA;EACA,yBAAA;EACA,uBAAA;EACA,gBAAA;EACA,2BAAA;EACA,2BAAA;EACA,mBAAA;EnCiwIL;AmC/vIG;;EAGI,gBAAA;EPXN,gCAAA;EACG,6BAAA;E5B4wIJ;AmC9vIG;;EPvBF,iCAAA;EACG,8BAAA;E5ByxIJ;AmCzvIG;;;;EAEE,gBAAA;EACA,2BAAA;EACA,uBAAA;EnC6vIL;AmCvvIG;;;;;;EAGE,YAAA;EACA,gBAAA;EACA,2BAAA;EACA,uBAAA;EACA,iBAAA;EnC4vIL;AmClzID;;;;;;EAiEM,gBAAA;EACA,2BAAA;EACA,uBAAA;E
 ACA,qBAAA;EnCyvIL;AmChvID;;EC1EM,oBAAA;EACA,iBAAA;EpC8zIL;AoC5zIG;;ERMF,gCAAA;EACG,6BAAA;E5B0zIJ;AoC3zIG;;ERRF,iCAAA;EACG,8BAAA;E5Bu0IJ;AmC1vID;;EC/EM,mBAAA;EACA,iBAAA;EpC60IL;AoC30IG;;ERMF,gCAAA;EACG,6BAAA;E5By0IJ;AoC10IG;;ERRF,iCAAA;EACG,8BAAA;E5Bs1IJ;AqCz1ID;EACE,iBAAA;EACA,gBAAA;EACA,kBAAA;EACA,oBAAA;ErC21ID;AqC/1ID;EAOI,iBAAA;ErC21IH;AqCl2ID;;EAUM,uBAAA;EACA,mBAAA;EACA,2BAAA;EACA,2BAAA;EACA,qBAAA;ErC41IL;AqC12ID;;EAmBM,uBAAA;EACA,2BAAA;ErC21IL;AqC/2ID;;EA2BM,cAAA;ErCw1IL;AqCn3ID;;EAkCM,aAAA;ErCq1IL;AqCv3ID;;;;EA2CM,gBAAA;EACA,2BAAA;EACA,qBAAA;ErCk1IL;AsCh4ID;EACE,iBAAA;EACA,yBAAA;EACA,gBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,oBAAA;EACA,qBAAA;EACA,0BAAA;EACA,sBAAA;EtCk4ID;AsC93IG;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;EtCg4IL;AsC33IC;EACE,eAAA;EtC63IH;AsCz3IC;EACE,oBAAA;EACA,WAAA;EtC23IH;AsCp3ID;ECtCE,2BAAA;EvC65ID;AuC15IG;;EAEE,2BAAA;EvC45IL;AsCv3ID;EC1CE,2BAAA;EvCo6ID;AuCj6IG;;EAEE,2BAAA;EvCm6IL;AsC13ID;EC9CE,2BAAA;EvC26ID;AuCx6IG;;EAEE,2BAAA;EvC06IL;AsC73ID;EClDE,2BAAA;EvCk7ID;
 AuC/6IG;;EAEE,2BAAA;EvCi7IL;AsCh4ID;ECtDE,2BAAA;EvCy7ID;AuCt7IG;;EAEE,2BAAA;EvCw7IL;AsCn4ID;EC1DE,2BAAA;EvCg8ID;AuC77IG;;EAEE,2BAAA;EvC+7IL;AwCj8ID;EACE,uBAAA;EACA,iBAAA;EACA,kBAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,0BAAA;EACA,qBAAA;EACA,oBAAA;EACA,2BAAA;EACA,qBAAA;ExCm8ID;AwCh8IC;EACE,eAAA;ExCk8IH;AwC97IC;EACE,oBAAA;EACA,WAAA;ExCg8IH;AwC97IC;EACE,QAAA;EACA,kBAAA;ExCg8IH;AwC37IG;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;ExC67IL;AwCx7IC;;EAEE,gBAAA;EACA,2BAAA;ExC07IH;AwCx7IC;EACE,cAAA;ExC07IH;AwCx7IC;EACE,mBAAA;ExC07IH;AwCx7IC;EACE,kBAAA;ExC07IH;AyC/+ID;EACE,oBAAA;EACA,qBAAA;EACA,gBAAA;EACA,2BAAA;EzCi/ID;AyCr/ID;;EAQI,gBAAA;EzCi/IH;AyCz/ID;EAWI,qBAAA;EACA,iBAAA;EACA,kBAAA;EzCi/IH;AyC9/ID;EAiBI,2BAAA;EzCg/IH;AyC7+IC;;EAEE,oBAAA;EzC++IH;AyCrgJD;EA0BI,iBAAA;EzC8+IH;AyC79ID;EAAA;IAbI,iBAAA;IzC8+ID;EyC5+IC;;IAEE,oBAAA;IACA,qBAAA;IzC8+IH;EyCt+IH;;IAHM,iBAAA;IzC6+IH;EACF;A0CrhJD;EACE,gBAAA;EACA,cAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;ErCiLA,6CAAA;EACK,wCAAA;EACG,qC
 AAA;ELu2IT;A0CjiJD;;EAaI,mBAAA;EACA,oBAAA;E1CwhJH;A0CphJC;;;EAGE,uBAAA;E1CshJH;A0C3iJD;EA0BI,cAAA;EACA,gBAAA;E1CohJH;A2C7iJD;EACE,eAAA;EACA,qBAAA;EACA,+BAAA;EACA,oBAAA;E3C+iJD;A2CnjJD;EAQI,eAAA;EAEA,gBAAA;E3C6iJH;A2CvjJD;EAcI,mBAAA;E3C4iJH;A2C1jJD;;EAoBI,kBAAA;E3C0iJH;A2C9jJD;EAuBI,iBAAA;E3C0iJH;A2CliJD;;EAEE,qBAAA;E3CoiJD;A2CtiJD;;EAMI,oBAAA;EACA,WAAA;EACA,cAAA;EACA,gBAAA;E3CoiJH;A2C5hJD;ECrDE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5ColJD;A2CjiJD;EChDI,2BAAA;E5ColJH;A2CpiJD;EC7CI,gBAAA;E5ColJH;A2CpiJD;ECxDE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5C+lJD;A2CziJD;ECnDI,2BAAA;E5C+lJH;A2C5iJD;EChDI,gBAAA;E5C+lJH;A2C5iJD;EC3DE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5C0mJD;A2CjjJD;ECtDI,2BAAA;E5C0mJH;A2CpjJD;ECnDI,gBAAA;E5C0mJH;A2CpjJD;EC9DE,2BAAA;EACA,uBAAA;EACA,gBAAA;E5CqnJD;A2CzjJD;ECzDI,2BAAA;E5CqnJH;A2C5jJD;ECtDI,gBAAA;E5CqnJH;A6CvnJD;EACE;IAAQ,6BAAA;I7C0nJP;E6CznJD;IAAQ,0BAAA;I7C4nJP;EACF;A6CznJD;EACE;IAAQ,6BAAA;I7C4nJP;E6C3nJD;IAAQ,0BAAA;I7C8nJP;EACF;A6CjoJD;EACE;IAAQ,6BAAA;I7C4nJP;E6C3nJD;IAAQ,0BAAA;I7C8nJP;EA
 CF;A6CvnJD;EACE,kBAAA;EACA,cAAA;EACA,qBAAA;EACA,2BAAA;EACA,oBAAA;ExCsCA,wDAAA;EACQ,gDAAA;ELolJT;A6CtnJD;EACE,aAAA;EACA,WAAA;EACA,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2BAAA;ExCyBA,wDAAA;EACQ,gDAAA;EAyHR,qCAAA;EACK,gCAAA;EACG,6BAAA;ELw+IT;A6CnnJD;;ECCI,+MAAA;EACA,0MAAA;EACA,uMAAA;EDAF,oCAAA;UAAA,4BAAA;E7CunJD;A6ChnJD;;ExC5CE,4DAAA;EACK,uDAAA;EACG,oDAAA;ELgqJT;A6C7mJD;EErEE,2BAAA;E/CqrJD;A+ClrJC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9CqoJH;A6CjnJD;EEzEE,2BAAA;E/C6rJD;A+C1rJC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9C6oJH;A6CrnJD;EE7EE,2BAAA;E/CqsJD;A+ClsJC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9CqpJH;A6CznJD;EEjFE,2BAAA;E/C6sJD;A+C1sJC;EDgDE,+MAAA;EACA,0MAAA;EACA,uMAAA;E9C6pJH;AgDrtJD;EAEE,kBAAA;EhDstJD;AgDptJC;EACE,eAAA;EhDstJH;AgDltJD;;EAEE,oBAAA;EhDotJD;AgDjtJD;;EAEE,qBAAA;EhDmtJD;AgDhtJD;;;EAGE,qBAAA;EACA,qBAAA;EhDktJD;AgD/sJD;EACE,wBAAA;EhDitJD;AgD9sJD;EACE,wBAAA;EhDgtJD;AgD5sJD;EACE,eAAA;EACA,oBAAA;EhD8sJD;AgDxsJD;EACE,iBAAA;EACA,kBAAA;EhD0sJD;AiD9uJD;EAEE,qBAAA;EACA,iBAAA;
 EjD+uJD;AiDvuJD;EACE,oBAAA;EACA,gBAAA;EACA,oBAAA;EAEA,qBAAA;EACA,2BAAA;EACA,2BAAA;EjDwuJD;AiDruJC;ErB3BA,8BAAA;EACC,6BAAA;E5BmwJF;AiDtuJC;EACE,kBAAA;ErBvBF,iCAAA;EACC,gCAAA;E5BgwJF;AiD/tJD;EACE,gBAAA;EjDiuJD;AiDluJD;EAII,gBAAA;EjDiuJH;AiD7tJC;;EAEE,uBAAA;EACA,gBAAA;EACA,2BAAA;EjD+tJH;AiDztJC;;;EAGE,2BAAA;EACA,gBAAA;EACA,qBAAA;EjD2tJH;AiDhuJC;;;EASI,gBAAA;EjD4tJL;AiDruJC;;;EAYI,gBAAA;EjD8tJL;AiDztJC;;;EAGE,YAAA;EACA,gBAAA;EACA,2BAAA;EACA,uBAAA;EjD2tJH;AiDjuJC;;;;;;;;;EAYI,gBAAA;EjDguJL;AiD5uJC;;;EAeI,gBAAA;EjDkuJL;AkD9zJC;EACE,gBAAA;EACA,2BAAA;ElDg0JH;AkD9zJG;EACE,gBAAA;ElDg0JL;AkDj0JG;EAII,gBAAA;ElDg0JP;AkD7zJK;;EAEE,gBAAA;EACA,2BAAA;ElD+zJP;AkD7zJK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElD+zJP;AkDp1JC;EACE,gBAAA;EACA,2BAAA;ElDs1JH;AkDp1JG;EACE,gBAAA;ElDs1JL;AkDv1JG;EAII,gBAAA;ElDs1JP;AkDn1JK;;EAEE,gBAAA;EACA,2BAAA;ElDq1JP;AkDn1JK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDq1JP;AkD12JC;EACE,gBAAA;EACA,2BAAA;ElD42JH;AkD12JG;EACE,gBAAA;ElD42JL;AkD72JG;EAII,gBAAA;ElD42JP;AkDz2JK;;EAEE,gBAAA;EACA
 ,2BAAA;ElD22JP;AkDz2JK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElD22JP;AkDh4JC;EACE,gBAAA;EACA,2BAAA;ElDk4JH;AkDh4JG;EACE,gBAAA;ElDk4JL;AkDn4JG;EAII,gBAAA;ElDk4JP;AkD/3JK;;EAEE,gBAAA;EACA,2BAAA;ElDi4JP;AkD/3JK;;;EAGE,aAAA;EACA,2BAAA;EACA,uBAAA;ElDi4JP;AiDryJD;EACE,eAAA;EACA,oBAAA;EjDuyJD;AiDryJD;EACE,kBAAA;EACA,kBAAA;EjDuyJD;AmD35JD;EACE,qBAAA;EACA,2BAAA;EACA,+BAAA;EACA,oBAAA;E9C0DA,mDAAA;EACQ,2CAAA;ELo2JT;AmD15JD;EACE,eAAA;EnD45JD;AmDv5JD;EACE,oBAAA;EACA,sCAAA;EvBpBA,8BAAA;EACC,6BAAA;E5B86JF;AmD75JD;EAMI,gBAAA;EnD05JH;AmDr5JD;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EnDu5JD;AmD35JD;EAOI,gBAAA;EnDu5JH;AmDl5JD;EACE,oBAAA;EACA,2BAAA;EACA,+BAAA;EvBpCA,iCAAA;EACC,gCAAA;E5By7JF;AmD54JD;;EAGI,kBAAA;EnD64JH;AmDh5JD;;EAMM,qBAAA;EACA,kBAAA;EnD84JL;AmD14JG;;EAEI,eAAA;EvBnEN,8BAAA;EACC,6BAAA;E5Bg9JF;AmDz4JG;;EAEI,kBAAA;EvBlEN,iCAAA;EACC,gCAAA;E5B88JF;AmDt4JD;EAEI,qBAAA;EnDu4JH;AmDp4JD;EACE,qBAAA;EnDs4JD;AmD93JD;;;EAII,kBAAA;EnD+3JH;AmDn4JD;;;EAOM,oBAAA;EACA,qBAAA;EnDi4JL;AmDz4JD;;EvB/FE,8BAAA;EACC
 ,6BAAA;E5B4+JF;AmD94JD;;;;EAmBQ,6BAAA;EACA,8BAAA;EnDi4JP;AmDr5JD;;;;;;;;EAwBU,6BAAA;EnDu4JT;AmD/5JD;;;;;;;;EA4BU,8BAAA;EnD64JT;AmDz6JD;;EvBvFE,iCAAA;EACC,gCAAA;E5BogKF;AmD96JD;;;;EAyCQ,gCAAA;EACA,iCAAA;EnD24JP;AmDr7JD;;;;;;;;EA8CU,gCAAA;EnDi5JT;AmD/7JD;;;;;;;;EAkDU,iCAAA;EnDu5JT;AmDz8JD;;;;EA2DI,+BAAA;EnDo5JH;AmD/8JD;;EA+DI,eAAA;EnDo5JH;AmDn9JD;;EAmEI,WAAA;EnDo5JH;AmDv9JD;;;;;;;;;;;;EA0EU,gBAAA;EnD25JT;AmDr+JD;;;;;;;;;;;;EA8EU,iBAAA;EnDq6JT;AmDn/JD;;;;;;;;EAuFU,kBAAA;EnDs6JT;AmD7/JD;;;;;;;;EAgGU,kBAAA;EnDu6JT;AmDvgKD;EAsGI,WAAA;EACA,kBAAA;EnDo6JH;AmD15JD;EACE,qBAAA;EnD45JD;AmD75JD;EAKI,kBAAA;EACA,oBAAA;EnD25JH;AmDj6JD;EASM,iBAAA;EnD25JL;AmDp6JD;EAcI,kBAAA;EnDy5JH;AmDv6JD;;EAkBM,+BAAA;EnDy5JL;AmD36JD;EAuBI,eAAA;EnDu5JH;AmD96JD;EAyBM,kCAAA;EnDw5JL;AmDj5JD;EChPE,uBAAA;EpDooKD;AoDloKC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDooKH;AoDvoKC;EAMI,2BAAA;EpDooKL;AoD1oKC;EASI,gBAAA;EACA,2BAAA;EpDooKL;AoDjoKC;EAEI,8BAAA;EpDkoKL;AmDh6JD;ECnPE,uBAAA;EpDspKD;AoDppKC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpD
 spKH;AoDzpKC;EAMI,2BAAA;EpDspKL;AoD5pKC;EASI,gBAAA;EACA,2BAAA;EpDspKL;AoDnpKC;EAEI,8BAAA;EpDopKL;AmD/6JD;ECtPE,uBAAA;EpDwqKD;AoDtqKC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpDwqKH;AoD3qKC;EAMI,2BAAA;EpDwqKL;AoD9qKC;EASI,gBAAA;EACA,2BAAA;EpDwqKL;AoDrqKC;EAEI,8BAAA;EpDsqKL;AmD97JD;ECzPE,uBAAA;EpD0rKD;AoDxrKC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpD0rKH;AoD7rKC;EAMI,2BAAA;EpD0rKL;AoDhsKC;EASI,gBAAA;EACA,2BAAA;EpD0rKL;AoDvrKC;EAEI,8BAAA;EpDwrKL;AmD78JD;EC5PE,uBAAA;EpD4sKD;AoD1sKC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpD4sKH;AoD/sKC;EAMI,2BAAA;EpD4sKL;AoDltKC;EASI,gBAAA;EACA,2BAAA;EpD4sKL;AoDzsKC;EAEI,8BAAA;EpD0sKL;AmD59JD;EC/PE,uBAAA;EpD8tKD;AoD5tKC;EACE,gBAAA;EACA,2BAAA;EACA,uBAAA;EpD8tKH;AoDjuKC;EAMI,2BAAA;EpD8tKL;AoDpuKC;EASI,gBAAA;EACA,2BAAA;EpD8tKL;AoD3tKC;EAEI,8BAAA;EpD4tKL;AqD5uKD;EACE,oBAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,kBAAA;ErD8uKD;AqDnvKD;;;;;EAYI,oBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,cAAA;EACA,aAAA;EACA,WAAA;ErD8uKH;AqD1uKC;EACE,wBAAA;ErD4uKH;AqDxuKC;EACE,qBAAA;ErD0uKH;AsDpwKD;EA
 CE,kBAAA;EACA,eAAA;EACA,qBAAA;EACA,2BAAA;EACA,2BAAA;EACA,oBAAA;EjDwDA,yDAAA;EACQ,iDAAA;EL+sKT;AsD9wKD;EASI,oBAAA;EACA,mCAAA;EtDwwKH;AsDnwKD;EACE,eAAA;EACA,oBAAA;EtDqwKD;AsDnwKD;EACE,cAAA;EACA,oBAAA;EtDqwKD;AuD3xKD;EACE,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,gBAAA;EACA,gBAAA;EACA,8BAAA;EjCRA,cAAA;EAGA,2BAAA;EtBoyKD;AuD5xKC;;EAEE,gBAAA;EACA,uBAAA;EACA,iBAAA;EjCfF,cAAA;EAGA,2BAAA;EtB4yKD;AuDzxKC;EACE,YAAA;EACA,iBAAA;EACA,yBAAA;EACA,WAAA;EACA,0BAAA;EvD2xKH;AwD/yKD;EACE,kBAAA;ExDizKD;AwD7yKD;EACE,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,QAAA;EACA,UAAA;EACA,WAAA;EACA,SAAA;EACA,eAAA;EACA,mCAAA;EAIA,YAAA;ExD4yKD;AwDzyKC;EnD+GA,uCAAA;EACI,mCAAA;EACC,kCAAA;EACG,+BAAA;EAkER,qDAAA;EAEK,2CAAA;EACG,qCAAA;EL4nKT;AwD/yKC;EnD2GA,oCAAA;EACI,gCAAA;EACC,+BAAA;EACG,4BAAA;ELusKT;AwDnzKD;EACE,oBAAA;EACA,kBAAA;ExDqzKD;AwDjzKD;EACE,oBAAA;EACA,aAAA;EACA,cAAA;ExDmzKD;AwD/yKD;EACE,oBAAA;EACA,2BAAA;EACA,2BAAA;EACA,sCAAA;EACA,oBAAA;EnDaA,kDAAA;EACQ,0CAAA;EmDZR,sCAAA;UAAA,8BAAA;EAEA,YAAA;ExDizKD;AwD7yKD;EACE,oBAAA;EACA,QAAA;EACA
 ,UAAA;EACA,SAAA;EACA,2BAAA;ExD+yKD;AwD7yKC;ElCnEA,YAAA;EAGA,0BAAA;EtBi3KD;AwDhzKC;ElCpEA,cAAA;EAGA,2BAAA;EtBq3KD;AwD/yKD;EACE,eAAA;EACA,kCAAA;EACA,2BAAA;ExDizKD;AwD9yKD;EACE,kBAAA;ExDgzKD;AwD5yKD;EACE,WAAA;EACA,yBAAA;ExD8yKD;AwDzyKD;EACE,oBAAA;EACA,eAAA;ExD2yKD;AwDvyKD;EACE,eAAA;EACA,mBAAA;EACA,+BAAA;ExDyyKD;AwD5yKD;EAQI,kBAAA;EACA,kBAAA;ExDuyKH;AwDhzKD;EAaI,mBAAA;ExDsyKH;AwDnzKD;EAiBI,gBAAA;ExDqyKH;AwDhyKD;EACE,oBAAA;EACA,cAAA;EACA,aAAA;EACA,cAAA;EACA,kBAAA;ExDkyKD;AwDhxKD;EAZE;IACE,cAAA;IACA,mBAAA;IxD+xKD;EwD7xKD;InDrEA,mDAAA;IACQ,2CAAA;ILq2KP;EwD5xKD;IAAY,cAAA;IxD+xKX;EACF;AwD1xKD;EAFE;IAAY,cAAA;IxDgyKX;EACF;AyD76KD;EACE,oBAAA;EACA,eAAA;EACA,gBAAA;EACA,qBAAA;EAEA,6DAAA;EACA,iBAAA;EACA,qBAAA;EACA,kBAAA;EnCZA,YAAA;EAGA,0BAAA;EtBy7KD;AyD76KC;EnCfA,cAAA;EAGA,2BAAA;EtB67KD;AyDh7KC;EAAW,kBAAA;EAAmB,gBAAA;EzDo7K/B;AyDn7KC;EAAW,kBAAA;EAAmB,gBAAA;EzDu7K/B;AyDt7KC;EAAW,iBAAA;EAAmB,gBAAA;EzD07K/B;AyDz7KC;EAAW,mBAAA;EAAmB,gBAAA;EzD67K/B;AyDz7KD;EACE,kBAAA;EACA,kBAAA;EACA,gBAAA;EACA,oBAAA;EAC
 A,uBAAA;EACA,2BAAA;EACA,oBAAA;EzD27KD;AyDv7KD;EACE,oBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;EzDy7KD;AyDr7KC;EACE,WAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,2BAAA;EzDu7KH;AyDr7KC;EACE,WAAA;EACA,YAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EzDu7KH;AyDr7KC;EACE,WAAA;EACA,WAAA;EACA,qBAAA;EACA,yBAAA;EACA,2BAAA;EzDu7KH;AyDr7KC;EACE,UAAA;EACA,SAAA;EACA,kBAAA;EACA,6BAAA;EACA,6BAAA;EzDu7KH;AyDr7KC;EACE,UAAA;EACA,UAAA;EACA,kBAAA;EACA,6BAAA;EACA,4BAAA;EzDu7KH;AyDr7KC;EACE,QAAA;EACA,WAAA;EACA,mBAAA;EACA,yBAAA;EACA,8BAAA;EzDu7KH;AyDr7KC;EACE,QAAA;EACA,YAAA;EACA,kBAAA;EACA,yBAAA;EACA,8BAAA;EzDu7KH;AyDr7KC;EACE,QAAA;EACA,WAAA;EACA,kBAAA;EACA,yBAAA;EACA,8BAAA;EzDu7KH;A0DthLD;EACE,oBAAA;EACA,QAAA;EACA,SAAA;EACA,eAAA;EACA,eAAA;EACA,kBAAA;EACA,cAAA;EAEA,6DAAA;EACA,iBAAA;EACA,qBAAA;EACA,yBAAA;EACA,kBAAA;EACA,2BAAA;EACA,sCAAA;UAAA,8BAAA;EACA,2BAAA;EACA,sCAAA;EACA,oBAAA;ErD6CA,mDAAA;EACQ,2CAAA;EqD1CR,qBAAA;E1DshLD;A0DnhLC;EAAY,mBAAA;E1DshLb;A0DrhLC;EAAY,mBAAA;E1DwhLb;A0DvhLC;EAAY,kBAAA;E1D0hLb;A0DzhLC;EAA
 Y,oBAAA;E1D4hLb;A0DzhLD;EACE,WAAA;EACA,mBAAA;EACA,iBAAA;EACA,2BAAA;EACA,kCAAA;EACA,4BAAA;E1D2hLD;A0DxhLD;EACE,mBAAA;E1D0hLD;A0DlhLC;;EAEE,oBAAA;EACA,gBAAA;EACA,UAAA;EACA,WAAA;EACA,2BAAA;EACA,qBAAA;E1DohLH;A0DjhLD;EACE,oBAAA;E1DmhLD;A0DjhLD;EACE,oBAAA;EACA,aAAA;E1DmhLD;A0D/gLC;EACE,WAAA;EACA,oBAAA;EACA,wBAAA;EACA,2BAAA;EACA,uCAAA;EACA,eAAA;E1DihLH;A0DhhLG;EACE,cAAA;EACA,aAAA;EACA,oBAAA;EACA,wBAAA;EACA,2BAAA;E1DkhLL;A0D/gLC;EACE,UAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,6BAAA;EACA,yCAAA;E1DihLH;A0DhhLG;EACE,cAAA;EACA,WAAA;EACA,eAAA;EACA,sBAAA;EACA,6BAAA;E1DkhLL;A0D/gLC;EACE,WAAA;EACA,oBAAA;EACA,qBAAA;EACA,8BAAA;EACA,0CAAA;EACA,YAAA;E1DihLH;A0DhhLG;EACE,cAAA;EACA,UAAA;EACA,oBAAA;EACA,qBAAA;EACA,8BAAA;E1DkhLL;A0D9gLC;EACE,UAAA;EACA,cAAA;EACA,mBAAA;EACA,uBAAA;EACA,4BAAA;EACA,wCAAA;E1DghLH;A0D/gLG;EACE,cAAA;EACA,YAAA;EACA,uBAAA;EACA,4BAAA;EACA,eAAA;E1DihLL;A2D9oLD;EACE,oBAAA;E3DgpLD;A2D7oLD;EACE,oBAAA;EACA,kBAAA;EACA,aAAA;E3D+oLD;A2DlpLD;EAMI,eAAA;EACA,oBAAA;EtD6KF,2CAAA;EACK,sCAAA;EACG,m
 CAAA;ELm+KT;A2DzpLD;;EAcM,gBAAA;E3D+oLL;A2DrnLC;EAAA;IArBI,wDAAA;SAAA,8CAAA;YAAA,wCAAA;IACA,qCAAA;YAAA,6BAAA;IACA,2BAAA;YAAA,mBAAA;I3D8oLH;E2D5oLG;;IAEE,4CAAA;YAAA,oCAAA;IACA,SAAA;I3D8oLL;E2D5oLG;;IAEE,6CAAA;YAAA,qCAAA;IACA,SAAA;I3D8oLL;E2D5oLG;;;IAGE,yCAAA;YAAA,iCAAA;IACA,SAAA;I3D8oLL;EACF;A2DprLD;;;EA6CI,gBAAA;E3D4oLH;A2DzrLD;EAiDI,SAAA;E3D2oLH;A2D5rLD;;EAsDI,oBAAA;EACA,QAAA;EACA,aAAA;E3D0oLH;A2DlsLD;EA4DI,YAAA;E3DyoLH;A2DrsLD;EA+DI,aAAA;E3DyoLH;A2DxsLD;;EAmEI,SAAA;E3DyoLH;A2D5sLD;EAuEI,aAAA;E3DwoLH;A2D/sLD;EA0EI,YAAA;E3DwoLH;A2DhoLD;EACE,oBAAA;EACA,QAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;ErC9FA,cAAA;EAGA,2BAAA;EqC6FA,iBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2CAAA;E3DmoLD;A2D9nLC;EblGE,oGAAA;EACA,+FAAA;EACA,sHAAA;EAAA,gGAAA;EACA,6BAAA;EACA,wHAAA;E9CmuLH;A2DloLC;EACE,YAAA;EACA,UAAA;EbvGA,oGAAA;EACA,+FAAA;EACA,sHAAA;EAAA,gGAAA;EACA,6BAAA;EACA,wHAAA;E9C4uLH;A2DpoLC;;EAEE,YAAA;EACA,gBAAA;EACA,uBAAA;ErCtHF,cAAA;EAGA,2BAAA;EtB2vLD;A2DrqLD;;;;EAsCI,oBAAA;EACA,UAAA;EACA,YAAA;EACA,uBAAA;E3DqoLH;A2D9qLD
 ;;EA6CI,WAAA;EACA,oBAAA;E3DqoLH;A2DnrLD;;EAkDI,YAAA;EACA,qBAAA;E3DqoLH;A2DxrLD;;EAuDI,aAAA;EACA,cAAA;EACA,mBAAA;EACA,oBAAA;E3DqoLH;A2DhoLG;EACE,kBAAA;E3DkoLL;A2D9nLG;EACE,kBAAA;E3DgoLL;A2DtnLD;EACE,oBAAA;EACA,cAAA;EACA,WAAA;EACA,aAAA;EACA,YAAA;EACA,mBAAA;EACA,iBAAA;EACA,kBAAA;EACA,oBAAA;E3DwnLD;A2DjoLD;EAYI,uBAAA;EACA,aAAA;EACA,cAAA;EACA,aAAA;EACA,qBAAA;EACA,2BAAA;EACA,qBAAA;EACA,iBAAA;EAUA,2BAAA;EACA,oCAAA;E3D+mLH;A2D7oLD;EAiCI,WAAA;EACA,aAAA;EACA,cAAA;EACA,2BAAA;E3D+mLH;A2DxmLD;EACE,oBAAA;EACA,WAAA;EACA,YAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;EACA,sBAAA;EACA,gBAAA;EACA,oBAAA;EACA,2CAAA;E3D0mLD;A2DzmLC;EACE,mBAAA;E3D2mLH;A2DlkLD;EAhCE;;;;IAKI,aAAA;IACA,cAAA;IACA,mBAAA;IACA,iBAAA;I3DomLH;E2D5mLD;;IAYI,oBAAA;I3DomLH;E2DhnLD;;IAgBI,qBAAA;I3DomLH;E2D/lLD;IACE,WAAA;IACA,YAAA;IACA,sBAAA;I3DimLD;E2D7lLD;IACE,cAAA;I3D+lLD;EACF;A4D31LC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEE,cAAA;EACA,gBAAA;E5Dy3LH;A4Dv3LC;;;;;;;;;;;;;;;EACE,aAAA;E5Du4LH;AiC/4LD;E4BRE,gBAAA;EACA,mBAAA;EACA,oBAAA;E7D05LD;AiCj5LD;EACE,
 yBAAA;EjCm5LD;AiCj5LD;EACE,wBAAA;EjCm5LD;AiC34LD;EACE,0BAAA;EjC64LD;AiC34LD;EACE,2BAAA;EjC64LD;AiC34LD;EACE,oBAAA;EjC64LD;AiC34LD;E6BzBE,aAAA;EACA,oBAAA;EACA,mBAAA;EACA,+BAAA;EACA,WAAA;E9Du6LD;AiCz4LD;EACE,0BAAA;EACA,+BAAA;EjC24LD;AiCp4LD;EACE,iBAAA;EjCs4LD;A+Dx6LD;EACE,qBAAA;E/D06LD;A+Dp6LD;;;;ECdE,0BAAA;EhEw7LD;A+Dn6LD;;;;;;;;;;;;EAYE,0BAAA;E/Dq6LD;A+D95LD;EAAA;IChDE,2BAAA;IhEk9LC;EgEj9LD;IAAU,gBAAA;IhEo9LT;EgEn9LD;IAAU,+BAAA;IhEs9LT;EgEr9LD;;IACU,gCAAA;IhEw9LT;EACF;A+Dx6LD;EAAA;IAFI,2BAAA;I/D86LD;EACF;A+Dx6LD;EAAA;IAFI,4BAAA;I/D86LD;EACF;A+Dx6LD;EAAA;IAFI,kCAAA;I/D86LD;EACF;A+Dv6LD;EAAA;ICrEE,2BAAA;IhEg/LC;EgE/+LD;IAAU,gBAAA;IhEk/LT;EgEj/LD;IAAU,+BAAA;IhEo/LT;EgEn/LD;;IACU,gCAAA;IhEs/LT;EACF;A+Dj7LD;EAAA;IAFI,2BAAA;I/Du7LD;EACF;A+Dj7LD;EAAA;IAFI,4BAAA;I/Du7LD;EACF;A+Dj7LD;EAAA;IAFI,kCAAA;I/Du7LD;EACF;A+Dh7LD;EAAA;IC1FE,2BAAA;IhE8gMC;EgE7gMD;IAAU,gBAAA;IhEghMT;EgE/gMD;IAAU,+BAAA;IhEkhMT;EgEjhMD;;IACU,gCAAA;IhEohMT;EACF;A+D17LD;EAAA;IAFI,2BAAA;I/Dg8LD;EACF;A+D17LD;EAAA;IAFI,4BAAA;I
 /Dg8LD;EACF;A+D17LD;EAAA;IAFI,kCAAA;I/Dg8LD;EACF;A+Dz7LD;EAAA;IC/GE,2BAAA;IhE4iMC;EgE3iMD;IAAU,gBAAA;IhE8iMT;EgE7iMD;IAAU,+BAAA;IhEgjMT;EgE/iMD;;IACU,gCAAA;IhEkjMT;EACF;A+Dn8LD;EAAA;IAFI,2BAAA;I/Dy8LD;EACF;A+Dn8LD;EAAA;IAFI,4BAAA;I/Dy8LD;EACF;A+Dn8LD;EAAA;IAFI,kCAAA;I/Dy8LD;EACF;A+Dl8LD;EAAA;IC5HE,0BAAA;IhEkkMC;EACF;A+Dl8LD;EAAA;ICjIE,0BAAA;IhEukMC;EACF;A+Dl8LD;EAAA;ICtIE,0BAAA;IhE4kMC;EACF;A+Dl8LD;EAAA;IC3IE,0BAAA;IhEilMC;EACF;A+D/7LD;ECnJE,0BAAA;EhEqlMD;A+D57LD;EAAA;ICjKE,2BAAA;IhEimMC;EgEhmMD;IAAU,gBAAA;IhEmmMT;EgElmMD;IAAU,+BAAA;IhEqmMT;EgEpmMD;;IACU,gCAAA;IhEumMT;EACF;A+D18LD;EACE,0BAAA;E/D48LD;A+Dv8LD;EAAA;IAFI,2BAAA;I/D68LD;EACF;A+D38LD;EACE,0BAAA;E/D68LD;A+Dx8LD;EAAA;IAFI,4BAAA;I/D88LD;EACF;A+D58LD;EACE,0BAAA;E/D88LD;A+Dz8LD;EAAA;IAFI,kCAAA;I/D+8LD;EACF;A+Dx8LD;EAAA;ICpLE,0BAAA;IhEgoMC;EACF","file":"bootstrap.css","sourcesContent":["/*! normalize.css v3.0.2 | MIT License | git.io/normalize */\nhtml {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-
 size-adjust: 100%;\n}\nbody {\n  margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n  display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n  display: inline-block;\n  vertical-align: baseline;\n}\naudio:not([controls]) {\n  display: none;\n  height: 0;\n}\n[hidden],\ntemplate {\n  display: none;\n}\na {\n  background-color: transparent;\n}\na:active,\na:hover {\n  outline: 0;\n}\nabbr[title] {\n  border-bottom: 1px dotted;\n}\nb,\nstrong {\n  font-weight: bold;\n}\ndfn {\n  font-style: italic;\n}\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\nmark {\n  background: #ff0;\n  color: #000;\n}\nsmall {\n  font-size: 80%;\n}\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\nsup {\n  top: -0.5em;\n}\nsub {\n  bottom: -0.25em;\n}\nimg {\n  border: 0;\n}\nsvg:not(:root) {\n  overflow: hidden;\n}\nfigure {\n  margin: 1em 40px;\n}\nhr {\n  -moz-box-s
 izing: content-box;\n  box-sizing: content-box;\n  height: 0;\n}\npre {\n  overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\nbutton {\n  overflow: visible;\n}\nbutton,\nselect {\n  text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n  cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\ninput {\n  line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\ninput[type=\"search\"] {\n  -webkit-appearance: textfield;\n  -moz-box-sizing
 : content-box;\n  -webkit-box-sizing: content-box;\n  box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\nfieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n  border: 0;\n  padding: 0;\n}\ntextarea {\n  overflow: auto;\n}\noptgroup {\n  font-weight: bold;\n}\ntable {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\ntd,\nth {\n  padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n  *,\n  *:before,\n  *:after {\n    background: transparent !important;\n    color: #000 !important;\n    box-shadow: none !important;\n    text-shadow: none !important;\n  }\n  a,\n  a:visited {\n    text-decoration: underline;\n  }\n  a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n 
  a[href^=\"#\"]:after,\n  a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  pre,\n  blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  img {\n    max-width: 100% !important;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  select {\n    background: #fff !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .btn > .caret,\n  .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .label {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: 'Glyphicons Halflings';\n  src: url('../fonts/glyphicons-halflings-regular.eot')
 ;\n  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');\n}\n.glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: 'Glyphicons Halflings';\n  font-style: normal;\n  font-weight: normal;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n  content: \"\\2a\";\n}\n.glyphicon-plus:before {\n  content: \"\\2b\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n  content: \"\\20ac\";\n}\n.glyphicon-minus:before {\n  content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n  content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n  content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n  content: \"\\270f\";\n}\n.gly
 phicon-glass:before {\n  content: \"\\e001\";\n}\n.glyphicon-music:before {\n  content: \"\\e002\";\n}\n.glyphicon-search:before {\n  content: \"\\e003\";\n}\n.glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.glyphicon-star:before {\n  content: \"\\e006\";\n}\n.glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.glyphicon-user:before {\n  content: \"\\e008\";\n}\n.glyphicon-film:before {\n  content: \"\\e009\";\n}\n.glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.glyphicon-th:before {\n  content: \"\\e011\";\n}\n.glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.glyphicon-off:before {\n  content: \"\\e017\";\n}\n.glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.glyphicon-trash:before 
 {\n  content: \"\\e020\";\n}\n.glyphicon-home:before {\n  content: \"\\e021\";\n}\n.glyphicon-file:before {\n  content: \"\\e022\";\n}\n.glyphicon-time:before {\n  content: \"\\e023\";\n}\n.glyphicon-road:before {\n  content: \"\\e024\";\n}\n.glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.glyphicon-download:before {\n  content: \"\\e026\";\n}\n.glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.glyphicon-volum
 e-up:before {\n  content: \"\\e038\";\n}\n.glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.glyphicon-book:before {\n  content: \"\\e043\";\n}\n.glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.glyphicon-print:before {\n  content: \"\\e045\";\n}\n.glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.glyphicon-font:before {\n  content: \"\\e047\";\n}\n.glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.glyphicon-align-justify:before {\n  content: \"\\e055\";\n}
 \n.glyphicon-list:before {\n  content: \"\\e056\";\n}\n.glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.glyphicon-share:before {\n  content: \"\\e066\";\n}\n.glyphicon-check:before {\n  content: \"\\e067\";\n}\n.glyphicon-move:before {\n  content: \"\\e068\";\n}\n.glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.glyphicon-play:before {\n  content: \"\\e072\";\n}\n.glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.glyphicon-stop:before {\n  conte
 nt: \"\\e074\";\n}\n.glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.glyphicon-arrow-left:before {\
 n  content: \"\\e091\";\n}\n.glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.glyphicon-random:before {\n  content: \"\\e110\";\n}\n.glyphicon-comment:before {\n  content: \"\\e111
 \";\n}\n.glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.glyphicon-hand-left:before {\n  content: \"\\
 e128\";\n}\n.glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.glyphicon-link:before {\n  content: \"\\e144\";\n}\n.glyphicon-phone:before {\n  content: \"\\e1
 45\";\n}\n.glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.glyphicon-log-out:before {\n 
  content: \"\\e163\";\n}\n.glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.glyphicon-record:before {\n  content: \"\\e165\";\n}\n.glyphicon-save:before {\n  content: \"\\e166\";\n}\n.glyphicon-open:before {\n  content: \"\\e167\";\n}\n.glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.glyphicon-import:before {\n  content: \"\\e169\";\n}\n.glyphicon-export:before {\n  content: \"\\e170\";\n}\n.glyphicon-send:before {\n  content: \"\\e171\";\n}\n.glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.glyphicon-header:before {\n  content: \"\\e180\";\n}\n.gl
 yphicon-compressed:before {\n  content: \"\\e181\";\n}\n.glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}
 \n.glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n* {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\n*:before,\n*:after {\n  -webkit-box-sizing: border-box;\n  -moz-box-sizing: border-box;\n  box-sizing: border-box;\n}\nhtml {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.42857143;\n  color: #333333;\n  background-color: #ffffff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\na {\n  color: #337ab7;\n  text-decoration: none;\n}\na:hover,\na:focus {\n  color: #23527c;\n  text-decoration: underline;\n}\na:focus {\n  outline: thin dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\nfigure {\n  margin: 0;\n}\nimg {\n  vertica
 l-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.img-rounded {\n  border-radius: 6px;\n}\n.img-thumbnail {\n  padding: 4px;\n  line-height: 1.42857143;\n  background-color: #ffffff;\n  border: 1px solid #dddddd;\n  border-radius: 4px;\n  -webkit-transition: all 0.2s ease-in-out;\n  -o-transition: all 0.2s ease-in-out;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.img-circle {\n  border-radius: 50%;\n}\nhr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid #eeeeee;\n}\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  margin: -1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;
 \n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n  font-weight: normal;\n  line-height: 1;\n  color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n  font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .sm
 all,\n.h5 .small,\nh6 .small,\n.h6 .small {\n  font-size: 75%;\n}\nh1,\n.h1 {\n  font-size: 36px;\n}\nh2,\n.h2 {\n  font-size: 30px;\n}\nh3,\n.h3 {\n  font-size: 24px;\n}\nh4,\n.h4 {\n  font-size: 18px;\n}\nh5,\n.h5 {\n  font-size: 14px;\n}\nh6,\n.h6 {\n  font-size: 12px;\n}\np {\n  margin: 0 0 10px;\n}\n.lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .lead {\n    font-size: 21px;\n  }\n}\nsmall,\n.small {\n  font-size: 85%;\n}\nmark,\n.mark {\n  background-color: #fcf8e3;\n  padding: .2em;\n}\n.text-left {\n  text-align: left;\n}\n.text-right {\n  text-align: right;\n}\n.text-center {\n  text-align: center;\n}\n.text-justify {\n  text-align: justify;\n}\n.text-nowrap {\n  white-space: nowrap;\n}\n.text-lowercase {\n  text-transform: lowercase;\n}\n.text-uppercase {\n  text-transform: uppercase;\n}\n.text-capitalize {\n  text-transform: capitalize;\n}\n.text-muted {\n  color: #777777;\n}\n.text-primary 
 {\n  color: #337ab7;\n}\na.text-primary:hover {\n  color: #286090;\n}\n.text-success {\n  color: #3c763d;\n}\na.text-success:hover {\n  color: #2b542c;\n}\n.text-info {\n  color: #31708f;\n}\na.text-info:hover {\n  color: #245269;\n}\n.text-warning {\n  color: #8a6d3b;\n}\na.text-warning:hover {\n  color: #66512c;\n}\n.text-danger {\n  color: #a94442;\n}\na.text-danger:hover {\n  color: #843534;\n}\n.bg-primary {\n  color: #fff;\n  background-color: #337ab7;\n}\na.bg-primary:hover {\n  background-color: #286090;\n}\n.bg-success {\n  background-color: #dff0d8;\n}\na.bg-success:hover {\n  background-color: #c1e2b3;\n}\n.bg-info {\n  background-color: #d9edf7;\n}\na.bg-info:hover {\n  background-color: #afd9ee;\n}\n.bg-warning {\n  background-color: #fcf8e3;\n}\na.bg-warning:hover {\n  background-color: #f7ecb5;\n}\n.bg-danger {\n  background-color: #f2dede;\n}\na.bg-danger:hover {\n  background-color: #e4b9b9;\n}\n.page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  borde
 r-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n  margin-bottom: 0;\n}\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.list-inline > li {\n  display: inline-block;\n  padding-left: 5px;\n  padding-right: 5px;\n}\ndl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\ndt,\ndd {\n  line-height: 1.42857143;\n}\ndt {\n  font-weight: bold;\n}\ndd {\n  margin-left: 0;\n}\n@media (min-width: 768px) {\n  .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\nabbr[title],\nabbr[data-original-title] {\n  cursor: help;\n  border-bottom: 1px dotted #777777;\n}\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\nblockquote {\n  paddi
 ng: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n  margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.42857143;\n  color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n  content: '\\2014 \\00A0';\n}\n.blockquote-reverse,\nblockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  border-right: 5px solid #eeeeee;\n  border-left: 0;\n  text-align: right;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n  content: '';\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-r
 ight small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n  content: '\\00A0 \\2014';\n}\naddress {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\nkbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #ffffff;\n  background-color: #333333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: bold;\n  box-shadow: none;\n}\npre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.42857143;\n  word-break: break-all;\n  word-wrap: break-word;\n  color: #333333;\n  background-color: #f5f5f5;\n  border: 1px solid #cccccc;\n  border-radius: 4px;\n}\npre code {\n  padding: 0;\
 n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.container {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n@media (min-width: 768px) {\n  .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .container {\n    width: 1170px;\n  }\n}\n.container-fluid {\n  margin-right: auto;\n  margin-left: auto;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.row {\n  margin-left: -15px;\n  margin-right: -15px;\n}\n.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-l
 g-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {\n  float: left;\n}\n.col-xs-12 {\n  width: 100%;\n}\n.col-xs-11 {\n  width: 91.66666667%;\n}\n.col-xs-10 {\n  width: 83.33333333%;\n}\n.col-xs-9 {\n  width: 75%;\n}\n.col-xs-8 {\n  width: 66.66666667%;\n}\n.col-xs-7 {\n  width: 58.33333333%;\n}\n.col-xs-6 {\n  width: 50%;\n}\n.col-xs-5 {\n  width: 41.66666667%;\n}\n.col-xs-4 {\n  width: 33.33333333%;\n}\n.col-xs-3 {\n  width: 25%;\n}\n.col-xs-2 {\n  width: 16.66666667%;\n}\n.col-xs-1 {\n  width: 8.33333333%;\n}\n.col-xs-pull-12 {\n  right: 100%;\n}\n.col-xs-pull-11 {\n  rig
 ht: 91.66666667%;\n}\n.col-xs-pull-10 {\n  right: 83.33333333%;\n}\n.col-xs-pull-9 {\n  right: 75%;\n}\n.col-xs-pull-8 {\n  right: 66.66666667%;\n}\n.col-xs-pull-7 {\n  right: 58.33333333%;\n}\n.col-xs-pull-6 {\n  right: 50%;\n}\n.col-xs-pull-5 {\n  right: 41.66666667%;\n}\n.col-xs-pull-4 {\n  right: 33.33333333%;\n}\n.col-xs-pull-3 {\n  right: 25%;\n}\n.col-xs-pull-2 {\n  right: 16.66666667%;\n}\n.col-xs-pull-1 {\n  right: 8.33333333%;\n}\n.col-xs-pull-0 {\n  right: auto;\n}\n.col-xs-push-12 {\n  left: 100%;\n}\n.col-xs-push-11 {\n  left: 91.66666667%;\n}\n.col-xs-push-10 {\n  left: 83.33333333%;\n}\n.col-xs-push-9 {\n  left: 75%;\n}\n.col-xs-push-8 {\n  left: 66.66666667%;\n}\n.col-xs-push-7 {\n  left: 58.33333333%;\n}\n.col-xs-push-6 {\n  left: 50%;\n}\n.col-xs-push-5 {\n  left: 41.66666667%;\n}\n.col-xs-push-4 {\n  left: 33.33333333%;\n}\n.col-xs-push-3 {\n  left: 25%;\n}\n.col-xs-push-2 {\n  left: 16.66666667%;\n}\n.col-xs-push-1 {\n  left: 8.33333333%;\n}\n.col-xs-push-0 {\n  
 left: auto;\n}\n.col-xs-offset-12 {\n  margin-left: 100%;\n}\n.col-xs-offset-11 {\n  margin-left: 91.66666667%;\n}\n.col-xs-offset-10 {\n  margin-left: 83.33333333%;\n}\n.col-xs-offset-9 {\n  margin-left: 75%;\n}\n.col-xs-offset-8 {\n  margin-left: 66.66666667%;\n}\n.col-xs-offset-7 {\n  margin-left: 58.33333333%;\n}\n.col-xs-offset-6 {\n  margin-left: 50%;\n}\n.col-xs-offset-5 {\n  margin-left: 41.66666667%;\n}\n.col-xs-offset-4 {\n  margin-left: 33.33333333%;\n}\n.col-xs-offset-3 {\n  margin-left: 25%;\n}\n.col-xs-offset-2 {\n  margin-left: 16.66666667%;\n}\n.col-xs-offset-1 {\n  margin-left: 8.33333333%;\n}\n.col-xs-offset-0 {\n  margin-left: 0%;\n}\n@media (min-width: 768px) {\n  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {\n    float: left;\n  }\n  .col-sm-12 {\n    width: 100%;\n  }\n  .col-sm-11 {\n    width: 91.66666667%;\n  }\n  .col-sm-10 {\n    width: 83.33333333%;\n  }\n  .col-sm-9
  {\n    width: 75%;\n  }\n  .col-sm-8 {\n    width: 66.66666667%;\n  }\n  .col-sm-7 {\n    width: 58.33333333%;\n  }\n  .col-sm-6 {\n    width: 50%;\n  }\n  .col-sm-5 {\n    width: 41.66666667%;\n  }\n  .col-sm-4 {\n    width: 33.33333333%;\n  }\n  .col-sm-3 {\n    width: 25%;\n  }\n  .col-sm-2 {\n    width: 16.66666667%;\n  }\n  .col-sm-1 {\n    width: 8.33333333%;\n  }\n  .col-sm-pull-12 {\n    right: 100%;\n  }\n  .col-sm-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-sm-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-sm-pull-9 {\n    right: 75%;\n  }\n  .col-sm-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-sm-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-sm-pull-6 {\n    right: 50%;\n  }\n  .col-sm-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-sm-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-sm-pull-3 {\n    right: 25%;\n  }\n  .col-sm-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-sm-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-sm-pull-0 {\n    right: auto;\n  }\n
   .col-sm-push-12 {\n    left: 100%;\n  }\n  .col-sm-push-11 {\n    left: 91.66666667%;\n  }\n  .col-sm-push-10 {\n    left: 83.33333333%;\n  }\n  .col-sm-push-9 {\n    left: 75%;\n  }\n  .col-sm-push-8 {\n    left: 66.66666667%;\n  }\n  .col-sm-push-7 {\n    left: 58.33333333%;\n  }\n  .col-sm-push-6 {\n    left: 50%;\n  }\n  .col-sm-push-5 {\n    left: 41.66666667%;\n  }\n  .col-sm-push-4 {\n    left: 33.33333333%;\n  }\n  .col-sm-push-3 {\n    left: 25%;\n  }\n  .col-sm-push-2 {\n    left: 16.66666667%;\n  }\n  .col-sm-push-1 {\n    left: 8.33333333%;\n  }\n  .col-sm-push-0 {\n    left: auto;\n  }\n  .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n  .col-sm-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-sm-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .col-sm-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-sm-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-sm-offset-6 {\n    margin-left: 50%;\n  }
 \n  .col-sm-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-sm-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .col-sm-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-sm-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n}\n@media (min-width: 992px) {\n  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {\n    float: left;\n  }\n  .col-md-12 {\n    width: 100%;\n  }\n  .col-md-11 {\n    width: 91.66666667%;\n  }\n  .col-md-10 {\n    width: 83.33333333%;\n  }\n  .col-md-9 {\n    width: 75%;\n  }\n  .col-md-8 {\n    width: 66.66666667%;\n  }\n  .col-md-7 {\n    width: 58.33333333%;\n  }\n  .col-md-6 {\n    width: 50%;\n  }\n  .col-md-5 {\n    width: 41.66666667%;\n  }\n  .col-md-4 {\n    width: 33.33333333%;\n  }\n  .col-md-3 {\n    width: 25%;\n  }\n  .col-md-2 {\n    width: 16.66666667%;
 \n  }\n  .col-md-1 {\n    width: 8.33333333%;\n  }\n  .col-md-pull-12 {\n    right: 100%;\n  }\n  .col-md-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-md-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-md-pull-9 {\n    right: 75%;\n  }\n  .col-md-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-md-pull-7 {\n    right: 58.33333333%;\n  }\n  .col-md-pull-6 {\n    right: 50%;\n  }\n  .col-md-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-md-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-md-pull-3 {\n    right: 25%;\n  }\n  .col-md-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-md-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-md-pull-0 {\n    right: auto;\n  }\n  .col-md-push-12 {\n    left: 100%;\n  }\n  .col-md-push-11 {\n    left: 91.66666667%;\n  }\n  .col-md-push-10 {\n    left: 83.33333333%;\n  }\n  .col-md-push-9 {\n    left: 75%;\n  }\n  .col-md-push-8 {\n    left: 66.66666667%;\n  }\n  .col-md-push-7 {\n    left: 58.33333333%;\n  }\n  .col-md-push-6 {\n    left: 50%;\n 
  }\n  .col-md-push-5 {\n    left: 41.66666667%;\n  }\n  .col-md-push-4 {\n    left: 33.33333333%;\n  }\n  .col-md-push-3 {\n    left: 25%;\n  }\n  .col-md-push-2 {\n    left: 16.66666667%;\n  }\n  .col-md-push-1 {\n    left: 8.33333333%;\n  }\n  .col-md-push-0 {\n    left: auto;\n  }\n  .col-md-offset-12 {\n    margin-left: 100%;\n  }\n  .col-md-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-md-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .col-md-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-md-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .col-md-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-md-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .col-md-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-md-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-md-offset-0 {\n    margin-lef
 t: 0%;\n  }\n}\n@media (min-width: 1200px) {\n  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {\n    float: left;\n  }\n  .col-lg-12 {\n    width: 100%;\n  }\n  .col-lg-11 {\n    width: 91.66666667%;\n  }\n  .col-lg-10 {\n    width: 83.33333333%;\n  }\n  .col-lg-9 {\n    width: 75%;\n  }\n  .col-lg-8 {\n    width: 66.66666667%;\n  }\n  .col-lg-7 {\n    width: 58.33333333%;\n  }\n  .col-lg-6 {\n    width: 50%;\n  }\n  .col-lg-5 {\n    width: 41.66666667%;\n  }\n  .col-lg-4 {\n    width: 33.33333333%;\n  }\n  .col-lg-3 {\n    width: 25%;\n  }\n  .col-lg-2 {\n    width: 16.66666667%;\n  }\n  .col-lg-1 {\n    width: 8.33333333%;\n  }\n  .col-lg-pull-12 {\n    right: 100%;\n  }\n  .col-lg-pull-11 {\n    right: 91.66666667%;\n  }\n  .col-lg-pull-10 {\n    right: 83.33333333%;\n  }\n  .col-lg-pull-9 {\n    right: 75%;\n  }\n  .col-lg-pull-8 {\n    right: 66.66666667%;\n  }\n  .col-lg-pull-7 {\n    right
 : 58.33333333%;\n  }\n  .col-lg-pull-6 {\n    right: 50%;\n  }\n  .col-lg-pull-5 {\n    right: 41.66666667%;\n  }\n  .col-lg-pull-4 {\n    right: 33.33333333%;\n  }\n  .col-lg-pull-3 {\n    right: 25%;\n  }\n  .col-lg-pull-2 {\n    right: 16.66666667%;\n  }\n  .col-lg-pull-1 {\n    right: 8.33333333%;\n  }\n  .col-lg-pull-0 {\n    right: auto;\n  }\n  .col-lg-push-12 {\n    left: 100%;\n  }\n  .col-lg-push-11 {\n    left: 91.66666667%;\n  }\n  .col-lg-push-10 {\n    left: 83.33333333%;\n  }\n  .col-lg-push-9 {\n    left: 75%;\n  }\n  .col-lg-push-8 {\n    left: 66.66666667%;\n  }\n  .col-lg-push-7 {\n    left: 58.33333333%;\n  }\n  .col-lg-push-6 {\n    left: 50%;\n  }\n  .col-lg-push-5 {\n    left: 41.66666667%;\n  }\n  .col-lg-push-4 {\n    left: 33.33333333%;\n  }\n  .col-lg-push-3 {\n    left: 25%;\n  }\n  .col-lg-push-2 {\n    left: 16.66666667%;\n  }\n  .col-lg-push-1 {\n    left: 8.33333333%;\n  }\n  .col-lg-push-0 {\n    left: auto;\n  }\n  .col-lg-offset-12 {\n    margin-le
 ft: 100%;\n  }\n  .col-lg-offset-11 {\n    margin-left: 91.66666667%;\n  }\n  .col-lg-offset-10 {\n    margin-left: 83.33333333%;\n  }\n  .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .col-lg-offset-8 {\n    margin-left: 66.66666667%;\n  }\n  .col-lg-offset-7 {\n    margin-left: 58.33333333%;\n  }\n  .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .col-lg-offset-5 {\n    margin-left: 41.66666667%;\n  }\n  .col-lg-offset-4 {\n    margin-left: 33.33333333%;\n  }\n  .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .col-lg-offset-2 {\n    margin-left: 16.66666667%;\n  }\n  .col-lg-offset-1 {\n    margin-left: 8.33333333%;\n  }\n  .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n}\ntable {\n  background-color: transparent;\n}\ncaption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: #777777;\n  text-align: left;\n}\nth {\n  text-align: left;\n}\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.table > thead > tr > th,\n.table > tbody > tr > th,\n.tab
 le > tfoot > tr > th,\n.table > thead > tr > td,\n.table > tbody > tr > td,\n.table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.42857143;\n  vertical-align: top;\n  border-top: 1px solid #dddddd;\n}\n.table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dddddd;\n}\n.table > caption + thead > tr:first-child > th,\n.table > colgroup + thead > tr:first-child > th,\n.table > thead:first-child > tr:first-child > th,\n.table > caption + thead > tr:first-child > td,\n.table > colgroup + thead > tr:first-child > td,\n.table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.table > tbody + tbody {\n  border-top: 2px solid #dddddd;\n}\n.table .table {\n  background-color: #ffffff;\n}\n.table-condensed > thead > tr > th,\n.table-condensed > tbody > tr > th,\n.table-condensed > tfoot > tr > th,\n.table-condensed > thead > tr > td,\n.table-condensed > tbody > tr > td,\n.table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.table-border
 ed {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > tbody > tr > th,\n.table-bordered > tfoot > tr > th,\n.table-bordered > thead > tr > td,\n.table-bordered > tbody > tr > td,\n.table-bordered > tfoot > tr > td {\n  border: 1px solid #dddddd;\n}\n.table-bordered > thead > tr > th,\n.table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n

<TRUNCATED>

[02/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/storm.svg
----------------------------------------------------------------------
diff --git a/docs/images/storm.svg b/docs/images/storm.svg
deleted file mode 100644
index 2f1dae0..0000000
--- a/docs/images/storm.svg
+++ /dev/null
@@ -1,1326 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="1025.6578"
-   height="372.9339"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="storm.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="386.38"
-       y1="81.633003"
-       gradientTransform="translate(28.11,-1.7569)"
-       x2="433.48999"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="130.03"
-       id="linearGradient3686" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="244.60001"
-       y1="81.633003"
-       gradientTransform="translate(-28.11,1.7569)"
-       x2="288.82001"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="178.42999"
-       id="linearGradient3684" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       color-interpolation-filters="sRGB"
-       height="3.1508999"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       id="filter5371-4">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-8" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-9"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-6" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329-0"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331-1" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-3"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-5" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="342.78464"
-     inkscape:cy="129.99655"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1151"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(291.57885,-9.0955605)">
-    <g
-       id="g3879"
-       inkscape:export-filename="/Users/evans/Desktop/MT Storm TechPulse/Tuples.png"
-       inkscape:export-xdpi="861.47998"
-       inkscape:export-ydpi="861.47998"
-       transform="translate(-5.9210526,-0.65789474)">
-      <rect
-         y="202.36218"
-         x="16.428572"
-         height="41.785706"
-         width="723.57141"
-         id="rect3806"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <g
-         style="fill:#ffffff;fill-opacity:1"
-         id="g3818">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3808"
-           width="692.14288"
-           height="3.2142835"
-           x="25.714285"
-           y="234.14789" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3816"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.4794213,0,0,1,-359.95185,-0.72859745)" />
-      </g>
-      <g
-         id="g3826">
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3022"
-           width="90.913727"
-           height="19.697975"
-           x="23.233509"
-           y="206.8645" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="41.531769"
-           y="222.48097"
-           id="text3822"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3824"
-             x="41.531769"
-             y="222.48097">Tuple</tspan></text>
-      </g>
-      <g
-         transform="translate(103,-1)"
-         id="g3831">
-        <rect
-           y="206.8645"
-           x="23.233509"
-           height="19.697975"
-           width="90.913727"
-           id="rect3833"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3835"
-           y="222.48097"
-           x="41.531769"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="222.48097"
-             x="41.531769"
-             id="tspan3837"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3839"
-         transform="translate(203,-1)">
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3841"
-           width="90.913727"
-           height="19.697975"
-           x="23.233509"
-           y="206.8645" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="41.531769"
-           y="222.48097"
-           id="text3843"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3845"
-             x="41.531769"
-             y="222.48097">Tuple</tspan></text>
-      </g>
-      <g
-         transform="translate(304,-1)"
-         id="g3847">
-        <rect
-           y="206.8645"
-           x="23.233509"
-           height="19.697975"
-           width="90.913727"
-           id="rect3849"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3851"
-           y="222.48097"
-           x="41.531769"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="222.48097"
-             x="41.531769"
-             id="tspan3853"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3855"
-         transform="translate(406,-2)">
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3857"
-           width="90.913727"
-           height="19.697975"
-           x="23.233509"
-           y="206.8645" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="41.531769"
-           y="222.48097"
-           id="text3859"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3861"
-             x="41.531769"
-             y="222.48097">Tuple</tspan></text>
-      </g>
-      <g
-         transform="translate(508,-1)"
-         id="g3863">
-        <rect
-           y="206.8645"
-           x="23.233509"
-           height="19.697975"
-           width="90.913727"
-           id="rect3865"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3867"
-           y="222.48097"
-           x="41.531769"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="222.48097"
-             x="41.531769"
-             id="tspan3869"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3871"
-         transform="translate(606,-2)">
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3873"
-           width="90.913727"
-           height="19.697975"
-           x="23.233509"
-           y="206.8645" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="41.531769"
-           y="222.48097"
-           id="text3875"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3877"
-             x="41.531769"
-             y="222.48097">Tuple</tspan></text>
-      </g>
-    </g>
-    <g
-       id="g5405"
-       transform="matrix(0.87834527,0,0,0.87771486,49.417291,-246.19451)">
-      <rect
-         y="294.36218"
-         x="127"
-         height="160"
-         width="160"
-         id="rect3913"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         transform="translate(52,51)"
-         d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-         sodipodi:ry="67"
-         sodipodi:rx="67"
-         sodipodi:cy="321.36218"
-         sodipodi:cx="156"
-         id="path3915"
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:nodetypes="cccccccc"
-         inkscape:connector-curvature="0"
-         id="path3921"
-         d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-         inkscape:transform-center-y="21.9744"
-         inkscape:transform-center-x="12.504614"
-         style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-    </g>
-    <g
-       id="g5398"
-       transform="matrix(0.87802741,0,0,0.87807013,-306.15711,-290.81069)">
-      <rect
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3935"
-         width="160"
-         height="160"
-         x="362.52631"
-         y="345.02008" />
-      <rect
-         transform="matrix(-0.00975266,0.99995244,-0.9999666,-0.00817331,0,0)"
-         y="-492.97839"
-         x="447.45413"
-         height="21.696198"
-         width="24.347038"
-         id="rect3940"
-         style="fill:url(#linearGradient5403);fill-opacity:1;stroke:none" />
-      <path
-         sodipodi:nodetypes="cccccccccccc"
-         inkscape:connector-curvature="0"
-         id="rect3937"
-         d="m 393.00281,403.51244 41.45112,-0.39622 0.88112,-14.12176 -17.03772,-1.04253 0.3336,-10.06427 43.6265,0.74442 -0.37641,10.73252 -14.97353,-0.0513 -0.39461,14.50865 c 41.37718,-0.98045 45.3577,0.18812 43.51217,47.03851 l -24.58416,0.68261 c 0.38224,-23.64611 8.10402,-20.71225 -73.3201,-19.97252"
-         style="fill:none;stroke:#000000;stroke-width:5.34683466;stroke-miterlimit:4;stroke-opacity:1" />
-    </g>
-    <g
-       id="g6209"
-       transform="translate(-5.9210526,-99.342105)">
-      <rect
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         id="rect6042"
-         width="723.57141"
-         height="41.785706"
-         x="16.428572"
-         y="256.96744" />
-      <g
-         transform="translate(-2.1052601e-8,54.605263)"
-         id="g6044"
-         style="fill:#ffffff;fill-opacity:1">
-        <rect
-           y="234.14789"
-           x="25.714285"
-           height="3.2142835"
-           width="692.14288"
-           id="rect6046"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.4794213,0,0,1,-359.95185,-0.72859745)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path6048"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-      </g>
-      <rect
-         style="fill:#f89800;fill-opacity:1;stroke:none"
-         id="rect6052"
-         width="90.913727"
-         height="19.697975"
-         x="23.233509"
-         y="261.46976" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="41.531769"
-         y="277.08624"
-         id="text6054"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6056"
-           x="41.531769"
-           y="277.08624">Tuple</tspan></text>
-      <rect
-         y="260.46976"
-         x="126.23351"
-         height="19.697975"
-         width="90.913727"
-         id="rect6060"
-         style="fill:#f89800;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6062"
-         y="276.08624"
-         x="144.53177"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="276.08624"
-           x="144.53177"
-           id="tspan6064"
-           sodipodi:role="line">Tuple</tspan></text>
-      <rect
-         style="fill:#f89800;fill-opacity:1;stroke:none"
-         id="rect6068"
-         width="90.913727"
-         height="19.697975"
-         x="226.23351"
-         y="260.46976" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="244.53177"
-         y="276.08624"
-         id="text6070"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6072"
-           x="244.53177"
-           y="276.08624">Tuple</tspan></text>
-      <rect
-         y="260.46976"
-         x="327.23352"
-         height="19.697975"
-         width="90.913727"
-         id="rect6076"
-         style="fill:#f89800;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6078"
-         y="276.08624"
-         x="345.53177"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="276.08624"
-           x="345.53177"
-           id="tspan6080"
-           sodipodi:role="line">Tuple</tspan></text>
-      <rect
-         style="fill:#f89800;fill-opacity:1;stroke:none"
-         id="rect6084"
-         width="90.913727"
-         height="19.697975"
-         x="429.23352"
-         y="259.46976" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="447.53177"
-         y="275.08624"
-         id="text6086"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6088"
-           x="447.53177"
-           y="275.08624">Tuple</tspan></text>
-      <rect
-         y="260.46976"
-         x="531.23352"
-         height="19.697975"
-         width="90.913727"
-         id="rect6092"
-         style="fill:#f89800;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6094"
-         y="276.08624"
-         x="549.53174"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="276.08624"
-           x="549.53174"
-           id="tspan6096"
-           sodipodi:role="line">Tuple</tspan></text>
-      <rect
-         style="fill:#f89800;fill-opacity:1;stroke:none"
-         id="rect6100"
-         width="90.913727"
-         height="19.697975"
-         x="629.23352"
-         y="259.46976" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="647.53174"
-         y="275.08624"
-         id="text6102"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6104"
-           x="647.53174"
-           y="275.08624">Tuple</tspan></text>
-    </g>
-    <g
-       id="g6387"
-       transform="translate(292.76316,-204.60526)">
-      <rect
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         id="rect6238"
-         width="406.46616"
-         height="41.785706"
-         x="15.112782"
-         y="309.599" />
-      <rect
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         id="rect6242"
-         width="384.90604"
-         height="3.2142835"
-         x="24.398497"
-         y="341.3847" />
-      <path
-         sodipodi:type="star"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         id="path6244"
-         sodipodi:sides="3"
-         sodipodi:cx="731.51184"
-         sodipodi:cy="237.06165"
-         sodipodi:r1="6.3856277"
-         sodipodi:r2="3.1928139"
-         sodipodi:arg1="0.057080782"
-         sodipodi:arg2="1.1042783"
-         inkscape:flatsided="true"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-         inkscape:transform-center-x="-2.1245453"
-         inkscape:transform-center-y="-0.18214936"
-         transform="matrix(1.4794213,0,0,1,-675.08343,105.85035)" />
-      <rect
-         style="fill:#00a3d8;fill-opacity:1;stroke:none"
-         id="rect6248"
-         width="90.913727"
-         height="19.697975"
-         x="21.917721"
-         y="314.10132" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="40.215977"
-         y="329.7178"
-         id="text6250"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6252"
-           x="40.215977"
-           y="329.7178">Tuple</tspan></text>
-      <rect
-         y="313.10132"
-         x="124.91772"
-         height="19.697975"
-         width="90.913727"
-         id="rect6256"
-         style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6258"
-         y="328.7178"
-         x="143.21599"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="328.7178"
-           x="143.21599"
-           id="tspan6260"
-           sodipodi:role="line">Tuple</tspan></text>
-      <rect
-         style="fill:#00a3d8;fill-opacity:1;stroke:none"
-         id="rect6264"
-         width="90.913727"
-         height="19.697975"
-         x="224.91772"
-         y="313.10132" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="243.21599"
-         y="328.7178"
-         id="text6266"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6268"
-           x="243.21599"
-           y="328.7178">Tuple</tspan></text>
-      <rect
-         y="313.10132"
-         x="325.91772"
-         height="19.697975"
-         width="90.913727"
-         id="rect6272"
-         style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6274"
-         y="328.7178"
-         x="344.21597"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="328.7178"
-           x="344.21597"
-           id="tspan6276"
-           sodipodi:role="line">Tuple</tspan></text>
-    </g>
-    <g
-       id="g6428"
-       transform="translate(292.10526,-351.31579)">
-      <rect
-         y="362.88846"
-         x="15.112782"
-         height="41.785706"
-         width="305.80826"
-         id="rect6357"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <rect
-         y="394.67416"
-         x="24.398497"
-         height="3.2142835"
-         width="284.24814"
-         id="rect6359"
-         style="fill:#ffffff;fill-opacity:1;stroke:none" />
-      <path
-         transform="matrix(1.4794213,0,0,1,-774.42554,159.13982)"
-         inkscape:transform-center-y="-0.18214936"
-         inkscape:transform-center-x="-2.1245453"
-         d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="true"
-         sodipodi:arg2="1.1042783"
-         sodipodi:arg1="0.057080782"
-         sodipodi:r2="3.1928139"
-         sodipodi:r1="6.3856277"
-         sodipodi:cy="237.06165"
-         sodipodi:cx="731.51184"
-         sodipodi:sides="3"
-         id="path6361"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         sodipodi:type="star" />
-      <rect
-         y="367.39078"
-         x="21.917721"
-         height="19.697975"
-         width="90.913727"
-         id="rect6363"
-         style="fill:#00a300;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6365"
-         y="383.00726"
-         x="40.215977"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="383.00726"
-           x="40.215977"
-           id="tspan6367"
-           sodipodi:role="line">Tuple</tspan></text>
-      <rect
-         style="fill:#00a300;fill-opacity:1;stroke:none"
-         id="rect6369"
-         width="90.913727"
-         height="19.697975"
-         x="124.91772"
-         y="366.39078" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="143.21599"
-         y="382.00726"
-         id="text6371"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6373"
-           x="143.21599"
-           y="382.00726">Tuple</tspan></text>
-      <rect
-         y="366.39078"
-         x="224.91772"
-         height="19.697975"
-         width="90.913727"
-         id="rect6375"
-         style="fill:#00a300;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6377"
-         y="382.00726"
-         x="243.21599"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="382.00726"
-           x="243.21599"
-           id="tspan6379"
-           sodipodi:role="line">Tuple</tspan></text>
-    </g>
-    <g
-       id="g6442"
-       transform="translate(294.07894,-361.18421)">
-      <rect
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         id="rect6404"
-         width="305.80826"
-         height="41.785706"
-         x="13.139097"
-         y="418.80951" />
-      <rect
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         id="rect6406"
-         width="284.24814"
-         height="3.2142835"
-         x="22.424812"
-         y="450.59521" />
-      <path
-         sodipodi:type="star"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         id="path6408"
-         sodipodi:sides="3"
-         sodipodi:cx="731.51184"
-         sodipodi:cy="237.06165"
-         sodipodi:r1="6.3856277"
-         sodipodi:r2="3.1928139"
-         sodipodi:arg1="0.057080782"
-         sodipodi:arg2="1.1042783"
-         inkscape:flatsided="true"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-         inkscape:transform-center-x="-2.1245453"
-         inkscape:transform-center-y="-0.18214936"
-         transform="matrix(1.4794213,0,0,1,-776.39922,215.06087)" />
-      <rect
-         style="fill:#de0707;fill-opacity:1;stroke:none"
-         id="rect6410"
-         width="90.913727"
-         height="19.697975"
-         x="19.944036"
-         y="423.31183" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="38.242294"
-         y="438.92831"
-         id="text6412"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6414"
-           x="38.242294"
-           y="438.92831">Tuple</tspan></text>
-      <rect
-         y="422.31183"
-         x="122.94403"
-         height="19.697975"
-         width="90.913727"
-         id="rect6416"
-         style="fill:#de0707;fill-opacity:1;stroke:none" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text6418"
-         y="437.92831"
-         x="141.24231"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="437.92831"
-           x="141.24231"
-           id="tspan6420"
-           sodipodi:role="line">Tuple</tspan></text>
-      <rect
-         style="fill:#de0707;fill-opacity:1;stroke:none"
-         id="rect6422"
-         width="90.913727"
-         height="19.697975"
-         x="222.94405"
-         y="422.31183" />
-      <text
-         xml:space="preserve"
-         style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="241.24231"
-         y="437.92831"
-         id="text6424"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan6426"
-           x="241.24231"
-           y="437.92831">Tuple</tspan></text>
-    </g>
-    <g
-       id="g4196"
-       transform="translate(11.842105,11.868421)"
-       inkscape:export-filename="/Users/evans/Desktop/MT Storm TechPulse/ZooKeeper.png"
-       inkscape:export-xdpi="861.47998"
-       inkscape:export-ydpi="861.47998">
-      <rect
-         y="-1.016763"
-         x="-151.66487"
-         height="140.49123"
-         width="140.48439"
-         id="rect4088"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.51219511;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <image
-         width="93.07209"
-         height="132.57602"
-         xlink:href="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wAARCBQIDhADASIA AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3 ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx BhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElK U1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3 uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD3+iii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKK
 KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiop7iC1iMtx NHDGOrSMFA/E1zOo/EvwXpRZbrxJYbl6rDJ5p/JM0AdXRXk+oftCeDrQEWkeo3rdvLhCKfxYg/pX Kah+0rKSV03w2ijs9zck/wDjqqP50AfQdFfKt9+0D41uifs50+zB6eVb7iP++ya5i9+KPjfUARN4 lv1B6iFxF/6ABQB9oMwVSzEADqT2rJvPFPh7TwTea7ptvjqJbpFP5E18R3eq6jf5N5qF1ck9fOmZ 8/map0AfZN38XPAdkD5niO2cjtCryZ/75U1h3P7QHgeDPlyahc/9crbGf++iK+YbXRdUvU32mm3l wn96KBnH6CtW08A+Kr1d0OiXQ
 H/TUCL/ANCIp8rYro9uuf2k9DTP2XQtRl/66uifyLVj3P7S1wSf svhiJB2Mt4W/QIK89tPhP4suTiSzgtveadf/AGXNaUPwW19pB519p0adyruxH4bR/Oq5Jdg5kbVx +0d4ocEW+laTF7skjn/0MVlz/H7xzLnZPYQ/9c7UH/0Imri/A5yPn8QID3AtM/8As9aFt8E9LVf9 K1e7kb1iRUH65p+ykLnRyU/xq+IE/wDzHyg9I7WFf/ZM1ny/FPxzNnd4mvx/uOF/kBXo6/Bfw4pB a91NvbzI+f8AxytGL4U+EY1AaymlPq9w/wDQin7KQudHjUvj7xhN9/xTrP0F7IB+hqpJ4q8RS/6z X9Uf/evJD/Wvdh8LvBv/AECT/wCBMv8A8VVqDwB4SthhNEtj/wBdN0n/AKETR7Fhzo+dn1rVZPv6 net/vTsf61C19dv966nb6yE19NDwh4YXpoGmfjaof6U7/hFPDQ/5gGlf+Akf+FP2L7hzo+Xmmkbr I5+rU3JPU19Sf8Ip4b/6F/Sv/AOP/Cj/AIRXw3/0L+lf+Acf+FHsX3D2iPlrOKcJHXo7D6GvqP8A 4RXw3/0L+lf+AUf+FJ/wi3hr/oX9K/8AAOP/AAo9i+4e0R8xLeXKfduJl+jmpk1fUo/uajdr9JmH 9a+l/wDhFfDR/wCYBpX/AIBx/wCFNPhPwyf+YDpf4Wqf4UexfcXtEfOSeJtei/1et6kn+7dyD+tW ovHPi2E/u/E+sr7fbpcf+hV73N4H8KzghtDswP8AYTZ/LFUW+GXgwnP9j4+lzL/8VR7GQ+dHj8Xx O8bw42+J9SP+/Nu/nmr8Pxk8fwY2+IpWx/fgib+a16a/wt8HMCBprp7rcyf1Y1nS/B3wzI5ZLjUo h/dSZCB+aE0vYyDnRykPx58eRffvbSb/AK6WiD/0HFadv+0X4ui4msNImH/XGRT+j/0q/L8GNEKn ydT1BW7F9jfyUVmP8Ehkl
 PEHHYNZ/wD2dL2Uh86Nm3/aV1FcfafDdrJ6+Xcsn81NbFt+0rpjY+1e HLuP18q4V/5ha8/ufgxq6N/oup2Mq/8ATUPGf0DVnXPwk8TwLmNbO5PpFPg/+PAUvZy7BzLue12v 7Q3g2cDzodUtj38yBWH/AI6xrcs/jP4BvOBryxN/dmgkT9SuP1r5ln+Hfiy3Qu+jSkD/AJ5yI5/J WJrKm8O63bqWm0bUI1HUvbOB+eKXK10HdH2bZeN/CuoY+yeItLlP90XSBvyJzW3DPFcR74ZUlTsy MGH6V8CkFSQQQR2NS293c2j77a4lhb+9G5U/pUjPvmiviax+IXjDTgBbeJNTVR0V7hnA/Bsiuksf jv47swBLf214B/z8Wy8/iu00AfWtFfOVh+0pqcZUah4ftJh3NvM0f8w1dVp37Rnhi4IW+03UrQ+q qsij8iD+lAHsdFcRp3xe8CakB5fiC3hY/wANyrQ4/FgB+tdZZapp+pJusb+1ul9YJlcfoTQBbooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACi
 iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoopCcUALRXM 618QfCfh/cNS12zjkUZMSP5j/wDfK5Neea1+0ZoNtuTSNLvL5wOHlIhTP6n9BQB7TTWYIpJIAHJJ 7V8sax8f/GOo7lsfsemxkYHkxb3H/Anz/KuB1bxVr+usTqms3t2D/DJMxX/vnp+lAH2Fq3xB8JaI SL/xBYxuOsaSiR/++Vya4bVP2iPCtpldPtNQv29QgiT82Of0r5iiikmkEcUbSOeiqMk/hW7ZeCfE d/zFpcyD1mxH+jEGmot7CbS3PSdU/aP124DLpej2NmCeGmZpmA/8dH6Vxmp/FzxzqpbzfEFxCh42 WoWED8VAP61dsvhJqUpze6hbW6n/AJ5qZD+OdtdJZfCfQoNrXVzdXLDqNwRT+AGf1rRUZvoS6kUe QXeoXuoSeZe3l
 xcv/emkLn8yaZb2txdy+XbQSzSH+GNCx/IV9B2fg7wzYD9zpFs3vKvmn82zW5F5 UKBIkVEHRVXAFaLDvqyXVXQ+fLPwN4nvgTDo9yuP+e2Iv/QyK3rT4Q+IJgrTz2VuD95WkLMPwAx+ te0ed7mk8/3NWsPEl1WebWnwXgVwbzWndO6wwBT+ZJ/lW3Z/CXwvbEmYXd2PSWbbj/vkCut8/wBS aPPPv+dUqMV0J9o+5m2ngfwrZKVi0W0f/rsvm/8AoWa2LWxsLBNlnZW1uvpFEFH6VB57ev60nn/S qULbC5jSEgHQCjzqzfO9xR59PkFzGj5/vSeePWs/7RSefRyBzGj5/vR5/uKzvtFHnj2p8ocxoed7 /rSecPWs/wA/6Unn+9HKHMaPnD1o84etZ3m+5pPNPqaOUOY0fOHrR5w9azvOPqaTzj6/rRyi5jR8 0etIZqz/ADyO9HnHHWnyj5jQ86k870rP840eefU/nRyi5jQ840hnNUPtGe/5mk88f3hRyBzGh5/0 /Ojz/XH51necPUUecPUUcocxofaKPP8Aes/zhSecKfIHMaJn9xSfaPcVnmYDvR5wP8VHKHMaHn+4 /Ojz/Qis7zvejzvejlDmNHz/AHpPPx3rOM1J531o5A5i/KIbiMrNFFIh6q6gj9ayZ/Cvhu5Rll0S w+bqY4VQ/muDVjz/AK0vnj1pOCYcxz118MvClwhEdpNbk/xRXDE/+PZFYt38H9Ocf6Hq1zEe/nRr J/LbXeCcUvnr6ipdGL6Fe0fc8ouvhBq0bH7JqFnMn/TTdGT+GCP1rDu/h74otAzHS2lVf4oXV8/Q A5/SvdPOH/16UTZ71Dw8SlVZ82XemX9gR9ssrm3z086Jk/mKgimlt5BJDI8bjoyMQR+Ir6b83IwT kelZl54f0PUNxutJs3Zur+UFY/8AAhzWbwz6MpVu547pnxI8ZaQFWz8R34VeiSyeao/B8iuz0v8A aH8WWhAv7
 XT79O5MZjb81OP0q/efDHw3dcwrc2h/6ZS7h/49muevfhHMoZrHVonPZJ4yv/jwJ/lW boTRSqxZ6RpX7SGizlV1XRr20J6tA6zKD+O013Gk/FfwRrOwQa/bQyNx5d1mE5/4EAP1r5evfh54 ksskWIuEH8VvIGz+HB/SudurK7spNl3azQP/AHZYyh/Ws3GS3Raaex95QXMF1EJbeaOaM9HjYMD+ IqWvg3T9W1HSpRLp1/dWjg53QSshz+BrudI+N/jjStqyajHfxg523kQY/wDfQw361Iz65orwbRv2 krZ9qa3oMkZzzLZyhh/3y2P516Fovxa8E64VWDW4beVjjyrsGE5+rcfkaAO3oqOKaKeJZYZEkjYZ V0bIP4ipKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooA
 KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooqrfahZaZbNcX13Bawr1kmkCKPxNAFqivLfEHx5 8I6OWjsXn1Wcdrddsf8A3239Aa8q1/4/+K9UDR6altpUJGMxL5kn/fTcfkBQB9P3d9aWEBnvLmG3 hHWSZwij8TXn2u/HHwXowZILyTU5wOEs03Ln/fOF/LNfLGp6zqetXBn1PULm8lJzunkL4+melJY6 RqGpHFnZzTDONyr8o+p6Cmk3sF7HruuftGa3dFk0XS7WxTPEk5Mz4+nAH5GvNta8d+KfEJP9p65e TISf3Qk2R8/7K4H6VqWHw21KfDXtxDbL3Vf3jfpgfrXT2Hw/0Ozw06SXb+sr4H5Lj9c1tHD1JdLG bqxR5NHFJPII4o2kc9FUZJ/Ct6w8EeIL/BWwaFD/ABXBCY/A8/pXsFpbWdhHstLWGBO4jQLn8qs+ cK3jhF9pmTrvojz2w+FTfK2o6kB6pbpn/wAeP+FdNYeAfDdltLWjXLj+Kdy2fw4X9K2vPo8/3raN CC2RDqSfUs21vZ2Ufl2ttDAn92OMKPyFT+d7is/zvf8ASjzvf9K05URcv+fSef8A5zVDz/ejzz6m i
 yC5fM/uaPP+tZ/ne5pPOPv+dFkFzQ84+lHnnvis/wA40ebRZBcvfaPTFL5+elZ/m/SgS+wosguX zOe+KQz+/wCVUfN9h+dJ5p9cUWQXZf8APP8Aeo84+tZ/mn1/SjzT6/pRZAaHnH1FIZ/cfhVDzfpR 5xo0AvGb3pPO96o+afWjzT60aAXvO9zR5w9aoebjuaPN/wBo0aAXvNHrS+d7mqHmk96DL709ALxm 9zSebVHzP85o8z3o0Av+d7mkM31/GqXmn1pPN96ALvm+1Hm89Ko+Z70vmCgC75vNL5tUfMHrSeYK ALxmFJ53uKpeYKPMouIuiUGl832qjvFG+i4y75ho80+lUvM96TzPrRcC6ZT7Ued9Kp+Z70eZRcRc 876UecKp+ZSebzRcC753+c0ed9Kp+Z6ijzKQF3zfpR5o6VS3+9KJB607gXhIKPMHrVHzOetOEp6Z oAu+b7mlEvo1UvNNKJaNBl4Sn1p3mmqAlpfNNKyC5fEreopJGSaMxyxo6HqrDIP4VTE3vTvN96LB czb3wf4c1Aky6XFG396DMf8A6DgGuav/AIVWT5NhqU0R/uzoHH5jGP1ruBL604Sj3rOVGD3RSqSX U8fv/h14gs8mKGG7Qd4JOfybB/Kubu7G7sZPLu7WaBz0EqFT+tfQwkGOtEqxzxmOaNJIz1V1BB/A 1jLCrozRV31PBNJ8RazoUok0rVLuzYHOIZioP1HQ16Jof7QHi3TdseoJaapEBgmVPLk/76Xj8wa1 r/wN4f1DJ+xC3c/xW52Y/D7v6Vy2ofCyZctpuoI47RzrtP8A30M5/IVhLDTW2poqsWevaF+0H4V1 ErHqcF1pcpIG5182P/vpef0r0nSfEOj69CJdJ1O1vEP/ADxlDEfUdRXxbqPhXW9Ly1zp82wc+ZGN 6/mM4/Gsq3uZ7SZZraaSGVfuvGxVh+IrFprc0TT2PvqivkTQPjX400Iqj6guowLj93ervOP94Y
 b9 a9T8P/tFaFe7ItcsLjTpT1li/fR5/Rh+RpDPaKKydG8TaJ4hh83SNUtbxe4ikBYfVeo/EVrUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVj6 74o0Tw1befrGp29ov8KyP8zfRRyfwFeP+J/2jLeLzIPDOmNM3QXV58q/UIOT+JFAHurukSF5GVVU ZLMcACuC8S/GTwd4c3xfb/7QulyPIsv3nI9W+6Pzr5k8R+PPEviqQnVtWnliJ4gQ7Ih/wEcfnWHa 2V1eybLWCSVu4Rc4+tCVwPWfEf7QniLUd8Oi20GlwHIEhHmy4+p4H5V5dqmt6prdybjVNQubyY87 p5C2Ppnp+Fb1h4Eu5sPezpbr/cT5m/w/nXU2HhfSNPwy2omkH8c/zn8un6VtGhOW+hm6sUecWGi6 jqZH2S0kkU8b8YX8zxXU6f8ADqZ8PqF4sY/uQjcfzPA/I13IkCgADgdMGl832/WuiOHgt9TJ1ZPY ztP8J6Jp+Clmssg/jn+c/keP0rcDBQAAAB0A7VTMtHm1uko7Iyd3uXfMpPM96pebSeb71VxWLvm+ 9Hm+4ql5vvR5p9aLjsXPN96PN96p+afWk873pXCxc82jzfaqXm+9Hm+5ouFi55tHm1SMnvR5vHWi 4WLvmmk8w+9U/M96TzBRcLF7zKQyGqXmUnmD1ouFi75uO/60eb/nNUfNpfMHrRcLF3zfcfnSebjv VPzfek82i4WLnne9HnZ/iqn5tJ5oouFi75v+1R5vvVLzv84o86i4WLvmj1pPNHvVPzv85o83/OaV wsXPNHvR5vuap+b70nm+9FwsXfNHqaTzfc1T82jzT/k0XHYueb60nm/X86qeZR5tFwsW/N+v50eb 9fzqp5tBlouFi35vt+tHm1U873o833ouFi35vt+tHm+1U/N+lL5v0ouFi35vt+tHmn3qp5lG/wB6 LhYt+bR5o96p+Z70u/3ouFi35go82qnme9HmH2ouFi35p9KXzfrVPzD6UeYaLhYt+b
 R5lVfMo8w0 XCxa8wd6XzB71U8w+tLvzRcLFrzB70CQe9Vd4pd9FwsWfNHvThMKq7/elDg07isWvNFO8w1UDU4O R3ouFi15nuad5h9aqBzThJTuFi2HNKJPpVUP7mlEnvRcVi2Hpwb0qqHpwf0NO4FrzDTxLx1IqoHN KHp3FYuCXtmniQHrVMPSh8UAXA4rN1Hw7o+q5N5p8Luf+Wija/8A30MGrPmUocUmk9xptbHD6l8L rd8vpl88R7RzjcP++hyPyNchqfg7XNL3NLZNLEP+WkHzr+nI/EV7WJD65p4k9awlhoPbQ0jWktz5 4guLiznWa3mlgmTo8bFWX8RXonhz44eMdCKR3N0mqWy9Y7wZbHs45/PNdhqXh/R9YBN5ZRPIf+Wi ja//AH0Oa47U/heMM+lX30iuB/7MP8K554aa21No1ovc9e8N/H3wtq+yLVFm0m4PGZRviJ/3h0/E CvT7LULPUrZbmxuobmBvuyQuHU/iK+HtT8O6tpBP22ylRP8AnoBuQ/8AAhxTNH1/V9AuRcaTqNzZ yg8mGQqD9R0P41ztNaM0TT2Pu2ivm3wz+0Tqtnth8RafHfxD/lvb/u5fxH3T+lezeGfiR4W8WBU0 3VIxcH/l2n/dy/kev4ZpDOsooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
 KKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooprM FUsxAAGST2oAdRXm/i741eF/DJe3t5jql8vHlWrAqp/2n6flmvCPFnxh8V+Kt8P2v+z7FuPs9oSu R/tN94/y9qAPorxV8U/CvhIPHd6gtxeL0tbXEj59+y/ia8R8U/H7xHq/mQaLGmk2p4Dr88xH+8eB +A/GvKIoZrmXZEjySHsoyTXQWHhKebD3kohX+4vzN/gKqMJS2E5JbmFdXl1qFy1xd3EtxO5+aSVy zH8TWlYeGdSvsN5XkRn+OXj9OtdlYaVp+nAGCBd4/wCWjDc351f873rojh19pmTq9jG0/wAH6dbY a5LXT/7Xyr+Q/wAa6KJYoIxHDGsaDoqLgD8Kred9aTzc1vGMY7Iybb3L3m
 +9IZfeqPme1Hme1VcV i75tJ5vNUvM+lHmH2ouFi75tHne5ql5ho80+oouOxc82k833qn5h9aPNNFwsXPM9x+dG8eoqn5tJ 5vuKLisXfM96Tzfc1T8z3pPM9zSuOxc833NHmiqfmY70vmZ/iouFi15tHm+1VPM980b6LhYt+aaD L7frVPfRvFFwsW/NxR5v5/WqnmD1pPMGaLhYuGU+tJ5nvVTePUUbx6ii4FvzfpR5v0qpvo30XCxb 80e350hlqpvo8yi4WLfm+9Hne9VN/vR5g9aLhYtiX3FBl9xVTzBR5gouFi2Zfek8z3NVfM+lHmii 4Fky+5pRL71V8z60eZRcLFrzc/xUvme4/Oqu8etG8eoouBZ8z3o833NVt30pd1FwLHne9Am9/wBK r7qXNFwLHne9Hm+9V8ijIouBY8w+opd59arZFLRcCxvNG81XyaXcfWncCxvo8yq4YjvRvb1oAs+Y PSl3iq280eYaAsWd/uaXf71W3+1LvFAWLIf3o3+4qt5g96XePWi4rFndRuqvv96N3uKAsWd31o3e 9Vw59f1pd5ouFixv96cHPeq280ocHrTAtCSlD1W8wDvTt3tRcRZDCl3fWqwbFODU7gWfMPrTg5qq H96cH9/1ouFi0sg9cGnq+feqgfPcU4MKdxWLYenB8VTDY6GniTjkU7hYth6cH96qCQU8OfWi4rFo PTg+PSqoc04P707gWhJ6inrJ6HFVFenh6dxFrduUhsMD2I61z+q+CtC1TLfZvssx58y3+Xn3HQ/l WwHI7mnCT3qZRjLRoabWx5dq3w51Sz3SWLJexDsvyuPwPX8DXJSwz2c+yWOSGZD0YFWBr6BEg9cV Wv8ATbHVYvLvbaKdexYcj6HqK554WL+Fm0a7W5wXhb4x+LfDGyH7Z/aNmuB9nvMvgf7LfeH5/hXt 3hT45+F/EGyDUHbSLxuNtwcxsfZxx+eK8Y1b4aI26TSbkoe0M/I/Bv
 8AGuH1LRtQ0mXy721ki54Y jKt9D0rknSnDdG8ZxlsfdcUsc8SywyLJGwyro2QR7EVJXxN4Y8feJPCMoOk6lIkOctbyfPE3/AT/ AExXufhL9oLR9T8u28RWx0y4PHnpl4Sffuv6/Wsyj2aiq9nfWmo2qXVlcxXFu4yskThlP4irFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF
 FFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFNZgqlmIAAyST0rgfGnxe8NeEA9v5/9oaiP+XW2YHaf9tui/wA/ avnnxj8VvE3jFniuLk2dgTxaWxKqR/tHq34/lQB7z4x+Nvhrwz5ltZP/AGrqC5Hl27fu0P8AtP0/ AZrwLxd8UvE/jBnju7021kTxaWxKJj37t+NcjbWk92+yCNnPcjoPqa6Gx8NxJh7x95/uKePxPeqj By2E5JHPW1ncXcmyCJpD7DgfU10Vj4VXh72XJ/55xn+ZrciWKCMJEqog6BRineYK6I0orcyc29iS 2ht7SPZbxJGv+yOv1qbzaq+YPek8zHattjMtebR5v+c1V8yk3mi47FrzqPN96q7zRvNFxWLPm+9H mmqu40mfei47FrzTR5pqpu96N3vSuFi15ho8w+tVdw9aN49aLgWfM96PNz3qtvx3pPMouBZ8w+tH me4qr5ntRv8Aai4Frf70bqq+YKPMFFwsWt/vSb8d6reZSeZ70XCxa8wf3qTePWq3memKN59qLhYt bx6ijzPeq28+lG/2ouBZ8z3NJ5nvVffRuouBY8wetL5g9arbvel3e9FwLHmD1o8wetV91G72ouBY 8z60b/eoN1G6i4E+7PcUu76VX3e9Lu96LgT5o3e1Qbvel3H1oAn3UZFQ7jRvNMCbIoyPWot9Af1o Amz70bveod9LvFAibJoyai3ijcPWgZLvNLvPvUW73pd3vRcRLvNG+osmjdRcCbf9KN9Q5pd1FwJt /tRv+tQ5FGaAJ9/vRuHrUG73pd3vQBPu9xS7qr7qXNO4WJ93tS7qr7qXf9aLgT7qNwqDf9aXefWi 4E2RRn3qLf8ASjf9KLgTZ96M1Fv9qN/tRcCbcR3o3H1qLe
 PegN707iJw/qKUSCoN/vShqLgWRJju Kd5h9Kq7qUMfWi4WLYkp273qoHIpwce9O4WLW6nB6q5pwc4ouItCT/OacJKqiT1FOD5NO4WLYcGl DYqru9qcHx3p3EWxIR9KcJPUVVEmKcJM96LhYtBsjinhyKp7venhsU7iLYf3pwb3qqJOOmacJKdw sWw9ODCqu4+tOD07isW1k/GklWKeNopokkjYcq4yD+BquH96eH/zmgDl9W+HunXoaTT3NnMf4fvR n8Oo/CuB1fwzquisTdW5MWeJo/mQ/j2/GvaA4pSQ6lWAKngg96wnh4S1WhpGrJbnjXhzxfrvhS7F xo2ozW/OWjzmN/8AeU8GvdvB37Qem3/l2nie2+wznA+1QgtEx45I6r+orhtY8C6ZqW6W2H2O4POY x8hPuv8AhXn+seGNT0Vi1xBvhzxNH8y/j6fjXJOjOG50RqRkfbtlfWupWkd1ZXMVxbyDKyROGU/i Ks18PeGvGWveEbsXGj6hJACcvETujf8A3lPBr3/wZ8fNH1jy7PxDGNLvDx54yYHP16r+PHvWJZ7F RUcM0VxCs0EiSROMq6NuDD2IqSgAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA
 CiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKp6lqljo9jJe6jdRWttGMtLK2AK8D8dftATT+bYeEY zDHyrX8y/Of9xe31P5UAew+LfHvh/wAF2pk1W9UTkZjtYzulf6L2HueK+dfG3xr8Q+KTJaWDHStN bjy4W/eOP9p/6DFedXN1dalePcXU0tzcStlpJGLMx+taFnobyYe5Oxf7g6//AFqpRb2E2kZcUUtz LtjRpHPpW7ZeH1XD3bbj/wA81PH4mtSGGK2j2QxhF9u9Sb62jSS3M3NvYkiWOFAkaKijoFFO31Dv FJvrUgn30F/eoN1Ju96LgT76N/uKg3Um6i4FjefUUnme9QZNGTRcCYye9Jv+tRZNGTRcCXf9aN9R ZNJRcCUv70m+o6KLgSbz7Ub6jopXAk30m6mUU7gP3fWjd70yii4D93vRn3plFIB+c0UzNGaAH0U3 JoyaYDulGT6mm5NGTQA/cfWjcaZupc0AO3H2pd
 /tTN1GaAH7/al3j3qPIoyKAJN49aXcPWo80UBY k3e9LuqKigLEu6l3e1Q0ZPrQFiYNRu+tRZPrRuNAWJt3vRu96h3Gl3+1FwsTbvcUbqh3+oo3+1O4 WJt1LuqHcKN3vRcRNupd3vUO73pd3vRcCXd70u4+tQ7qN1FwJt59aXeah3UbqLgTbzS+Z7VDvo30 XAm8z2pd4qDfS7qdwJw4PejcPWoN2aXdRcCfPvRn3qDIoyPWi4FjJoyagz70u4+pouBNuo3VDuPr S7zQBLml3VDvPoKXzD6UwJd3vS7veofM9qXePegRLu96N30qLePWl3r60ATBzSh6gyPUU4NxRcCc OKcHqvupQ2O9FwLIb3pwc+uaqhz2NP8AM+lO4FjzD6Uok9agD4+lO3U7iLAenByKrbqduPrQBZEn 4U8PnvVTeaeGB74pisWg2KeH96qBz604Se1FwsWw1OD1VD+9PD4p3FYshqeHIqqH96cJPencC15g p4f0NVQ/vTg/vTuItBqcHqv5h9BTg4PtTuBZD07KupVgCDwQe9Vs+hpwb1ouI53WfAunajuls/8A Q5zz8o+Rj7jt+Fee6roGo6NJtu4CEz8sq8o3417MH96V1jnjaOVFdGGCrDINY1KEZarRmsaso7nm Xg/4j+IvBc6/2fdmS0zl7OfLRN9B/CfcV9F+CPjF4e8XCO1nkGm6m3H2edvlc/7DdD9OteH634At 7ndPpTrBJ18lvuH6HtXA3thd6ZcmG7heGUdMjr7g964p0pQ3N4zUtj70or5R8DfG3XfC/l2epltU 0xeAsjfvYx/ssev0NfR/hfxlofjCx+1aPerLgfvIW+WSP/eXt9elZlm/RRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR
 RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUVnazrem+HtNk1DVbyK1to+ruep9AO 59hQBo15t48+Meh+DxJZ2hXUtWHHkRt8kZ/22HT6DmvKfiD8ctS1/wA3TvDvmafppyrTZxNMOnUf dHsOea8kjiluZcIC7k5J/wAaANvxV4z1zxlffatYvGkAP7uFfljj/wB1f69azbTTZrohj8kf949/ pWhZ6VHDh5sO/p2FaPSto0+5Dl2I7W
 0t7Nf3a5bux6mrW9fWoaK1WmxmS+YKC9RUUwsSeZSeYaZR QA/zD6CjzD6UyigB+80buO9MooAfuFG73plFAyTd70bj61HRQIl3GjcaiozQBLu9qXd7VFk0ZPrQ FiXcKNwqLJo3GgLEuR60uRUW72o3e1AWJaKiyKMigLEtFR7vel3e9AWH0UzcfWlDGgLDqKbuNG72 oFYdRTd3tS7hQAtFJuFG4etAC0UZFGaACiiigAozRRQAZpc0lFAC5+tGTSUUALmjdSUUAOzRuptF ADs0ZFNooAdkUuaZRQA+imUZoAfRn3puaMmmA/Jo3GmZNGTQA/caN1M3UuaAH7qN1MzRmgCTcKNw qPNGRQBLu96M1HmjNAWJd3vRu96ioyfWgLEu49qXccVDk0uTQFiXeaXfUO40u6i4WJd9LvqHdRup hYm3CjcKi3CjcKLhYmyKMiodwpc0XETBsd6cHI96r596UP70XAs+ZTg+e9Vt9ODD1p3AsBqcGxVY N6GnBz3ouBZDmnCT1zVYOKeDTuIsB896cGBqtml3H1p3AtBvenB+OlVg59acslFxFkOKeGOOCarb qUHNO4FoOe9PDj1/OqgcjvTg4707hYtBs1IGNVA47Gnh6BWLQenB6qh/wp4encRaD+hp4k9eaqB6 eH96dwLYcGnA+hqqHpwancRaDmob2ztNStjBeQJLGezDkfQ9qBJTg4NG4Hn2ueBLi13T6YWnh6mI /fX6etc1p2pahoeopd2FzNaXcR4eM7WHsf8AA17VurG1rw1p+toWkXyrntMg5/H1rmqYdPWBtGr0 kdd4C+Plre+Xp/i0Ja3HRb5BiNv98fw/Xp9K9uimiuIVmhkSSJxlXRtwYeoIr4b1jw9faLJ+/TfC T8syfdP+FdF4F+KOu+B5lihlN3phPz2czEqPdD/Cf0rjaadmbpp6o+xqK5bwb4+0PxvYibTLnbcK oMtpKQJIz9O49xXU0hhRRRQAUU
 UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUVHLLHBE 0ssixxoMs7tgKPUmvBPiR8dv9bpPhCT1WXUf6Rj/ANm/KgDv/iB8V9G8EQtbqVvdXK/JaRt9z0Ln +Ee3Wvl/xV4x1rxjqRvNXu
 2kx/q4V4jiHoq/1rHLT3tyzszzTSHLMxLFj6k1q2mmpDh5cO/p2FVG LYm0ilaabJPh5MpH+prZhijgTZGu0fzp9FbxikZOTYuRRmkoqhDs+9GTTaKAHZNGabRmgB+40bva mZozQA/NGRTM0uaAHZFGRTc0ZoAfn3opmfrRkUAPopmRS596LjHUU3PvRk0XAdRTcml3fSi4C0Um 72ozQAtFJkUZFAC0UmRS596YBRRRQAUUUUALRk0lFAC5NGTSUUALuNLuptFADt3tRkU2igB24Uu7 3plFAD93vS7j61HRQIk3Gl3GoqWgCTd7Ubvao8mjJ9aAsS7hRuFRZPrRuNAWJdw9aXI9ai3Ubvag LEuR60VFkUbhQFiWio93vRu96AsSUUzefWjcfWgLD6KbuNG40BYdRTd3tS7hQIWik3CjcPWgBaKM j1oyKACiiigAooooAM0tJRRcBcmjJpKKAFyaN1JRQAuaXNNooAdmjIptFADsijIptFAD8+9GfemU Zp3AkDGl3+1RUoNAEob0p4eoQ3vS7j60AT7xShvQ1CGzSg07hYnDkd808P61X3Y7U4Nmi4iwG96X dUGaUMaYFgNinB6gVweCadux3p3EWBIKcH96rBqcGNFwLII9acGIquHx2pwcU7gWA/tUit6VWDA0 ob0NMRbEg7inBveqgc+tSK/vTuFi0HPrTg/vVYOfXNOD560XEWg/vTw1VQcUobFMRbDkU8SetVQ+ fWnhwe9O4E8ginjaOVQ6MMFWGQa4jXvA4O+50n3Jtyf/AEE/0rsg3vTw5HepnCM1ZjjJx2PHLO91 DQ9TS5tJ57O8gbh0JVlP+e1fRHw6+Olrq5h0vxQ0dpfEhY7scRSntu/un9PpXCa1oFnrceZUEdwB 8syjkfX1Fecatol5o0+y4TMZPySr91v8+lcVSi4eh0wmpH3UrK6hlIZSMgg8EU6vlH4c/GTU/CLR adqhkv8AR84ClsyQD1
 QnqP8AZ/KvpzRNc03xFpcWo6Vdx3NtIOGQ8g9wR2PtWJZpUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABWXr3iDS/DOlS6lq12lvbRjq3Vj/dUdSfauc8ffE7RvAlqUmYX WqOuYrKNufYuf4
 V/U9q+WPFvjLWfGmqtfatclgCfKgTiOFfRR/Xqe9AHTfEb4tap41meztS9loyn 5YFPzS+7nv8ATpXA21pJctxwndjU9pp5kxJMCF7L3NaqqEUKoAA6AVpGF9WS5dhtvBHbptQc9yep qXNNorZaED6MmmUUAPzRmmZPrS5NAh+aTNNyfWjcaAH5ozTN1G72oCw/IoyKbuo3UBYdkUuaZket GRTCw+imZpaAsOoptFAWHUU3NLmgVhaKbmlzQFhc0ZpM0ZFAC5ozSZoyKAHZozSZozQAuaM0lFAC 5FGRSUUAOz70Z96bRQA7JoyfWm0ZoAfu+lGaZRmgB+fajIpmaM0APyKMim5ozQA/I9aKZmjNAD6K ZkUufegY6im596Mmi4DqKbk0u76UXAWikzRu9qAFopM0ZFAC0UmRS5FABRRn3opgFFFFABS5NJRQ AuSO9GT60lFADs0bqbRQA7d7UbqbRQA7IpdwHemUUAP3e9Lu96jooESbie9LuNRUUAS7vajd7VHk 0ZPrQFiXcKNwqLJ9aNxoCxLuHrRkHvUW40u72oCxLkUVFuoyKAsS0VHuFG73oCxJRTN3vRuPrQFh 9FN3GjcaAsOoBxTd3tS7vagQ/NGab1ooAlDU4N6GocmlDUwJgx9aeGqAMfWnBs0BYnpc1CDTg9O4 iUNin7gah3ClzTAnzShqhDkfSnBgetAE4Y+tPD1XDU4NTEWQ1KDmoA1PD5p3AmzTlb1qINTs+9O4 ifJ9TTg/rVcORUgbNFwJww7GnbjVfNPD+tO4idXNPD57VACDTgcUxFkMKjuIILuBoZ41kjbqrDg0 wN708P70AcBr/hCax3XNgGmtupTqyf4iofB/jbWfBOqLeaXPiNiPOt35jlHoR/XrXpAauW8QeEYr 0NdaeFjuOrR9Ff8AwNctWh1ibQq9JH0Z4E+Imj+O9P8AMs5BDfRj9/ZyH509x6r712FfCFlfal4f 1VLm0mms76
 3bhl+VlNfTnwy+MFl4vSLS9WMdprQGB2S4Pqvof9n8q5Tc9TooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiii gAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK KKKACiiobm5hs7aS4uZUihjUs8jnAUDuTQBKSFBJIAHUmvEviX8cIdLM+j+FpEnvRlJb4fMkR7hP 7ze/QV
 yXxS+M1xr7y6L4dleDSwSstwDh7j6ei/zrx6ON5XCIMsaAJbm5udQvJLi4mknuJm3PI7bm Yn1NX7OwEeJJQC/YelTWtmluNx+aQ9T6VZraMLashy7BRRRWhIUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRk+tFFAC5NGT60lFAC5NGaSigBd3tS7qbRQA7dRkU2igB2RRmm0UAPoplFA D8mjNMzRk+tAh+aM03J9aMmi4D80ZpmaN3tQFh+RRkU3dRuoCw7IoyKbkUZHrTCw6lpmR60uaAsO optGTQFh1FNyaM0BYdRTc0uaAsLRn60maM0CFzRmkzRkUALmlzTcilzQAuaM0lFAC5FGRSUUALn3 pc02igB2TRk02igB+76UbqZmjNAD93tRmmZozQA/cKMim5ozQA7NLn3pmaM0APopmRRmgY+im596 Mmi4DqKbk0ZouA6ik3Gjd7UALRSZoyKAFopMijIoAWijPvRTAKKKKACjNFFAC5NGT60lFADgxFPD moqWgCUHI96Wocn1pwcnvQKxIDinZqMNnrTqBDwfQ04NUQpwOaYEoPoacGNQg4pwagLE26nA5qHN ODU7iJQcU8ODUIPvTqYEwNODVAGIp4fNAE6t708Nmq4NOBp3EWd3FKDUAanhvemBOr4p4bNQBqcD TuInBxTw3vVcOe9PDZpgTBs/Wn7qgzTg/qKBE4anhqgzTgfWmIz9b0C11qEkgR3Kj5JQP0PqK85v bG80e9EcwaKVDuR1OOnQg16wCRVbUtNttVtTBcpkfwsOqn1BrGpSU9VuaQm46M6z4V/GpbxoNC8U zhLg4S3v3OA57K57H3/OvdQQRkGvhXWNFudHudko3RMf3co6N/8AXr1z4UfGV9MMOg+JrhnsjhLe 8c5MPorHuvv2riaadmdCd9UfR9FMR1lRZEYMjAFWU5BB7in0hhRRRQAUUUUAFFFFABRRRQAUUUUA FF
 FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUA FFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRR RQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFRyyxwQvLK6pGilmZj gKB1JoAjvLy3sLOW7u5kgt4VLySOcBQO5r5Y+KfxXuvGV0+m6Y7waJE3C9GuCP4m9vQVJ8W/ilL4 uvX0nSpWTRYG6jj7Qw/iPt6CvMIIHuJAiD6n0oASGF55NiDnufSty2tkt0wOWPVvWlggS3j2IPq
 f Wpa3jCxm3cKKKKsQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABk+tLk+tJRQAuT RmkooAXdRu9qSigB26jIptFADsj1oyKbRQA7NLTKKAH5NGaZRk+tAh+aM03JoyaLgPzRmmZo3UAP zRkUzd7Uu6gLDsijIpuRRketAWH5opmRRmmFh9FNoyaAsOopuaM0BYdRSZpM0CsOozSZozQFhc0Z pMijIoAXNLmm5FLmgBc0ZpKKAFz9aMikooAXIpc+9NooAdn3oyabRQA7Jpd30pmaM0AP3e1GaZmj NAD8ilBzTM0bqBj6cGPc0wNmlBzTuBKrds06oKcDQKxNmlBzTAwPfmlBoESA4pwNRZpwNMCTNPDY qHNOB4oCxNketLUQNODincRIGI78U9W9aizmlBpgTg05WqAH3p4bI96AJg1SBqr5NODUxFgNTgcd DUAenhqYidX9afketQZpQaYE4YjvUitmoA4PXrS7h60wLIOKVWqAMfWpAwPegQl1awX1u1vcRh43 HINec694fm0ebeuZLVj8snp7GvSQTSTRR3MDwyorxuMFW71FSmprzKjNxG/CX4vS+G5ItB1+ZpNI Y7YZ25a1J7H1T+X0r6ailjnhSWF1kjcBldTkMD0INfEXiDw9JpMvnQgyWjHhu6H0P+Neg/CP4tP4 Zmi0LXZmfR5DiKZuTak/+yfyrhlFxdmdKaauj6gopkciSxLLG6vG4DKynIYHoQafUjCiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK
 KKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAr50+N/xO +2zTeFNFuM20Z230yHiRh/yzB9B39+K7v4y/EP8A4RHQf7N0+XGr36FUI6wx9C/17D/61fK8MT3U +3JJJyzH+dADYIHnkCIPqfSt2CBLeMIg+p9aWKJIYwiDAH60+t4xsZt3CiiirEFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABk+tLk0lFAC5PrRuNJRQAu6jd7UlFADt1G6m0UAOyPWjI ptFADs0tMooAfRTKMn1oEPzS5pmTRk+tFwHZpc0zJozQA/NGRTN3tS7qAsOzRkU3dRkUBYfmjNMy KM0wsPozTaKAsSBjSg1GDmlzQIkp26ogxp2aLjJg4I5604NmoKcGpisTZxTg3vUQcU4HNAiTcacG zUQNOzTAlBpwf1qAHFPBoCxMDmnA4qHJHenBs07iJw4NOqEGnByPpTAlBxTwTUQbNOBxTETBqeG4 qANTw2KYEwNOzUQYetOzTuIlD4608HPIqEGlDEUAWFfHWngjsarh808HFMRLJHHPE0UqB0cYZW6E V514h0B9Im82IF7Rz8rd1Poa9DDjvTZoYrqB4ZkDxuMEHvUVKamioycWWfg58WG0KWHw5rs5bTHb bbTuf+Pcn+E/7B/SvpZWV1DKQykZBB4Ir4Z13RJNIuuMtbuf3b/0PvXs3wW+K2xofCuvz/Kflsbq Q9P+mbH+R/CuCScXZnSndXR9BUUUUhhRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
 FFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFZuva1Z+HdDu9Wvn2W9tGXb1b0A9ycD8a0q+cP2gvGn2zU4fCtnL+4t cS3ZU/ekP3V/Ac/U+1AHk/ifxDe+K/EV3rF6xM1w/wAqZyEXoqj2AqWzthbw8j525Y1S0233yeaw +Venua1q1px6kSfQKKKK1JCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKADJ9acDmm0U ASZpc1Hk0oagViQMRTgc1HmlBpgSU4N+dRhvWlzzQBMHB+tOBzUFPDfnTFYlpQc0wMD35paBEgOK cDUQNOBpgShiKeGzUANPBoCxMDTw56GoAxFPBzTuInBzTt1QBsU8PntTAmV
 qeGFQA04NTEWA1OzU AYVIGBpiJKerVEDS07gT05WxUAYipA2aAC7tINQtHt503I4/I+orzTVNNn0i+MTk9d0cg43D1r00 MR3qnq2nQ6tZNBIAGHKP3U1nVp8603KhLlZ6b8GPigPEdmnh/WJh/atuuIZWP/Hwg/8AZh+tew18 HK19oWrJLFI9veW0gZJEPKkdCDX1x8MfiDb+O/D4eQomq2wC3cI457OB6H9K4WrHSdzRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFF FABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUU AFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF
 FFABRRRQAUUUUAFFFFABR RRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAY/inX4PDHhnUNZuMFbW Euqk/fboq/icCviO9vLnV9TnvLlzJc3MrSOx7sxya95/aN8SlINN8NQycyf6XcAHsMhAfx3H8BXh emQ7pTKRwnT600ruwm7GlDEIYljXsPzqSiiukzCiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKAFBpwNMpQaAJKUGmA06mIeD60tMBpwPY0ALT1amUtMCYHNLUQb86kBz QIXNOz70ylBoESBqeGqIHNOBpgSh6fUI5pytTuImD4p+4HvUQOaAaYE4NOBqJW9adTETq1PBzVcH NOBoAnBxTgfeog1Oz6UxEoc1IDnkVADmnBiKYGV4i0YanbebEv8ApUY+XH8Q9K5rwn4n1Dwb4it9 VsWIeJsSxN0kT+JTXeh89a5HxVo2xjqNuvyn/XKOx/vVz1qd/eRrTl0Z9e+G/EFj4p0G11fTpA8E 65xnlG7qfcGtavkv4P8AxDbwdr4sr6X/AIk98wWXPSF+gcfyPt9K+slZXRXRgysMgg5BFcpsOooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoo
 ooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoorE8X6t/Yfg/V9TyQ1taSO hH97bhf1xQB8kfEvXj4j+IOr3wctCJjDD7Inyj88Z/GqFlF5VqgPUjcfxrGiQzXCqTks3JNdDWtN dSJBRRRWpIUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABTkU u6oByxAFNrX8MWf2/wAS2EGMgyhmHsOT/KkwPWbbwPoP2GB
 JtOjMojXewJBJxz3qOT4d+HJOlpIn +7Ka6qiufmZpZHFyfDHQm+490n0kz/MVUk+FWnNny9QuV9MqDXf0U+ZhZHm0nwnXnytVP/Aov/r1 Uk+FF8P9XqVu3+8hFeqUU+eQuVHkEnwv1tfuTWr/APAyP6VUk+HPiKPpbwv/ALsor2qij2jDlR4V J4H8Rx5zpkjf7rA/1rOuNC1a1P7/AE66T6xGvoain7RhynzW8ckZw6Mp/wBoYptfSElrbzDEsETj /aQGs+fwxodznzdLtiT3CY/lT9oLlPn+ivbZ/h74cnzi0ePP/POQis2f4WaS/wDqbu6i+uG/pT9o hcrPJKK9In+E8g/499UU+0kZ/oazZ/hhrcefKltZfo5GfzFVzxCzOJoro5/AniODOdOZ8d42Df1r Nn0HV7bPnabdJjrmI07oVmZ1FOeN4m2yIyn0YYptMAooooAKKKKACiiigAooooAKKKKACiiigAoo ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigBQacDTKUHFAEmaA aaDTqZI8GlqMH8qcD+VAx1PVvzplFMCYHNLUQP51IDke9BI4GnUylFAEgNO61GDmlBpjJQ2KkBzU Oc05WxTJJKkVqiBzS0wJqcDUatTqBEgNSA1CDmnA0wJqcDmolan0xD6VgskbRyAMjDBB7img5paY Hnut6U2l3xQAmF/mjb29K+gvgT8QTq+m/wDCL6lMWvbNM2rseZYh/D9V/l9K8z1XT01OweBsBx8y Nj7rVwunahfeHdbgvrVzDeWcodT6Edj7dvxriqw5XpsdEJXR930VgeDfFNp4x8MWmsWpA81dssee Y5B95f8APat+siwooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK
 KACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACii igAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKK ACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACvMvjzqBsvh fdRK203dxFB9Rnef/QK9NrxD9pO4K+G9Etc8SXbyY/3Ux/7PQB8+aYm67z/dUn+lbNZmkr/rW+gr TreGxnLcKKKKsQUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BXcfDCy8/wAQTXJHywRHB9zxXD1o6XrupaKZDp9
 y0PmY3gAHOPrSkrqwLc+haK8Ti+IniOPGbuN/ 96Jatx/E/XUxvS1fjvGR/I1j7Nl8yPYaK8pj+K2oLjzNPtm+jMKtR/Fg/wDLXSh77Zf/AK1HJIOZ HplFefx/FawP+s065X6Opq3H8T9Db78V2n1jB/rS5WO6O1ork0+I3hx+txMn+9CatJ468Nvj/iZI vP8AEjD+lLlYXR0VFZEHijQrn/Varak+hkx/OtGO7tpv9VcRP/uuDSsMmooooAKKKKACiiigAoor nvFPiy18OWuDiW8cfu4Qf1PoKaVwJPE2paNpNgZtShhmZh+7iKAs59s/zrxDUbxb++luEtobZWPy xRDCqP8APenanql5rF693eymSVvyUegHYVTraMbGbdwoooqxBRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFACg4pwNMp QcUASUA/lTQacDmmSOB/KnVHnFOBoGOpytTaKYEwOR70tRA9qkBzxQIcDTgc0ygHFAiQGn5zUQOa cDTGSg4p4OaiB/OlU4pkktPVvyqMHNLTAmpwNRK35U+gRIDTwaiBpwNMCalBqMGn0xD65bxXpeQN QiXkcSgD8jXTg0kkaTRPHIoZGGCD3FKcVJWKi7O5H8FfHX/CK+KRp15Lt0zUmEb56RydFf8Aofr7 V9YV8G6nYtp1/JbnOAcofVe1fVXwa8b/APCW+EEtrqUNqenAQz5PLr/C/wCIGD7iuBqzszp3PSKK KKQBRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAV4F+0y+I/DCdibo/l5X+Ne+14J+ 0xETa+Gpeyvcr+Yj/wAKAPEtKH7hz/tf0q/WfpJzDIPRs1oV0Q2M3uFFFFUIKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAo oooAKKKKACiiigAooooAKKje4hj+9Kg/GoG1G2Xoxb6CldILMt0VnNqyfwRMfqcVC2qzH7qIv5mp 50PlZr0VhtqFy3/LTH0ApoN3OflMz+wyaOe+yDltubpIHUgfU1G1zAvWVP8AvqspdNvpDxbyf8C4 /nUyaHesfmVE/wB5v8KtQqy2iyHOmt5
 IuG/tl/5aj8AajOp246bz9BTV8PTk/NNGPpk1MPDo/iuT +Cf/AF6tYfEP7JDxFFfaIDqsXaNz9cUw6sO0P/j3/wBatBfD9sB80spPsQP6VIuhWS9RI31b/CrW DxD7EPF0V3Mg6s/aJfxNNOqzdkj/AF/xrdGj2A/5Yf8Ajx/xp66ZZL0tk/Hmq+oVuskT9dpdmc8d Un7bB+FNOpXPqv5V04srQf8ALtD/AN+xSi1tx0t4v++BVf2fU/nF9eh/Kct/aNz/AHx/3yKT+0Lr /np/46K6wQQjpEg+iinCNB0Rfyp/2fL+cX1+P8pyP9oXX/PX/wAdH+FH9oXX/PX/AMdH+FdfgDtR gHsKP7Of8/4f8EX19fynIf2hdf8APT/x0VJFqd8HAilbcTgBRyfyrrYbQ3UyQwweZI5wqhckmvUP Cnge10nZe3sMUl91UbQRF9Pf3rCvhvYq7mb0cQ6rsomZ4B8L65CkWpa3f3KfxRWYkPHu/wDhXolF FcN7nWFFFFABRRXF+L/GI0+KWw0yUG9I2tKBuEX+Jq6dOVR8sVcidSMFeTHeNPH1l4ZjNpE6y6i6 8IORGPVv8K8ZutaGoXUlzc3RkmkOWZ85NMudEmuppJ5b1pZnO5mkXJY+5zVVvD9yPuyxEe5I/pXR 9Vrx+yY/WaMvtFpbmBukqf8AfVSAg9CD9DWU2i3y9Ilb6OP61C1heRt/x7y5/wBlc/yqXGrHeLKU 6b2kjcorA8y5hOC8qexyKeuoXK/8tM/UCo9p3NOXsblFZC6rMPvIjfTIrp/DGg6t4olH2WzaO3Bw 9zIcIv8Aj9BT54i5WZ9bmk+Eda1kBra0ZYj/AMtZflX9eteo6F4D0nRgskiC7uR/y0lXgH2WupAA AAGAOgqXU7DUe55xp/wqiChtRv3Zu6QLgfma3rf4e+HLfGbR5T6ySE/4V1NFQ5NlWRkReFtChA2a Va/jGD/OpxoOkAYGmWmP+uK/4Vo
 UUrsdjJl8L6FMCJNKtD7iMD+VZtz8PvDlznFm0J9YpCP8RXUU UXYrI83vfhTGcmx1Jl9FmTP6iuV1TwNrulgu1p58Q/5aQHdj8Ov6V7lRVKbE4o+amVkYqwKkdQR0 pK9/1fwxpOtoReWi+YeksY2uPx/xry3xJ4C1DRA9xbZu7Icl1HzoP9of1rSM0yXFo5KiiirEFFFF ABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAA4p4PcUygHFAEoOaM4poP cUoNMkeDTqjzTgaBjqcGptFMCYHPFLUQNSBvWgVhacDmm0UCJAcU8HNRA5pwOKYEgOKkBzUINOBx TES09WqMHIpaYE3WnA1ErYp/WgCQHFPBqIGnA4piJgc0oPrUYNPBzTEYPiuw8+yW7QfPD97HdT/g f61D8NvF8ngvxja6gWb7HIfJu0B4aMnk/UHBH0ro2VZI2jcZVhgg9xXnWp2LadfyW7ZIByjHuvau avHXmNqctLH3fFIk0SSxuHjdQysDwQeQafXk/wAB/GH9veEjo11JuvdKwi5PLQn7p/DkfgK9YrnN QooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAoo
 ooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAK8X/aQtDJ4P0q7AyIb7YT6Bkb/AOJr 2ivPfjZpp1H4WaoVGXtjHcD/AICwz/46TQB8qaS3zyr6gGtSsTTn2Xi+jAitut4PQzluFFFFWIKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiimvIkYy7qv1NADqKpyalAnCkufYVWk1WQ/6tFUe/NS5pDszVpjyxx/fdV+prEa5uJjg yMc9l/8ArVJHpt5NyIWA9W4/nSTlLSKuJ8sfidi++pW6ZwS30FVn1Y9EiH1JqeLQJD/rZlX2UZ/w q5HodomC++Q+7YH6VvHC15dLGMsTRj1uYr6jcv8AxhR/simBbq5+6ssn0BNdTHZW0ONkEYI77efz qeto5e38UjGWOS+GJy8ej3smMxBQe7MKtR+HpT/rJ0X/AHRn/Ct+it44Cit9TGWNqvbQyo9AtlHz ySMfbAFWU0mxTpAD/vEmrgpa3jh6UdooxlXqy3kyNLeCI5jhjU/7KgVJRRWySWxk23uFFFFMQUUU UAFFFFABRRRQAUUUUAF
 FFFABVvTtNutVu1trSIySN19FHqTVjRdDu9cvBBbJ8o+/IR8qD/PavXdF 0O00OzEFsnzH78h+85/z2rkxOKjRVlqzqw+GdV3exS8OeFrXQYQ5AlvGHzykdPYegrfoorw5zlOX NJ6nrwhGC5YhRRRUlBR0GTSO6xoXdgqgZJJ4Fea+LPGjXhew0xytv0kmHBf2HtW1GhKtK0TKrWjS jeRd8WeNgnmafpUmW+7JcKensv8AjXnZJJJJyT3Peiivdo0Y0o8sTxqtWVWV5BRRRWxkFFFFABUL 2dtJ963iOe+wZqau98E+ExNs1W/jzH1giYdf9o/0rGvUhThzTNaMJzlyxM3wv8MLK88u/wBVtikP 3kg3EF/97nge1epwW8NrAkFvEkUSDCogwAPpUnSivn6k+eXNax7cIckbXuFFFFQWFFFNkkSJC8jq iDqzHAFADqK5698baHZsV+0mZx2hXd+vSsW4+JttHn7Ppk0oH96QLn+dbLD1WrqLMnXpJ2ckd3RX mp+LsUJ/0jQL1VHVkdWxWjY/FjwxeMFlmntWP/PaPgfiM1nKMou0lY0UlLVM7miqOn6xpurJvsL6 C4Hfy3BI/DrV6pGFFFFAHB+K/h9BqCve6Sqw3XVoRwkn09DXlM8EtrO8E8bRyocMjDBBr6Srl/F/ g+DxDbGaELHqEY+SToH/ANlv8a0jO2jJcex4jRUtzbTWdzJb3EbRzRttZWHINRVsQFFFFABRRRQA UUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAA4pwNNooAkBzS0wGnA5piHg06o6c DQA6nA9jTaKYEwPY0tQg1IrZ4NAh1OBptFAiQHFPBqIGnA4pjJAcVIDmoQacDimSS09WxUYOaWmB MDmlBqJWxUgOaAJAcU8NUINOBxTETA5rB8U2JuLJbpBl4T83+6f8/wA63AaHRZY2RxlWBBB7ilKP MrAnZ3Od+G3itvB
 /jax1FnItHbyboesTcE/hwfwr7PVldQykMrDIIOQRXwXfWrWd7Lbt1RsA+o7f pX1h8FvFP/CSeALaKaTdeacfss2TyVA+RvxXj8DXA1Y6j0aiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACi iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKK KACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAoooo AKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigA ooooAKKKKACiiigAqhrWmprGhX+mygFLu3eE5/2lI/rV+igD4Hljlsb14pV2ywSFWHowODW8rBlD DoRkVufGfw+
 dB+JOoFE2299i8iIXA+b73/jwauZ06XzLUKeqcVpTetiZIt0UUVsQFFFFABRRRQAU UUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRUUtxFD99wD6d6VwJ aKzZdVAyIkz7tVOS7uJjgueey8VLmh8rNmS5hi+/IAfQdapy6qg4jjJ924qvDpl1Nz5ewer8VoQ6 HGOZpWY+ijArSNKtPZWM5VaUN2Zkl/cSfx7R6LxRHZXVwcpE7A/xNwPzNdHDZ28BHlxKD69T+Zqe uiGAv8cjnljf5EYcOhSnmWVVHoozV6LR7SPllaQ/7Rq/QK6oYWlHoc08TVl1GxxRxDEcaoP9kYqS koFdKSWxg3fcWiiimIWiiigQtFIKWmAUtJS0CCiiimAUUUUAFFFFABRRRQAUUUUAFFFFABXUeDvA +oeLrz90DDZIf3tyw4HsPU1q+Avhzc+Jpkvb9Xg0tT16NN7L7e9e/WFja6ZZxWlnCkMES4REGAK8 /FYxU/chv+R24fCufvT2OZ07wNBpNmtraTIiL1Ozlj6nmrR8MS9rlPxU10tFeO227s9VJJWRzB8M 3PaeL8QaafDd4OkkJ/E/4V1NFIZyR8O3w6CM/wDAqqX2nz6ZZy3d4YobeIbndpBgCul1vXNP8Paa 99qM4jiXoP4nPoB3NfPHjPxzqHi67w5MNhGf3Vup4+reprpw+GlWfZHPXxEaS8w8U+MJtYdrW0LR WIPPYye59vauVoor3adONOPLFHjznKcuaQUUUVZAUUUUAFFFFAG94T0I63qyrID9mh+eU+voPxr2 NEWNFRAFVRgAdhUfg/wNcaZ4btyXiW4nUSyg5yCeg/AYrYfQdQTpGrj/AGWFeBi6/tammyPawtL2 cNd2ZlFWZNOvIs77WUD1C5quyspwylT6EYrlOkSiiuR8Z+KTpMP2GzYfbJF+Zh/yzX/GtKdOVSSj EipUjTj
 zSLXiHxhZ6JmCPFxd4/1YPC/7x/pXmWqa7qGsSl7u4ZlzxGOFX8Kz3dpHLuxZickk8mkr 3KGFhSWmr7nj1sROq9dgooorpOcKiltYJ8+bCj+5Xn86lopNJqzGm1qjPGkxRTLNaTTW0q8q0bng /wA/1rr9D8d+INJZYr9k1S1BxljsmA9j0P41gUVzTwdGfS3odEMXVj1ue56RrNnrVmLmzk3DoyNw yH0Iq/XhWlatd6NerdWkm1h95T0cehFex6HrVtrmnLdQHDdJIyeUb0ry8ThXR1WqPQw+JVXR6M0q KKK5DqON8deEl1qzN/Zxj7fCvQf8tVHb6+leOEEEgggjqD2r6Vrx74m6Euj3i6xbxH7JctibaP8A Vyev0P8AOtITtoyZLscVRUUVxFN9xwT6d6lrW5AUUUUwCiiigAooooAKKKKACiiigAooooAKKKKA CiiigAooooAKKKKACiiigApwOabRQBIDS0wHNOBpiHg04HNR04GgB1KDSA5opgSq3Y06oQcVIrfl QIdTgabRQIkBxTgajBpwOKYyQHFSA5qEGnA4pkktOVsVGDmnUwJgc0oNRBsVIDmgB4OKeGqIGnA4 piOZ8W2uJYbtejDy2+o5H+faur+BPib+w/HqWEr4ttUTyCPSQcofzyP+BVm6zbm70meNRlgN6/Uc 1w1tcy2d1DcwNtmhdZEYdmByD+dclZWlc3pu6PvmisnwzrUfiLwzpurxfdu4FkI9Gx8w/A5H4VrV kWFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFA
 BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFF FFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUU UAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQ AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAB RRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAHjv7Qfhg6n4Ut9cgTM+mviQgcmJ+D +RwfxNfN2nzeVcgE/K/H+FfdOoWFvqmnXNhdxiS3uYmikU91YYNfEfinw/c+FvE19o9yDvtpSqsf 406qw+owaadncGXaKgtJ/tFuGJ+YcN9anroTuZBRRRTAKKKKACiiigAooooAKKKKACiiigAooooA KKKKACiiigAooooAKKKKACioZrqGAfO4z6DrVCbVHbIiUKPU8mpckhpNmm7qi5Zgo9TVObU4kyIw XP5Cs5VuLuTgPI38qvwaM7Yadwo/uryfzojGpU+BEynCHxMpy308uRu2j0Xilh0+5uORGQp/ibit 2Cyt7fGyMbv7x5NWK6oYK+tRnNPGdIIy4NFjXBmkLH0XgVoxW0MAxFGq+4HP51J3pa7IUacPhRyz
  qzn8TClpKXvWpkFLSUtMQtFIKWmIWiiimAtFFFMQClpKWgApaSlpiClFJRQAtFFFMQUUUUAFFFFA BRRRQAUUU5EaR1RFLOxwFAySaAG16l8P/he+pGPVddiaO0+9Fbtw0nu3oP51r/D74XC28rVtfiDT cNDat0T0Le/tXrQAAAA4ry8VjfsU/v8A8j0cNhPt1PuGxRRwRLFEipGgwqqMACn0UV5R6QUUUUAF YHinxZp3hPTjc3j7pW/1UCn5pD/Qe9Z3jXx9YeE7ZolK3GpOP3cAP3fdvQV89axrN/r2oSX2oztN O/c9FHoB2FduFwbq+9LRfmceIxSp+7Hct+JfFGpeKdSa7v5OBxHEv3Ix6Af1rFoor24xUVZbHkyk 5O7CiiimIKKKKACiiigAre8GaUNa8XadZMpaNpQ0mP7q8n+VYNelfBWzE/iu6uSP+Pe2OPqxArGv PkpSl5GtGPNUSPeQAqgAYAGBS0UV84e8FNZFcYZVYehGadRQBieIG0vSdFu9SuraPZBGWwBtyew4 96+Xr68l1C+mu5jl5WLH29q9o+NerGDR7PS0bBuJPMcf7K9P1rw+vZy+lyw53uzysdUvPk7BRRRX oHCFFFFABRRRQAUUUlABW14Y119C1ZZSSbeT5Jl9R6/UVi0VE4qcXGWzKhJxfMj6BR1ljWRGDKwy pHcU6uP+H2rm90hrKVsy2pwue6Hp+XSuwr52rTdObg+h71OanBSQVR1jS7fWtIudOulzFOhUn0PY j3BwavUVmWfKuraNe6LqE9pdRMGhcqWA4Pofx61Xiv54sDduHo3Nez/EnTBFfW+oovyzDy5P94dP 0/lXnNxpdpcZJj2N/eTj/wCtXfHCOcFOmzjlilCbhURmQ6nE+BICh/MVcR1dcqwYeoqjcaHPHzCw lX06Gs8+dbSYIeN/Q8VhONSnpNG0JQn8LOgorKh1R1wJVDD1HBq/DdQzj5HGfQ9aFJMppomo
 qzY2 F1qVyttZwPNM3RVFehaJ8Lsqsus3BBPPkQnp9W/wocktxJXPNQCSABk+gq1HpeoSjMdjcuD3WJj/ AEr3jT/D2k6UoFnYQxkD7+3LH8TzWn0qHUK5T53bRtUUZbTrsD18lv8ACqstvND/AK2GSP8A3lI/ nX0lUckEUylZYkkHoyg0e0DkPm2ivdtQ8E6BqIO+wSJz/HB8h/TiuJ1j4X3cG6TSrgXCf88pPlcf Q9DVKaYnFnn9FT3dldWFw0F3BJDKvVXXBqCrEFFFFABRRRQAUUUUAFFFFABRRRQAU4HNNooAkBpa YDTgaYrDwacDmo6UGgB9KDimg5paYEob8qdUIOKerUCY+nA02igQ8HFPBqIGnA4pjJQcU9WzUQNK DimKxNTlbFRq2adTESg5pwOKiVsU8HNAEnUY7GvO72E297PDjARyB9O1ehA4rjvEkXl6sWA4kQN+ PT+lZV17ty6b1PsD4fT2l14A0Sexgighe0QmOJQqhsYbgf7Wa6avLfgFqP2z4ax27Nl7S5ki59D8 w/8AQj+VepVymwUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU
 UUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAF FFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUU UUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRR QAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFA BRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFeJ/H/wAE/wBo6TF4 osos3Nkvl3QUctFnhv8AgJ/Q+1e2VFPBFdW8tvOiyRSqUdG6MpGCKAPg+xuPIn5+43B9q3Ku/Evw RN4H8VTWiqxsJyZbOT1Q/wAP1HT8qxNOuvMj8pz8y9PcVrTl0IkupeooorUkKKKKACiiigAooooA KKKKACiiigAooooAKKKKACiiigAoqrPfww8A729BWZPezTnBO1f7q1DmkNRbNSe+hh43bm9FrOm1 CaXIU7F9F/xp1vps82Cw2J6t1/KtS30+3gwdu9vVq0hQq1PJGc61OHmzHgsbi45C4U/xNxWnBpMM fMpMjenQVoUV2U8LThq9WclTEzltoCKqKFRQoHYCloorqOZi0tJS0xAKWkpaAFpaSimIWlpKO9MQ tLSUtMAFLSUtMQtFJS0CClpKWmAUCiimIWiiigBaKBRQIKKKKYBRRRQAUUVp6FoGoeItRSy0+AyO 33m/hQepPYUm1FXY0m3ZFOysrnULuO1tIXmnkOFRRkk1734D+Gtt4dRL/UlS41I8qCMrD9PU+9bH g3wNp/hG0BQCa+cfvbhhz9F9BXVV42Kxjqe5Db8z1cPhFD3p7hRRRXAdoUUU1mVF
 LOQqgZJJ4AoA dXm3j34nQ6F5mm6QyT6jjDydUh/xb2rD8f8AxULGXSfD0mF5Sa8Xv6hP8fyryAksxJJJJySe9enh cFf36n3f5nn4jF292n95Lc3M95cyXFzK8s0jbndzksaioor1jzQooooEFFFFABRRRQAUUUUAFev/ AAMT97rD46LGM/nXkFetfA2dRf6vAfvNEjj8CR/WuXG/wJHThP4yPaqKKK8A9oKKKKAPAvjRcmXx hDDniG2XA9MkmvOK774woV8dyE5w1vGRXA19FhVajH0PCxH8WXqFFFFbmIUUUUAFFFFABSUGigYU UUUgOk8C3jWvii3jGStwDEQO+eR+or1/ocEYPpXhmgTtbeItNmUkFLmM8f7wr6ums7a5H72BH9yO a8fMY2mpd0epgZXg12OEorqJ/Dds+TDI8R9D8wrLuNBvYeUVZV9UPP5V553HFeNbIXvhe6wMtDiV fw6/pXjdfQGoWzPZ3FvKjLvjZSGGOorwB1KOyn+E4r1suleDj2PMx0bSUhKZLDHMm2VFdfQin0le g0noziTad0ZFzoUT5a3fYf7rcj/GtDwt4A1PxFqOwj7PZxn97c9R9F9TW3oGiza7qaWsWVT70smP urXtVjZW+nWcVraxhIoxgAd/c+9eRjYUoO0VqenhJ1ZK8noVNE0HT/D9itrYw7QB80jcu59Sa06K K4DtCiiigAooooAKKKKAKOqaNYazbGC+t1lTsTwy/Q9RXk/inwHd6GHu7Qtc2IOScfPGPcenvXs1 IVDKVYAg8EEdaqMmhNXPmqivQfHHgf7F5mq6XGfs33poFH+r9x7e3avPq3TujNqwUUUUwCiiigAo oooAKKKKACiiigApwNNooAkBpaYDTgaYrDgacDmmUoNAh9KDimg5paYyRW/Kn1CDinq2PpQKw+lB pOtFAh9PBqIGnUxkmakVqiBpaYialBxTFanUxEoOa5vxWnzWzgHkMD+ldADi
 sbxRg2EJ7iXH6Goq fCyofEet/s13mbHXrIn7ssUqj6gg/wAhXvNfN37NsxHiTWoc8NaI+Po+P/Zq+ka4zcKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooo oAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiig AooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAC iiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKK KKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDlPiD4KtfHPhibTpdqXSZktZiP8AVyY4/A9D XxxqFhe6Jqs9jeRNDd20hSRCOQRX3lXk/wAY/hl/wl

<TRUNCATED>
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/storm_header.png
----------------------------------------------------------------------
diff --git a/docs/images/storm_header.png b/docs/images/storm_header.png
deleted file mode 100644
index 3a4c58a..0000000
Binary files a/docs/images/storm_header.png and /dev/null differ


[05/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/bolt.svg
----------------------------------------------------------------------
diff --git a/docs/images/bolt.svg b/docs/images/bolt.svg
deleted file mode 100644
index 5b8adb3..0000000
--- a/docs/images/bolt.svg
+++ /dev/null
@@ -1,743 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="606.33069"
-   height="195.39473"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="bolt.svg"
-   inkscape:export-filename="/Users/evans/src/storm/docs/images/bolt.png"
-   inkscape:export-xdpi="94.88485"
-   inkscape:export-ydpi="94.88485">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="386.38"
-       y1="81.633003"
-       gradientTransform="translate(28.11,-1.7569)"
-       x2="433.48999"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="130.03"
-       id="linearGradient3686" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="244.60001"
-       y1="81.633003"
-       gradientTransform="translate(-28.11,1.7569)"
-       x2="288.82001"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="178.42999"
-       id="linearGradient3684" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       color-interpolation-filters="sRGB"
-       height="3.1508999"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       id="filter5371-4">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-8" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-9"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-6" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329-0"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331-1" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <mask
-       id="mask7539"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7541"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA6CAAAAACb7Vj4AAAAAXNCSVQI5gpbmQAAAiFJREFUWIXtmMlu5DAMRLlJdttB/v9DE7clcZmDrU7nMEAwUA8QwHXUgQ9FLRAL4NJI4Y+W/lXx9+IICIgjYR0ZAfEgn/URgZCQEIYiAwLCw8MhDqJ0HjEzESEOdRgR7m5mfjb34BEyiyRhptE8N9OmaPbMA+KUppySMI3luWlrtSCEYXQeEkuabrcpp8QjDUZYa7XcASLC4MFDlnxb12WeMvM4HIBZLftGEO5P/oBIptv6/rbOOfFIf9bq/ingpkpf/gBJ0rS8va/LnMfy6r4xaC1yHsSznySS52V9X+csI3laJwHdswjRNx5JmuZlXZeJaRzPrTBomVLH9X4eJ3SelyWnkf4ag5XpuGZf/gCQiEVyznmWkf4YNGcRpv6OdB4Q0fHGDPUHSYSZiPqrfO4fIiASIiHhwAtodBRFQETAABjYvB/p4l28i3fxLt7Fu3gX77fxBAAgIgIiPMLDj7lpjMKPogERxwx//j8D3N1MtfFIy65N1czde2DQee6mWmsVGPufr7VWVXN/zgsiwk1b2ScGHfqf17rte2lqHs/ze7hrK/smYKPnsf1z20tT92/+XPWYDMv4efNj26t2YPenrWwCVnOikf30Vu/bx1aanht48Ny0MIHur8kLPu9FzeHBi3CtCF5flYfc6zd/4YYIYeVFeU+pxwmFx/1zg3B7XZ7V29n3jyzC7ZV53Xnfe3X6yiOH6pFHnv7+d9566XfrDzpndw8qE6zWAAAAAElFTkSuQmCC"
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7523"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7525"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAAA6CAAAAADpIjpOAAAAAXNCSVQI5gpbmQAAAhlJREFUWIXtmMtu2zAQRedFSpaC/P+HNrJIzqMLiY6zaBHaLVCgnqUAHtwhh9K9Avh/C7/16HcVvwYgICCOAjs2AuJGPxmIQEhICMPYgIDw8HCIgyqdScxMRIjDSiPC3c3Mz404mITMIkmY6RGmm2lTNLtnAnFKU05JmMaZbtpaLQhhGJ2JxJKmy2XKKfGo0AhrrZYrQETYTSciS76s6zJPmXlUp1kt+0YQ7nc6gUimy/r+ts458ahOa3X/EHBTpU+dgCRpWt7e12XO48y6bwxai5wHfPZOInle1vd1zjLK1DoJ6J5FiL4wSdI0L+u6TExjTLfCoGVKHdl7P05+npclp1GdjcHKdIzhp04AJGKRnHOeZVQng+YswtTvS2cCER13aVgnJBFmIupvinM/EQGREAkJBwfU6FiIgIiAATDY6LfqxXwxX8wX88V8Mf8FpgAARERAhEd4+OH3vl/hx8KAiMPTn9/3AHc3U208Kt21qZq5ew8JneluqrVWgXFvU2utquZ+nxEiwk1b2ScGHfY2Wrd9L03N497Ph7u2sm8C9ohX3D+2vTR1/6LTVQ9nWh7ztD+2vWqHdp3ayiZgNSca7d1bvW4/ttL03NCD6aaFCXR/PCN8XIuaw40Z4VoRvD6TZa71i85wQ4Sw8kTmKvU4ebjNpxuE23PZsLfe95Mswu3ZDHvOfCfQZ9YerlvWPnX+jX8Cr/qz9ROUOHcPsWPOzwAAAABJRU5ErkJggg=="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7515"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7517"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7499"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7501"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7467"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7469"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7459"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7461"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAADvCAAAAAB6GnHnAAAAAXNCSVQI5gpbmQAAA2JJREFUeJzt1suO4zgMhWFSFzuVNPr9H3QqsSWRnIWdunQVML06JQzOvzACZfOFIOSIMPYf6V8d/XDx5UTfP6ioTmg+ComQePsBJ1NVkiZNKjPKQ0LCw8MlDng5vlBNOeeUkup8apGIcHcz83NjDnbSnEupJec0KdvNRh9q9pEtKde6LrWWnKZku43e264SpiEnW1MudX15WZda84TjjrDe2/4QiQgTebI1l+Xldrte1iXnnyV+m1nbt3uScP8wbUmprC+3379ul6XmCadtvW2vRdzGSO/TFk2lrtdfv2/XyzIlu233LKPt5bwyziVJpSyX6+337bKUCdmjrUXGtpSS0id2KnW9XG+365rTzxq/yW3PMva1PtXPJTnuksvlel3qhNPuWWxfj+v5fdoimlIuZVmW5VImnHaWsSyl5PR8Gz7ZklI63pQzTltqKTmnlJ5/mM7dVhXVpJo06XwXt6XDpqKqoiEy30b8VWQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRlZERCIiJOR4iP+06WvvuggJOdkiIhHmZmNk1R/0fV+MMczcIp4nJzvczfporarPtzc+Wmujm7mf8oMdEWa9bWtJni
 dk275tW+v2Nu9zt92stf1R1VuZcUna4/7YWzM7x31O26237V6S9zrltPt2f71vrX9iR7j19qjq+1rzhNO2vm+v/zz+YItbb4+stl+WnCZku7XtcX99tG7H9XxO28ae1Nuj1knZve/bY9uHfbxJ3IdqWKu5pCnZPqy3fe/D/cNuq5uEj5Zz1hlfNxFm1nsff94kEuGjpSnVh9vNzM5hy4lU1ZQ0adK3o4kKkfDwcI/4xBZRldM8J/tcifPkk1G/nExSvD0Y+5/3L0oOf3SlGk1TAAAAAElFTkSuQmCC"
-         height="1"
-         width="1" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-3"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-5" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="38.193703"
-     inkscape:cy="154.48444"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1151"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-13.815789,-453.02008)">
-    <g
-       id="g3618"
-       inkscape:export-filename="/Users/evans/Desktop/MT Storm TechPulse/Bolts.png"
-       inkscape:export-xdpi="380"
-       inkscape:export-ydpi="380">
-      <rect
-         y="453.02008"
-         x="13.815789"
-         height="195.39473"
-         width="606.33069"
-         id="rect3171"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <g
-         id="g3183"
-         transform="matrix(0.52507812,0,0,0.52470126,208.74808,346.48674)">
-        <rect
-           y="294.36218"
-           x="127"
-           height="160"
-           width="160"
-           id="rect3185"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="translate(52,51)"
-           d="m 223,321.36218 c 0,37.00308 -29.99692,67 -67,67 -37.00308,0 -67,-29.99692 -67,-67 0,-37.00308 29.99692,-67 67,-67 37.00308,0 67,29.99692 67,67 z"
-           sodipodi:ry="67"
-           sodipodi:rx="67"
-           sodipodi:cy="321.36218"
-           sodipodi:cx="156"
-           id="path3187"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cccccccc"
-           inkscape:connector-curvature="0"
-           id="path3189"
-           d="m 177.48808,366.94412 14.95048,-40.97593 49.10335,-1.03572 -19.89942,28.88756 15.80545,6.80053 -52.2341,62.1111 11.91027,-48.62431 z"
-           inkscape:transform-center-y="21.9744"
-           inkscape:transform-center-x="12.504614"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-      </g>
-      <g
-         transform="translate(-32.236842,-78.289474)"
-         id="g3290">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3193"
-           width="253.96045"
-           height="35.238228"
-           x="394.59216"
-           y="605.64807" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3195"
-           width="240.3839"
-           height="2.7106316"
-           x="397.81766"
-           y="632.45319" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3197"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.2476081,0,0,0.84330818,-276.27173,433.82517)" />
-        <rect
-           y="608.60162"
-           x="398.37579"
-           height="16.611464"
-           width="76.668289"
-           id="rect3205"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3207"
-           y="621.77112"
-           x="413.80685"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="413.80685"
-             id="tspan3209"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a3d8;fill-opacity:1;stroke:none"
-           id="rect3211"
-           width="76.668289"
-           height="16.611464"
-           x="482.7066"
-           y="608.60162" />
-        <text
-           xml:space="preserve"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="498.1377"
-           y="621.77112"
-           id="text3213"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3215"
-             x="498.1377"
-             y="621.77112">Tuple</tspan></text>
-        <rect
-           y="608.60162"
-           x="567.88074"
-           height="16.611464"
-           width="76.668289"
-           id="rect3217"
-           style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3219"
-           y="621.77112"
-           x="583.31177"
-           style="font-size:17.03389359px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="621.77112"
-             x="583.31177"
-             id="tspan3221"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3223"
-         transform="matrix(0.82331292,0.18255007,-0.18255007,0.82331292,75.564302,152.94291)">
-        <rect
-           y="362.88846"
-           x="15.112782"
-           height="41.785706"
-           width="305.80826"
-           id="rect3225"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <rect
-           y="394.67416"
-           x="24.398497"
-           height="3.2142835"
-           width="284.24814"
-           id="rect3227"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(1.4794213,0,0,1,-774.42554,159.13982)"
-           inkscape:transform-center-y="-0.18214936"
-           inkscape:transform-center-x="-2.1245453"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="true"
-           sodipodi:arg2="1.1042783"
-           sodipodi:arg1="0.057080782"
-           sodipodi:r2="3.1928139"
-           sodipodi:r1="6.3856277"
-           sodipodi:cy="237.06165"
-           sodipodi:cx="731.51184"
-           sodipodi:sides="3"
-           id="path3229"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="star" />
-        <rect
-           y="367.39078"
-           x="21.917721"
-           height="19.697975"
-           width="90.913727"
-           id="rect3231"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3233"
-           y="383.00726"
-           x="40.215977"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="383.00726"
-             x="40.215977"
-             id="tspan3235"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#00a300;fill-opacity:1;stroke:none"
-           id="rect3237"
-           width="90.913727"
-           height="19.697975"
-           x="124.91772"
-           y="366.39078" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="143.21599"
-           y="382.00726"
-           id="text3239"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3241"
-             x="143.21599"
-             y="382.00726">Tuple</tspan></text>
-        <rect
-           y="366.39078"
-           x="224.91772"
-           height="19.697975"
-           width="90.913727"
-           id="rect3243"
-           style="fill:#00a300;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3245"
-           y="382.00726"
-           x="243.21599"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="382.00726"
-             x="243.21599"
-             id="tspan3247"
-             sodipodi:role="line">Tuple</tspan></text>
-      </g>
-      <g
-         id="g3249"
-         transform="matrix(0.82152499,-0.19043469,0.19043469,0.82152499,-76.489596,269.29106)">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect3251"
-           width="305.80826"
-           height="41.785706"
-           x="13.139097"
-           y="418.80951" />
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="rect3253"
-           width="284.24814"
-           height="3.2142835"
-           x="22.424812"
-           y="450.59521" />
-        <path
-           sodipodi:type="star"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3255"
-           sodipodi:sides="3"
-           sodipodi:cx="731.51184"
-           sodipodi:cy="237.06165"
-           sodipodi:r1="6.3856277"
-           sodipodi:r2="3.1928139"
-           sodipodi:arg1="0.057080782"
-           sodipodi:arg2="1.1042783"
-           inkscape:flatsided="true"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-           inkscape:transform-center-x="-2.1245453"
-           inkscape:transform-center-y="-0.18214936"
-           transform="matrix(1.4794213,0,0,1,-776.39922,215.06087)" />
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3257"
-           width="90.913727"
-           height="19.697975"
-           x="19.944036"
-           y="423.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="38.242294"
-           y="438.92831"
-           id="text3259"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3261"
-             x="38.242294"
-             y="438.92831">Tuple</tspan></text>
-        <rect
-           y="422.31183"
-           x="122.94403"
-           height="19.697975"
-           width="90.913727"
-           id="rect3263"
-           style="fill:#de0707;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text3265"
-           y="437.92831"
-           x="141.24231"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="437.92831"
-             x="141.24231"
-             id="tspan3267"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#de0707;fill-opacity:1;stroke:none"
-           id="rect3269"
-           width="90.913727"
-           height="19.697975"
-           x="222.94405"
-           y="422.31183" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="241.24231"
-           y="437.92831"
-           id="text3271"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan3273"
-             x="241.24231"
-             y="437.92831">Tuple</tspan></text>
-      </g>
-    </g>
-    <g
-       id="g7447"
-       transform="matrix(1.25,0,0,-1.25,-684.78675,1951.2461)" />
-  </g>
-</svg>

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/bullet.gif
----------------------------------------------------------------------
diff --git a/docs/images/bullet.gif b/docs/images/bullet.gif
deleted file mode 100644
index 45bb956..0000000
Binary files a/docs/images/bullet.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/download.png
----------------------------------------------------------------------
diff --git a/docs/images/download.png b/docs/images/download.png
deleted file mode 100644
index 5e07c78..0000000
Binary files a/docs/images/download.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/incubator-logo.png
----------------------------------------------------------------------
diff --git a/docs/images/incubator-logo.png b/docs/images/incubator-logo.png
deleted file mode 100644
index 33ca7f6..0000000
Binary files a/docs/images/incubator-logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/abartos/stationery_mockup.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/abartos/stationery_mockup.jpg b/docs/images/logocontest/abartos/stationery_mockup.jpg
deleted file mode 100644
index d2635d5..0000000
Binary files a/docs/images/logocontest/abartos/stationery_mockup.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/abartos/storm_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/abartos/storm_logo.png b/docs/images/logocontest/abartos/storm_logo.png
deleted file mode 100644
index 743b694..0000000
Binary files a/docs/images/logocontest/abartos/storm_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/abartos/storm_logo2.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/abartos/storm_logo2.png b/docs/images/logocontest/abartos/storm_logo2.png
deleted file mode 100644
index a487d28..0000000
Binary files a/docs/images/logocontest/abartos/storm_logo2.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/abartos/storm_logo3.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/abartos/storm_logo3.png b/docs/images/logocontest/abartos/storm_logo3.png
deleted file mode 100644
index ddb4591..0000000
Binary files a/docs/images/logocontest/abartos/storm_logo3.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/cboustead/storm_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/cboustead/storm_logo.png b/docs/images/logocontest/cboustead/storm_logo.png
deleted file mode 100644
index 6007dd4..0000000
Binary files a/docs/images/logocontest/cboustead/storm_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/cboustead/storm_logo1.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/cboustead/storm_logo1.png b/docs/images/logocontest/cboustead/storm_logo1.png
deleted file mode 100644
index d0fe1fe..0000000
Binary files a/docs/images/logocontest/cboustead/storm_logo1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/jlee1/storm_logo.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/jlee1/storm_logo.jpg b/docs/images/logocontest/jlee1/storm_logo.jpg
deleted file mode 100644
index ee68155..0000000
Binary files a/docs/images/logocontest/jlee1/storm_logo.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/jlee2/storm_logo.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/jlee2/storm_logo.jpg b/docs/images/logocontest/jlee2/storm_logo.jpg
deleted file mode 100644
index 4ceabe8..0000000
Binary files a/docs/images/logocontest/jlee2/storm_logo.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/jlee3/storm_logo.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/jlee3/storm_logo.jpg b/docs/images/logocontest/jlee3/storm_logo.jpg
deleted file mode 100644
index 03850d1..0000000
Binary files a/docs/images/logocontest/jlee3/storm_logo.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/pforrest/storm1.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/pforrest/storm1.png b/docs/images/logocontest/pforrest/storm1.png
deleted file mode 100644
index dda4531..0000000
Binary files a/docs/images/logocontest/pforrest/storm1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/pforrest/storm_logo_composite.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/pforrest/storm_logo_composite.png b/docs/images/logocontest/pforrest/storm_logo_composite.png
deleted file mode 100644
index c540769..0000000
Binary files a/docs/images/logocontest/pforrest/storm_logo_composite.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/rmarshall/StormLogo_Horizontal.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/rmarshall/StormLogo_Horizontal.png b/docs/images/logocontest/rmarshall/StormLogo_Horizontal.png
deleted file mode 100644
index 7eab0ab..0000000
Binary files a/docs/images/logocontest/rmarshall/StormLogo_Horizontal.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/rmarshall/StormLogo_Horizontal_NoColour.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/rmarshall/StormLogo_Horizontal_NoColour.png b/docs/images/logocontest/rmarshall/StormLogo_Horizontal_NoColour.png
deleted file mode 100644
index f76f8f4..0000000
Binary files a/docs/images/logocontest/rmarshall/StormLogo_Horizontal_NoColour.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/rmarshall/StormLogo_Square.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/rmarshall/StormLogo_Square.png b/docs/images/logocontest/rmarshall/StormLogo_Square.png
deleted file mode 100644
index 0b7cba1..0000000
Binary files a/docs/images/logocontest/rmarshall/StormLogo_Square.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/sasili/storm_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/sasili/storm_logo.png b/docs/images/logocontest/sasili/storm_logo.png
deleted file mode 100644
index 9b1a41a..0000000
Binary files a/docs/images/logocontest/sasili/storm_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/squinones/storm_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/squinones/storm_logo.png b/docs/images/logocontest/squinones/storm_logo.png
deleted file mode 100644
index 2ec52f6..0000000
Binary files a/docs/images/logocontest/squinones/storm_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/squinones/storm_logo1.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/squinones/storm_logo1.png b/docs/images/logocontest/squinones/storm_logo1.png
deleted file mode 100644
index e9d9195..0000000
Binary files a/docs/images/logocontest/squinones/storm_logo1.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/ssuleman/storm_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/ssuleman/storm_logo.png b/docs/images/logocontest/ssuleman/storm_logo.png
deleted file mode 100644
index 824283e..0000000
Binary files a/docs/images/logocontest/ssuleman/storm_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/storm_logo_winner.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/storm_logo_winner.png b/docs/images/logocontest/storm_logo_winner.png
deleted file mode 100644
index 9478c7c..0000000
Binary files a/docs/images/logocontest/storm_logo_winner.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logocontest/zsayari/storm_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logocontest/zsayari/storm_logo.png b/docs/images/logocontest/zsayari/storm_logo.png
deleted file mode 100644
index 1a8ca69..0000000
Binary files a/docs/images/logocontest/zsayari/storm_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/8digits.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/8digits.png b/docs/images/logos/8digits.png
deleted file mode 100644
index 60a0e67..0000000
Binary files a/docs/images/logos/8digits.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/Yahoo_Japan_logo.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/Yahoo_Japan_logo.png b/docs/images/logos/Yahoo_Japan_logo.png
deleted file mode 100644
index b1a9a99..0000000
Binary files a/docs/images/logos/Yahoo_Japan_logo.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/aeris.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/aeris.png b/docs/images/logos/aeris.png
deleted file mode 100644
index 1cfda41..0000000
Binary files a/docs/images/logos/aeris.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/alibaba.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logos/alibaba.jpg b/docs/images/logos/alibaba.jpg
deleted file mode 100644
index 52c6eab..0000000
Binary files a/docs/images/logos/alibaba.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/baidu.jpeg
----------------------------------------------------------------------
diff --git a/docs/images/logos/baidu.jpeg b/docs/images/logos/baidu.jpeg
deleted file mode 100644
index 32d891c..0000000
Binary files a/docs/images/logos/baidu.jpeg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/cerner.gif
----------------------------------------------------------------------
diff --git a/docs/images/logos/cerner.gif b/docs/images/logos/cerner.gif
deleted file mode 100644
index 3df9829..0000000
Binary files a/docs/images/logos/cerner.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/flipboard.jpeg
----------------------------------------------------------------------
diff --git a/docs/images/logos/flipboard.jpeg b/docs/images/logos/flipboard.jpeg
deleted file mode 100644
index 5fb9176..0000000
Binary files a/docs/images/logos/flipboard.jpeg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/fullcontact.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/fullcontact.png b/docs/images/logos/fullcontact.png
deleted file mode 100644
index 2101462..0000000
Binary files a/docs/images/logos/fullcontact.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/groupon.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logos/groupon.jpg b/docs/images/logos/groupon.jpg
deleted file mode 100644
index 3acad43..0000000
Binary files a/docs/images/logos/groupon.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/holidaycheck.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/holidaycheck.png b/docs/images/logos/holidaycheck.png
deleted file mode 100644
index afc13b4..0000000
Binary files a/docs/images/logos/holidaycheck.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/idexx.gif
----------------------------------------------------------------------
diff --git a/docs/images/logos/idexx.gif b/docs/images/logos/idexx.gif
deleted file mode 100644
index aa76c11..0000000
Binary files a/docs/images/logos/idexx.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/mercadolibre.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/mercadolibre.png b/docs/images/logos/mercadolibre.png
deleted file mode 100644
index 81202f1..0000000
Binary files a/docs/images/logos/mercadolibre.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/navisite.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logos/navisite.jpg b/docs/images/logos/navisite.jpg
deleted file mode 100644
index fc9e9fb..0000000
Binary files a/docs/images/logos/navisite.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/ooyala.gif
----------------------------------------------------------------------
diff --git a/docs/images/logos/ooyala.gif b/docs/images/logos/ooyala.gif
deleted file mode 100644
index 614e1c9..0000000
Binary files a/docs/images/logos/ooyala.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/parc.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/parc.png b/docs/images/logos/parc.png
deleted file mode 100644
index 3b5ea4c..0000000
Binary files a/docs/images/logos/parc.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/quicklizard.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/quicklizard.png b/docs/images/logos/quicklizard.png
deleted file mode 100644
index 8f4fee6..0000000
Binary files a/docs/images/logos/quicklizard.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/rocketfuel.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/rocketfuel.png b/docs/images/logos/rocketfuel.png
deleted file mode 100644
index 62b25da..0000000
Binary files a/docs/images/logos/rocketfuel.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/rubicon.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/rubicon.png b/docs/images/logos/rubicon.png
deleted file mode 100644
index 621a8f6..0000000
Binary files a/docs/images/logos/rubicon.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/spiderio.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/spiderio.png b/docs/images/logos/spiderio.png
deleted file mode 100644
index ff9e8e1..0000000
Binary files a/docs/images/logos/spiderio.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/spotify.jpeg
----------------------------------------------------------------------
diff --git a/docs/images/logos/spotify.jpeg b/docs/images/logos/spotify.jpeg
deleted file mode 100644
index 5577690..0000000
Binary files a/docs/images/logos/spotify.jpeg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/taobao.gif
----------------------------------------------------------------------
diff --git a/docs/images/logos/taobao.gif b/docs/images/logos/taobao.gif
deleted file mode 100644
index a284420..0000000
Binary files a/docs/images/logos/taobao.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/twitter.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/twitter.png b/docs/images/logos/twitter.png
deleted file mode 100644
index 188597e..0000000
Binary files a/docs/images/logos/twitter.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/weatherchannel.gif
----------------------------------------------------------------------
diff --git a/docs/images/logos/weatherchannel.gif b/docs/images/logos/weatherchannel.gif
deleted file mode 100644
index f50ddd3..0000000
Binary files a/docs/images/logos/weatherchannel.gif and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/webmd.jpg
----------------------------------------------------------------------
diff --git a/docs/images/logos/webmd.jpg b/docs/images/logos/webmd.jpg
deleted file mode 100644
index e477769..0000000
Binary files a/docs/images/logos/webmd.jpg and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/logos/yelp.png
----------------------------------------------------------------------
diff --git a/docs/images/logos/yelp.png b/docs/images/logos/yelp.png
deleted file mode 100644
index 16d6e5e..0000000
Binary files a/docs/images/logos/yelp.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/mailinglist.png
----------------------------------------------------------------------
diff --git a/docs/images/mailinglist.png b/docs/images/mailinglist.png
deleted file mode 100644
index ef44068..0000000
Binary files a/docs/images/mailinglist.png and /dev/null differ

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/resource_aware_scheduler_default_eviction_strategy.svg
----------------------------------------------------------------------
diff --git a/docs/images/resource_aware_scheduler_default_eviction_strategy.svg b/docs/images/resource_aware_scheduler_default_eviction_strategy.svg
deleted file mode 100644
index 2c531eb..0000000
--- a/docs/images/resource_aware_scheduler_default_eviction_strategy.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="2263px" height="1523px" version="1.1" content="%3Cmxfile%20type%3D%22device%22%20userAgent%3D%22Mozilla%2F5.0%20(Macintosh%3B%20Intel%20Mac%20OS%20X%2010_10_4)%20AppleWebKit%2F537.36%20(KHTML%2C%20like%20Gecko)%20Chrome%2F47.0.2526.73%20Safari%2F537.36%22%20version%3D%225.2.6.8%22%20editor%3D%22www.draw.io%22%3E%3Cdiagram%3E7Vzrk6JIEv9rOu7ugxMIPro%2Fzqt3P9xtbNxsxN5%2BpBGFW7Q8xLZn%2FvrNrMosqrQQpkHQvjGMUIuiHplZmb984F3wcf3yUx5uk3%2BJRZzd%2Bd7i5S74dOf7k%2FF0Ch%2FY8lW1BN50rFpWebpQbUbDl%2FRbTI0ete7TRbyzOhZCZEW6tRsjsdnEUWG1hXkuDna3pcjsWbfhimcsG75EYXba%2Bnu6KBLVeu%2FPyvaf43SV8Mzj2YO68hRGf65ysd%2FQfHd%2BsJQvdXkd8lhyo8FnoGIuBAyD39YvH%2BMMKck0CoLFzJ9HD7NoNguXI0Wcx2ad9RbyeEPLbDNcoIZ7DrM90egPYJD%2F%2BItQF3bFVyZenoj10x448OGQpEX8ZRtGeOUAsgJtSbHO4NcYvi7FpiDeAz2CD7Urpj09x3kRk7DJJtrBT7FYx0X%2BFbrQVd%2BjdZMgjlnADiVXx95ctSUmRz3qGJIkrfTYJc3gC5GtEQlJeAwSfomSeLEHuoF43%2FmzDCb%2FsNuGG%2Fi%2Bwu9im4kVTDkL10i6zdMOP7gnTG9
 25uaUG8oh90%2Fchhf1zWWz0apvP%2BHr4Nxk5jEzAwcz1cGymTnrnpe8FIOZJ%2FSKF6BT6KfIi0SsxCbMPpetH6SiiHEGJFgHtNyJfS7ZU3mAizBfxe4xSD5x2We5kcdZWKTPtqpsQ1s2Dr0S82ibLak7ZitVTV4lrT2Qs2JpBnU%2FxUWcr9MNKp4UTBMY160AVZOiSvd2idiDvQRjhtfj5zQqgKxXpw0m42PdTr8NdeDfO9TBA6GTLmlMAvuW1AHLTf%2F64LLqIH5Ji%2F9g87sp%2FfqDr2xgocYl%2FInXcIA%2BlAjbrnNKZBgdwiuzWKIgAxLG4s3sf3sEtPLCaCdJ9h46AG1eyosMMj5K%2FGLBG9JFlbCnFt9UgqXzeGeZizWsc7%2BL89qp991OLRXtjsAgcODR6KToWwHJgGngEqG4Dw%2FOJrY6Hk1P0Znvu6A2Y6ku5fXeJa%2BKO5KSMCW8gc6M86%2FTf5k82ESdzl2Ql4a1iUoUaIXLJjePy9hFOKNSlaz0r1N5aQ6darp1P4sDBg72USLXpPaKMG0h5EedumzsJdq%2Bn6HeKnW7akblnhZhlkan6h0GhF02UYubGDGmJ%2FbFDkI%2F%2BA1wqftGczvntHXdzrUSv9DOXdv8G7KMuSgDXWEebopYjabueMIdWYtZpM8tdtHI8zcphYtsRNIwy0QUSu%2FA3FT4JODYmJtDKYCbvXCxSIsUNcSRMCP75TCuewuIMWnz2BwWtCMItFpkv17L6z%2BQWiYj4c%2FJwTGMxNSnNtNI%2BF73ntBkCF%2B%2BHeomS3kOdVN0tztXSN76Ps9DvIs7bEW6KeA06JF%2FxYaS0bMHOwA289W6dAj3%2B%2FrDF7WCks96K69ivcsJVodpy%2BfoJPLQCNX%2F9%2FXQOkXtomMYXoTKyzuYeLvpIsiWOeZ9d07jQJve%2FTWGVANbeTy4YDvrCSuKQuCwS0
 REx8whQFIVO8wxbLMYgQVebZQ5joAyEhEcmWPbzDkGykAmR7w%2FHGn8Dic%2FGuYxhcQO%2B4iWNLiBxqsncjmYeAoax%2B472e6dDyz0igTPCO25SELUMAmwna%2BsxQ6bTHPOVjyRx0%2FgjYm83TDrZ2l3bH27lYJThFVj7WvOKU39KYuXeHsi8vQbHF1AOX2d4%2FmYzs4ZR9GfuRxFzmm2Ocfk1d%2BwnzihLZwBAcq89eAncrqq43CnEew04pt4Scc%2By2tD0Xwq2%2Fp3xnktFzA9ZZ68kappHH1ipUPz9oMW7ukenXNpmlB%2FIP3UKh7V6bkYWPqn9RkYhYf69jLGwT2ZBHYbArXUC7kNTIhzbsO%2FY6jNifawbYkqqkJiiFHwMwkl%2BmAUAjAlPQIfQPY%2FY4RGsHWMLoRRBIKCVCCA02%2BcrBraWW6P6cyA0%2BG9XwAa7SgcAkuocG8kgbJUgrx%2FKkgYli0Yp7Pzx7L%2FVhRwNlKIEKHsyTV34RENofT8Gbk6rPS8OSkzC1zRobHA1YyAUIeWapCg%2FKWxFeuA%2FnPNTL0bxq5TkrxzufxA2s7%2BcRWv7UZc%2Bu9NJLT37%2Fu1JhcKChwSRLcW7RwBguMujQIGzlyJMZbTTnaXAbpc7sR1s5FPaXxPFVWHysO0zzc2ovmlQjg9AgsoIrXj81OPbI%2BFKwhrWIkbBgFdampXycStJ27Y%2FPSPK44Xchra%2Fk0n7jErsQEdSxWXuhAI8wpHZ%2BzqhXrKoqmLtDmcZQo186XzOqCxC2%2FcFpzjKO01hCIrllZTskKQCp3EzqpTuskGulZ7SEEsGapk4hBLsLLNU4jiF0hVK%2BXxFMuwQVmsB%2FuUu32KM7FZaf%2B3k8KULpI%2FpylKe%2B7r97%2B9o9zGfOYo9A5cuY2gezPJHr1xBH4RkM4uazYNEPKGQr%2Fze%2FLiNRNOi0x
 0LslmwgWepHKFDK%2B73J5E%2BNzjN7SHwbEKR7Juh7pMunPUHe5pBlJCb%2F3phXmDMF%2FbhMYrJZqXVoNbfhOYsgc4nu13MuRkucZ%2Fl67z4wibhXxUYCnjFMs8XK0x1i02%2FzAjE6TxPR7VFcnAYMGNmuXpxHZe5%2FzQt2kQuHzdMghcYdSKwbeP8ykmWxO3HSgfrhfXCOcgwnmUYOfmcc5IUVyL9T0%2FBmeKNYu%2BJdbc2CrD3W3ph7YIw6S4SXovaxJelePWATSOUsB%2FVlwyx60pYRyn39WDczLkswxlglqloikIfOuPP1Rkk9cixx0blvX6PVCOwbJO4HpYUydwwZ1t6sj%2BtcpQDhGY7VgR8LOB50zdZKAUpV7cj7r126lbH%2Bmwsi7KYPtrRoU4pNz986Ys9G%2BiFo3OXs35lJC7j%2FrXbh%2F3r3CL%2B9N9DtoOVeaqF3OBeow35QSMbS9grOuErHCn47GYMQerW5n8brWLM2SkfYIhHQSlUxqkcIc4KtWlSz%2FqUnutS%2F0eDGW6PEeFq1CmJEmb4L8B1tWwKmqvpVdp%2Fw9S3XNLt1TbOppzdkYX9HOex1B0gRNGcZV4K0XnMke35tvUl6H0WX75%2F0FQ5bMNYRWc%2FyzzowTiUiUQl7Jqjah3%2Ffo74EcRdGiKAptWtZUzNNV9bYTO7LypzDEnD%2FvPHHOZw2WoV7oFwb3lGLzzIGWtfv8a5yksG6VZDteJvlfOb%2F1fkfadFJjw2dFYiOpZqv5f4%2FiGe%2Fq3yar%2BAf8b5Sv7T2r6cwja3b11ToP5Zpzuz%2Bq5Lhs7p2gdStjdLnR4olQrVGS9EFYq0YCLc0q%2BO%2BL7DJRNJcoE%2F45DDj%2FLP%2FxWTCj%2FQz34%2FBc%3D%3C%2Fdiagram%3E%3C%2Fmxfile%3E" style="background-color: rgb(25
 5, 255, 255);"><defs/><g transform="translate(0.5,0.5)"><path d="M 990.5 164 L 1044 214 L 990.5 264 L 937 214 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(956,201)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="65" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 67px; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Yes/No</div></div></foreignObject><text x="33" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="744" y="184" width="120" height="60" fill="#ffffff" stroke="#000000" pointer-events
 ="none"/><g transform="translate(745,188)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="114" height="49" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 114px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Schedule t<span>oplogy </span><i>t<sub>i</sub></i></div></div></foreignObject><text x="57" y="35" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 937 214 L 870.37 214" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 865.12 214 L 872.12 210.5 L 870.37 214 L 872.12 217.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="
 10" pointer-events="none"/><path d="M 1286.14 262 L 1286.14 295.86 L 1289.71 295.86 L 1288.73 322.64" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1288.54 327.88 L 1285.3 320.76 L 1288.73 322.64 L 1292.29 321.02 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1147" y="167" width="280" height="95" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1148,190)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="274" height="46" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 274px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Determine if topolog
 ies should be evicted</div></div></foreignObject><text x="137" y="33" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1043.69 213.71 L 1096.86 213.71 L 1140.63 213.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1145.88 213.71 L 1138.88 217.21 L 1140.63 213.71 L 1138.88 210.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 989.71 113.71 L 989.71 157.35" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 989.71 162.6 L 986.21 155.6 L 989.71 157.35 L 993.21 155.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><ellipse cx="991" cy="59" rx="113.5" ry="55" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(878,31)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="221" height="52" requiredFeatures
 ="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 221px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><font style="font-size: 20px">Can topology <i>t<sub>i </sub></i>from user <i>u<sub>i </sub></i>be scheduled?</font></div></div></foreignObject><text x="111" y="36" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1287.5 624 L 1348 683 L 1287.5 742 L 1227 683 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(1260,670)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="51" height="22" requiredFeatures="http://www.w3.org/TR/SVG11
 /feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 51px; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">&gt;0 / 0</div></div></foreignObject><text x="26" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1288.5 534 L 1289.71 578 L 1286.14 578 L 1286.14 618.96" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1286.14 624.21 L 1282.64 617.21 L 1286.14 618.96 L 1289.64 617.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><ellipse cx="1289" cy="432" rx="262.5" ry="102.5" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1027,377)"><switch><f
 oreignObject style="overflow:visible;" pointer-events="all" width="519" height="106" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 519px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><span>How much resources does topology </span><i>t</i><sub style="font-style: italic">i  </sub>need outside of <span>user </span><i>u</i><sub style="font-style: italic">i</sub>'s resource guarantee:<br /><div><i>u</i><sub>i</sub><span>'s </span>allocated resource above guarantee + additional resources needed above guarantee to schedule <i>t</i><sub>i</sub></div></div></div></foreignObject><text x="260" y="63" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not
  supported by viewer]</text></switch></g><path d="M 1346.54 681.57 L 1425.43 681.57 L 1446.63 681.57" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1451.88 681.57 L 1444.88 685.07 L 1446.63 681.57 L 1444.88 678.07 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1766" y="1004" width="205" height="94" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1767,991)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="199" height="116" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 199px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><p>Determine if <
 i>t<sub>j </sub></i>is evicted can we schedule <i>t<sub>i </sub>.</i></p></div></div></foreignObject><text x="100" y="68" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><rect x="1453" y="624" width="261" height="126" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1455,637)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="255" height="97" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 255px; white-space: normal;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="text-align: center"><span style="line-height: 1.2">Find user </span><i style="line-height: 1.2">u<sub>j</sub></i><sp
 an style="line-height: 1.2">, the user that has the most resources above his or her guarantee</span></div><div style="text-align: center"><br /></div></div></div></foreignObject><text x="128" y="59" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1868.29 1164.2 L 1868.29 1131.57 L 1868.29 1104.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1868.29 1099.12 L 1871.79 1106.12 L 1868.29 1104.37 L 1864.79 1106.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1814.71 1213.71 L 1210.37 1213.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1205.12 1213.71 L 1212.12 1210.21 L 1210.37 1213.71 L 1212.12 1217.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1868.5 1164 L 1922 1213.5 L 1868.5 1263 L 1815 1213.5 Z" fill="#ffffff" stroke="#0
 00000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(1834,1201)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="65" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 67px; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="text-align: center">Yes/No</div></div></div></foreignObject><text x="33" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 2118.29 1133 L 2118.29 688.71 L 1721.08 688.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1715.83 688.71 L 1722.83 685.21 L 1721.08 688
 .71 L 1722.83 692.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1998" y="1133" width="266" height="162" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1999,1118)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="260" height="188" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 260px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><p>Recalculate how much resources users have above their guarantee taken into account that <i>t</i><sub style="font-style: italic">j</sub> is evicted. Add <i>t</i><sub>j </sub>to list L, a list of topologies to potentially evict</p></div></div></
 foreignObject><text x="130" y="104" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1921.77 1213.71 L 1961.14 1213.71 L 1991.63 1213.71" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1996.88 1213.71 L 1989.88 1217.21 L 1991.63 1213.71 L 1989.88 1210.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 768.29 810 L 768.29 838.71 L 768.29 859.92" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 768.29 865.17 L 764.79 858.17 L 768.29 859.92 L 771.79 858.17 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="634" y="556" width="269" height="254" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(635,582)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="263" height="199" requiredFeatures="http:
 //www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 263px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="text-align: center"><span style="line-height: 1.2">Find user </span><i style="line-height: 1.2">u</i><sub style="font-style: italic">j</sub><span style="line-height: 1.2">, the user who has the most  resources above his or her resource guarantee &gt; </span><i>u</i><sub>i</sub><span>'s </span><span>allocated</span><span> resource above guarantee + additional resources needed above guarantee to schedule </span><i>t</i><sub>i</sub><br /></div></div></div></foreignObject><text x="132" y="110" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by
  viewer]</text></switch></g><path d="M 1228.46 681.57 L 1064.71 681.57 L 909.37 681.57" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 904.12 681.57 L 911.12 678.07 L 909.37 681.57 L 911.12 685.07 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1288" y="1414" width="256" height="110" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1289,1444)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="250" height="46" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 250px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Topology cannot be scheduled. </d
 iv></div></foreignObject><text x="125" y="33" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1868.29 951 L 1868.29 978 L 1868.29 997.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1868.29 1002.88 L 1864.79 995.88 L 1868.29 997.63 L 1871.79 995.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1753" y="817" width="231" height="134" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1754,832)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="225" height="100" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 225px; white-space: normal; text-align: center;"><div xmlns
 ="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><span>Find a topology </span><i>t<sub>j </sub></i><span>with the lowest priority that has been scheduled and belongs to user </span><i>u<sub>j</sub></i><span>.</span></div></div></foreignObject><text x="113" y="60" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1584 819 L 1647 884 L 1584 949 L 1521 884 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(1549,859)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="66" height="46" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 66px; white-space: nowrap; text-align: cen
 ter;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">None?<div>Yes/No</div></div></div></foreignObject><text x="33" y="33" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1582.57 750 L 1582.57 785.14 L 1582.57 814.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1582.57 819.36 L 1579.07 812.36 L 1582.57 814.11 L 1586.07 812.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1645.89 885.14 L 1700.43 885.14 L 1746.63 885.14" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1751.88 885.14 L 1744.88 888.64 L 1746.63 885.14 L 1744.88 881.64 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1371.86 960.14 L 1371.86 1185.14 L 1414.71 1185.14 L 1414.71 1407.35" fill="none" stroke
 ="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1414.71 1412.6 L 1411.21 1405.6 L 1414.71 1407.35 L 1418.21 1405.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1274" y="809" width="193" height="150" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1275,823)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="187" height="118" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 187px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><span>Total cluster resources (+/- room for fragmention) &lt; Total resource guarantees</span></div></div></foreignObject><text x="94" y
 ="69" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 836.86 935.14 L 868.29 935.14 L 896.63 935.14" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 901.88 935.14 L 894.88 938.64 L 896.63 935.14 L 894.88 931.64 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 767 865 L 837 935 L 767 1005 L 697 935 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(732,910)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="66" height="46" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 66px; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.or
 g/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">None?<div>No/Yes</div></div></div></foreignObject><text x="33" y="33" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 989.71 1012 L 989.71 1467.29 L 1283.35 1467.29" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1288.6 1467.29 L 1281.6 1470.79 L 1283.35 1467.29 L 1281.6 1463.79 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="903" y="859" width="170" height="153" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(904,897)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="164" height="73" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 
 0, 0); line-height: 1.2; vertical-align: top; width: 164px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Wont be fair to allocate <span>user </span><i>u</i><sub style="font-style: italic">i </sub>more resources</div></div></foreignObject><text x="82" y="47" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 479 1204 L 479 1238.71 L 479 1270.11" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 479 1275.36 L 475.5 1268.36 L 479 1270.11 L 482.5 1268.36 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="374" y="1094" width="210" height="110" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(375,1089)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="204" height="1
 16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 204px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><p>Determine if <i>t<sub>j </sub></i>is evicted can we schedule <i>t<sub>i </sub>.</i></p></div></div></foreignObject><text x="102" y="68" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 417.38 1335.14 L 364.71 1335.14 L 321.08 1335.14" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 315.83 1335.14 L 322.83 1331.64 L 321.08 1335.14 L 322.83 1338.64 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 541.62 1335.14
  L 1139.71 1335.14 L 1139.71 1255.8" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1139.71 1250.55 L 1143.21 1257.55 L 1139.71 1255.8 L 1136.21 1257.55 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 479.5 1276 L 542 1335.5 L 479.5 1395 L 417 1335.5 Z" fill="#ffffff" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(445,1323)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="65" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 67px; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="text-align: center">No/Yes</div
 ></div></div></foreignObject><text x="33" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 157.57 1242.29 L 157.57 681.57 L 626.2 681.57" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 631.45 681.57 L 624.45 685.07 L 626.2 681.57 L 624.45 678.07 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="4" y="1241" width="310" height="186" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(5,1238)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="304" height="188" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 304px; white-space: normal; text-align: center;"><div xmlns="ht
 tp://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><p>Recalculate how much resources users have above their guarantee taken into account that <i>t</i><sub style="font-style: italic">j</sub> is evicted. Add <i>t</i><sub>j </sub><span>to list L when hold a list of topologies that may be evicted</span></p></div></div></foreignObject><text x="152" y="104" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 605 935.14 L 650.43 935.14 L 690.77 935.14" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 696.02 935.14 L 689.02 938.64 L 690.77 935.14 L 689.02 931.64 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 479 1012 L 479 1053 L 479 1087.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 479 1092.88 L 475.5 1085.88 L 479 1087.63 L 482.5 10
 85.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="355" y="858" width="250" height="154" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(356,883)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="244" height="100" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 244px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><span>Find a topology </span><i>t<sub>j </sub></i><span>with the lowest priority that has been scheduled and belongs to user </span><i>u</i><sub style="font-style: italic">j </sub></div></div></foreignObject><text x="122" y="60" fill="#000000" text-anchor="middle
 " font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g><path d="M 1521 884 L 1473.37 884" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1468.12 884 L 1475.12 880.5 L 1473.37 884 L 1475.12 887.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 1121.86 1181.57 L 1139.71 1181.57 L 1139.71 935.14 L 1114.71 935.14 L 1114.71 535.14 L 804 535.14 L 804 250.37" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 804 245.12 L 807.5 252.12 L 804 250.37 L 800.5 252.12 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="1073" y="1179" width="130" height="70" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(1074,1177)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="124" height="70" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div
  xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 124px; white-space: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Evict topologies in list L</div></div></foreignObject><text x="62" y="45" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica">[Not supported by viewer]</text></switch></g></g></svg>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/security.png
----------------------------------------------------------------------
diff --git a/docs/images/security.png b/docs/images/security.png
deleted file mode 100644
index 299e26d..0000000
Binary files a/docs/images/security.png and /dev/null differ


[15/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/js/bootstrap.js
----------------------------------------------------------------------
diff --git a/docs/assets/js/bootstrap.js b/docs/assets/js/bootstrap.js
deleted file mode 100644
index b6ac8d9..0000000
--- a/docs/assets/js/bootstrap.js
+++ /dev/null
@@ -1,2320 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-if (typeof jQuery === 'undefined') {
-  throw new Error('Bootstrap\'s JavaScript requires jQuery')
-}
-
-+function ($) {
-  var version = $.fn.jquery.split(' ')[0].split('.')
-  if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {
-    throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher')
-  }
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: transition.js v3.3.1
- * http://getbootstrap.com/javascript/#transitions
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
-  // ============================================================
-
-  function transitionEnd() {
-    var el = document.createElement('bootstrap')
-
-    var transEndEventNames = {
-      WebkitTransition : 'webkitTransitionEnd',
-      MozTransition    : 'transitionend',
-      OTransition      : 'oTransitionEnd otransitionend',
-      transition       : 'transitionend'
-    }
-
-    for (var name in transEndEventNames) {
-      if (el.style[name] !== undefined) {
-        return { end: transEndEventNames[name] }
-      }
-    }
-
-    return false // explicit for ie8 (  ._.)
-  }
-
-  // http://blog.alexmaccaw.com/css-transitions
-  $.fn.emulateTransitionEnd = function (duration) {
-    var called = false
-    var $el = this
-    $(this).one('bsTransitionEnd', function () { called = true })
-    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
-    setTimeout(callback, duration)
-    return this
-  }
-
-  $(function () {
-    $.support.transition = transitionEnd()
-
-    if (!$.support.transition) return
-
-    $.event.special.bsTransitionEnd = {
-      bindType: $.support.transition.end,
-      delegateType: $.support.transition.end,
-      handle: function (e) {
-        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
-      }
-    }
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: alert.js v3.3.1
- * http://getbootstrap.com/javascript/#alerts
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // ALERT CLASS DEFINITION
-  // ======================
-
-  var dismiss = '[data-dismiss="alert"]'
-  var Alert   = function (el) {
-    $(el).on('click', dismiss, this.close)
-  }
-
-  Alert.VERSION = '3.3.1'
-
-  Alert.TRANSITION_DURATION = 150
-
-  Alert.prototype.close = function (e) {
-    var $this    = $(this)
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = $(selector)
-
-    if (e) e.preventDefault()
-
-    if (!$parent.length) {
-      $parent = $this.closest('.alert')
-    }
-
-    $parent.trigger(e = $.Event('close.bs.alert'))
-
-    if (e.isDefaultPrevented()) return
-
-    $parent.removeClass('in')
-
-    function removeElement() {
-      // detach from parent, fire event then clean up data
-      $parent.detach().trigger('closed.bs.alert').remove()
-    }
-
-    $.support.transition && $parent.hasClass('fade') ?
-      $parent
-        .one('bsTransitionEnd', removeElement)
-        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :
-      removeElement()
-  }
-
-
-  // ALERT PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.alert')
-
-      if (!data) $this.data('bs.alert', (data = new Alert(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.alert
-
-  $.fn.alert             = Plugin
-  $.fn.alert.Constructor = Alert
-
-
-  // ALERT NO CONFLICT
-  // =================
-
-  $.fn.alert.noConflict = function () {
-    $.fn.alert = old
-    return this
-  }
-
-
-  // ALERT DATA-API
-  // ==============
-
-  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: button.js v3.3.1
- * http://getbootstrap.com/javascript/#buttons
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // BUTTON PUBLIC CLASS DEFINITION
-  // ==============================
-
-  var Button = function (element, options) {
-    this.$element  = $(element)
-    this.options   = $.extend({}, Button.DEFAULTS, options)
-    this.isLoading = false
-  }
-
-  Button.VERSION  = '3.3.1'
-
-  Button.DEFAULTS = {
-    loadingText: 'loading...'
-  }
-
-  Button.prototype.setState = function (state) {
-    var d    = 'disabled'
-    var $el  = this.$element
-    var val  = $el.is('input') ? 'val' : 'html'
-    var data = $el.data()
-
-    state = state + 'Text'
-
-    if (data.resetText == null) $el.data('resetText', $el[val]())
-
-    // push to event loop to allow forms to submit
-    setTimeout($.proxy(function () {
-      $el[val](data[state] == null ? this.options[state] : data[state])
-
-      if (state == 'loadingText') {
-        this.isLoading = true
-        $el.addClass(d).attr(d, d)
-      } else if (this.isLoading) {
-        this.isLoading = false
-        $el.removeClass(d).removeAttr(d)
-      }
-    }, this), 0)
-  }
-
-  Button.prototype.toggle = function () {
-    var changed = true
-    var $parent = this.$element.closest('[data-toggle="buttons"]')
-
-    if ($parent.length) {
-      var $input = this.$element.find('input')
-      if ($input.prop('type') == 'radio') {
-        if ($input.prop('checked') && this.$element.hasClass('active')) changed = false
-        else $parent.find('.active').removeClass('active')
-      }
-      if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
-    } else {
-      this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
-    }
-
-    if (changed) this.$element.toggleClass('active')
-  }
-
-
-  // BUTTON PLUGIN DEFINITION
-  // ========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.button')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.button', (data = new Button(this, options)))
-
-      if (option == 'toggle') data.toggle()
-      else if (option) data.setState(option)
-    })
-  }
-
-  var old = $.fn.button
-
-  $.fn.button             = Plugin
-  $.fn.button.Constructor = Button
-
-
-  // BUTTON NO CONFLICT
-  // ==================
-
-  $.fn.button.noConflict = function () {
-    $.fn.button = old
-    return this
-  }
-
-
-  // BUTTON DATA-API
-  // ===============
-
-  $(document)
-    .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-      var $btn = $(e.target)
-      if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
-      Plugin.call($btn, 'toggle')
-      e.preventDefault()
-    })
-    .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
-      $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
-    })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: carousel.js v3.3.1
- * http://getbootstrap.com/javascript/#carousel
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // CAROUSEL CLASS DEFINITION
-  // =========================
-
-  var Carousel = function (element, options) {
-    this.$element    = $(element)
-    this.$indicators = this.$element.find('.carousel-indicators')
-    this.options     = options
-    this.paused      =
-    this.sliding     =
-    this.interval    =
-    this.$active     =
-    this.$items      = null
-
-    this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
-
-    this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
-      .on('mouseenter.bs.carousel', $.proxy(this.pause, this))
-      .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
-  }
-
-  Carousel.VERSION  = '3.3.1'
-
-  Carousel.TRANSITION_DURATION = 600
-
-  Carousel.DEFAULTS = {
-    interval: 5000,
-    pause: 'hover',
-    wrap: true,
-    keyboard: true
-  }
-
-  Carousel.prototype.keydown = function (e) {
-    if (/input|textarea/i.test(e.target.tagName)) return
-    switch (e.which) {
-      case 37: this.prev(); break
-      case 39: this.next(); break
-      default: return
-    }
-
-    e.preventDefault()
-  }
-
-  Carousel.prototype.cycle = function (e) {
-    e || (this.paused = false)
-
-    this.interval && clearInterval(this.interval)
-
-    this.options.interval
-      && !this.paused
-      && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
-
-    return this
-  }
-
-  Carousel.prototype.getItemIndex = function (item) {
-    this.$items = item.parent().children('.item')
-    return this.$items.index(item || this.$active)
-  }
-
-  Carousel.prototype.getItemForDirection = function (direction, active) {
-    var delta = direction == 'prev' ? -1 : 1
-    var activeIndex = this.getItemIndex(active)
-    var itemIndex = (activeIndex + delta) % this.$items.length
-    return this.$items.eq(itemIndex)
-  }
-
-  Carousel.prototype.to = function (pos) {
-    var that        = this
-    var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
-
-    if (pos > (this.$items.length - 1) || pos < 0) return
-
-    if (this.sliding)       return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
-    if (activeIndex == pos) return this.pause().cycle()
-
-    return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
-  }
-
-  Carousel.prototype.pause = function (e) {
-    e || (this.paused = true)
-
-    if (this.$element.find('.next, .prev').length && $.support.transition) {
-      this.$element.trigger($.support.transition.end)
-      this.cycle(true)
-    }
-
-    this.interval = clearInterval(this.interval)
-
-    return this
-  }
-
-  Carousel.prototype.next = function () {
-    if (this.sliding) return
-    return this.slide('next')
-  }
-
-  Carousel.prototype.prev = function () {
-    if (this.sliding) return
-    return this.slide('prev')
-  }
-
-  Carousel.prototype.slide = function (type, next) {
-    var $active   = this.$element.find('.item.active')
-    var $next     = next || this.getItemForDirection(type, $active)
-    var isCycling = this.interval
-    var direction = type == 'next' ? 'left' : 'right'
-    var fallback  = type == 'next' ? 'first' : 'last'
-    var that      = this
-
-    if (!$next.length) {
-      if (!this.options.wrap) return
-      $next = this.$element.find('.item')[fallback]()
-    }
-
-    if ($next.hasClass('active')) return (this.sliding = false)
-
-    var relatedTarget = $next[0]
-    var slideEvent = $.Event('slide.bs.carousel', {
-      relatedTarget: relatedTarget,
-      direction: direction
-    })
-    this.$element.trigger(slideEvent)
-    if (slideEvent.isDefaultPrevented()) return
-
-    this.sliding = true
-
-    isCycling && this.pause()
-
-    if (this.$indicators.length) {
-      this.$indicators.find('.active').removeClass('active')
-      var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
-      $nextIndicator && $nextIndicator.addClass('active')
-    }
-
-    var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
-    if ($.support.transition && this.$element.hasClass('slide')) {
-      $next.addClass(type)
-      $next[0].offsetWidth // force reflow
-      $active.addClass(direction)
-      $next.addClass(direction)
-      $active
-        .one('bsTransitionEnd', function () {
-          $next.removeClass([type, direction].join(' ')).addClass('active')
-          $active.removeClass(['active', direction].join(' '))
-          that.sliding = false
-          setTimeout(function () {
-            that.$element.trigger(slidEvent)
-          }, 0)
-        })
-        .emulateTransitionEnd(Carousel.TRANSITION_DURATION)
-    } else {
-      $active.removeClass('active')
-      $next.addClass('active')
-      this.sliding = false
-      this.$element.trigger(slidEvent)
-    }
-
-    isCycling && this.cycle()
-
-    return this
-  }
-
-
-  // CAROUSEL PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.carousel')
-      var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)
-      var action  = typeof option == 'string' ? option : options.slide
-
-      if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
-      if (typeof option == 'number') data.to(option)
-      else if (action) data[action]()
-      else if (options.interval) data.pause().cycle()
-    })
-  }
-
-  var old = $.fn.carousel
-
-  $.fn.carousel             = Plugin
-  $.fn.carousel.Constructor = Carousel
-
-
-  // CAROUSEL NO CONFLICT
-  // ====================
-
-  $.fn.carousel.noConflict = function () {
-    $.fn.carousel = old
-    return this
-  }
-
-
-  // CAROUSEL DATA-API
-  // =================
-
-  var clickHandler = function (e) {
-    var href
-    var $this   = $(this)
-    var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
-    if (!$target.hasClass('carousel')) return
-    var options = $.extend({}, $target.data(), $this.data())
-    var slideIndex = $this.attr('data-slide-to')
-    if (slideIndex) options.interval = false
-
-    Plugin.call($target, options)
-
-    if (slideIndex) {
-      $target.data('bs.carousel').to(slideIndex)
-    }
-
-    e.preventDefault()
-  }
-
-  $(document)
-    .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
-    .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
-
-  $(window).on('load', function () {
-    $('[data-ride="carousel"]').each(function () {
-      var $carousel = $(this)
-      Plugin.call($carousel, $carousel.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: collapse.js v3.3.1
- * http://getbootstrap.com/javascript/#collapse
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // COLLAPSE PUBLIC CLASS DEFINITION
-  // ================================
-
-  var Collapse = function (element, options) {
-    this.$element      = $(element)
-    this.options       = $.extend({}, Collapse.DEFAULTS, options)
-    this.$trigger      = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]')
-    this.transitioning = null
-
-    if (this.options.parent) {
-      this.$parent = this.getParent()
-    } else {
-      this.addAriaAndCollapsedClass(this.$element, this.$trigger)
-    }
-
-    if (this.options.toggle) this.toggle()
-  }
-
-  Collapse.VERSION  = '3.3.1'
-
-  Collapse.TRANSITION_DURATION = 350
-
-  Collapse.DEFAULTS = {
-    toggle: true,
-    trigger: '[data-toggle="collapse"]'
-  }
-
-  Collapse.prototype.dimension = function () {
-    var hasWidth = this.$element.hasClass('width')
-    return hasWidth ? 'width' : 'height'
-  }
-
-  Collapse.prototype.show = function () {
-    if (this.transitioning || this.$element.hasClass('in')) return
-
-    var activesData
-    var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing')
-
-    if (actives && actives.length) {
-      activesData = actives.data('bs.collapse')
-      if (activesData && activesData.transitioning) return
-    }
-
-    var startEvent = $.Event('show.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    if (actives && actives.length) {
-      Plugin.call(actives, 'hide')
-      activesData || actives.data('bs.collapse', null)
-    }
-
-    var dimension = this.dimension()
-
-    this.$element
-      .removeClass('collapse')
-      .addClass('collapsing')[dimension](0)
-      .attr('aria-expanded', true)
-
-    this.$trigger
-      .removeClass('collapsed')
-      .attr('aria-expanded', true)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse in')[dimension]('')
-      this.transitioning = 0
-      this.$element
-        .trigger('shown.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    var scrollSize = $.camelCase(['scroll', dimension].join('-'))
-
-    this.$element
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])
-  }
-
-  Collapse.prototype.hide = function () {
-    if (this.transitioning || !this.$element.hasClass('in')) return
-
-    var startEvent = $.Event('hide.bs.collapse')
-    this.$element.trigger(startEvent)
-    if (startEvent.isDefaultPrevented()) return
-
-    var dimension = this.dimension()
-
-    this.$element[dimension](this.$element[dimension]())[0].offsetHeight
-
-    this.$element
-      .addClass('collapsing')
-      .removeClass('collapse in')
-      .attr('aria-expanded', false)
-
-    this.$trigger
-      .addClass('collapsed')
-      .attr('aria-expanded', false)
-
-    this.transitioning = 1
-
-    var complete = function () {
-      this.transitioning = 0
-      this.$element
-        .removeClass('collapsing')
-        .addClass('collapse')
-        .trigger('hidden.bs.collapse')
-    }
-
-    if (!$.support.transition) return complete.call(this)
-
-    this.$element
-      [dimension](0)
-      .one('bsTransitionEnd', $.proxy(complete, this))
-      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)
-  }
-
-  Collapse.prototype.toggle = function () {
-    this[this.$element.hasClass('in') ? 'hide' : 'show']()
-  }
-
-  Collapse.prototype.getParent = function () {
-    return $(this.options.parent)
-      .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]')
-      .each($.proxy(function (i, element) {
-        var $element = $(element)
-        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)
-      }, this))
-      .end()
-  }
-
-  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {
-    var isOpen = $element.hasClass('in')
-
-    $element.attr('aria-expanded', isOpen)
-    $trigger
-      .toggleClass('collapsed', !isOpen)
-      .attr('aria-expanded', isOpen)
-  }
-
-  function getTargetFromTrigger($trigger) {
-    var href
-    var target = $trigger.attr('data-target')
-      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7
-
-    return $(target)
-  }
-
-
-  // COLLAPSE PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.collapse')
-      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data && options.toggle && option == 'show') options.toggle = false
-      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.collapse
-
-  $.fn.collapse             = Plugin
-  $.fn.collapse.Constructor = Collapse
-
-
-  // COLLAPSE NO CONFLICT
-  // ====================
-
-  $.fn.collapse.noConflict = function () {
-    $.fn.collapse = old
-    return this
-  }
-
-
-  // COLLAPSE DATA-API
-  // =================
-
-  $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) {
-    var $this   = $(this)
-
-    if (!$this.attr('data-target')) e.preventDefault()
-
-    var $target = getTargetFromTrigger($this)
-    var data    = $target.data('bs.collapse')
-    var option  = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this })
-
-    Plugin.call($target, option)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: dropdown.js v3.3.1
- * http://getbootstrap.com/javascript/#dropdowns
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // DROPDOWN CLASS DEFINITION
-  // =========================
-
-  var backdrop = '.dropdown-backdrop'
-  var toggle   = '[data-toggle="dropdown"]'
-  var Dropdown = function (element) {
-    $(element).on('click.bs.dropdown', this.toggle)
-  }
-
-  Dropdown.VERSION = '3.3.1'
-
-  Dropdown.prototype.toggle = function (e) {
-    var $this = $(this)
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    clearMenus()
-
-    if (!isActive) {
-      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
-        // if mobile we use a backdrop because click events don't delegate
-        $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
-      }
-
-      var relatedTarget = { relatedTarget: this }
-      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this
-        .trigger('focus')
-        .attr('aria-expanded', 'true')
-
-      $parent
-        .toggleClass('open')
-        .trigger('shown.bs.dropdown', relatedTarget)
-    }
-
-    return false
-  }
-
-  Dropdown.prototype.keydown = function (e) {
-    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
-
-    var $this = $(this)
-
-    e.preventDefault()
-    e.stopPropagation()
-
-    if ($this.is('.disabled, :disabled')) return
-
-    var $parent  = getParent($this)
-    var isActive = $parent.hasClass('open')
-
-    if ((!isActive && e.which != 27) || (isActive && e.which == 27)) {
-      if (e.which == 27) $parent.find(toggle).trigger('focus')
-      return $this.trigger('click')
-    }
-
-    var desc = ' li:not(.divider):visible a'
-    var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
-
-    if (!$items.length) return
-
-    var index = $items.index(e.target)
-
-    if (e.which == 38 && index > 0)                 index--                        // up
-    if (e.which == 40 && index < $items.length - 1) index++                        // down
-    if (!~index)                                      index = 0
-
-    $items.eq(index).trigger('focus')
-  }
-
-  function clearMenus(e) {
-    if (e && e.which === 3) return
-    $(backdrop).remove()
-    $(toggle).each(function () {
-      var $this         = $(this)
-      var $parent       = getParent($this)
-      var relatedTarget = { relatedTarget: this }
-
-      if (!$parent.hasClass('open')) return
-
-      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
-
-      if (e.isDefaultPrevented()) return
-
-      $this.attr('aria-expanded', 'false')
-      $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
-    })
-  }
-
-  function getParent($this) {
-    var selector = $this.attr('data-target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    var $parent = selector && $(selector)
-
-    return $parent && $parent.length ? $parent : $this.parent()
-  }
-
-
-  // DROPDOWN PLUGIN DEFINITION
-  // ==========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.dropdown')
-
-      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
-      if (typeof option == 'string') data[option].call($this)
-    })
-  }
-
-  var old = $.fn.dropdown
-
-  $.fn.dropdown             = Plugin
-  $.fn.dropdown.Constructor = Dropdown
-
-
-  // DROPDOWN NO CONFLICT
-  // ====================
-
-  $.fn.dropdown.noConflict = function () {
-    $.fn.dropdown = old
-    return this
-  }
-
-
-  // APPLY TO STANDARD DROPDOWN ELEMENTS
-  // ===================================
-
-  $(document)
-    .on('click.bs.dropdown.data-api', clearMenus)
-    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
-    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
-    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
-    .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown)
-    .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: modal.js v3.3.1
- * http://getbootstrap.com/javascript/#modals
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // MODAL CLASS DEFINITION
-  // ======================
-
-  var Modal = function (element, options) {
-    this.options        = options
-    this.$body          = $(document.body)
-    this.$element       = $(element)
-    this.$backdrop      =
-    this.isShown        = null
-    this.scrollbarWidth = 0
-
-    if (this.options.remote) {
-      this.$element
-        .find('.modal-content')
-        .load(this.options.remote, $.proxy(function () {
-          this.$element.trigger('loaded.bs.modal')
-        }, this))
-    }
-  }
-
-  Modal.VERSION  = '3.3.1'
-
-  Modal.TRANSITION_DURATION = 300
-  Modal.BACKDROP_TRANSITION_DURATION = 150
-
-  Modal.DEFAULTS = {
-    backdrop: true,
-    keyboard: true,
-    show: true
-  }
-
-  Modal.prototype.toggle = function (_relatedTarget) {
-    return this.isShown ? this.hide() : this.show(_relatedTarget)
-  }
-
-  Modal.prototype.show = function (_relatedTarget) {
-    var that = this
-    var e    = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })
-
-    this.$element.trigger(e)
-
-    if (this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = true
-
-    this.checkScrollbar()
-    this.setScrollbar()
-    this.$body.addClass('modal-open')
-
-    this.escape()
-    this.resize()
-
-    this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
-
-    this.backdrop(function () {
-      var transition = $.support.transition && that.$element.hasClass('fade')
-
-      if (!that.$element.parent().length) {
-        that.$element.appendTo(that.$body) // don't move modals dom position
-      }
-
-      that.$element
-        .show()
-        .scrollTop(0)
-
-      if (that.options.backdrop) that.adjustBackdrop()
-      that.adjustDialog()
-
-      if (transition) {
-        that.$element[0].offsetWidth // force reflow
-      }
-
-      that.$element
-        .addClass('in')
-        .attr('aria-hidden', false)
-
-      that.enforceFocus()
-
-      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
-
-      transition ?
-        that.$element.find('.modal-dialog') // wait for modal to slide in
-          .one('bsTransitionEnd', function () {
-            that.$element.trigger('focus').trigger(e)
-          })
-          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
-        that.$element.trigger('focus').trigger(e)
-    })
-  }
-
-  Modal.prototype.hide = function (e) {
-    if (e) e.preventDefault()
-
-    e = $.Event('hide.bs.modal')
-
-    this.$element.trigger(e)
-
-    if (!this.isShown || e.isDefaultPrevented()) return
-
-    this.isShown = false
-
-    this.escape()
-    this.resize()
-
-    $(document).off('focusin.bs.modal')
-
-    this.$element
-      .removeClass('in')
-      .attr('aria-hidden', true)
-      .off('click.dismiss.bs.modal')
-
-    $.support.transition && this.$element.hasClass('fade') ?
-      this.$element
-        .one('bsTransitionEnd', $.proxy(this.hideModal, this))
-        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :
-      this.hideModal()
-  }
-
-  Modal.prototype.enforceFocus = function () {
-    $(document)
-      .off('focusin.bs.modal') // guard against infinite focus loop
-      .on('focusin.bs.modal', $.proxy(function (e) {
-        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
-          this.$element.trigger('focus')
-        }
-      }, this))
-  }
-
-  Modal.prototype.escape = function () {
-    if (this.isShown && this.options.keyboard) {
-      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {
-        e.which == 27 && this.hide()
-      }, this))
-    } else if (!this.isShown) {
-      this.$element.off('keydown.dismiss.bs.modal')
-    }
-  }
-
-  Modal.prototype.resize = function () {
-    if (this.isShown) {
-      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
-    } else {
-      $(window).off('resize.bs.modal')
-    }
-  }
-
-  Modal.prototype.hideModal = function () {
-    var that = this
-    this.$element.hide()
-    this.backdrop(function () {
-      that.$body.removeClass('modal-open')
-      that.resetAdjustments()
-      that.resetScrollbar()
-      that.$element.trigger('hidden.bs.modal')
-    })
-  }
-
-  Modal.prototype.removeBackdrop = function () {
-    this.$backdrop && this.$backdrop.remove()
-    this.$backdrop = null
-  }
-
-  Modal.prototype.backdrop = function (callback) {
-    var that = this
-    var animate = this.$element.hasClass('fade') ? 'fade' : ''
-
-    if (this.isShown && this.options.backdrop) {
-      var doAnimate = $.support.transition && animate
-
-      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
-        .prependTo(this.$element)
-        .on('click.dismiss.bs.modal', $.proxy(function (e) {
-          if (e.target !== e.currentTarget) return
-          this.options.backdrop == 'static'
-            ? this.$element[0].focus.call(this.$element[0])
-            : this.hide.call(this)
-        }, this))
-
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
-
-      this.$backdrop.addClass('in')
-
-      if (!callback) return
-
-      doAnimate ?
-        this.$backdrop
-          .one('bsTransitionEnd', callback)
-          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
-        callback()
-
-    } else if (!this.isShown && this.$backdrop) {
-      this.$backdrop.removeClass('in')
-
-      var callbackRemove = function () {
-        that.removeBackdrop()
-        callback && callback()
-      }
-      $.support.transition && this.$element.hasClass('fade') ?
-        this.$backdrop
-          .one('bsTransitionEnd', callbackRemove)
-          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :
-        callbackRemove()
-
-    } else if (callback) {
-      callback()
-    }
-  }
-
-  // these following methods are used to handle overflowing modals
-
-  Modal.prototype.handleUpdate = function () {
-    if (this.options.backdrop) this.adjustBackdrop()
-    this.adjustDialog()
-  }
-
-  Modal.prototype.adjustBackdrop = function () {
-    this.$backdrop
-      .css('height', 0)
-      .css('height', this.$element[0].scrollHeight)
-  }
-
-  Modal.prototype.adjustDialog = function () {
-    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
-
-    this.$element.css({
-      paddingLeft:  !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
-      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
-    })
-  }
-
-  Modal.prototype.resetAdjustments = function () {
-    this.$element.css({
-      paddingLeft: '',
-      paddingRight: ''
-    })
-  }
-
-  Modal.prototype.checkScrollbar = function () {
-    this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight
-    this.scrollbarWidth = this.measureScrollbar()
-  }
-
-  Modal.prototype.setScrollbar = function () {
-    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
-    if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
-  }
-
-  Modal.prototype.resetScrollbar = function () {
-    this.$body.css('padding-right', '')
-  }
-
-  Modal.prototype.measureScrollbar = function () { // thx walsh
-    var scrollDiv = document.createElement('div')
-    scrollDiv.className = 'modal-scrollbar-measure'
-    this.$body.append(scrollDiv)
-    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth
-    this.$body[0].removeChild(scrollDiv)
-    return scrollbarWidth
-  }
-
-
-  // MODAL PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option, _relatedTarget) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.modal')
-      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)
-
-      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))
-      if (typeof option == 'string') data[option](_relatedTarget)
-      else if (options.show) data.show(_relatedTarget)
-    })
-  }
-
-  var old = $.fn.modal
-
-  $.fn.modal             = Plugin
-  $.fn.modal.Constructor = Modal
-
-
-  // MODAL NO CONFLICT
-  // =================
-
-  $.fn.modal.noConflict = function () {
-    $.fn.modal = old
-    return this
-  }
-
-
-  // MODAL DATA-API
-  // ==============
-
-  $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) {
-    var $this   = $(this)
-    var href    = $this.attr('href')
-    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
-    var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
-
-    if ($this.is('a')) e.preventDefault()
-
-    $target.one('show.bs.modal', function (showEvent) {
-      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown
-      $target.one('hidden.bs.modal', function () {
-        $this.is(':visible') && $this.trigger('focus')
-      })
-    })
-    Plugin.call($target, option, this)
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tooltip.js v3.3.1
- * http://getbootstrap.com/javascript/#tooltip
- * Inspired by the original jQuery.tipsy by Jason Frame
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TOOLTIP PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Tooltip = function (element, options) {
-    this.type       =
-    this.options    =
-    this.enabled    =
-    this.timeout    =
-    this.hoverState =
-    this.$element   = null
-
-    this.init('tooltip', element, options)
-  }
-
-  Tooltip.VERSION  = '3.3.1'
-
-  Tooltip.TRANSITION_DURATION = 150
-
-  Tooltip.DEFAULTS = {
-    animation: true,
-    placement: 'top',
-    selector: false,
-    template: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
-    trigger: 'hover focus',
-    title: '',
-    delay: 0,
-    html: false,
-    container: false,
-    viewport: {
-      selector: 'body',
-      padding: 0
-    }
-  }
-
-  Tooltip.prototype.init = function (type, element, options) {
-    this.enabled   = true
-    this.type      = type
-    this.$element  = $(element)
-    this.options   = this.getOptions(options)
-    this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
-
-    var triggers = this.options.trigger.split(' ')
-
-    for (var i = triggers.length; i--;) {
-      var trigger = triggers[i]
-
-      if (trigger == 'click') {
-        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
-      } else if (trigger != 'manual') {
-        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'
-        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'
-
-        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
-        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
-      }
-    }
-
-    this.options.selector ?
-      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
-      this.fixTitle()
-  }
-
-  Tooltip.prototype.getDefaults = function () {
-    return Tooltip.DEFAULTS
-  }
-
-  Tooltip.prototype.getOptions = function (options) {
-    options = $.extend({}, this.getDefaults(), this.$element.data(), options)
-
-    if (options.delay && typeof options.delay == 'number') {
-      options.delay = {
-        show: options.delay,
-        hide: options.delay
-      }
-    }
-
-    return options
-  }
-
-  Tooltip.prototype.getDelegateOptions = function () {
-    var options  = {}
-    var defaults = this.getDefaults()
-
-    this._options && $.each(this._options, function (key, value) {
-      if (defaults[key] != value) options[key] = value
-    })
-
-    return options
-  }
-
-  Tooltip.prototype.enter = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (self && self.$tip && self.$tip.is(':visible')) {
-      self.hoverState = 'in'
-      return
-    }
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'in'
-
-    if (!self.options.delay || !self.options.delay.show) return self.show()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'in') self.show()
-    }, self.options.delay.show)
-  }
-
-  Tooltip.prototype.leave = function (obj) {
-    var self = obj instanceof this.constructor ?
-      obj : $(obj.currentTarget).data('bs.' + this.type)
-
-    if (!self) {
-      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
-      $(obj.currentTarget).data('bs.' + this.type, self)
-    }
-
-    clearTimeout(self.timeout)
-
-    self.hoverState = 'out'
-
-    if (!self.options.delay || !self.options.delay.hide) return self.hide()
-
-    self.timeout = setTimeout(function () {
-      if (self.hoverState == 'out') self.hide()
-    }, self.options.delay.hide)
-  }
-
-  Tooltip.prototype.show = function () {
-    var e = $.Event('show.bs.' + this.type)
-
-    if (this.hasContent() && this.enabled) {
-      this.$element.trigger(e)
-
-      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
-      if (e.isDefaultPrevented() || !inDom) return
-      var that = this
-
-      var $tip = this.tip()
-
-      var tipId = this.getUID(this.type)
-
-      this.setContent()
-      $tip.attr('id', tipId)
-      this.$element.attr('aria-describedby', tipId)
-
-      if (this.options.animation) $tip.addClass('fade')
-
-      var placement = typeof this.options.placement == 'function' ?
-        this.options.placement.call(this, $tip[0], this.$element[0]) :
-        this.options.placement
-
-      var autoToken = /\s?auto?\s?/i
-      var autoPlace = autoToken.test(placement)
-      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'
-
-      $tip
-        .detach()
-        .css({ top: 0, left: 0, display: 'block' })
-        .addClass(placement)
-        .data('bs.' + this.type, this)
-
-      this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
-
-      var pos          = this.getPosition()
-      var actualWidth  = $tip[0].offsetWidth
-      var actualHeight = $tip[0].offsetHeight
-
-      if (autoPlace) {
-        var orgPlacement = placement
-        var $container   = this.options.container ? $(this.options.container) : this.$element.parent()
-        var containerDim = this.getPosition($container)
-
-        placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top'    :
-                    placement == 'top'    && pos.top    - actualHeight < containerDim.top    ? 'bottom' :
-                    placement == 'right'  && pos.right  + actualWidth  > containerDim.width  ? 'left'   :
-                    placement == 'left'   && pos.left   - actualWidth  < containerDim.left   ? 'right'  :
-                    placement
-
-        $tip
-          .removeClass(orgPlacement)
-          .addClass(placement)
-      }
-
-      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)
-
-      this.applyPlacement(calculatedOffset, placement)
-
-      var complete = function () {
-        var prevHoverState = that.hoverState
-        that.$element.trigger('shown.bs.' + that.type)
-        that.hoverState = null
-
-        if (prevHoverState == 'out') that.leave(that)
-      }
-
-      $.support.transition && this.$tip.hasClass('fade') ?
-        $tip
-          .one('bsTransitionEnd', complete)
-          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
-        complete()
-    }
-  }
-
-  Tooltip.prototype.applyPlacement = function (offset, placement) {
-    var $tip   = this.tip()
-    var width  = $tip[0].offsetWidth
-    var height = $tip[0].offsetHeight
-
-    // manually read margins because getBoundingClientRect includes difference
-    var marginTop = parseInt($tip.css('margin-top'), 10)
-    var marginLeft = parseInt($tip.css('margin-left'), 10)
-
-    // we must check for NaN for ie 8/9
-    if (isNaN(marginTop))  marginTop  = 0
-    if (isNaN(marginLeft)) marginLeft = 0
-
-    offset.top  = offset.top  + marginTop
-    offset.left = offset.left + marginLeft
-
-    // $.fn.offset doesn't round pixel values
-    // so we use setOffset directly with our own function B-0
-    $.offset.setOffset($tip[0], $.extend({
-      using: function (props) {
-        $tip.css({
-          top: Math.round(props.top),
-          left: Math.round(props.left)
-        })
-      }
-    }, offset), 0)
-
-    $tip.addClass('in')
-
-    // check to see if placing tip in new offset caused the tip to resize itself
-    var actualWidth  = $tip[0].offsetWidth
-    var actualHeight = $tip[0].offsetHeight
-
-    if (placement == 'top' && actualHeight != height) {
-      offset.top = offset.top + height - actualHeight
-    }
-
-    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)
-
-    if (delta.left) offset.left += delta.left
-    else offset.top += delta.top
-
-    var isVertical          = /top|bottom/.test(placement)
-    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight
-    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'
-
-    $tip.offset(offset)
-    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
-  }
-
-  Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {
-    this.arrow()
-      .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
-      .css(isHorizontal ? 'top' : 'left', '')
-  }
-
-  Tooltip.prototype.setContent = function () {
-    var $tip  = this.tip()
-    var title = this.getTitle()
-
-    $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title)
-    $tip.removeClass('fade in top bottom left right')
-  }
-
-  Tooltip.prototype.hide = function (callback) {
-    var that = this
-    var $tip = this.tip()
-    var e    = $.Event('hide.bs.' + this.type)
-
-    function complete() {
-      if (that.hoverState != 'in') $tip.detach()
-      that.$element
-        .removeAttr('aria-describedby')
-        .trigger('hidden.bs.' + that.type)
-      callback && callback()
-    }
-
-    this.$element.trigger(e)
-
-    if (e.isDefaultPrevented()) return
-
-    $tip.removeClass('in')
-
-    $.support.transition && this.$tip.hasClass('fade') ?
-      $tip
-        .one('bsTransitionEnd', complete)
-        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
-      complete()
-
-    this.hoverState = null
-
-    return this
-  }
-
-  Tooltip.prototype.fixTitle = function () {
-    var $e = this.$element
-    if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') {
-      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
-    }
-  }
-
-  Tooltip.prototype.hasContent = function () {
-    return this.getTitle()
-  }
-
-  Tooltip.prototype.getPosition = function ($element) {
-    $element   = $element || this.$element
-
-    var el     = $element[0]
-    var isBody = el.tagName == 'BODY'
-
-    var elRect    = el.getBoundingClientRect()
-    if (elRect.width == null) {
-      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
-      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
-    }
-    var elOffset  = isBody ? { top: 0, left: 0 } : $element.offset()
-    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
-    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
-
-    return $.extend({}, elRect, scroll, outerDims, elOffset)
-  }
-
-  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
-    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2  } :
-           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
-        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width   }
-
-  }
-
-  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {
-    var delta = { top: 0, left: 0 }
-    if (!this.$viewport) return delta
-
-    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0
-    var viewportDimensions = this.getPosition(this.$viewport)
-
-    if (/right|left/.test(placement)) {
-      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll
-      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight
-      if (topEdgeOffset < viewportDimensions.top) { // top overflow
-        delta.top = viewportDimensions.top - topEdgeOffset
-      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow
-        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset
-      }
-    } else {
-      var leftEdgeOffset  = pos.left - viewportPadding
-      var rightEdgeOffset = pos.left + viewportPadding + actualWidth
-      if (leftEdgeOffset < viewportDimensions.left) { // left overflow
-        delta.left = viewportDimensions.left - leftEdgeOffset
-      } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow
-        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
-      }
-    }
-
-    return delta
-  }
-
-  Tooltip.prototype.getTitle = function () {
-    var title
-    var $e = this.$element
-    var o  = this.options
-
-    title = $e.attr('data-original-title')
-      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
-
-    return title
-  }
-
-  Tooltip.prototype.getUID = function (prefix) {
-    do prefix += ~~(Math.random() * 1000000)
-    while (document.getElementById(prefix))
-    return prefix
-  }
-
-  Tooltip.prototype.tip = function () {
-    return (this.$tip = this.$tip || $(this.options.template))
-  }
-
-  Tooltip.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))
-  }
-
-  Tooltip.prototype.enable = function () {
-    this.enabled = true
-  }
-
-  Tooltip.prototype.disable = function () {
-    this.enabled = false
-  }
-
-  Tooltip.prototype.toggleEnabled = function () {
-    this.enabled = !this.enabled
-  }
-
-  Tooltip.prototype.toggle = function (e) {
-    var self = this
-    if (e) {
-      self = $(e.currentTarget).data('bs.' + this.type)
-      if (!self) {
-        self = new this.constructor(e.currentTarget, this.getDelegateOptions())
-        $(e.currentTarget).data('bs.' + this.type, self)
-      }
-    }
-
-    self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
-  }
-
-  Tooltip.prototype.destroy = function () {
-    var that = this
-    clearTimeout(this.timeout)
-    this.hide(function () {
-      that.$element.off('.' + that.type).removeData('bs.' + that.type)
-    })
-  }
-
-
-  // TOOLTIP PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this    = $(this)
-      var data     = $this.data('bs.tooltip')
-      var options  = typeof option == 'object' && option
-      var selector = options && options.selector
-
-      if (!data && option == 'destroy') return
-      if (selector) {
-        if (!data) $this.data('bs.tooltip', (data = {}))
-        if (!data[selector]) data[selector] = new Tooltip(this, options)
-      } else {
-        if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
-      }
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tooltip
-
-  $.fn.tooltip             = Plugin
-  $.fn.tooltip.Constructor = Tooltip
-
-
-  // TOOLTIP NO CONFLICT
-  // ===================
-
-  $.fn.tooltip.noConflict = function () {
-    $.fn.tooltip = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: popover.js v3.3.1
- * http://getbootstrap.com/javascript/#popovers
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // POPOVER PUBLIC CLASS DEFINITION
-  // ===============================
-
-  var Popover = function (element, options) {
-    this.init('popover', element, options)
-  }
-
-  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
-
-  Popover.VERSION  = '3.3.1'
-
-  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
-    placement: 'right',
-    trigger: 'click',
-    content: '',
-    template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
-  })
-
-
-  // NOTE: POPOVER EXTENDS tooltip.js
-  // ================================
-
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)
-
-  Popover.prototype.constructor = Popover
-
-  Popover.prototype.getDefaults = function () {
-    return Popover.DEFAULTS
-  }
-
-  Popover.prototype.setContent = function () {
-    var $tip    = this.tip()
-    var title   = this.getTitle()
-    var content = this.getContent()
-
-    $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title)
-    $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events
-      this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text'
-    ](content)
-
-    $tip.removeClass('fade top bottom left right in')
-
-    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do
-    // this manually by checking the contents.
-    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()
-  }
-
-  Popover.prototype.hasContent = function () {
-    return this.getTitle() || this.getContent()
-  }
-
-  Popover.prototype.getContent = function () {
-    var $e = this.$element
-    var o  = this.options
-
-    return $e.attr('data-content')
-      || (typeof o.content == 'function' ?
-            o.content.call($e[0]) :
-            o.content)
-  }
-
-  Popover.prototype.arrow = function () {
-    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
-  }
-
-  Popover.prototype.tip = function () {
-    if (!this.$tip) this.$tip = $(this.options.template)
-    return this.$tip
-  }
-
-
-  // POPOVER PLUGIN DEFINITION
-  // =========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this    = $(this)
-      var data     = $this.data('bs.popover')
-      var options  = typeof option == 'object' && option
-      var selector = options && options.selector
-
-      if (!data && option == 'destroy') return
-      if (selector) {
-        if (!data) $this.data('bs.popover', (data = {}))
-        if (!data[selector]) data[selector] = new Popover(this, options)
-      } else {
-        if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
-      }
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.popover
-
-  $.fn.popover             = Plugin
-  $.fn.popover.Constructor = Popover
-
-
-  // POPOVER NO CONFLICT
-  // ===================
-
-  $.fn.popover.noConflict = function () {
-    $.fn.popover = old
-    return this
-  }
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: scrollspy.js v3.3.1
- * http://getbootstrap.com/javascript/#scrollspy
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // SCROLLSPY CLASS DEFINITION
-  // ==========================
-
-  function ScrollSpy(element, options) {
-    var process  = $.proxy(this.process, this)
-
-    this.$body          = $('body')
-    this.$scrollElement = $(element).is('body') ? $(window) : $(element)
-    this.options        = $.extend({}, ScrollSpy.DEFAULTS, options)
-    this.selector       = (this.options.target || '') + ' .nav li > a'
-    this.offsets        = []
-    this.targets        = []
-    this.activeTarget   = null
-    this.scrollHeight   = 0
-
-    this.$scrollElement.on('scroll.bs.scrollspy', process)
-    this.refresh()
-    this.process()
-  }
-
-  ScrollSpy.VERSION  = '3.3.1'
-
-  ScrollSpy.DEFAULTS = {
-    offset: 10
-  }
-
-  ScrollSpy.prototype.getScrollHeight = function () {
-    return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)
-  }
-
-  ScrollSpy.prototype.refresh = function () {
-    var offsetMethod = 'offset'
-    var offsetBase   = 0
-
-    if (!$.isWindow(this.$scrollElement[0])) {
-      offsetMethod = 'position'
-      offsetBase   = this.$scrollElement.scrollTop()
-    }
-
-    this.offsets = []
-    this.targets = []
-    this.scrollHeight = this.getScrollHeight()
-
-    var self     = this
-
-    this.$body
-      .find(this.selector)
-      .map(function () {
-        var $el   = $(this)
-        var href  = $el.data('target') || $el.attr('href')
-        var $href = /^#./.test(href) && $(href)
-
-        return ($href
-          && $href.length
-          && $href.is(':visible')
-          && [[$href[offsetMethod]().top + offsetBase, href]]) || null
-      })
-      .sort(function (a, b) { return a[0] - b[0] })
-      .each(function () {
-        self.offsets.push(this[0])
-        self.targets.push(this[1])
-      })
-  }
-
-  ScrollSpy.prototype.process = function () {
-    var scrollTop    = this.$scrollElement.scrollTop() + this.options.offset
-    var scrollHeight = this.getScrollHeight()
-    var maxScroll    = this.options.offset + scrollHeight - this.$scrollElement.height()
-    var offsets      = this.offsets
-    var targets      = this.targets
-    var activeTarget = this.activeTarget
-    var i
-
-    if (this.scrollHeight != scrollHeight) {
-      this.refresh()
-    }
-
-    if (scrollTop >= maxScroll) {
-      return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)
-    }
-
-    if (activeTarget && scrollTop < offsets[0]) {
-      this.activeTarget = null
-      return this.clear()
-    }
-
-    for (i = offsets.length; i--;) {
-      activeTarget != targets[i]
-        && scrollTop >= offsets[i]
-        && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
-        && this.activate(targets[i])
-    }
-  }
-
-  ScrollSpy.prototype.activate = function (target) {
-    this.activeTarget = target
-
-    this.clear()
-
-    var selector = this.selector +
-        '[data-target="' + target + '"],' +
-        this.selector + '[href="' + target + '"]'
-
-    var active = $(selector)
-      .parents('li')
-      .addClass('active')
-
-    if (active.parent('.dropdown-menu').length) {
-      active = active
-        .closest('li.dropdown')
-        .addClass('active')
-    }
-
-    active.trigger('activate.bs.scrollspy')
-  }
-
-  ScrollSpy.prototype.clear = function () {
-    $(this.selector)
-      .parentsUntil(this.options.target, '.active')
-      .removeClass('active')
-  }
-
-
-  // SCROLLSPY PLUGIN DEFINITION
-  // ===========================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.scrollspy')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.scrollspy
-
-  $.fn.scrollspy             = Plugin
-  $.fn.scrollspy.Constructor = ScrollSpy
-
-
-  // SCROLLSPY NO CONFLICT
-  // =====================
-
-  $.fn.scrollspy.noConflict = function () {
-    $.fn.scrollspy = old
-    return this
-  }
-
-
-  // SCROLLSPY DATA-API
-  // ==================
-
-  $(window).on('load.bs.scrollspy.data-api', function () {
-    $('[data-spy="scroll"]').each(function () {
-      var $spy = $(this)
-      Plugin.call($spy, $spy.data())
-    })
-  })
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: tab.js v3.3.1
- * http://getbootstrap.com/javascript/#tabs
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // TAB CLASS DEFINITION
-  // ====================
-
-  var Tab = function (element) {
-    this.element = $(element)
-  }
-
-  Tab.VERSION = '3.3.1'
-
-  Tab.TRANSITION_DURATION = 150
-
-  Tab.prototype.show = function () {
-    var $this    = this.element
-    var $ul      = $this.closest('ul:not(.dropdown-menu)')
-    var selector = $this.data('target')
-
-    if (!selector) {
-      selector = $this.attr('href')
-      selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
-    }
-
-    if ($this.parent('li').hasClass('active')) return
-
-    var $previous = $ul.find('.active:last a')
-    var hideEvent = $.Event('hide.bs.tab', {
-      relatedTarget: $this[0]
-    })
-    var showEvent = $.Event('show.bs.tab', {
-      relatedTarget: $previous[0]
-    })
-
-    $previous.trigger(hideEvent)
-    $this.trigger(showEvent)
-
-    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return
-
-    var $target = $(selector)
-
-    this.activate($this.closest('li'), $ul)
-    this.activate($target, $target.parent(), function () {
-      $previous.trigger({
-        type: 'hidden.bs.tab',
-        relatedTarget: $this[0]
-      })
-      $this.trigger({
-        type: 'shown.bs.tab',
-        relatedTarget: $previous[0]
-      })
-    })
-  }
-
-  Tab.prototype.activate = function (element, container, callback) {
-    var $active    = container.find('> .active')
-    var transition = callback
-      && $.support.transition
-      && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length)
-
-    function next() {
-      $active
-        .removeClass('active')
-        .find('> .dropdown-menu > .active')
-          .removeClass('active')
-        .end()
-        .find('[data-toggle="tab"]')
-          .attr('aria-expanded', false)
-
-      element
-        .addClass('active')
-        .find('[data-toggle="tab"]')
-          .attr('aria-expanded', true)
-
-      if (transition) {
-        element[0].offsetWidth // reflow for transition
-        element.addClass('in')
-      } else {
-        element.removeClass('fade')
-      }
-
-      if (element.parent('.dropdown-menu')) {
-        element
-          .closest('li.dropdown')
-            .addClass('active')
-          .end()
-          .find('[data-toggle="tab"]')
-            .attr('aria-expanded', true)
-      }
-
-      callback && callback()
-    }
-
-    $active.length && transition ?
-      $active
-        .one('bsTransitionEnd', next)
-        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :
-      next()
-
-    $active.removeClass('in')
-  }
-
-
-  // TAB PLUGIN DEFINITION
-  // =====================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this = $(this)
-      var data  = $this.data('bs.tab')
-
-      if (!data) $this.data('bs.tab', (data = new Tab(this)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.tab
-
-  $.fn.tab             = Plugin
-  $.fn.tab.Constructor = Tab
-
-
-  // TAB NO CONFLICT
-  // ===============
-
-  $.fn.tab.noConflict = function () {
-    $.fn.tab = old
-    return this
-  }
-
-
-  // TAB DATA-API
-  // ============
-
-  var clickHandler = function (e) {
-    e.preventDefault()
-    Plugin.call($(this), 'show')
-  }
-
-  $(document)
-    .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler)
-    .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler)
-
-}(jQuery);
-
-/* ========================================================================
- * Bootstrap: affix.js v3.3.1
- * http://getbootstrap.com/javascript/#affix
- * ========================================================================
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- * ======================================================================== */
-
-
-+function ($) {
-  'use strict';
-
-  // AFFIX CLASS DEFINITION
-  // ======================
-
-  var Affix = function (element, options) {
-    this.options = $.extend({}, Affix.DEFAULTS, options)
-
-    this.$target = $(this.options.target)
-      .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))
-      .on('click.bs.affix.data-api',  $.proxy(this.checkPositionWithEventLoop, this))
-
-    this.$element     = $(element)
-    this.affixed      =
-    this.unpin        =
-    this.pinnedOffset = null
-
-    this.checkPosition()
-  }
-
-  Affix.VERSION  = '3.3.1'
-
-  Affix.RESET    = 'affix affix-top affix-bottom'
-
-  Affix.DEFAULTS = {
-    offset: 0,
-    target: window
-  }
-
-  Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {
-    var scrollTop    = this.$target.scrollTop()
-    var position     = this.$element.offset()
-    var targetHeight = this.$target.height()
-
-    if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false
-
-    if (this.affixed == 'bottom') {
-      if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'
-      return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'
-    }
-
-    var initializing   = this.affixed == null
-    var colliderTop    = initializing ? scrollTop : position.top
-    var colliderHeight = initializing ? targetHeight : height
-
-    if (offsetTop != null && colliderTop <= offsetTop) return 'top'
-    if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
-
-    return false
-  }
-
-  Affix.prototype.getPinnedOffset = function () {
-    if (this.pinnedOffset) return this.pinnedOffset
-    this.$element.removeClass(Affix.RESET).addClass('affix')
-    var scrollTop = this.$target.scrollTop()
-    var position  = this.$element.offset()
-    return (this.pinnedOffset = position.top - scrollTop)
-  }
-
-  Affix.prototype.checkPositionWithEventLoop = function () {
-    setTimeout($.proxy(this.checkPosition, this), 1)
-  }
-
-  Affix.prototype.checkPosition = function () {
-    if (!this.$element.is(':visible')) return
-
-    var height       = this.$element.height()
-    var offset       = this.options.offset
-    var offsetTop    = offset.top
-    var offsetBottom = offset.bottom
-    var scrollHeight = $('body').height()
-
-    if (typeof offset != 'object')         offsetBottom = offsetTop = offset
-    if (typeof offsetTop == 'function')    offsetTop    = offset.top(this.$element)
-    if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)
-
-    var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)
-
-    if (this.affixed != affix) {
-      if (this.unpin != null) this.$element.css('top', '')
-
-      var affixType = 'affix' + (affix ? '-' + affix : '')
-      var e         = $.Event(affixType + '.bs.affix')
-
-      this.$element.trigger(e)
-
-      if (e.isDefaultPrevented()) return
-
-      this.affixed = affix
-      this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null
-
-      this.$element
-        .removeClass(Affix.RESET)
-        .addClass(affixType)
-        .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')
-    }
-
-    if (affix == 'bottom') {
-      this.$element.offset({
-        top: scrollHeight - height - offsetBottom
-      })
-    }
-  }
-
-
-  // AFFIX PLUGIN DEFINITION
-  // =======================
-
-  function Plugin(option) {
-    return this.each(function () {
-      var $this   = $(this)
-      var data    = $this.data('bs.affix')
-      var options = typeof option == 'object' && option
-
-      if (!data) $this.data('bs.affix', (data = new Affix(this, options)))
-      if (typeof option == 'string') data[option]()
-    })
-  }
-
-  var old = $.fn.affix
-
-  $.fn.affix             = Plugin
-  $.fn.affix.Constructor = Affix
-
-
-  // AFFIX NO CONFLICT
-  // =================
-
-  $.fn.affix.noConflict = function () {
-    $.fn.affix = old
-    return this
-  }
-
-
-  // AFFIX DATA-API
-  // ==============
-
-  $(window).on('load', function () {
-    $('[data-spy="affix"]').each(function () {
-      var $spy = $(this)
-      var data = $spy.data()
-
-      data.offset = data.offset || {}
-
-      if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom
-      if (data.offsetTop    != null) data.offset.top    = data.offsetTop
-
-      Plugin.call($spy, data)
-    })
-  })
-
-}(jQuery);


[19/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/bootstrap.css
----------------------------------------------------------------------
diff --git a/docs/assets/css/bootstrap.css b/docs/assets/css/bootstrap.css
deleted file mode 100644
index c6f3d21..0000000
--- a/docs/assets/css/bootstrap.css
+++ /dev/null
@@ -1,6332 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
-html {
-  font-family: sans-serif;
-  -webkit-text-size-adjust: 100%;
-      -ms-text-size-adjust: 100%;
-}
-body {
-  margin: 0;
-}
-article,
-aside,
-details,
-figcaption,
-figure,
-footer,
-header,
-hgroup,
-main,
-menu,
-nav,
-section,
-summary {
-  display: block;
-}
-audio,
-canvas,
-progress,
-video {
-  display: inline-block;
-  vertical-align: baseline;
-}
-audio:not([controls]) {
-  display: none;
-  height: 0;
-}
-[hidden],
-template {
-  display: none;
-}
-a {
-  background-color: transparent;
-}
-a:active,
-a:hover {
-  outline: 0;
-}
-abbr[title] {
-  border-bottom: 1px dotted;
-}
-b,
-strong {
-  font-weight: bold;
-}
-dfn {
-  font-style: italic;
-}
-h1 {
-  margin: .67em 0;
-  font-size: 2em;
-}
-mark {
-  color: #000;
-  background: #ff0;
-}
-small {
-  font-size: 80%;
-}
-sub,
-sup {
-  position: relative;
-  font-size: 75%;
-  line-height: 0;
-  vertical-align: baseline;
-}
-sup {
-  top: -.5em;
-}
-sub {
-  bottom: -.25em;
-}
-img {
-  border: 0;
-}
-svg:not(:root) {
-  overflow: hidden;
-}
-figure {
-  margin: 1em 40px;
-}
-hr {
-  height: 0;
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-}
-pre {
-  overflow: auto;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: monospace, monospace;
-  font-size: 1em;
-}
-button,
-input,
-optgroup,
-select,
-textarea {
-  margin: 0;
-  font: inherit;
-  color: inherit;
-}
-button {
-  overflow: visible;
-}
-button,
-select {
-  text-transform: none;
-}
-button,
-html input[type="button"],
-input[type="reset"],
-input[type="submit"] {
-  -webkit-appearance: button;
-  cursor: pointer;
-}
-button[disabled],
-html input[disabled] {
-  cursor: default;
-}
-button::-moz-focus-inner,
-input::-moz-focus-inner {
-  padding: 0;
-  border: 0;
-}
-input {
-  line-height: normal;
-}
-input[type="checkbox"],
-input[type="radio"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-  padding: 0;
-}
-input[type="number"]::-webkit-inner-spin-button,
-input[type="number"]::-webkit-outer-spin-button {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-box-sizing: content-box;
-     -moz-box-sizing: content-box;
-          box-sizing: content-box;
-  -webkit-appearance: textfield;
-}
-input[type="search"]::-webkit-search-cancel-button,
-input[type="search"]::-webkit-search-decoration {
-  -webkit-appearance: none;
-}
-fieldset {
-  padding: .35em .625em .75em;
-  margin: 0 2px;
-  border: 1px solid #c0c0c0;
-}
-legend {
-  padding: 0;
-  border: 0;
-}
-textarea {
-  overflow: auto;
-}
-optgroup {
-  font-weight: bold;
-}
-table {
-  border-spacing: 0;
-  border-collapse: collapse;
-}
-td,
-th {
-  padding: 0;
-}
-/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
-@media print {
-  *,
-  *:before,
-  *:after {
-    color: #000 !important;
-    text-shadow: none !important;
-    background: transparent !important;
-    -webkit-box-shadow: none !important;
-            box-shadow: none !important;
-  }
-  a,
-  a:visited {
-    text-decoration: underline;
-  }
-  a[href]:after {
-    content: " (" attr(href) ")";
-  }
-  abbr[title]:after {
-    content: " (" attr(title) ")";
-  }
-  a[href^="#"]:after,
-  a[href^="javascript:"]:after {
-    content: "";
-  }
-  pre,
-  blockquote {
-    border: 1px solid #999;
-
-    page-break-inside: avoid;
-  }
-  thead {
-    display: table-header-group;
-  }
-  tr,
-  img {
-    page-break-inside: avoid;
-  }
-  img {
-    max-width: 100% !important;
-  }
-  p,
-  h2,
-  h3 {
-    orphans: 3;
-    widows: 3;
-  }
-  h2,
-  h3 {
-    page-break-after: avoid;
-  }
-  select {
-    background: #fff !important;
-  }
-  .navbar {
-    display: none;
-  }
-  .btn > .caret,
-  .dropup > .btn > .caret {
-    border-top-color: #000 !important;
-  }
-  .label {
-    border: 1px solid #000;
-  }
-  .table {
-    border-collapse: collapse !important;
-  }
-  .table td,
-  .table th {
-    background-color: #fff !important;
-  }
-  .table-bordered th,
-  .table-bordered td {
-    border: 1px solid #ddd !important;
-  }
-}
-@font-face {
-  font-family: 'Glyphicons Halflings';
-
-  src: url('../fonts/glyphicons-halflings-regular.eot');
-  src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
-}
-.glyphicon {
-  position: relative;
-  top: 1px;
-  display: inline-block;
-  font-family: 'Glyphicons Halflings';
-  font-style: normal;
-  font-weight: normal;
-  line-height: 1;
-
-  -webkit-font-smoothing: antialiased;
-  -moz-osx-font-smoothing: grayscale;
-}
-.glyphicon-asterisk:before {
-  content: "\2a";
-}
-.glyphicon-plus:before {
-  content: "\2b";
-}
-.glyphicon-euro:before,
-.glyphicon-eur:before {
-  content: "\20ac";
-}
-.glyphicon-minus:before {
-  content: "\2212";
-}
-.glyphicon-cloud:before {
-  content: "\2601";
-}
-.glyphicon-envelope:before {
-  content: "\2709";
-}
-.glyphicon-pencil:before {
-  content: "\270f";
-}
-.glyphicon-glass:before {
-  content: "\e001";
-}
-.glyphicon-music:before {
-  content: "\e002";
-}
-.glyphicon-search:before {
-  content: "\e003";
-}
-.glyphicon-heart:before {
-  content: "\e005";
-}
-.glyphicon-star:before {
-  content: "\e006";
-}
-.glyphicon-star-empty:before {
-  content: "\e007";
-}
-.glyphicon-user:before {
-  content: "\e008";
-}
-.glyphicon-film:before {
-  content: "\e009";
-}
-.glyphicon-th-large:before {
-  content: "\e010";
-}
-.glyphicon-th:before {
-  content: "\e011";
-}
-.glyphicon-th-list:before {
-  content: "\e012";
-}
-.glyphicon-ok:before {
-  content: "\e013";
-}
-.glyphicon-remove:before {
-  content: "\e014";
-}
-.glyphicon-zoom-in:before {
-  content: "\e015";
-}
-.glyphicon-zoom-out:before {
-  content: "\e016";
-}
-.glyphicon-off:before {
-  content: "\e017";
-}
-.glyphicon-signal:before {
-  content: "\e018";
-}
-.glyphicon-cog:before {
-  content: "\e019";
-}
-.glyphicon-trash:before {
-  content: "\e020";
-}
-.glyphicon-home:before {
-  content: "\e021";
-}
-.glyphicon-file:before {
-  content: "\e022";
-}
-.glyphicon-time:before {
-  content: "\e023";
-}
-.glyphicon-road:before {
-  content: "\e024";
-}
-.glyphicon-download-alt:before {
-  content: "\e025";
-}
-.glyphicon-download:before {
-  content: "\e026";
-}
-.glyphicon-upload:before {
-  content: "\e027";
-}
-.glyphicon-inbox:before {
-  content: "\e028";
-}
-.glyphicon-play-circle:before {
-  content: "\e029";
-}
-.glyphicon-repeat:before {
-  content: "\e030";
-}
-.glyphicon-refresh:before {
-  content: "\e031";
-}
-.glyphicon-list-alt:before {
-  content: "\e032";
-}
-.glyphicon-lock:before {
-  content: "\e033";
-}
-.glyphicon-flag:before {
-  content: "\e034";
-}
-.glyphicon-headphones:before {
-  content: "\e035";
-}
-.glyphicon-volume-off:before {
-  content: "\e036";
-}
-.glyphicon-volume-down:before {
-  content: "\e037";
-}
-.glyphicon-volume-up:before {
-  content: "\e038";
-}
-.glyphicon-qrcode:before {
-  content: "\e039";
-}
-.glyphicon-barcode:before {
-  content: "\e040";
-}
-.glyphicon-tag:before {
-  content: "\e041";
-}
-.glyphicon-tags:before {
-  content: "\e042";
-}
-.glyphicon-book:before {
-  content: "\e043";
-}
-.glyphicon-bookmark:before {
-  content: "\e044";
-}
-.glyphicon-print:before {
-  content: "\e045";
-}
-.glyphicon-camera:before {
-  content: "\e046";
-}
-.glyphicon-font:before {
-  content: "\e047";
-}
-.glyphicon-bold:before {
-  content: "\e048";
-}
-.glyphicon-italic:before {
-  content: "\e049";
-}
-.glyphicon-text-height:before {
-  content: "\e050";
-}
-.glyphicon-text-width:before {
-  content: "\e051";
-}
-.glyphicon-align-left:before {
-  content: "\e052";
-}
-.glyphicon-align-center:before {
-  content: "\e053";
-}
-.glyphicon-align-right:before {
-  content: "\e054";
-}
-.glyphicon-align-justify:before {
-  content: "\e055";
-}
-.glyphicon-list:before {
-  content: "\e056";
-}
-.glyphicon-indent-left:before {
-  content: "\e057";
-}
-.glyphicon-indent-right:before {
-  content: "\e058";
-}
-.glyphicon-facetime-video:before {
-  content: "\e059";
-}
-.glyphicon-picture:before {
-  content: "\e060";
-}
-.glyphicon-map-marker:before {
-  content: "\e062";
-}
-.glyphicon-adjust:before {
-  content: "\e063";
-}
-.glyphicon-tint:before {
-  content: "\e064";
-}
-.glyphicon-edit:before {
-  content: "\e065";
-}
-.glyphicon-share:before {
-  content: "\e066";
-}
-.glyphicon-check:before {
-  content: "\e067";
-}
-.glyphicon-move:before {
-  content: "\e068";
-}
-.glyphicon-step-backward:before {
-  content: "\e069";
-}
-.glyphicon-fast-backward:before {
-  content: "\e070";
-}
-.glyphicon-backward:before {
-  content: "\e071";
-}
-.glyphicon-play:before {
-  content: "\e072";
-}
-.glyphicon-pause:before {
-  content: "\e073";
-}
-.glyphicon-stop:before {
-  content: "\e074";
-}
-.glyphicon-forward:before {
-  content: "\e075";
-}
-.glyphicon-fast-forward:before {
-  content: "\e076";
-}
-.glyphicon-step-forward:before {
-  content: "\e077";
-}
-.glyphicon-eject:before {
-  content: "\e078";
-}
-.glyphicon-chevron-left:before {
-  content: "\e079";
-}
-.glyphicon-chevron-right:before {
-  content: "\e080";
-}
-.glyphicon-plus-sign:before {
-  content: "\e081";
-}
-.glyphicon-minus-sign:before {
-  content: "\e082";
-}
-.glyphicon-remove-sign:before {
-  content: "\e083";
-}
-.glyphicon-ok-sign:before {
-  content: "\e084";
-}
-.glyphicon-question-sign:before {
-  content: "\e085";
-}
-.glyphicon-info-sign:before {
-  content: "\e086";
-}
-.glyphicon-screenshot:before {
-  content: "\e087";
-}
-.glyphicon-remove-circle:before {
-  content: "\e088";
-}
-.glyphicon-ok-circle:before {
-  content: "\e089";
-}
-.glyphicon-ban-circle:before {
-  content: "\e090";
-}
-.glyphicon-arrow-left:before {
-  content: "\e091";
-}
-.glyphicon-arrow-right:before {
-  content: "\e092";
-}
-.glyphicon-arrow-up:before {
-  content: "\e093";
-}
-.glyphicon-arrow-down:before {
-  content: "\e094";
-}
-.glyphicon-share-alt:before {
-  content: "\e095";
-}
-.glyphicon-resize-full:before {
-  content: "\e096";
-}
-.glyphicon-resize-small:before {
-  content: "\e097";
-}
-.glyphicon-exclamation-sign:before {
-  content: "\e101";
-}
-.glyphicon-gift:before {
-  content: "\e102";
-}
-.glyphicon-leaf:before {
-  content: "\e103";
-}
-.glyphicon-fire:before {
-  content: "\e104";
-}
-.glyphicon-eye-open:before {
-  content: "\e105";
-}
-.glyphicon-eye-close:before {
-  content: "\e106";
-}
-.glyphicon-warning-sign:before {
-  content: "\e107";
-}
-.glyphicon-plane:before {
-  content: "\e108";
-}
-.glyphicon-calendar:before {
-  content: "\e109";
-}
-.glyphicon-random:before {
-  content: "\e110";
-}
-.glyphicon-comment:before {
-  content: "\e111";
-}
-.glyphicon-magnet:before {
-  content: "\e112";
-}
-.glyphicon-chevron-up:before {
-  content: "\e113";
-}
-.glyphicon-chevron-down:before {
-  content: "\e114";
-}
-.glyphicon-retweet:before {
-  content: "\e115";
-}
-.glyphicon-shopping-cart:before {
-  content: "\e116";
-}
-.glyphicon-folder-close:before {
-  content: "\e117";
-}
-.glyphicon-folder-open:before {
-  content: "\e118";
-}
-.glyphicon-resize-vertical:before {
-  content: "\e119";
-}
-.glyphicon-resize-horizontal:before {
-  content: "\e120";
-}
-.glyphicon-hdd:before {
-  content: "\e121";
-}
-.glyphicon-bullhorn:before {
-  content: "\e122";
-}
-.glyphicon-bell:before {
-  content: "\e123";
-}
-.glyphicon-certificate:before {
-  content: "\e124";
-}
-.glyphicon-thumbs-up:before {
-  content: "\e125";
-}
-.glyphicon-thumbs-down:before {
-  content: "\e126";
-}
-.glyphicon-hand-right:before {
-  content: "\e127";
-}
-.glyphicon-hand-left:before {
-  content: "\e128";
-}
-.glyphicon-hand-up:before {
-  content: "\e129";
-}
-.glyphicon-hand-down:before {
-  content: "\e130";
-}
-.glyphicon-circle-arrow-right:before {
-  content: "\e131";
-}
-.glyphicon-circle-arrow-left:before {
-  content: "\e132";
-}
-.glyphicon-circle-arrow-up:before {
-  content: "\e133";
-}
-.glyphicon-circle-arrow-down:before {
-  content: "\e134";
-}
-.glyphicon-globe:before {
-  content: "\e135";
-}
-.glyphicon-wrench:before {
-  content: "\e136";
-}
-.glyphicon-tasks:before {
-  content: "\e137";
-}
-.glyphicon-filter:before {
-  content: "\e138";
-}
-.glyphicon-briefcase:before {
-  content: "\e139";
-}
-.glyphicon-fullscreen:before {
-  content: "\e140";
-}
-.glyphicon-dashboard:before {
-  content: "\e141";
-}
-.glyphicon-paperclip:before {
-  content: "\e142";
-}
-.glyphicon-heart-empty:before {
-  content: "\e143";
-}
-.glyphicon-link:before {
-  content: "\e144";
-}
-.glyphicon-phone:before {
-  content: "\e145";
-}
-.glyphicon-pushpin:before {
-  content: "\e146";
-}
-.glyphicon-usd:before {
-  content: "\e148";
-}
-.glyphicon-gbp:before {
-  content: "\e149";
-}
-.glyphicon-sort:before {
-  content: "\e150";
-}
-.glyphicon-sort-by-alphabet:before {
-  content: "\e151";
-}
-.glyphicon-sort-by-alphabet-alt:before {
-  content: "\e152";
-}
-.glyphicon-sort-by-order:before {
-  content: "\e153";
-}
-.glyphicon-sort-by-order-alt:before {
-  content: "\e154";
-}
-.glyphicon-sort-by-attributes:before {
-  content: "\e155";
-}
-.glyphicon-sort-by-attributes-alt:before {
-  content: "\e156";
-}
-.glyphicon-unchecked:before {
-  content: "\e157";
-}
-.glyphicon-expand:before {
-  content: "\e158";
-}
-.glyphicon-collapse-down:before {
-  content: "\e159";
-}
-.glyphicon-collapse-up:before {
-  content: "\e160";
-}
-.glyphicon-log-in:before {
-  content: "\e161";
-}
-.glyphicon-flash:before {
-  content: "\e162";
-}
-.glyphicon-log-out:before {
-  content: "\e163";
-}
-.glyphicon-new-window:before {
-  content: "\e164";
-}
-.glyphicon-record:before {
-  content: "\e165";
-}
-.glyphicon-save:before {
-  content: "\e166";
-}
-.glyphicon-open:before {
-  content: "\e167";
-}
-.glyphicon-saved:before {
-  content: "\e168";
-}
-.glyphicon-import:before {
-  content: "\e169";
-}
-.glyphicon-export:before {
-  content: "\e170";
-}
-.glyphicon-send:before {
-  content: "\e171";
-}
-.glyphicon-floppy-disk:before {
-  content: "\e172";
-}
-.glyphicon-floppy-saved:before {
-  content: "\e173";
-}
-.glyphicon-floppy-remove:before {
-  content: "\e174";
-}
-.glyphicon-floppy-save:before {
-  content: "\e175";
-}
-.glyphicon-floppy-open:before {
-  content: "\e176";
-}
-.glyphicon-credit-card:before {
-  content: "\e177";
-}
-.glyphicon-transfer:before {
-  content: "\e178";
-}
-.glyphicon-cutlery:before {
-  content: "\e179";
-}
-.glyphicon-header:before {
-  content: "\e180";
-}
-.glyphicon-compressed:before {
-  content: "\e181";
-}
-.glyphicon-earphone:before {
-  content: "\e182";
-}
-.glyphicon-phone-alt:before {
-  content: "\e183";
-}
-.glyphicon-tower:before {
-  content: "\e184";
-}
-.glyphicon-stats:before {
-  content: "\e185";
-}
-.glyphicon-sd-video:before {
-  content: "\e186";
-}
-.glyphicon-hd-video:before {
-  content: "\e187";
-}
-.glyphicon-subtitles:before {
-  content: "\e188";
-}
-.glyphicon-sound-stereo:before {
-  content: "\e189";
-}
-.glyphicon-sound-dolby:before {
-  content: "\e190";
-}
-.glyphicon-sound-5-1:before {
-  content: "\e191";
-}
-.glyphicon-sound-6-1:before {
-  content: "\e192";
-}
-.glyphicon-sound-7-1:before {
-  content: "\e193";
-}
-.glyphicon-copyright-mark:before {
-  content: "\e194";
-}
-.glyphicon-registration-mark:before {
-  content: "\e195";
-}
-.glyphicon-cloud-download:before {
-  content: "\e197";
-}
-.glyphicon-cloud-upload:before {
-  content: "\e198";
-}
-.glyphicon-tree-conifer:before {
-  content: "\e199";
-}
-.glyphicon-tree-deciduous:before {
-  content: "\e200";
-}
-* {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-*:before,
-*:after {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-html {
-  font-size: 10px;
-
-  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
-}
-body {
-  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #333;
-  background-color: #fff;
-}
-input,
-button,
-select,
-textarea {
-  font-family: inherit;
-  font-size: inherit;
-  line-height: inherit;
-}
-a {
-  color: #337ab7;
-  text-decoration: none;
-}
-a:hover,
-a:focus {
-  color: #23527c;
-  text-decoration: underline;
-}
-a:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-figure {
-  margin: 0;
-}
-img {
-  vertical-align: middle;
-}
-.img-responsive,
-.thumbnail > img,
-.thumbnail a > img,
-.carousel-inner > .item > img,
-.carousel-inner > .item > a > img {
-  display: block;
-  max-width: 100%;
-  height: auto;
-}
-.img-rounded {
-  border-radius: 6px;
-}
-.img-thumbnail {
-  display: inline-block;
-  max-width: 100%;
-  height: auto;
-  padding: 4px;
-  line-height: 1.42857143;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-radius: 4px;
-  -webkit-transition: all .2s ease-in-out;
-       -o-transition: all .2s ease-in-out;
-          transition: all .2s ease-in-out;
-}
-.img-circle {
-  border-radius: 50%;
-}
-hr {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  border: 0;
-  border-top: 1px solid #eee;
-}
-.sr-only {
-  position: absolute;
-  width: 1px;
-  height: 1px;
-  padding: 0;
-  margin: -1px;
-  overflow: hidden;
-  clip: rect(0, 0, 0, 0);
-  border: 0;
-}
-.sr-only-focusable:active,
-.sr-only-focusable:focus {
-  position: static;
-  width: auto;
-  height: auto;
-  margin: 0;
-  overflow: visible;
-  clip: auto;
-}
-h1,
-h2,
-h3,
-h4,
-h5,
-h6,
-.h1,
-.h2,
-.h3,
-.h4,
-.h5,
-.h6 {
-  font-family: inherit;
-  font-weight: 500;
-  line-height: 1.1;
-  color: inherit;
-}
-h1 small,
-h2 small,
-h3 small,
-h4 small,
-h5 small,
-h6 small,
-.h1 small,
-.h2 small,
-.h3 small,
-.h4 small,
-.h5 small,
-.h6 small,
-h1 .small,
-h2 .small,
-h3 .small,
-h4 .small,
-h5 .small,
-h6 .small,
-.h1 .small,
-.h2 .small,
-.h3 .small,
-.h4 .small,
-.h5 .small,
-.h6 .small {
-  font-weight: normal;
-  line-height: 1;
-  color: #777;
-}
-h1,
-.h1,
-h2,
-.h2,
-h3,
-.h3 {
-  margin-top: 20px;
-  margin-bottom: 10px;
-}
-h1 small,
-.h1 small,
-h2 small,
-.h2 small,
-h3 small,
-.h3 small,
-h1 .small,
-.h1 .small,
-h2 .small,
-.h2 .small,
-h3 .small,
-.h3 .small {
-  font-size: 65%;
-}
-h4,
-.h4,
-h5,
-.h5,
-h6,
-.h6 {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-h4 small,
-.h4 small,
-h5 small,
-.h5 small,
-h6 small,
-.h6 small,
-h4 .small,
-.h4 .small,
-h5 .small,
-.h5 .small,
-h6 .small,
-.h6 .small {
-  font-size: 75%;
-}
-h1,
-.h1 {
-  font-size: 36px;
-}
-h2,
-.h2 {
-  font-size: 30px;
-}
-h3,
-.h3 {
-  font-size: 24px;
-}
-h4,
-.h4 {
-  font-size: 18px;
-}
-h5,
-.h5 {
-  font-size: 14px;
-}
-h6,
-.h6 {
-  font-size: 12px;
-}
-p {
-  margin: 0 0 10px;
-}
-.lead {
-  margin-bottom: 20px;
-  font-size: 16px;
-  font-weight: 300;
-  line-height: 1.4;
-}
-@media (min-width: 768px) {
-  .lead {
-    font-size: 21px;
-  }
-}
-small,
-.small {
-  font-size: 85%;
-}
-mark,
-.mark {
-  padding: .2em;
-  background-color: #fcf8e3;
-}
-.text-left {
-  text-align: left;
-}
-.text-right {
-  text-align: right;
-}
-.text-center {
-  text-align: center;
-}
-.text-justify {
-  text-align: justify;
-}
-.text-nowrap {
-  white-space: nowrap;
-}
-.text-lowercase {
-  text-transform: lowercase;
-}
-.text-uppercase {
-  text-transform: uppercase;
-}
-.text-capitalize {
-  text-transform: capitalize;
-}
-.text-muted {
-  color: #777;
-}
-.text-primary {
-  color: #337ab7;
-}
-a.text-primary:hover {
-  color: #286090;
-}
-.text-success {
-  color: #3c763d;
-}
-a.text-success:hover {
-  color: #2b542c;
-}
-.text-info {
-  color: #31708f;
-}
-a.text-info:hover {
-  color: #245269;
-}
-.text-warning {
-  color: #8a6d3b;
-}
-a.text-warning:hover {
-  color: #66512c;
-}
-.text-danger {
-  color: #a94442;
-}
-a.text-danger:hover {
-  color: #843534;
-}
-.bg-primary {
-  color: #fff;
-  background-color: #337ab7;
-}
-a.bg-primary:hover {
-  background-color: #286090;
-}
-.bg-success {
-  background-color: #dff0d8;
-}
-a.bg-success:hover {
-  background-color: #c1e2b3;
-}
-.bg-info {
-  background-color: #d9edf7;
-}
-a.bg-info:hover {
-  background-color: #afd9ee;
-}
-.bg-warning {
-  background-color: #fcf8e3;
-}
-a.bg-warning:hover {
-  background-color: #f7ecb5;
-}
-.bg-danger {
-  background-color: #f2dede;
-}
-a.bg-danger:hover {
-  background-color: #e4b9b9;
-}
-.page-header {
-  padding-bottom: 9px;
-  margin: 40px 0 20px;
-  border-bottom: 1px solid #eee;
-}
-ul,
-ol {
-  margin-top: 0;
-  margin-bottom: 10px;
-}
-ul ul,
-ol ul,
-ul ol,
-ol ol {
-  margin-bottom: 0;
-}
-.list-unstyled {
-  padding-left: 0;
-  list-style: none;
-}
-.list-inline {
-  padding-left: 0;
-  margin-left: -5px;
-  list-style: none;
-}
-.list-inline > li {
-  display: inline-block;
-  padding-right: 5px;
-  padding-left: 5px;
-}
-dl {
-  margin-top: 0;
-  margin-bottom: 20px;
-}
-dt,
-dd {
-  line-height: 1.42857143;
-}
-dt {
-  font-weight: bold;
-}
-dd {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .dl-horizontal dt {
-    float: left;
-    width: 160px;
-    overflow: hidden;
-    clear: left;
-    text-align: right;
-    text-overflow: ellipsis;
-    white-space: nowrap;
-  }
-  .dl-horizontal dd {
-    margin-left: 180px;
-  }
-}
-abbr[title],
-abbr[data-original-title] {
-  cursor: help;
-  border-bottom: 1px dotted #777;
-}
-.initialism {
-  font-size: 90%;
-  text-transform: uppercase;
-}
-blockquote {
-  padding: 10px 20px;
-  margin: 0 0 20px;
-  font-size: 17.5px;
-  border-left: 5px solid #eee;
-}
-blockquote p:last-child,
-blockquote ul:last-child,
-blockquote ol:last-child {
-  margin-bottom: 0;
-}
-blockquote footer,
-blockquote small,
-blockquote .small {
-  display: block;
-  font-size: 80%;
-  line-height: 1.42857143;
-  color: #777;
-}
-blockquote footer:before,
-blockquote small:before,
-blockquote .small:before {
-  content: '\2014 \00A0';
-}
-.blockquote-reverse,
-blockquote.pull-right {
-  padding-right: 15px;
-  padding-left: 0;
-  text-align: right;
-  border-right: 5px solid #eee;
-  border-left: 0;
-}
-.blockquote-reverse footer:before,
-blockquote.pull-right footer:before,
-.blockquote-reverse small:before,
-blockquote.pull-right small:before,
-.blockquote-reverse .small:before,
-blockquote.pull-right .small:before {
-  content: '';
-}
-.blockquote-reverse footer:after,
-blockquote.pull-right footer:after,
-.blockquote-reverse small:after,
-blockquote.pull-right small:after,
-.blockquote-reverse .small:after,
-blockquote.pull-right .small:after {
-  content: '\00A0 \2014';
-}
-address {
-  margin-bottom: 20px;
-  font-style: normal;
-  line-height: 1.42857143;
-}
-code,
-kbd,
-pre,
-samp {
-  font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
-}
-code {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #c7254e;
-  background-color: #f9f2f4;
-  border-radius: 4px;
-}
-kbd {
-  padding: 2px 4px;
-  font-size: 90%;
-  color: #fff;
-  background-color: #333;
-  border-radius: 3px;
-  -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-          box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
-}
-kbd kbd {
-  padding: 0;
-  font-size: 100%;
-  font-weight: bold;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-pre {
-  display: block;
-  padding: 9.5px;
-  margin: 0 0 10px;
-  font-size: 13px;
-  line-height: 1.42857143;
-  color: #333;
-  word-break: break-all;
-  word-wrap: break-word;
-  background-color: #f5f5f5;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-pre code {
-  padding: 0;
-  font-size: inherit;
-  color: inherit;
-  white-space: pre-wrap;
-  background-color: transparent;
-  border-radius: 0;
-}
-.pre-scrollable {
-  max-height: 340px;
-  overflow-y: scroll;
-}
-.container {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-@media (min-width: 768px) {
-  .container {
-    width: 750px;
-  }
-}
-@media (min-width: 992px) {
-  .container {
-    width: 970px;
-  }
-}
-@media (min-width: 1200px) {
-  .container {
-    width: 1170px;
-  }
-}
-.container-fluid {
-  padding-right: 15px;
-  padding-left: 15px;
-  margin-right: auto;
-  margin-left: auto;
-}
-.row {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
-  position: relative;
-  min-height: 1px;
-  padding-right: 15px;
-  padding-left: 15px;
-}
-.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
-  float: left;
-}
-.col-xs-12 {
-  width: 100%;
-}
-.col-xs-11 {
-  width: 91.66666667%;
-}
-.col-xs-10 {
-  width: 83.33333333%;
-}
-.col-xs-9 {
-  width: 75%;
-}
-.col-xs-8 {
-  width: 66.66666667%;
-}
-.col-xs-7 {
-  width: 58.33333333%;
-}
-.col-xs-6 {
-  width: 50%;
-}
-.col-xs-5 {
-  width: 41.66666667%;
-}
-.col-xs-4 {
-  width: 33.33333333%;
-}
-.col-xs-3 {
-  width: 25%;
-}
-.col-xs-2 {
-  width: 16.66666667%;
-}
-.col-xs-1 {
-  width: 8.33333333%;
-}
-.col-xs-pull-12 {
-  right: 100%;
-}
-.col-xs-pull-11 {
-  right: 91.66666667%;
-}
-.col-xs-pull-10 {
-  right: 83.33333333%;
-}
-.col-xs-pull-9 {
-  right: 75%;
-}
-.col-xs-pull-8 {
-  right: 66.66666667%;
-}
-.col-xs-pull-7 {
-  right: 58.33333333%;
-}
-.col-xs-pull-6 {
-  right: 50%;
-}
-.col-xs-pull-5 {
-  right: 41.66666667%;
-}
-.col-xs-pull-4 {
-  right: 33.33333333%;
-}
-.col-xs-pull-3 {
-  right: 25%;
-}
-.col-xs-pull-2 {
-  right: 16.66666667%;
-}
-.col-xs-pull-1 {
-  right: 8.33333333%;
-}
-.col-xs-pull-0 {
-  right: auto;
-}
-.col-xs-push-12 {
-  left: 100%;
-}
-.col-xs-push-11 {
-  left: 91.66666667%;
-}
-.col-xs-push-10 {
-  left: 83.33333333%;
-}
-.col-xs-push-9 {
-  left: 75%;
-}
-.col-xs-push-8 {
-  left: 66.66666667%;
-}
-.col-xs-push-7 {
-  left: 58.33333333%;
-}
-.col-xs-push-6 {
-  left: 50%;
-}
-.col-xs-push-5 {
-  left: 41.66666667%;
-}
-.col-xs-push-4 {
-  left: 33.33333333%;
-}
-.col-xs-push-3 {
-  left: 25%;
-}
-.col-xs-push-2 {
-  left: 16.66666667%;
-}
-.col-xs-push-1 {
-  left: 8.33333333%;
-}
-.col-xs-push-0 {
-  left: auto;
-}
-.col-xs-offset-12 {
-  margin-left: 100%;
-}
-.col-xs-offset-11 {
-  margin-left: 91.66666667%;
-}
-.col-xs-offset-10 {
-  margin-left: 83.33333333%;
-}
-.col-xs-offset-9 {
-  margin-left: 75%;
-}
-.col-xs-offset-8 {
-  margin-left: 66.66666667%;
-}
-.col-xs-offset-7 {
-  margin-left: 58.33333333%;
-}
-.col-xs-offset-6 {
-  margin-left: 50%;
-}
-.col-xs-offset-5 {
-  margin-left: 41.66666667%;
-}
-.col-xs-offset-4 {
-  margin-left: 33.33333333%;
-}
-.col-xs-offset-3 {
-  margin-left: 25%;
-}
-.col-xs-offset-2 {
-  margin-left: 16.66666667%;
-}
-.col-xs-offset-1 {
-  margin-left: 8.33333333%;
-}
-.col-xs-offset-0 {
-  margin-left: 0;
-}
-@media (min-width: 768px) {
-  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
-    float: left;
-  }
-  .col-sm-12 {
-    width: 100%;
-  }
-  .col-sm-11 {
-    width: 91.66666667%;
-  }
-  .col-sm-10 {
-    width: 83.33333333%;
-  }
-  .col-sm-9 {
-    width: 75%;
-  }
-  .col-sm-8 {
-    width: 66.66666667%;
-  }
-  .col-sm-7 {
-    width: 58.33333333%;
-  }
-  .col-sm-6 {
-    width: 50%;
-  }
-  .col-sm-5 {
-    width: 41.66666667%;
-  }
-  .col-sm-4 {
-    width: 33.33333333%;
-  }
-  .col-sm-3 {
-    width: 25%;
-  }
-  .col-sm-2 {
-    width: 16.66666667%;
-  }
-  .col-sm-1 {
-    width: 8.33333333%;
-  }
-  .col-sm-pull-12 {
-    right: 100%;
-  }
-  .col-sm-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-sm-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-sm-pull-9 {
-    right: 75%;
-  }
-  .col-sm-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-sm-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-sm-pull-6 {
-    right: 50%;
-  }
-  .col-sm-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-sm-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-sm-pull-3 {
-    right: 25%;
-  }
-  .col-sm-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-sm-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-sm-pull-0 {
-    right: auto;
-  }
-  .col-sm-push-12 {
-    left: 100%;
-  }
-  .col-sm-push-11 {
-    left: 91.66666667%;
-  }
-  .col-sm-push-10 {
-    left: 83.33333333%;
-  }
-  .col-sm-push-9 {
-    left: 75%;
-  }
-  .col-sm-push-8 {
-    left: 66.66666667%;
-  }
-  .col-sm-push-7 {
-    left: 58.33333333%;
-  }
-  .col-sm-push-6 {
-    left: 50%;
-  }
-  .col-sm-push-5 {
-    left: 41.66666667%;
-  }
-  .col-sm-push-4 {
-    left: 33.33333333%;
-  }
-  .col-sm-push-3 {
-    left: 25%;
-  }
-  .col-sm-push-2 {
-    left: 16.66666667%;
-  }
-  .col-sm-push-1 {
-    left: 8.33333333%;
-  }
-  .col-sm-push-0 {
-    left: auto;
-  }
-  .col-sm-offset-12 {
-    margin-left: 100%;
-  }
-  .col-sm-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-sm-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-sm-offset-9 {
-    margin-left: 75%;
-  }
-  .col-sm-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-sm-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-sm-offset-6 {
-    margin-left: 50%;
-  }
-  .col-sm-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-sm-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-sm-offset-3 {
-    margin-left: 25%;
-  }
-  .col-sm-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-sm-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-sm-offset-0 {
-    margin-left: 0;
-  }
-}
-@media (min-width: 992px) {
-  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
-    float: left;
-  }
-  .col-md-12 {
-    width: 100%;
-  }
-  .col-md-11 {
-    width: 91.66666667%;
-  }
-  .col-md-10 {
-    width: 83.33333333%;
-  }
-  .col-md-9 {
-    width: 75%;
-  }
-  .col-md-8 {
-    width: 66.66666667%;
-  }
-  .col-md-7 {
-    width: 58.33333333%;
-  }
-  .col-md-6 {
-    width: 50%;
-  }
-  .col-md-5 {
-    width: 41.66666667%;
-  }
-  .col-md-4 {
-    width: 33.33333333%;
-  }
-  .col-md-3 {
-    width: 25%;
-  }
-  .col-md-2 {
-    width: 16.66666667%;
-  }
-  .col-md-1 {
-    width: 8.33333333%;
-  }
-  .col-md-pull-12 {
-    right: 100%;
-  }
-  .col-md-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-md-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-md-pull-9 {
-    right: 75%;
-  }
-  .col-md-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-md-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-md-pull-6 {
-    right: 50%;
-  }
-  .col-md-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-md-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-md-pull-3 {
-    right: 25%;
-  }
-  .col-md-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-md-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-md-pull-0 {
-    right: auto;
-  }
-  .col-md-push-12 {
-    left: 100%;
-  }
-  .col-md-push-11 {
-    left: 91.66666667%;
-  }
-  .col-md-push-10 {
-    left: 83.33333333%;
-  }
-  .col-md-push-9 {
-    left: 75%;
-  }
-  .col-md-push-8 {
-    left: 66.66666667%;
-  }
-  .col-md-push-7 {
-    left: 58.33333333%;
-  }
-  .col-md-push-6 {
-    left: 50%;
-  }
-  .col-md-push-5 {
-    left: 41.66666667%;
-  }
-  .col-md-push-4 {
-    left: 33.33333333%;
-  }
-  .col-md-push-3 {
-    left: 25%;
-  }
-  .col-md-push-2 {
-    left: 16.66666667%;
-  }
-  .col-md-push-1 {
-    left: 8.33333333%;
-  }
-  .col-md-push-0 {
-    left: auto;
-  }
-  .col-md-offset-12 {
-    margin-left: 100%;
-  }
-  .col-md-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-md-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-md-offset-9 {
-    margin-left: 75%;
-  }
-  .col-md-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-md-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-md-offset-6 {
-    margin-left: 50%;
-  }
-  .col-md-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-md-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-md-offset-3 {
-    margin-left: 25%;
-  }
-  .col-md-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-md-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-md-offset-0 {
-    margin-left: 0;
-  }
-}
-@media (min-width: 1200px) {
-  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
-    float: left;
-  }
-  .col-lg-12 {
-    width: 100%;
-  }
-  .col-lg-11 {
-    width: 91.66666667%;
-  }
-  .col-lg-10 {
-    width: 83.33333333%;
-  }
-  .col-lg-9 {
-    width: 75%;
-  }
-  .col-lg-8 {
-    width: 66.66666667%;
-  }
-  .col-lg-7 {
-    width: 58.33333333%;
-  }
-  .col-lg-6 {
-    width: 50%;
-  }
-  .col-lg-5 {
-    width: 41.66666667%;
-  }
-  .col-lg-4 {
-    width: 33.33333333%;
-  }
-  .col-lg-3 {
-    width: 25%;
-  }
-  .col-lg-2 {
-    width: 16.66666667%;
-  }
-  .col-lg-1 {
-    width: 8.33333333%;
-  }
-  .col-lg-pull-12 {
-    right: 100%;
-  }
-  .col-lg-pull-11 {
-    right: 91.66666667%;
-  }
-  .col-lg-pull-10 {
-    right: 83.33333333%;
-  }
-  .col-lg-pull-9 {
-    right: 75%;
-  }
-  .col-lg-pull-8 {
-    right: 66.66666667%;
-  }
-  .col-lg-pull-7 {
-    right: 58.33333333%;
-  }
-  .col-lg-pull-6 {
-    right: 50%;
-  }
-  .col-lg-pull-5 {
-    right: 41.66666667%;
-  }
-  .col-lg-pull-4 {
-    right: 33.33333333%;
-  }
-  .col-lg-pull-3 {
-    right: 25%;
-  }
-  .col-lg-pull-2 {
-    right: 16.66666667%;
-  }
-  .col-lg-pull-1 {
-    right: 8.33333333%;
-  }
-  .col-lg-pull-0 {
-    right: auto;
-  }
-  .col-lg-push-12 {
-    left: 100%;
-  }
-  .col-lg-push-11 {
-    left: 91.66666667%;
-  }
-  .col-lg-push-10 {
-    left: 83.33333333%;
-  }
-  .col-lg-push-9 {
-    left: 75%;
-  }
-  .col-lg-push-8 {
-    left: 66.66666667%;
-  }
-  .col-lg-push-7 {
-    left: 58.33333333%;
-  }
-  .col-lg-push-6 {
-    left: 50%;
-  }
-  .col-lg-push-5 {
-    left: 41.66666667%;
-  }
-  .col-lg-push-4 {
-    left: 33.33333333%;
-  }
-  .col-lg-push-3 {
-    left: 25%;
-  }
-  .col-lg-push-2 {
-    left: 16.66666667%;
-  }
-  .col-lg-push-1 {
-    left: 8.33333333%;
-  }
-  .col-lg-push-0 {
-    left: auto;
-  }
-  .col-lg-offset-12 {
-    margin-left: 100%;
-  }
-  .col-lg-offset-11 {
-    margin-left: 91.66666667%;
-  }
-  .col-lg-offset-10 {
-    margin-left: 83.33333333%;
-  }
-  .col-lg-offset-9 {
-    margin-left: 75%;
-  }
-  .col-lg-offset-8 {
-    margin-left: 66.66666667%;
-  }
-  .col-lg-offset-7 {
-    margin-left: 58.33333333%;
-  }
-  .col-lg-offset-6 {
-    margin-left: 50%;
-  }
-  .col-lg-offset-5 {
-    margin-left: 41.66666667%;
-  }
-  .col-lg-offset-4 {
-    margin-left: 33.33333333%;
-  }
-  .col-lg-offset-3 {
-    margin-left: 25%;
-  }
-  .col-lg-offset-2 {
-    margin-left: 16.66666667%;
-  }
-  .col-lg-offset-1 {
-    margin-left: 8.33333333%;
-  }
-  .col-lg-offset-0 {
-    margin-left: 0;
-  }
-}
-table {
-  background-color: transparent;
-}
-caption {
-  padding-top: 8px;
-  padding-bottom: 8px;
-  color: #777;
-  text-align: left;
-}
-th {
-  text-align: left;
-}
-.table {
-  width: 100%;
-  max-width: 100%;
-  margin-bottom: 20px;
-}
-.table > thead > tr > th,
-.table > tbody > tr > th,
-.table > tfoot > tr > th,
-.table > thead > tr > td,
-.table > tbody > tr > td,
-.table > tfoot > tr > td {
-  padding: 8px;
-  line-height: 1.42857143;
-  vertical-align: top;
-  border-top: 1px solid #ddd;
-}
-.table > thead > tr > th {
-  vertical-align: bottom;
-  border-bottom: 2px solid #ddd;
-}
-.table > caption + thead > tr:first-child > th,
-.table > colgroup + thead > tr:first-child > th,
-.table > thead:first-child > tr:first-child > th,
-.table > caption + thead > tr:first-child > td,
-.table > colgroup + thead > tr:first-child > td,
-.table > thead:first-child > tr:first-child > td {
-  border-top: 0;
-}
-.table > tbody + tbody {
-  border-top: 2px solid #ddd;
-}
-.table .table {
-  background-color: #fff;
-}
-.table-condensed > thead > tr > th,
-.table-condensed > tbody > tr > th,
-.table-condensed > tfoot > tr > th,
-.table-condensed > thead > tr > td,
-.table-condensed > tbody > tr > td,
-.table-condensed > tfoot > tr > td {
-  padding: 5px;
-}
-.table-bordered {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > tbody > tr > th,
-.table-bordered > tfoot > tr > th,
-.table-bordered > thead > tr > td,
-.table-bordered > tbody > tr > td,
-.table-bordered > tfoot > tr > td {
-  border: 1px solid #ddd;
-}
-.table-bordered > thead > tr > th,
-.table-bordered > thead > tr > td {
-  border-bottom-width: 2px;
-}
-.table-striped > tbody > tr:nth-child(odd) {
-  background-color: #f9f9f9;
-}
-.table-hover > tbody > tr:hover {
-  background-color: #f5f5f5;
-}
-table col[class*="col-"] {
-  position: static;
-  display: table-column;
-  float: none;
-}
-table td[class*="col-"],
-table th[class*="col-"] {
-  position: static;
-  display: table-cell;
-  float: none;
-}
-.table > thead > tr > td.active,
-.table > tbody > tr > td.active,
-.table > tfoot > tr > td.active,
-.table > thead > tr > th.active,
-.table > tbody > tr > th.active,
-.table > tfoot > tr > th.active,
-.table > thead > tr.active > td,
-.table > tbody > tr.active > td,
-.table > tfoot > tr.active > td,
-.table > thead > tr.active > th,
-.table > tbody > tr.active > th,
-.table > tfoot > tr.active > th {
-  background-color: #f5f5f5;
-}
-.table-hover > tbody > tr > td.active:hover,
-.table-hover > tbody > tr > th.active:hover,
-.table-hover > tbody > tr.active:hover > td,
-.table-hover > tbody > tr:hover > .active,
-.table-hover > tbody > tr.active:hover > th {
-  background-color: #e8e8e8;
-}
-.table > thead > tr > td.success,
-.table > tbody > tr > td.success,
-.table > tfoot > tr > td.success,
-.table > thead > tr > th.success,
-.table > tbody > tr > th.success,
-.table > tfoot > tr > th.success,
-.table > thead > tr.success > td,
-.table > tbody > tr.success > td,
-.table > tfoot > tr.success > td,
-.table > thead > tr.success > th,
-.table > tbody > tr.success > th,
-.table > tfoot > tr.success > th {
-  background-color: #dff0d8;
-}
-.table-hover > tbody > tr > td.success:hover,
-.table-hover > tbody > tr > th.success:hover,
-.table-hover > tbody > tr.success:hover > td,
-.table-hover > tbody > tr:hover > .success,
-.table-hover > tbody > tr.success:hover > th {
-  background-color: #d0e9c6;
-}
-.table > thead > tr > td.info,
-.table > tbody > tr > td.info,
-.table > tfoot > tr > td.info,
-.table > thead > tr > th.info,
-.table > tbody > tr > th.info,
-.table > tfoot > tr > th.info,
-.table > thead > tr.info > td,
-.table > tbody > tr.info > td,
-.table > tfoot > tr.info > td,
-.table > thead > tr.info > th,
-.table > tbody > tr.info > th,
-.table > tfoot > tr.info > th {
-  background-color: #d9edf7;
-}
-.table-hover > tbody > tr > td.info:hover,
-.table-hover > tbody > tr > th.info:hover,
-.table-hover > tbody > tr.info:hover > td,
-.table-hover > tbody > tr:hover > .info,
-.table-hover > tbody > tr.info:hover > th {
-  background-color: #c4e3f3;
-}
-.table > thead > tr > td.warning,
-.table > tbody > tr > td.warning,
-.table > tfoot > tr > td.warning,
-.table > thead > tr > th.warning,
-.table > tbody > tr > th.warning,
-.table > tfoot > tr > th.warning,
-.table > thead > tr.warning > td,
-.table > tbody > tr.warning > td,
-.table > tfoot > tr.warning > td,
-.table > thead > tr.warning > th,
-.table > tbody > tr.warning > th,
-.table > tfoot > tr.warning > th {
-  background-color: #fcf8e3;
-}
-.table-hover > tbody > tr > td.warning:hover,
-.table-hover > tbody > tr > th.warning:hover,
-.table-hover > tbody > tr.warning:hover > td,
-.table-hover > tbody > tr:hover > .warning,
-.table-hover > tbody > tr.warning:hover > th {
-  background-color: #faf2cc;
-}
-.table > thead > tr > td.danger,
-.table > tbody > tr > td.danger,
-.table > tfoot > tr > td.danger,
-.table > thead > tr > th.danger,
-.table > tbody > tr > th.danger,
-.table > tfoot > tr > th.danger,
-.table > thead > tr.danger > td,
-.table > tbody > tr.danger > td,
-.table > tfoot > tr.danger > td,
-.table > thead > tr.danger > th,
-.table > tbody > tr.danger > th,
-.table > tfoot > tr.danger > th {
-  background-color: #f2dede;
-}
-.table-hover > tbody > tr > td.danger:hover,
-.table-hover > tbody > tr > th.danger:hover,
-.table-hover > tbody > tr.danger:hover > td,
-.table-hover > tbody > tr:hover > .danger,
-.table-hover > tbody > tr.danger:hover > th {
-  background-color: #ebcccc;
-}
-.table-responsive {
-  min-height: .01%;
-  overflow-x: auto;
-}
-@media screen and (max-width: 767px) {
-  .table-responsive {
-    width: 100%;
-    margin-bottom: 15px;
-    overflow-y: hidden;
-    -ms-overflow-style: -ms-autohiding-scrollbar;
-    border: 1px solid #ddd;
-  }
-  .table-responsive > .table {
-    margin-bottom: 0;
-  }
-  .table-responsive > .table > thead > tr > th,
-  .table-responsive > .table > tbody > tr > th,
-  .table-responsive > .table > tfoot > tr > th,
-  .table-responsive > .table > thead > tr > td,
-  .table-responsive > .table > tbody > tr > td,
-  .table-responsive > .table > tfoot > tr > td {
-    white-space: nowrap;
-  }
-  .table-responsive > .table-bordered {
-    border: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:first-child,
-  .table-responsive > .table-bordered > tbody > tr > th:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:first-child,
-  .table-responsive > .table-bordered > thead > tr > td:first-child,
-  .table-responsive > .table-bordered > tbody > tr > td:first-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:first-child {
-    border-left: 0;
-  }
-  .table-responsive > .table-bordered > thead > tr > th:last-child,
-  .table-responsive > .table-bordered > tbody > tr > th:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > th:last-child,
-  .table-responsive > .table-bordered > thead > tr > td:last-child,
-  .table-responsive > .table-bordered > tbody > tr > td:last-child,
-  .table-responsive > .table-bordered > tfoot > tr > td:last-child {
-    border-right: 0;
-  }
-  .table-responsive > .table-bordered > tbody > tr:last-child > th,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > th,
-  .table-responsive > .table-bordered > tbody > tr:last-child > td,
-  .table-responsive > .table-bordered > tfoot > tr:last-child > td {
-    border-bottom: 0;
-  }
-}
-fieldset {
-  min-width: 0;
-  padding: 0;
-  margin: 0;
-  border: 0;
-}
-legend {
-  display: block;
-  width: 100%;
-  padding: 0;
-  margin-bottom: 20px;
-  font-size: 21px;
-  line-height: inherit;
-  color: #333;
-  border: 0;
-  border-bottom: 1px solid #e5e5e5;
-}
-label {
-  display: inline-block;
-  max-width: 100%;
-  margin-bottom: 5px;
-  font-weight: bold;
-}
-input[type="search"] {
-  -webkit-box-sizing: border-box;
-     -moz-box-sizing: border-box;
-          box-sizing: border-box;
-}
-input[type="radio"],
-input[type="checkbox"] {
-  margin: 4px 0 0;
-  margin-top: 1px \9;
-  line-height: normal;
-}
-input[type="file"] {
-  display: block;
-}
-input[type="range"] {
-  display: block;
-  width: 100%;
-}
-select[multiple],
-select[size] {
-  height: auto;
-}
-input[type="file"]:focus,
-input[type="radio"]:focus,
-input[type="checkbox"]:focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-output {
-  display: block;
-  padding-top: 7px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555;
-}
-.form-control {
-  display: block;
-  width: 100%;
-  height: 34px;
-  padding: 6px 12px;
-  font-size: 14px;
-  line-height: 1.42857143;
-  color: #555;
-  background-color: #fff;
-  background-image: none;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-  -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
-       -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-          transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-}
-.form-control:focus {
-  border-color: #66afe9;
-  outline: 0;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-          box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
-}
-.form-control::-moz-placeholder {
-  color: #999;
-  opacity: 1;
-}
-.form-control:-ms-input-placeholder {
-  color: #999;
-}
-.form-control::-webkit-input-placeholder {
-  color: #999;
-}
-.form-control[disabled],
-.form-control[readonly],
-fieldset[disabled] .form-control {
-  cursor: not-allowed;
-  background-color: #eee;
-  opacity: 1;
-}
-textarea.form-control {
-  height: auto;
-}
-input[type="search"] {
-  -webkit-appearance: none;
-}
-@media screen and (-webkit-min-device-pixel-ratio: 0) {
-  input[type="date"],
-  input[type="time"],
-  input[type="datetime-local"],
-  input[type="month"] {
-    line-height: 34px;
-  }
-  input[type="date"].input-sm,
-  input[type="time"].input-sm,
-  input[type="datetime-local"].input-sm,
-  input[type="month"].input-sm {
-    line-height: 30px;
-  }
-  input[type="date"].input-lg,
-  input[type="time"].input-lg,
-  input[type="datetime-local"].input-lg,
-  input[type="month"].input-lg {
-    line-height: 46px;
-  }
-}
-.form-group {
-  margin-bottom: 15px;
-}
-.radio,
-.checkbox {
-  position: relative;
-  display: block;
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.radio label,
-.checkbox label {
-  min-height: 20px;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  cursor: pointer;
-}
-.radio input[type="radio"],
-.radio-inline input[type="radio"],
-.checkbox input[type="checkbox"],
-.checkbox-inline input[type="checkbox"] {
-  position: absolute;
-  margin-top: 4px \9;
-  margin-left: -20px;
-}
-.radio + .radio,
-.checkbox + .checkbox {
-  margin-top: -5px;
-}
-.radio-inline,
-.checkbox-inline {
-  display: inline-block;
-  padding-left: 20px;
-  margin-bottom: 0;
-  font-weight: normal;
-  vertical-align: middle;
-  cursor: pointer;
-}
-.radio-inline + .radio-inline,
-.checkbox-inline + .checkbox-inline {
-  margin-top: 0;
-  margin-left: 10px;
-}
-input[type="radio"][disabled],
-input[type="checkbox"][disabled],
-input[type="radio"].disabled,
-input[type="checkbox"].disabled,
-fieldset[disabled] input[type="radio"],
-fieldset[disabled] input[type="checkbox"] {
-  cursor: not-allowed;
-}
-.radio-inline.disabled,
-.checkbox-inline.disabled,
-fieldset[disabled] .radio-inline,
-fieldset[disabled] .checkbox-inline {
-  cursor: not-allowed;
-}
-.radio.disabled label,
-.checkbox.disabled label,
-fieldset[disabled] .radio label,
-fieldset[disabled] .checkbox label {
-  cursor: not-allowed;
-}
-.form-control-static {
-  padding-top: 7px;
-  padding-bottom: 7px;
-  margin-bottom: 0;
-}
-.form-control-static.input-lg,
-.form-control-static.input-sm {
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-sm,
-.form-group-sm .form-control {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-sm,
-select.form-group-sm .form-control {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-sm,
-textarea.form-group-sm .form-control,
-select[multiple].input-sm,
-select[multiple].form-group-sm .form-control {
-  height: auto;
-}
-.input-lg,
-.form-group-lg .form-control {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-select.input-lg,
-select.form-group-lg .form-control {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-lg,
-textarea.form-group-lg .form-control,
-select[multiple].input-lg,
-select[multiple].form-group-lg .form-control {
-  height: auto;
-}
-.has-feedback {
-  position: relative;
-}
-.has-feedback .form-control {
-  padding-right: 42.5px;
-}
-.form-control-feedback {
-  position: absolute;
-  top: 0;
-  right: 0;
-  z-index: 2;
-  display: block;
-  width: 34px;
-  height: 34px;
-  line-height: 34px;
-  text-align: center;
-  pointer-events: none;
-}
-.input-lg + .form-control-feedback {
-  width: 46px;
-  height: 46px;
-  line-height: 46px;
-}
-.input-sm + .form-control-feedback {
-  width: 30px;
-  height: 30px;
-  line-height: 30px;
-}
-.has-success .help-block,
-.has-success .control-label,
-.has-success .radio,
-.has-success .checkbox,
-.has-success .radio-inline,
-.has-success .checkbox-inline,
-.has-success.radio label,
-.has-success.checkbox label,
-.has-success.radio-inline label,
-.has-success.checkbox-inline label {
-  color: #3c763d;
-}
-.has-success .form-control {
-  border-color: #3c763d;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-success .form-control:focus {
-  border-color: #2b542c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
-}
-.has-success .input-group-addon {
-  color: #3c763d;
-  background-color: #dff0d8;
-  border-color: #3c763d;
-}
-.has-success .form-control-feedback {
-  color: #3c763d;
-}
-.has-warning .help-block,
-.has-warning .control-label,
-.has-warning .radio,
-.has-warning .checkbox,
-.has-warning .radio-inline,
-.has-warning .checkbox-inline,
-.has-warning.radio label,
-.has-warning.checkbox label,
-.has-warning.radio-inline label,
-.has-warning.checkbox-inline label {
-  color: #8a6d3b;
-}
-.has-warning .form-control {
-  border-color: #8a6d3b;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-warning .form-control:focus {
-  border-color: #66512c;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
-}
-.has-warning .input-group-addon {
-  color: #8a6d3b;
-  background-color: #fcf8e3;
-  border-color: #8a6d3b;
-}
-.has-warning .form-control-feedback {
-  color: #8a6d3b;
-}
-.has-error .help-block,
-.has-error .control-label,
-.has-error .radio,
-.has-error .checkbox,
-.has-error .radio-inline,
-.has-error .checkbox-inline,
-.has-error.radio label,
-.has-error.checkbox label,
-.has-error.radio-inline label,
-.has-error.checkbox-inline label {
-  color: #a94442;
-}
-.has-error .form-control {
-  border-color: #a94442;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
-}
-.has-error .form-control:focus {
-  border-color: #843534;
-  -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-          box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
-}
-.has-error .input-group-addon {
-  color: #a94442;
-  background-color: #f2dede;
-  border-color: #a94442;
-}
-.has-error .form-control-feedback {
-  color: #a94442;
-}
-.has-feedback label ~ .form-control-feedback {
-  top: 25px;
-}
-.has-feedback label.sr-only ~ .form-control-feedback {
-  top: 0;
-}
-.help-block {
-  display: block;
-  margin-top: 5px;
-  margin-bottom: 10px;
-  color: #737373;
-}
-@media (min-width: 768px) {
-  .form-inline .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .form-inline .form-control-static {
-    display: inline-block;
-  }
-  .form-inline .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .form-inline .input-group .input-group-addon,
-  .form-inline .input-group .input-group-btn,
-  .form-inline .input-group .form-control {
-    width: auto;
-  }
-  .form-inline .input-group > .form-control {
-    width: 100%;
-  }
-  .form-inline .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio,
-  .form-inline .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .form-inline .radio label,
-  .form-inline .checkbox label {
-    padding-left: 0;
-  }
-  .form-inline .radio input[type="radio"],
-  .form-inline .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .form-inline .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox,
-.form-horizontal .radio-inline,
-.form-horizontal .checkbox-inline {
-  padding-top: 7px;
-  margin-top: 0;
-  margin-bottom: 0;
-}
-.form-horizontal .radio,
-.form-horizontal .checkbox {
-  min-height: 27px;
-}
-.form-horizontal .form-group {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .control-label {
-    padding-top: 7px;
-    margin-bottom: 0;
-    text-align: right;
-  }
-}
-.form-horizontal .has-feedback .form-control-feedback {
-  right: 15px;
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-lg .control-label {
-    padding-top: 14.3px;
-  }
-}
-@media (min-width: 768px) {
-  .form-horizontal .form-group-sm .control-label {
-    padding-top: 6px;
-  }
-}
-.btn {
-  display: inline-block;
-  padding: 6px 12px;
-  margin-bottom: 0;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1.42857143;
-  text-align: center;
-  white-space: nowrap;
-  vertical-align: middle;
-  -ms-touch-action: manipulation;
-      touch-action: manipulation;
-  cursor: pointer;
-  -webkit-user-select: none;
-     -moz-user-select: none;
-      -ms-user-select: none;
-          user-select: none;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.btn:focus,
-.btn:active:focus,
-.btn.active:focus,
-.btn.focus,
-.btn:active.focus,
-.btn.active.focus {
-  outline: thin dotted;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-.btn:hover,
-.btn:focus,
-.btn.focus {
-  color: #333;
-  text-decoration: none;
-}
-.btn:active,
-.btn.active {
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn.disabled,
-.btn[disabled],
-fieldset[disabled] .btn {
-  pointer-events: none;
-  cursor: not-allowed;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-          box-shadow: none;
-  opacity: .65;
-}
-.btn-default {
-  color: #333;
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default:hover,
-.btn-default:focus,
-.btn-default.focus,
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  color: #333;
-  background-color: #e6e6e6;
-  border-color: #adadad;
-}
-.btn-default:active,
-.btn-default.active,
-.open > .dropdown-toggle.btn-default {
-  background-image: none;
-}
-.btn-default.disabled,
-.btn-default[disabled],
-fieldset[disabled] .btn-default,
-.btn-default.disabled:hover,
-.btn-default[disabled]:hover,
-fieldset[disabled] .btn-default:hover,
-.btn-default.disabled:focus,
-.btn-default[disabled]:focus,
-fieldset[disabled] .btn-default:focus,
-.btn-default.disabled.focus,
-.btn-default[disabled].focus,
-fieldset[disabled] .btn-default.focus,
-.btn-default.disabled:active,
-.btn-default[disabled]:active,
-fieldset[disabled] .btn-default:active,
-.btn-default.disabled.active,
-.btn-default[disabled].active,
-fieldset[disabled] .btn-default.active {
-  background-color: #fff;
-  border-color: #ccc;
-}
-.btn-default .badge {
-  color: #fff;
-  background-color: #333;
-}
-.btn-primary {
-  color: #fff;
-  background-color: #337ab7;
-  border-color: #2e6da4;
-}
-.btn-primary:hover,
-.btn-primary:focus,
-.btn-primary.focus,
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  color: #fff;
-  background-color: #286090;
-  border-color: #204d74;
-}
-.btn-primary:active,
-.btn-primary.active,
-.open > .dropdown-toggle.btn-primary {
-  background-image: none;
-}
-.btn-primary.disabled,
-.btn-primary[disabled],
-fieldset[disabled] .btn-primary,
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover,
-fieldset[disabled] .btn-primary:hover,
-.btn-primary.disabled:focus,
-.btn-primary[disabled]:focus,
-fieldset[disabled] .btn-primary:focus,
-.btn-primary.disabled.focus,
-.btn-primary[disabled].focus,
-fieldset[disabled] .btn-primary.focus,
-.btn-primary.disabled:active,
-.btn-primary[disabled]:active,
-fieldset[disabled] .btn-primary:active,
-.btn-primary.disabled.active,
-.btn-primary[disabled].active,
-fieldset[disabled] .btn-primary.active {
-  background-color: #337ab7;
-  border-color: #2e6da4;
-}
-.btn-primary .badge {
-  color: #337ab7;
-  background-color: #fff;
-}
-.btn-success {
-  color: #fff;
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success:hover,
-.btn-success:focus,
-.btn-success.focus,
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  color: #fff;
-  background-color: #449d44;
-  border-color: #398439;
-}
-.btn-success:active,
-.btn-success.active,
-.open > .dropdown-toggle.btn-success {
-  background-image: none;
-}
-.btn-success.disabled,
-.btn-success[disabled],
-fieldset[disabled] .btn-success,
-.btn-success.disabled:hover,
-.btn-success[disabled]:hover,
-fieldset[disabled] .btn-success:hover,
-.btn-success.disabled:focus,
-.btn-success[disabled]:focus,
-fieldset[disabled] .btn-success:focus,
-.btn-success.disabled.focus,
-.btn-success[disabled].focus,
-fieldset[disabled] .btn-success.focus,
-.btn-success.disabled:active,
-.btn-success[disabled]:active,
-fieldset[disabled] .btn-success:active,
-.btn-success.disabled.active,
-.btn-success[disabled].active,
-fieldset[disabled] .btn-success.active {
-  background-color: #5cb85c;
-  border-color: #4cae4c;
-}
-.btn-success .badge {
-  color: #5cb85c;
-  background-color: #fff;
-}
-.btn-info {
-  color: #fff;
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info:hover,
-.btn-info:focus,
-.btn-info.focus,
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  color: #fff;
-  background-color: #31b0d5;
-  border-color: #269abc;
-}
-.btn-info:active,
-.btn-info.active,
-.open > .dropdown-toggle.btn-info {
-  background-image: none;
-}
-.btn-info.disabled,
-.btn-info[disabled],
-fieldset[disabled] .btn-info,
-.btn-info.disabled:hover,
-.btn-info[disabled]:hover,
-fieldset[disabled] .btn-info:hover,
-.btn-info.disabled:focus,
-.btn-info[disabled]:focus,
-fieldset[disabled] .btn-info:focus,
-.btn-info.disabled.focus,
-.btn-info[disabled].focus,
-fieldset[disabled] .btn-info.focus,
-.btn-info.disabled:active,
-.btn-info[disabled]:active,
-fieldset[disabled] .btn-info:active,
-.btn-info.disabled.active,
-.btn-info[disabled].active,
-fieldset[disabled] .btn-info.active {
-  background-color: #5bc0de;
-  border-color: #46b8da;
-}
-.btn-info .badge {
-  color: #5bc0de;
-  background-color: #fff;
-}
-.btn-warning {
-  color: #fff;
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning:hover,
-.btn-warning:focus,
-.btn-warning.focus,
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  color: #fff;
-  background-color: #ec971f;
-  border-color: #d58512;
-}
-.btn-warning:active,
-.btn-warning.active,
-.open > .dropdown-toggle.btn-warning {
-  background-image: none;
-}
-.btn-warning.disabled,
-.btn-warning[disabled],
-fieldset[disabled] .btn-warning,
-.btn-warning.disabled:hover,
-.btn-warning[disabled]:hover,
-fieldset[disabled] .btn-warning:hover,
-.btn-warning.disabled:focus,
-.btn-warning[disabled]:focus,
-fieldset[disabled] .btn-warning:focus,
-.btn-warning.disabled.focus,
-.btn-warning[disabled].focus,
-fieldset[disabled] .btn-warning.focus,
-.btn-warning.disabled:active,
-.btn-warning[disabled]:active,
-fieldset[disabled] .btn-warning:active,
-.btn-warning.disabled.active,
-.btn-warning[disabled].active,
-fieldset[disabled] .btn-warning.active {
-  background-color: #f0ad4e;
-  border-color: #eea236;
-}
-.btn-warning .badge {
-  color: #f0ad4e;
-  background-color: #fff;
-}
-.btn-danger {
-  color: #fff;
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger:hover,
-.btn-danger:focus,
-.btn-danger.focus,
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  color: #fff;
-  background-color: #c9302c;
-  border-color: #ac2925;
-}
-.btn-danger:active,
-.btn-danger.active,
-.open > .dropdown-toggle.btn-danger {
-  background-image: none;
-}
-.btn-danger.disabled,
-.btn-danger[disabled],
-fieldset[disabled] .btn-danger,
-.btn-danger.disabled:hover,
-.btn-danger[disabled]:hover,
-fieldset[disabled] .btn-danger:hover,
-.btn-danger.disabled:focus,
-.btn-danger[disabled]:focus,
-fieldset[disabled] .btn-danger:focus,
-.btn-danger.disabled.focus,
-.btn-danger[disabled].focus,
-fieldset[disabled] .btn-danger.focus,
-.btn-danger.disabled:active,
-.btn-danger[disabled]:active,
-fieldset[disabled] .btn-danger:active,
-.btn-danger.disabled.active,
-.btn-danger[disabled].active,
-fieldset[disabled] .btn-danger.active {
-  background-color: #d9534f;
-  border-color: #d43f3a;
-}
-.btn-danger .badge {
-  color: #d9534f;
-  background-color: #fff;
-}
-.btn-link {
-  font-weight: normal;
-  color: #337ab7;
-  border-radius: 0;
-}
-.btn-link,
-.btn-link:active,
-.btn-link.active,
-.btn-link[disabled],
-fieldset[disabled] .btn-link {
-  background-color: transparent;
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.btn-link,
-.btn-link:hover,
-.btn-link:focus,
-.btn-link:active {
-  border-color: transparent;
-}
-.btn-link:hover,
-.btn-link:focus {
-  color: #23527c;
-  text-decoration: underline;
-  background-color: transparent;
-}
-.btn-link[disabled]:hover,
-fieldset[disabled] .btn-link:hover,
-.btn-link[disabled]:focus,
-fieldset[disabled] .btn-link:focus {
-  color: #777;
-  text-decoration: none;
-}
-.btn-lg,
-.btn-group-lg > .btn {
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-.btn-sm,
-.btn-group-sm > .btn {
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-xs,
-.btn-group-xs > .btn {
-  padding: 1px 5px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-.btn-block {
-  display: block;
-  width: 100%;
-}
-.btn-block + .btn-block {
-  margin-top: 5px;
-}
-input[type="submit"].btn-block,
-input[type="reset"].btn-block,
-input[type="button"].btn-block {
-  width: 100%;
-}
-.fade {
-  opacity: 0;
-  -webkit-transition: opacity .15s linear;
-       -o-transition: opacity .15s linear;
-          transition: opacity .15s linear;
-}
-.fade.in {
-  opacity: 1;
-}
-.collapse {
-  display: none;
-  visibility: hidden;
-}
-.collapse.in {
-  display: block;
-  visibility: visible;
-}
-tr.collapse.in {
-  display: table-row;
-}
-tbody.collapse.in {
-  display: table-row-group;
-}
-.collapsing {
-  position: relative;
-  height: 0;
-  overflow: hidden;
-  -webkit-transition-timing-function: ease;
-       -o-transition-timing-function: ease;
-          transition-timing-function: ease;
-  -webkit-transition-duration: .35s;
-       -o-transition-duration: .35s;
-          transition-duration: .35s;
-  -webkit-transition-property: height, visibility;
-       -o-transition-property: height, visibility;
-          transition-property: height, visibility;
-}
-.caret {
-  display: inline-block;
-  width: 0;
-  height: 0;
-  margin-left: 2px;
-  vertical-align: middle;
-  border-top: 4px solid;
-  border-right: 4px solid transparent;
-  border-left: 4px solid transparent;
-}
-.dropdown {
-  position: relative;
-}
-.dropdown-toggle:focus {
-  outline: 0;
-}
-.dropdown-menu {
-  position: absolute;
-  top: 100%;
-  left: 0;
-  z-index: 1000;
-  display: none;
-  float: left;
-  min-width: 160px;
-  padding: 5px 0;
-  margin: 2px 0 0;
-  font-size: 14px;
-  text-align: left;
-  list-style: none;
-  background-color: #fff;
-  -webkit-background-clip: padding-box;
-          background-clip: padding-box;
-  border: 1px solid #ccc;
-  border: 1px solid rgba(0, 0, 0, .15);
-  border-radius: 4px;
-  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-          box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
-}
-.dropdown-menu.pull-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu .divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.dropdown-menu > li > a {
-  display: block;
-  padding: 3px 20px;
-  clear: both;
-  font-weight: normal;
-  line-height: 1.42857143;
-  color: #333;
-  white-space: nowrap;
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  color: #262626;
-  text-decoration: none;
-  background-color: #f5f5f5;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  color: #fff;
-  text-decoration: none;
-  background-color: #337ab7;
-  outline: 0;
-}
-.dropdown-menu > .disabled > a,
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  color: #777;
-}
-.dropdown-menu > .disabled > a:hover,
-.dropdown-menu > .disabled > a:focus {
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-  background-image: none;
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-}
-.open > .dropdown-menu {
-  display: block;
-}
-.open > a {
-  outline: 0;
-}
-.dropdown-menu-right {
-  right: 0;
-  left: auto;
-}
-.dropdown-menu-left {
-  right: auto;
-  left: 0;
-}
-.dropdown-header {
-  display: block;
-  padding: 3px 20px;
-  font-size: 12px;
-  line-height: 1.42857143;
-  color: #777;
-  white-space: nowrap;
-}
-.dropdown-backdrop {
-  position: fixed;
-  top: 0;
-  right: 0;
-  bottom: 0;
-  left: 0;
-  z-index: 990;
-}
-.pull-right > .dropdown-menu {
-  right: 0;
-  left: auto;
-}
-.dropup .caret,
-.navbar-fixed-bottom .dropdown .caret {
-  content: "";
-  border-top: 0;
-  border-bottom: 4px solid;
-}
-.dropup .dropdown-menu,
-.navbar-fixed-bottom .dropdown .dropdown-menu {
-  top: auto;
-  bottom: 100%;
-  margin-bottom: 1px;
-}
-@media (min-width: 768px) {
-  .navbar-right .dropdown-menu {
-    right: 0;
-    left: auto;
-  }
-  .navbar-right .dropdown-menu-left {
-    right: auto;
-    left: 0;
-  }
-}
-.btn-group,
-.btn-group-vertical {
-  position: relative;
-  display: inline-block;
-  vertical-align: middle;
-}
-.btn-group > .btn,
-.btn-group-vertical > .btn {
-  position: relative;
-  float: left;
-}
-.btn-group > .btn:hover,
-.btn-group-vertical > .btn:hover,
-.btn-group > .btn:focus,
-.btn-group-vertical > .btn:focus,
-.btn-group > .btn:active,
-.btn-group-vertical > .btn:active,
-.btn-group > .btn.active,
-.btn-group-vertical > .btn.active {
-  z-index: 2;
-}
-.btn-group .btn + .btn,
-.btn-group .btn + .btn-group,
-.btn-group .btn-group + .btn,
-.btn-group .btn-group + .btn-group {
-  margin-left: -1px;
-}
-.btn-toolbar {
-  margin-left: -5px;
-}
-.btn-toolbar .btn-group,
-.btn-toolbar .input-group {
-  float: left;
-}
-.btn-toolbar > .btn,
-.btn-toolbar > .btn-group,
-.btn-toolbar > .input-group {
-  margin-left: 5px;
-}
-.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
-  border-radius: 0;
-}
-.btn-group > .btn:first-child {
-  margin-left: 0;
-}
-.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn:last-child:not(:first-child),
-.btn-group > .dropdown-toggle:not(:first-child) {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group > .btn-group {
-  float: left;
-}
-.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group > .btn-group:first-child > .btn:last-child,
-.btn-group > .btn-group:first-child > .dropdown-toggle {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.btn-group > .btn-group:last-child > .btn:first-child {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group .dropdown-toggle:active,
-.btn-group.open .dropdown-toggle {
-  outline: 0;
-}
-.btn-group > .btn + .dropdown-toggle {
-  padding-right: 8px;
-  padding-left: 8px;
-}
-.btn-group > .btn-lg + .dropdown-toggle {
-  padding-right: 12px;
-  padding-left: 12px;
-}
-.btn-group.open .dropdown-toggle {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn-group.open .dropdown-toggle.btn-link {
-  -webkit-box-shadow: none;
-          box-shadow: none;
-}
-.btn .caret {
-  margin-left: 0;
-}
-.btn-lg .caret {
-  border-width: 5px 5px 0;
-  border-bottom-width: 0;
-}
-.dropup .btn-lg .caret {
-  border-width: 0 5px 5px;
-}
-.btn-group-vertical > .btn,
-.btn-group-vertical > .btn-group,
-.btn-group-vertical > .btn-group > .btn {
-  display: block;
-  float: none;
-  width: 100%;
-  max-width: 100%;
-}
-.btn-group-vertical > .btn-group > .btn {
-  float: none;
-}
-.btn-group-vertical > .btn + .btn,
-.btn-group-vertical > .btn + .btn-group,
-.btn-group-vertical > .btn-group + .btn,
-.btn-group-vertical > .btn-group + .btn-group {
-  margin-top: -1px;
-  margin-left: 0;
-}
-.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn:first-child:not(:last-child) {
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn:last-child:not(:first-child) {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-  border-bottom-left-radius: 4px;
-}
-.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
-  border-radius: 0;
-}
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
-.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.btn-group-justified {
-  display: table;
-  width: 100%;
-  table-layout: fixed;
-  border-collapse: separate;
-}
-.btn-group-justified > .btn,
-.btn-group-justified > .btn-group {
-  display: table-cell;
-  float: none;
-  width: 1%;
-}
-.btn-group-justified > .btn-group .btn {
-  width: 100%;
-}
-.btn-group-justified > .btn-group .dropdown-menu {
-  left: auto;
-}
-[data-toggle="buttons"] > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
-[data-toggle="buttons"] > .btn input[type="checkbox"],
-[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
-  position: absolute;
-  clip: rect(0, 0, 0, 0);
-  pointer-events: none;
-}
-.input-group {
-  position: relative;
-  display: table;
-  border-collapse: separate;
-}
-.input-group[class*="col-"] {
-  float: none;
-  padding-right: 0;
-  padding-left: 0;
-}
-.input-group .form-control {
-  position: relative;
-  z-index: 2;
-  float: left;
-  width: 100%;
-  margin-bottom: 0;
-}
-.input-group-lg > .form-control,
-.input-group-lg > .input-group-addon,
-.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  padding: 10px 16px;
-  font-size: 18px;
-  line-height: 1.33;
-  border-radius: 6px;
-}
-select.input-group-lg > .form-control,
-select.input-group-lg > .input-group-addon,
-select.input-group-lg > .input-group-btn > .btn {
-  height: 46px;
-  line-height: 46px;
-}
-textarea.input-group-lg > .form-control,
-textarea.input-group-lg > .input-group-addon,
-textarea.input-group-lg > .input-group-btn > .btn,
-select[multiple].input-group-lg > .form-control,
-select[multiple].input-group-lg > .input-group-addon,
-select[multiple].input-group-lg > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  padding: 5px 10px;
-  font-size: 12px;
-  line-height: 1.5;
-  border-radius: 3px;
-}
-select.input-group-sm > .form-control,
-select.input-group-sm > .input-group-addon,
-select.input-group-sm > .input-group-btn > .btn {
-  height: 30px;
-  line-height: 30px;
-}
-textarea.input-group-sm > .form-control,
-textarea.input-group-sm > .input-group-addon,
-textarea.input-group-sm > .input-group-btn > .btn,
-select[multiple].input-group-sm > .form-control,
-select[multiple].input-group-sm > .input-group-addon,
-select[multiple].input-group-sm > .input-group-btn > .btn {
-  height: auto;
-}
-.input-group-addon,
-.input-group-btn,
-.input-group .form-control {
-  display: table-cell;
-}
-.input-group-addon:not(:first-child):not(:last-child),
-.input-group-btn:not(:first-child):not(:last-child),
-.input-group .form-control:not(:first-child):not(:last-child) {
-  border-radius: 0;
-}
-.input-group-addon,
-.input-group-btn {
-  width: 1%;
-  white-space: nowrap;
-  vertical-align: middle;
-}
-.input-group-addon {
-  padding: 6px 12px;
-  font-size: 14px;
-  font-weight: normal;
-  line-height: 1;
-  color: #555;
-  text-align: center;
-  background-color: #eee;
-  border: 1px solid #ccc;
-  border-radius: 4px;
-}
-.input-group-addon.input-sm {
-  padding: 5px 10px;
-  font-size: 12px;
-  border-radius: 3px;
-}
-.input-group-addon.input-lg {
-  padding: 10px 16px;
-  font-size: 18px;
-  border-radius: 6px;
-}
-.input-group-addon input[type="radio"],
-.input-group-addon input[type="checkbox"] {
-  margin-top: 0;
-}
-.input-group .form-control:first-child,
-.input-group-addon:first-child,
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group > .btn,
-.input-group-btn:first-child > .dropdown-toggle,
-.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
-.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
-  border-top-right-radius: 0;
-  border-bottom-right-radius: 0;
-}
-.input-group-addon:first-child {
-  border-right: 0;
-}
-.input-group .form-control:last-child,
-.input-group-addon:last-child,
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group > .btn,
-.input-group-btn:last-child > .dropdown-toggle,
-.input-group-btn:first-child > .btn:not(:first-child),
-.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
-  border-top-left-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.input-group-addon:last-child {
-  border-left: 0;
-}
-.input-group-btn {
-  position: relative;
-  font-size: 0;
-  white-space: nowrap;
-}
-.input-group-btn > .btn {
-  position: relative;
-}
-.input-group-btn > .btn + .btn {
-  margin-left: -1px;
-}
-.input-group-btn > .btn:hover,
-.input-group-btn > .btn:focus,
-.input-group-btn > .btn:active {
-  z-index: 2;
-}
-.input-group-btn:first-child > .btn,
-.input-group-btn:first-child > .btn-group {
-  margin-right: -1px;
-}
-.input-group-btn:last-child > .btn,
-.input-group-btn:last-child > .btn-group {
-  margin-left: -1px;
-}
-.nav {
-  padding-left: 0;
-  margin-bottom: 0;
-  list-style: none;
-}
-.nav > li {
-  position: relative;
-  display: block;
-}
-.nav > li > a {
-  position: relative;
-  display: block;
-  padding: 10px 15px;
-}
-.nav > li > a:hover,
-.nav > li > a:focus {
-  text-decoration: none;
-  background-color: #eee;
-}
-.nav > li.disabled > a {
-  color: #777;
-}
-.nav > li.disabled > a:hover,
-.nav > li.disabled > a:focus {
-  color: #777;
-  text-decoration: none;
-  cursor: not-allowed;
-  background-color: transparent;
-}
-.nav .open > a,
-.nav .open > a:hover,
-.nav .open > a:focus {
-  background-color: #eee;
-  border-color: #337ab7;
-}
-.nav .nav-divider {
-  height: 1px;
-  margin: 9px 0;
-  overflow: hidden;
-  background-color: #e5e5e5;
-}
-.nav > li > a > img {
-  max-width: none;
-}
-.nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-.nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-.nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.42857143;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-}
-.nav-tabs > li > a:hover {
-  border-color: #eee #eee #ddd;
-}
-.nav-tabs > li.active > a,
-.nav-tabs > li.active > a:hover,
-.nav-tabs > li.active > a:focus {
-  color: #555;
-  cursor: default;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-.nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-.nav-tabs.nav-justified > li {
-  float: none;
-}
-.nav-tabs.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs.nav-justified > .active > a,
-.nav-tabs.nav-justified > .active > a:hover,
-.nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs.nav-justified > .active > a,
-  .nav-tabs.nav-justified > .active > a:hover,
-  .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.nav-pills > li {
-  float: left;
-}
-.nav-pills > li > a {
-  border-radius: 4px;
-}
-.nav-pills > li + li {
-  margin-left: 2px;
-}
-.nav-pills > li.active > a,
-.nav-pills > li.active > a:hover,
-.nav-pills > li.active > a:focus {
-  color: #fff;
-  background-color: #337ab7;
-}
-.nav-stacked > li {
-  float: none;
-}
-.nav-stacked > li + li {
-  margin-top: 2px;
-  margin-left: 0;
-}
-.nav-justified {
-  width: 100%;
-}
-.nav-justified > li {
-  float: none;
-}
-.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  .nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  .nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-.nav-tabs-justified {
-  border-bottom: 0;
-}
-.nav-tabs-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-.nav-tabs-justified > .active > a,
-.nav-tabs-justified > .active > a:hover,
-.nav-tabs-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  .nav-tabs-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  .nav-tabs-justified > .active > a,
-  .nav-tabs-justified > .active > a:hover,
-  .nav-tabs-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
-.tab-content > .tab-pane {
-  display: none;
-  visibility: hidden;
-}
-.tab-content > .active {
-  display: block;
-  visibility: visible;
-}
-.nav-tabs .dropdown-menu {
-  margin-top: -1px;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar {
-  position: relative;
-  min-height: 50px;
-  margin-bottom: 20px;
-  border: 1px solid transparent;
-}
-@media (min-width: 768px) {
-  .navbar {
-    border-radius: 4px;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-header {
-    float: left;
-  }
-}
-.navbar-collapse {
-  padding-right: 15px;
-  padding-left: 15px;
-  overflow-x: visible;
-  -webkit-overflow-scrolling: touch;
-  border-top: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
-}
-.navbar-collapse.in {
-  overflow-y: auto;
-}
-@media (min-width: 768px) {
-  .navbar-collapse {
-    width: auto;
-    border-top: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-collapse.collapse {
-    display: block !important;
-    height: auto !important;
-    padding-bottom: 0;
-    overflow: visible !important;
-    visibility: visible !important;
-  }
-  .navbar-collapse.in {
-    overflow-y: visible;
-  }
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-static-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    padding-right: 0;
-    padding-left: 0;
-  }
-}
-.navbar-fixed-top .navbar-collapse,
-.navbar-fixed-bottom .navbar-collapse {
-  max-height: 340px;
-}
-@media (max-device-width: 480px) and (orientation: landscape) {
-  .navbar-fixed-top .navbar-collapse,
-  .navbar-fixed-bottom .navbar-collapse {
-    max-height: 200px;
-  }
-}
-.container > .navbar-header,
-.container-fluid > .navbar-header,
-.container > .navbar-collapse,
-.container-fluid > .navbar-collapse {
-  margin-right: -15px;
-  margin-left: -15px;
-}
-@media (min-width: 768px) {
-  .container > .navbar-header,
-  .container-fluid > .navbar-header,
-  .container > .navbar-collapse,
-  .container-fluid > .navbar-collapse {
-    margin-right: 0;
-    margin-left: 0;
-  }
-}
-.navbar-static-top {
-  z-index: 1000;
-  border-width: 0 0 1px;
-}
-@media (min-width: 768px) {
-  .navbar-static-top {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  position: fixed;
-  right: 0;
-  left: 0;
-  z-index: 1030;
-}
-@media (min-width: 768px) {
-  .navbar-fixed-top,
-  .navbar-fixed-bottom {
-    border-radius: 0;
-  }
-}
-.navbar-fixed-top {
-  top: 0;
-  border-width: 0 0 1px;
-}
-.navbar-fixed-bottom {
-  bottom: 0;
-  margin-bottom: 0;
-  border-width: 1px 0 0;
-}
-.navbar-brand {
-  float: left;
-  height: 50px;
-  padding: 15px 15px;
-  font-size: 18px;
-  line-height: 20px;
-}
-.navbar-brand:hover,
-.navbar-brand:focus {
-  text-decoration: none;
-}
-.navbar-brand > img {
-  display: block;
-}
-@media (min-width: 768px) {
-  .navbar > .container .navbar-brand,
-  .navbar > .container-fluid .navbar-brand {
-    margin-left: -15px;
-  }
-}
-.navbar-toggle {
-  position: relative;
-  float: right;
-  padding: 9px 10px;
-  margin-top: 8px;
-  margin-right: 15px;
-  margin-bottom: 8px;
-  background-color: transparent;
-  background-image: none;
-  border: 1px solid transparent;
-  border-radius: 4px;
-}
-.navbar-toggle:focus {
-  outline: 0;
-}
-.navbar-toggle .icon-bar {
-  display: block;
-  width: 22px;
-  height: 2px;
-  border-radius: 1px;
-}
-.navbar-toggle .icon-bar + .icon-bar {
-  margin-top: 4px;
-}
-@media (min-width: 768px) {
-  .navbar-toggle {
-    display: none;
-  }
-}
-.navbar-nav {
-  margin: 7.5px -15px;
-}
-.navbar-nav > li > a {
-  padding-top: 10px;
-  padding-bottom: 10px;
-  line-height: 20px;
-}
-@media (max-width: 767px) {
-  .navbar-nav .open .dropdown-menu {
-    position: static;
-    float: none;
-    width: auto;
-    margin-top: 0;
-    background-color: transparent;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-  .navbar-nav .open .dropdown-menu > li > a,
-  .navbar-nav .open .dropdown-menu .dropdown-header {
-    padding: 5px 15px 5px 25px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a {
-    line-height: 20px;
-  }
-  .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-nav .open .dropdown-menu > li > a:focus {
-    background-image: none;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-nav {
-    float: left;
-    margin: 0;
-  }
-  .navbar-nav > li {
-    float: left;
-  }
-  .navbar-nav > li > a {
-    padding-top: 15px;
-    padding-bottom: 15px;
-  }
-}
-.navbar-form {
-  padding: 10px 15px;
-  margin-top: 8px;
-  margin-right: -15px;
-  margin-bottom: 8px;
-  margin-left: -15px;
-  border-top: 1px solid transparent;
-  border-bottom: 1px solid transparent;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
-}
-@media (min-width: 768px) {
-  .navbar-form .form-group {
-    display: inline-block;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control {
-    display: inline-block;
-    width: auto;
-    vertical-align: middle;
-  }
-  .navbar-form .form-control-static {
-    display: inline-block;
-  }
-  .navbar-form .input-group {
-    display: inline-table;
-    vertical-align: middle;
-  }
-  .navbar-form .input-group .input-group-addon,
-  .navbar-form .input-group .input-group-btn,
-  .navbar-form .input-group .form-control {
-    width: auto;
-  }
-  .navbar-form .input-group > .form-control {
-    width: 100%;
-  }
-  .navbar-form .control-label {
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio,
-  .navbar-form .checkbox {
-    display: inline-block;
-    margin-top: 0;
-    margin-bottom: 0;
-    vertical-align: middle;
-  }
-  .navbar-form .radio label,
-  .navbar-form .checkbox label {
-    padding-left: 0;
-  }
-  .navbar-form .radio input[type="radio"],
-  .navbar-form .checkbox input[type="checkbox"] {
-    position: relative;
-    margin-left: 0;
-  }
-  .navbar-form .has-feedback .form-control-feedback {
-    top: 0;
-  }
-}
-@media (max-width: 767px) {
-  .navbar-form .form-group {
-    margin-bottom: 5px;
-  }
-  .navbar-form .form-group:last-child {
-    margin-bottom: 0;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-form {
-    width: auto;
-    padding-top: 0;
-    padding-bottom: 0;
-    margin-right: 0;
-    margin-left: 0;
-    border: 0;
-    -webkit-box-shadow: none;
-            box-shadow: none;
-  }
-}
-.navbar-nav > li > .dropdown-menu {
-  margin-top: 0;
-  border-top-left-radius: 0;
-  border-top-right-radius: 0;
-}
-.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
-  border-top-left-radius: 4px;
-  border-top-right-radius: 4px;
-  border-bottom-right-radius: 0;
-  border-bottom-left-radius: 0;
-}
-.navbar-btn {
-  margin-top: 8px;
-  margin-bottom: 8px;
-}
-.navbar-btn.btn-sm {
-  margin-top: 10px;
-  margin-bottom: 10px;
-}
-.navbar-btn.btn-xs {
-  margin-top: 14px;
-  margin-bottom: 14px;
-}
-.navbar-text {
-  margin-top: 15px;
-  margin-bottom: 15px;
-}
-@media (min-width: 768px) {
-  .navbar-text {
-    float: left;
-    margin-right: 15px;
-    margin-left: 15px;
-  }
-}
-@media (min-width: 768px) {
-  .navbar-left {
-    float: left !important;
-  }
-  .navbar-right {
-    float: right !important;
-    margin-right: -15px;
-  }
-  .navbar-right ~ .navbar-right {
-    margin-right: 0;
-  }
-}
-.navbar-default {
-  background-color: #f8f8f8;
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-brand {
-  color: #777;
-}
-.navbar-default .navbar-brand:hover,
-.navbar-default .navbar-brand:focus {
-  color: #5e5e5e;
-  background-color: transparent;
-}
-.navbar-default .navbar-text {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a {
-  color: #777;
-}
-.navbar-default .navbar-nav > li > a:hover,
-.navbar-default .navbar-nav > li > a:focus {
-  color: #333;
-  background-color: transparent;
-}
-.navbar-default .navbar-nav > .active > a,
-.navbar-default .navbar-nav > .active > a:hover,
-.navbar-default .navbar-nav > .active > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .disabled > a,
-.navbar-default .navbar-nav > .disabled > a:hover,
-.navbar-default .navbar-nav > .disabled > a:focus {
-  color: #ccc;
-  background-color: transparent;
-}
-.navbar-default .navbar-toggle {
-  border-color: #ddd;
-}
-.navbar-default .navbar-toggle:hover,
-.navbar-default .navbar-toggle:focus {
-  background-color: #ddd;
-}
-.navbar-default .navbar-toggle .icon-bar {
-  background-color: #888;
-}
-.navbar-default .navbar-collapse,
-.navbar-default .navbar-form {
-  border-color: #e7e7e7;
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .open > a:hover,
-.navbar-default .navbar-nav > .open > a:focus {
-  color: #555;
-  background-color: #e7e7e7;
-}
-@media (max-width: 767px) {
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a {
-    color: #777;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
-    color: #333;
-    background-color: transparent;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #555;
-    background-color: #e7e7e7;
-  }
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
-  .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
-    color: #ccc;
-    background-color: transparent;
-  }
-}
-.navbar-default .navbar-link {
-  color: 

<TRUNCATED>

[21/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2014-11-25-storm093-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2014-11-25-storm093-released.md b/docs/_posts/2014-11-25-storm093-released.md
deleted file mode 100644
index df3da75..0000000
--- a/docs/_posts/2014-11-25-storm093-released.md
+++ /dev/null
@@ -1,164 +0,0 @@
----
-layout: post
-title: Storm 0.9.3 released
-author: P. Taylor Goetz
----
-
-We are pleased to announce that Apache Storm 0.9.3 has been released and is available from [the downloads page](/downloads.html). This release includes 100 new fixes and improvements from 62 individual contributors.
-
-Improved Kafka Integration
-----------------------------
-
-Apache Storm has supported [Apache Kafka](http://kafka.apache.org/) as a streaming data source since version 0.9.2-incubating. Version 0.9.3 brings a number of improvements to the Kafka integration including the ability to write data to one or more Kafka clusters and topics.
-
-The ability to both read from and write to Kafka further unlocks potential of the already powerful combination of Storm and Kafka. Storm users can now use Kafka as a source of and destination for streaming data. This allows for inter-topology communication, topology chaining, combining spout/bolt-based topologies with Trident-based data flows, and integration with any external system that supports data ingest from Kafka.
-
-More information about Storm's Kafka integration can be found in the [storm-kafka project documentation](https://github.com/apache/storm/blob/v0.9.3/external/storm-kafka/README.md).
-
-
-HDFS Integration
-----------------
-
-Many stream processing use cases involve storing data in HDFS for further analysis and offline (batch) processing. Apache Storm’s HDFS integration consists of several bolt and Trident state implementations that allow topology developers to easily write data to HDFS from any Storm topology. 
-
-More information about Storm's HDFS integration can be found in the [storm-hdfs project documentation](https://github.com/apache/storm/tree/v0.9.3/external/storm-hdfs).
-
-
-HBase Integration
------------------
-
-Apache Storm’s HBase integration includes a number of components that allow Storm topologies to both write to and query HBase in real-time. Many organizations use Apache HBase as part of their big data strategy for batch, interactive, and real-time workflows. Storm’s HBase integration allows users to leverage data assets in HBase as streaming queries, as well as using HBase as a destination for streaming computation results.
-
-More information about Storm's HBase integration can be found in the [storm-hbase project documentation](https://github.com/apache/storm/tree/v0.9.3/external/storm-hbase).
-
-Reduced Dependency Conflicts
-----------------------------
-In previous Storm releases, it was not uncommon for users' topology dependencies to conflict with the libraries used by Storm. In Storm 0.9.3 several dependency packages that were common sources of conflicts have been package-relocated (shaded) to avoid this situation. Developers are free to use the Storm-packaged versions, or supply their own version. 
-
-The following table lists the dependency package relocations:
-
-| Dependency  | Original Package | Storm Package |
-|:---|:---|:---|
-| Apache Thrift | `org.apache.thrift` | `org.apache.thrift7` |
-| Netty | `org.jboss.netty` | `org.apache.storm.netty` |
-| Google Guava | `com.google.common` | `org.apache.storm.guava` |
-|              | `com.google.thirdparty` | `org.apache.storm.guava.thirdparty` |
-| Apache HTTPClient | `org.apache.http` | `org.apache.storm.http` |
-| Apache ZooKeeper | `org.apache.zookeeper` | `org.apache.storm.zookeeper` |
-| Apache Curator | `org.apache.curator` | `org.apache.storm.curator` |
-
-Multi-Lang Improvements
------------------------
-Apache Storm 0.9.3 includes a new [Node.js](http://nodejs.org) multi-lang implementation that allows developers to write spouts and bolts in JavaScript.
-
-In addition to the Node.js implementation, the multi-lang protocol has been substantially improved in terms of robustness and error handling capabilities. As a result, **the multi-lang API has changed in a non-backward-compatible way**. Users with existing multi-lang topologies should consult the Python, Ruby, and JavaScript multi-lang examples to determine the impact prior to upgrading.
-
-
-Thanks
-------
-Special thanks are due to all those who have contributed to Storm -- whether through direct code contributions, documentation, bug reports, or helping other users on the mailing lists. Your efforts are much appreciated.
-
-
-Full Changelog
----------
-
- * STORM-558: change "swap!" to "reset!" to fix assignment-versions in supervisor
- * STORM-555: Storm json response should set charset to UTF-8
- * STORM-513: check heartbeat from multilang subprocess
- * STORM-549: "topology.enable.message.timeouts" does nothing
- * STORM-546: Local hostname configuration ignored by executor
- * STORM-492: Test timeout should be configurable
- * STORM-540: Change default time format in logs to ISO8601 in order to include timezone
- * STORM-511: Storm-Kafka spout keeps sending fetch requests with invalid offset
- * STORM-538: Guava com.google.thirdparty.publicsuffix is not shaded
- * STORM-497: don't modify the netty server taskToQueueId mapping while the someone could be reading it.
- * STORM-537: A worker reconnects infinitely to another dead worker (Sergey Tryuber)
- * STORM-519: add tuple as an input param to HBaseValueMapper 
- * STORM-488: Exit with 254 error code if storm CLI is run with unknown command
- * STORM-506: Do not count bolt acks & fails in total stats
- * STORM-490: fix build under Windows
- * STORM-439: Replace purl.js qith jquery URL plugin
- * STORM-499: Document and clean up shaded dependncy resolution with maven
- * STORM-210: Add storm-hbase module
- * STORM-507: Topology visualization should not block ui
- * STORM-504: Class used by `repl` command is deprecated.
- * STORM-330: Implement storm exponential backoff stategy for netty client and curator
- * STORM-461: exit-process! does not always exit the process, but throws an exception
- * STORM-341: fix assignment sorting
- * STORM-476: external/storm-kafka: avoid NPE on null message payloads
- * STORM-424: fix error message related to kafka offsets
- * STORM-454: correct documentation in STORM-UI-REST-API.md
- * STORM-474: Reformat UI HTML code
- * STORM-447: shade/relocate packages of dependencies that are common causes of dependency conflicts
- * STORM-279: cluster.xml doesn't take in STORM_LOG_DIR values.
- * STORM-380: Kafka spout: throw RuntimeException if a leader cannot be found for a partition
- * STORM-435: Improve storm-kafka documentation
- * STORM-405: Add kafka trident state so messages can be sent to kafka topic
- * STORM-211: Add module for HDFS integration
- * STORM-337: Expose managed spout ids publicly
- * STORM-320: Support STORM_CONF_DIR environment variable to support
- * STORM-360: Add node details for Error Topology and Component pages
- * STORM-54: Per-Topology Classpath and Environment for Workers
- * STORM-355: excluding outdated netty transitively included via curator
- * STORM-183: Replacing RunTime.halt() with RunTime.exit()
- * STORM-213: Decouple In-Process ZooKeeper from LocalCluster.
- * STORM-365: Add support for Python 3 to storm command.
- * STORM-332: Enable Kryo serialization in storm-kafka
- * STORM-370: Add check for empty table before sorting dom in UI
- * STORM-359: add logviewer paging and download
- * STORM-372: Typo in storm_env.ini
- * STORM-266: Adding shell process pid and name in the log message
- * STORM-367: Storm UI REST api documentation.
- * STORM-200: Proposal for Multilang's Metrics feature
- * STORM-351: multilang python process fall into endless loop
- * STORM-375: Smarter downloading of assignments by supervisors and workers
- * STORM-328: More restrictive Config checks, strict range check within Utils.getInt()
- * STORM-381: Replace broken jquery.tablesorter.min.js to latest
- * STORM-312: add storm monitor tools to monitor throughtput interactively
- * STORM-354: Testing: allow users to pass TEST-TIMEOUT-MS as param for complete-topology
- * STORM-254: one Spout/Bolt can register metric twice with same name in different timeBucket
- * STORM-403: heartbeats-to-nimbus in supervisor-test failed due to uninten...
- * STORM-402: FileNotFoundException when using storm with apache tika
- * STORM-364: The exception time display as default timezone.
- * STORM-420: Missing quotes in storm-starter python code
- * STORM-399: Kafka Spout defaulting to latest offset when current offset is older then 100k
- * STORM-421: Memoize local hostname lookup in executor
- * STORM-414: support logging level to multilang protocol spout and bolt
- * STORM-321: Added a tool to see the current status of STORM JIRA and github pulls.
- * STORM-415: validate-launched-once in supervisor-test can not handle multiple topologies
- * STORM-155: Storm rebalancing code causes multiple topologies assigned to a single port
- * STORM-419: Updated test so sort ordering is very explicit.
- * STORM-406: Fix for reconnect logic in netty client.
- * STORM-366: Add color span to most recent error and fix ui templates.
- * STORM-369: topology summary page displays wrong order.
- * STORM-239: Allow supervisor to operate in paths with spaces in them
- * STORM-87: fail fast on ShellBolt exception
- * STORM-417: Storm UI lost table sort style when tablesorter was updated
- * STORM-396: Replace NullPointerException with IllegalArgumentExeption
- * STORM-451: Latest storm does not build due to a pom.xml error in storm-hdfs pom.xml
- * STORM-453: migrated to curator 2.5.0
- * STORM-458: sample spout uses incorrect name when connecting bolt
- * STORM-455: Report error-level messages from ShellBolt children
- * STORM-443: multilang log's loglevel protocol can cause hang
- * STORM-449: Updated ShellBolt to not exit when shutting down.
- * STORM-464: Simulated time advanced after test cluster exits causes intermittent test failures
- * STORM-463: added static version of metrics helpers for Config
- * STORM-376: Add compression to serialization
- * STORM-437: Enforce utf-8 when multilang reads from stdin
- * STORM-361: Add JSON-P support to Storm UI API
- * STORM-373: Provide Additional String substitutions for *.worker.childopts
- * STORM-274: Add support for command remoteconfvalue in storm.cmd
- * STORM-132: sort supervisor by free slot in desending order
- * STORM-472: Improve error message for non-completeable testing spouts
- * STORM-401: handle InterruptedIOException properly.
- * STORM-461: exit-process! does not always exit the process, but throws an exception instead
- * STORM-475: Storm UI pages do not use UTF-8
- * STORM-336: Logback version should be upgraded
- * STORM-386: nodejs multilang protocol implementation and examples
- * STORM-500: Add Spinner when UI is loading stats from nimbus
- * STORM-501: Missing StormSubmitter API
- * STORM-493: Workers inherit storm.conf.file/storm.options properties of their supervisor
- * STORM-498: make ZK connection timeout configurable in Kafka spout
- * STORM-428: extracted ITuple interface
- * STORM-508: Update DEVELOPER.md now that Storm has graduated from Incubator
- * STORM-514: Update storm-starter README now that Storm has graduated from Incubator

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2015-03-25-storm094-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2015-03-25-storm094-released.md b/docs/_posts/2015-03-25-storm094-released.md
deleted file mode 100644
index 0119e38..0000000
--- a/docs/_posts/2015-03-25-storm094-released.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: post
-title: Storm 0.9.4 released
-author: P. Taylor Goetz
----
-
-The Apache Storm community is pleased to announce that version 0.9.4 has been released and is available from [the downloads page](/downloads.html).
-
-This is a maintenance release that includes a number of important bug fixes that improve Storm's stability and fault tolerance. We encourage users of previous versions to upgrade to this latest release.
-
-
-Thanks
-------
-Special thanks are due to all those who have contributed to Apache Storm -- whether through direct code contributions, documentation, bug reports, or helping other users on the mailing lists. Your efforts are much appreciated.
-
-
-Full Changelog
----------
-
- * STORM-559: ZkHosts in README should use 2181 as port.
- * STORM-682: supervisor should handle worker state corruption gracefully.
- * STORM-693: when kafka bolt fails to write tuple, it should report error instead of silently acking.
- * STORM-329: fix cascading Storm failure by improving reconnection strategy and buffering messages
- * STORM-130: Supervisor getting killed due to java.io.FileNotFoundException: File '../stormconf.ser' does not exist.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2015-06-04-storm095-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2015-06-04-storm095-released.md b/docs/_posts/2015-06-04-storm095-released.md
deleted file mode 100644
index 1d018c0..0000000
--- a/docs/_posts/2015-06-04-storm095-released.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-layout: post
-title: Storm 0.9.5 released
-author: P. Taylor Goetz
----
-
-The Apache Storm community is pleased to announce that version 0.9.5 has been released and is available from [the downloads page](/downloads.html).
-
-This is a maintenance release that includes a number of important bug fixes that improve Storm's stability and fault tolerance. We encourage users of previous versions to upgrade to this latest release.
-
-
-Thanks
-------
-Special thanks are due to all those who have contributed to Apache Storm -- whether through direct code contributions, documentation, bug reports, or helping other users on the mailing lists. Your efforts are much appreciated.
-
-
-Full Changelog
----------
-
- * STORM-790: Log "task is null" instead of letting worker die when task is null in transfer-fn
- * STORM-796: Add support for "error" command in ShellSpout
- * STORM-745: fix storm.cmd to evaluate 'shift' correctly with 'storm jar'
- * STORM-130: Supervisor getting killed due to java.io.FileNotFoundException: File '../stormconf.ser' does not exist.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_posts/2015-06-15-storm0100-beta-released.md
----------------------------------------------------------------------
diff --git a/docs/_posts/2015-06-15-storm0100-beta-released.md b/docs/_posts/2015-06-15-storm0100-beta-released.md
deleted file mode 100644
index 9d5c4db..0000000
--- a/docs/_posts/2015-06-15-storm0100-beta-released.md
+++ /dev/null
@@ -1,294 +0,0 @@
----
-layout: post
-title: Storm 0.10.0-beta Released
-author: P. Taylor Goetz
----
-
-Fast on the heals of the 0.9.5 maintenance release, the Apache Storm community is pleased to announce that Apache Storm 0.10.0-beta has been released and is now available on [the downloads page](/downloads.html).
-
-Aside from many stability and performance improvements, this release includes a number of important new features, some of which are highlighted below.
-
-Secure, Multi-Tenant Deployment
---------------------------------
-
-Much like the early days of Hadoop, Apache Storm originally evolved in an environment where security was not a high-priority concern. Rather, it was assumed that Storm would be deployed to environments suitably cordoned off from security threats. While a large number of users were comfortable setting up their own security measures for Storm (usually at the Firewall/OS level), this proved a hindrance to broader adoption among larger enterprises where security policies prohibited deployment without specific safeguards.
-
-Yahoo! hosts one of the largest Storm deployments in the world, and their engineering team recognized the need for security early on, so it implemented many of the features necessary to secure its own Apache Storm deployment. Yahoo!, Hortonworks, Symantec, and the broader Apache Storm community have worked together to bring those security innovations into the main Apache Storm code base.
-
-We are pleased to announce that work is now complete. Some of the highlights of Storm's new security features include:
-
- * Kerberos Authentication with Automatic Credential Push and Renewal
- * Pluggable Authorization and ACLs
- * Multi-Tenant Scheduling with Per-User isolation and configurable resource limits.
- * User Impersonation
- * SSL Support for Storm UI, Log Viewer, and DRPC (Distributed Remote Procedure Call)
- * Secure integration with other Hadoop Projects (such as ZooKeeper, HDFS, HBase, etc.)
- * User isolation (Storm topologies run as the user who submitted them)
-
-For more details and instructions for securing Storm, please see [the security documentation](https://github.com/apache/storm/blob/v0.10.0-beta/SECURITY.md).
-
-A Foundation for Rolling Upgrades and Continuity of Operations
---------------------------------------------------------------
-
-In the past, upgrading a Storm cluster could be an arduous process that involved un-deploying existing topologies, removing state from local disk and ZooKeeper, installing the upgrade, and finally redeploying topologies. From an operations perspective, this process was disruptive to say the very least.
-
-The underlying cause of this headache was rooted in the data format Storm processes used to store both local and distributed state. Between versions, these data structures would change in incompatible ways.
-
-Beginning with version 0.10.0, this limitation has been eliminated. In the future, upgrading from Storm 0.10.0 to a newer version can be accomplished seamlessly, with zero down time. In fact, for users who use [Apache Ambari](https://ambari.apache.org) for cluster provisioning and management, the process can be completely automated.
-
-
-Easier Deployment and Declarative Topology Wiring with Flux
-----------------------------------------------------------
-Apache Storm 0.10.0 now includes Flux, which is a framework and set of utilities that make defining and deploying Storm topologies less painful and developer-intensive. A common pain point mentioned by Storm users is the fact that the wiring for a Topology graph is often tied up in Java code, and that any changes require recompilation and repackaging of the topology jar file. Flux aims to alleviate that pain by allowing you to package all your Storm components in a single jar, and use an external text file to define the layout and configuration of your topologies.
-
-Some of Flux' features include:
-
- * Easily configure and deploy Storm topologies (Both Storm core and Micro-batch API) without embedding configuration in your topology code
- * Support for existing topology code
- * Define Storm Core API (Spouts/Bolts) using a flexible YAML DSL
- * YAML DSL support for most Storm components (storm-kafka, storm-hdfs, storm-hbase, etc.)
- * Convenient support for multi-lang components
- * External property substitution/filtering for easily switching between configurations/environments (similar to Maven-style `${variable.name}` substitution)
-
-You can read more about Flux on the [Flux documentation page](https://github.com/apache/storm/blob/v0.10.0-beta/external/flux/README.md).
-
-Partial Key Groupings
----------------------
-In addition to the standard Stream Groupings Storm has always supported, version 0.10.0 introduces a new grouping named "Partial Key Grouping". With the Partial Stream Grouping, the tuple  stream is partitioned by the fields specified in the grouping, like the Fields Grouping, but are load balanced between two downstream bolts, which provides better utilization of resources when the incoming data is skewed. 
-
-Documentation for the Partial Key Grouping and other stream groupings supported by Storm can be found [here](https://storm.apache.org/documentation/Concepts.html). [This research paper](https://melmeric.files.wordpress.com/2014/11/the-power-of-both-choices-practical-load-balancing-for-distributed-stream-processing-engines.pdf) provides additional details regarding how it works and its advantages.
-
-
-Improved Logging Framework
---------------------------
-Debugging distributed applications can be difficult, and usually focuses on one main source of information: application log files. But in a very low latency system like Storm where every millisecond counts, logging can be a double-edged sword: If you log too little information you may miss the information you need to solve a problem; log too much and you risk degrading the overall performance of your application as resources are consumed by the logging framework.
-
-In version 0.10.0 Storm's logging framework now uses [Apache Log4j 2](http://logging.apache.org/log4j/2.x/) which, like Storm's internal messaging subsystem, uses the extremely performant [LMAX Disruptor](https://lmax-exchange.github.io/disruptor/) messaging library. Log4j 2 boast an 18x higher throughput and orders of magnitude lower latency than Storm's previous logging framework. More efficient resource utilization at the logging level means more resources are available where they matter most: executing your business logic.
-
-A few of the important features these changes bring include:
-
- * Rolling log files with size, duration, and date-based triggers that are composable
- * Dynamic log configuration updates without dropping log messages
- * Remote log monitoring and (re)configuration via JMX
- * A Syslog/[RFC-5424](https://tools.ietf.org/html/rfc5424)-compliant appender.
- * Integration with log aggregators such as syslog-ng
-
-
-Streaming ingest with Apache Hive
----------------------------------
-Introduced in version 0.13, [Apache Hive](https://hive.apache.org) includes a [Streaming Data Ingest API](https://cwiki.apache.org/confluence/display/Hive/Streaming+Data+Ingest) that allows data to be written continuously into Hive. The incoming data can be continuously committed in small batches of records into existing Hive partition or table. Once the data is committed its immediately visible to all hive queries.
-
-Apache Storm 0.10.0 introduces both a Storm Core API bolt implementation 
-that allows users to stream data from Storm directly into hive. Storm's Hive integration also includes a [State](https://storm.apache.org/documentation/Trident-state) implementation for Storm's Micro-batching/Transactional API (Trident) that allows you to write to Hive from a micro-batch/transactional topology and supports exactly-once semantics for data persistence.
-
-For more information on Storm's Hive integration, see the [storm-hive documentation](https://github.com/apache/storm/blob/v0.10.0-beta/external/storm-hive/README.md).
-
-
-Microsoft Azure Event Hubs Integration
---------------------------------------
-With Microsoft Azure's [support for running Storm on HDInsight](https://azure.microsoft.com/en-us/documentation/articles/hdinsight-storm-overview/), Storm is now a first class citizen of the Azure cloud computing platform. To better support Storm integration with Azure services, Microsoft engineers have contributed several components that allow Storm to integrate directly with [Microsoft Azure Event Hubs](http://azure.microsoft.com/en-us/services/event-hubs/).
-
-Storm's Event Hubs integration includes both spout and bolt implementations for reading from, and writing to Event Hubs. The Event Hub integration also includes a Micro-batching/Transactional (Trident) spout implementation that supports fully fault-tolerant and reliable processing, as well as support for exactly-once message processing semantics.
-
-
-Redis Support
--------------
-Apache Storm 0.10.0 also introduces support for the [Redis](http://redis.io) data structure server. Storm's Redis support includes bolt implementations for both writing to and querying Redis from a Storm topology, and is easily extended for custom use cases. For Storm's micro-batching/transactional API, the Redis support includes both [Trident State and MapState](https://storm.apache.org/documentation/Trident-state.html) implementations for fault-tolerant state management with Redis.
-
-Further information can be found in the [storm-redis documentation](https://github.com/apache/storm/blob/v0.10.0-beta/external/storm-redis/README.md).
-
-
-JDBC/RDBMS Integration
-----------------------
-Many stream processing data flows require accessing data from or writing data to a relational data store. Storm 0.10.0 introduces highly flexible and customizable support for integrating with virtually any JDBC-compliant database.
-
-The Storm-JDBC package includes core Storm bolt and Trident state implementations that allow a storm topology to either insert Storm tuple data into a database table or execute select queries against a database to enrich streaming data in a storm topology.
-
-Further details and instructions can be found in the [Storm-JDBC documentation](https://github.com/apache/storm/blob/v0.10.0-beta/external/storm-jdbc/README.md).
-
-
-Reduced Dependency Conflicts
-----------------------------
-In previous Storm releases, it was not uncommon for users' topology dependencies to conflict with the libraries used by Storm. In Storm 0.9.3 several dependency packages that were common sources of conflicts have been package-relocated (shaded) to avoid this situation. In 0.10.0 this list has been expanded.
-
-Developers are free to use the Storm-packaged versions, or supply their own version. 
-
-The full list of Storm's package relocations can be found [here](https://github.com/apache/storm/blob/v0.10.0-beta/storm-core/pom.xml#L439).
-
-
-Future Work
------------
-While the 0.10.0 release is an important milestone in the evolution of Apache Storm, the Storm community is actively working on new improvements, both near and long term, and continuously exploring the realm of the possible.
-
-Twitter recently announced the Heron project, which claims to provide substantial performance improvements while maintaining 100% API compatibility with Storm. The corresponding research paper provides additional details regarding the architectural improvements. The fact that Twitter chose to maintain API compatibility with Storm is a testament to the power and flexibility of that API. Twitter has also expressed a desire to share their experiences and work with the Apache Storm community.
-
-A number of concepts expressed in the Heron paper were already in the implementation stage by the Storm community even before it was published, and we look forward to working with Twitter to bring those and other improvements to Storm.
-
-Thanks
-------
-Special thanks are due to all those who have contributed to Apache Storm -- whether through direct code contributions, documentation, bug reports, or helping other users on the mailing lists. Your efforts are very much valued and appreciated.
-
-
-Full Change Log
----------------
-
- * STORM-856: use serialized value of delay secs for topo actions
- * STORM-852: Replaced Apache Log4j Logger with SLF4J API
- * STORM-813: Change storm-starter's README so that it explains mvn exec:java cannot run multilang topology
- * STORM-853: Fix upload API to handle multi-args properly
- * STORM-850: Convert storm-core's logback-test.xml to log4j2-test.xml
- * STORM-848: Shade external dependencies
- * STORM-849: Add storm-redis to storm binary distribution
- * STORM-760: Use JSON for serialized conf
- * STORM-833: Logging framework logback -> log4j 2.x
- * STORM-842: Drop Support for Java 1.6
- * STORM-835: Netty Client hold batch object until io operation complete
- * STORM-827: Allow AutoTGT to work with storm-hdfs too.
- * STORM-821: Adding connection provider interface to decouple jdbc connector from a single connection pooling implementation.
- * STORM-818: storm-eventhubs configuration improvement and refactoring
- * STORM-816: maven-gpg-plugin does not work with gpg 2.1
- * STORM-811: remove old metastor_db before running tests again.
- * STORM-808: allow null to be parsed as null
- * STORM-807: quote args to storm.py correctly
- * STORM-801: Add Travis CI badge to README
- * STORM-797: DisruptorQueueTest has some race conditions in it.
- * STORM-796: Add support for "error" command in ShellSpout
- * STORM-795: Update the user document for the extlib issue
- * STORM-792: Missing documentation in backtype.storm.generated.Nimbus
- * STORM-791: Storm UI displays maps in the config incorrectly
- * STORM-790: Log "task is null" instead of let worker died when task is null in transfer-fn
- * STORM-789: Send more topology context to Multi-Lang components via initial handshake
- * STORM-788: UI Fix key for process latencies
- * STORM-787: test-ns should announce test failures with 'BUILD FAILURE'
- * STORM-786: KafkaBolt should ack tick tuples
- * STORM-773: backtype.storm.transactional-test fails periodically with timeout
- * STORM-772: Tasts fail periodically with InterruptedException or InterruptedIOException
- * STORM-766: Include version info in the service page
- * STORM-765: Thrift serialization for local state
- * STORM-764: Have option to compress thrift heartbeat
- * STORM-762: uptime for worker heartbeats is lost when converted to thrift
- * STORM-761: An option for new/updated Redis keys to expire in RedisMapState
- * STORM-757: Simulated time can leak out on errors
- * STORM-753: Improve RedisStateQuerier to convert List<Values> from Redis value
- * STORM-752: [storm-redis] Clarify Redis*StateUpdater's expire is optional
- * STORM-750: Set Config serialVersionUID
- * STORM-749: Remove CSRF check from the REST API.
- * STORM-747: assignment-version-callback/info-with-version-callback are not fired when assignments change
- * STORM-746: Skip ack init when there are no output tasks
- * STORM-745: fix storm.cmd to evaluate 'shift' correctly with 'storm jar'
- * STORM-741: Allow users to pass a config value to perform impersonation.
- * STORM-740: Simple Transport Client cannot configure thrift buffer size
- * STORM-737: Check task->node+port with read lock to prevent sending to closed connection
- * STORM-735: [storm-redis] Upgrade Jedis to 2.7.0
- * STORM-730: remove extra curly brace
- * STORM-729: Include Executors (Window Hint) if the component is of Bolt type
- * STORM-728: Put emitted and transferred stats under correct columns
- * STORM-727: Storm tests should succeed even if a storm process is running locally.
- * STORM-724: Document RedisStoreBolt and RedisLookupBolt which is missed.
- * STORM-723: Remove RedisStateSetUpdater / RedisStateSetCountQuerier which didn't tested and have a bug
- * STORM-721: Storm UI server should support SSL.
- * STORM-715: Add a link to AssignableMetric.java in Metrics.md
- * STORM-714: Make CSS more consistent with self, prev release
- * STORM-713: Include topic information with Kafka metrics.
- * STORM-712: Storm daemons shutdown if OutOfMemoryError occurs in any thread
- * STORM-711: All connectors should use collector.reportError and tuple anchoring.
- * STORM-708: CORS support for STORM UI.
- * STORM-707: Client (Netty): improve logging to help troubleshooting connection woes
- * STORM-704: Apply Travis CI to Apache Storm Project
- * STORM-703: With hash key option for RedisMapState, only get values for keys in batch
- * STORM-699: storm-jdbc should support custom insert queries. 
- * STORM-696: Single Namespace Test Launching
- * STORM-694: java.lang.ClassNotFoundException: backtype.storm.daemon.common.SupervisorInfo
- * STORM-693: KafkaBolt exception handling improvement.
- * STORM-691: Add basic lookup / persist bolts
- * STORM-690: Return Jedis into JedisPool with marking 'broken' if connection is broken
- * STORM-689: SimpleACLAuthorizer should provide a way to restrict who can submit topologies.
- * STORM-688: update Util to compile under JDK8
- * STORM-687: Storm UI does not display up to date information despite refreshes in IE
- * STORM-685: wrong output in log when committed offset is too far behind latest offset
- * STORM-684: In RichSpoutBatchExecutor: underlying spout is not closed when emitter is closed
- * STORM-683: Make false in a conf really evaluate to false in clojure.
- * STORM-682: supervisor should handle worker state corruption gracefully.
- * STORM-681: Auto insert license header with genthrift.sh
- * STORM-675: Allow users to have storm-env.sh under config dir to set custom JAVA_HOME and other env variables.
- * STORM-673: Typo 'deamon' in security documentation
- * STORM-672: Typo in Trident documentation example
- * STORM-670: restore java 1.6 compatibility (storm-kafka)
- * STORM-669: Replace links with ones to latest api document
- * STORM-667: Incorrect capitalization "SHell" in Multilang-protocol.md
- * STORM-663: Create javadocs for BoltDeclarer
- * STORM-659: return grep matches each on its own line.
- * STORM-657: make the shutdown-worker sleep time before kill -9 configurable
- * STORM-656: Document "external" modules and "Committer Sponsors"
- * STORM-651: improvements to storm.cmd
- * STORM-641: Add total number of topologies to api/v1/cluster/summary.
- * STORM-640: Storm UI vulnerable to poodle attack.
- * STORM-637: Integrate PartialKeyGrouping into storm API
- * STORM-636: Faster, optional retrieval of last component error
- * STORM-635: logviewer returns 404 if storm_home/logs is a symlinked dir.
- * STORM-634: Storm serialization changed to thrift to support rolling upgrade.
- * STORM-632: New grouping for better load balancing
- * STORM-630: Support for Clojure 1.6.0
- * STORM-629: Place Link to Source Code Repository on Webpage
- * STORM-627: Storm-hbase configuration error.
- * STORM-626: Add script to print out the merge command for a given pull request.
- * STORM-625: Don't leak netty clients when worker moves or reuse netty client.	
- * STORM-623: Generate latest javadocs
- * STORM-620: Duplicate maven plugin declaration
- * STORM-616: Storm JDBC Connector.
- * STORM-615: Add REST API to upload topology.
- * STORM-613: Fix wrong getOffset return value
- * STORM-612: Update the contact address in configure.ac
- * STORM-611: Remove extra "break"s
- * STORM-610: Check the return value of fts_close()
- * STORM-609: Add storm-redis to storm external
- * STORM-608: Storm UI CSRF escape characters not work correctly.
- * STORM-607: storm-hbase HBaseMapState should support user to customize the hbase-key & hbase-qualifier
- * STORM-603: Log errors when required kafka params are missing
- * STORM-601: Make jira-github-join ignore case.
- * STORM-600: upgrade jacoco plugin to support jdk8
- * STORM-599: Use nimbus's cached heartbeats rather than fetching again from ZK
- * STORM-596: remove config topology.receiver.buffer.size
- * STORM-595: storm-hdfs can only work with sequence files that use Writables.
- * STORM-586: Trident kafka spout fails instead of updating offset when kafka offset is out of range.
- * STORM-585: Performance issue in none grouping
- * STORM-583: Add Microsoft Azure Event Hub spout implementations
- * STORM-578: Calls to submit-mocked-assignment in supervisor-test use invalid executor-id format
- * STORM-577: long time launch worker will block supervisor heartbeat
- * STORM-575: Ability to specify Jetty host to bind to
- * STORM-572: Storm UI 'favicon.ico'
- * STORM-572: Allow Users to pass TEST-TIMEOUT-MS for java
- * STORM-571: upgrade clj-time.
- * STORM-570: Switch from tablesorter to datatables jquery plugin.
- * STORM-569: Add Conf for bolt's outgoing overflow-buffer.
- * STORM-567: Move Storm Documentation/Website from SVN to git
- * STORM-565: Fix NPE when topology.groups is null.
- * STORM-563: Kafka Spout doesn't pick up from the beginning of the queue unless forceFromStart specified.
- * STORM-561: Add flux as an external module
- * STORM-557: High Quality Images for presentations
- * STORM-554: the type of first param "topology" should be ^StormTopology not ^TopologyContext
- * STORM-552: Add netty socket backlog config
- * STORM-548: Receive Thread Shutdown hook should connect to local hostname but not Localhost
- * STORM-541: Build produces maven warnings
- * STORM-539: Storm Hive Connector.
- * STORM-533: Add in client and server IConnection metrics.
- * STORM-527: update worker.clj -- delete "missing-tasks" checking
- * STORM-525: Add time sorting function to the 2nd col of bolt exec table
- * STORM-512: KafkaBolt doesn't handle ticks properly
- * STORM-505: Fix debug string construction
- * STORM-495: KafkaSpout retries with exponential backoff
- * STORM-487: Remove storm.cmd, no need to duplicate work python runs on windows too.
- * STORM-483: provide dedicated directories for classpath extension
- * STORM-456: Storm UI: cannot navigate to topology page when name contains spaces.
- * STORM-446: Allow superusers to impersonate other users in secure mode.
- * STORM-444: Add AutoHDFS like credential fetching for HBase
- * STORM-442: multilang ShellBolt/ShellSpout die() can be hang when Exception happened
- * STORM-441: Remove bootstrap macro from Clojure codebase
- * STORM-410: Add groups support to log-viewer
- * STORM-400: Thrift upgrade to thrift-0.9.2
- * STORM-329: fix cascading Storm failure by improving reconnection strategy and buffering messages (thanks tedxia)
- * STORM-322: Windows script do not handle spaces in JAVA_HOME path
- * STORM-248: cluster.xml location is hardcoded for workers
- * STORM-243: Record version and revision information in builds
- * STORM-188: Allow user to specifiy full configuration path when running storm command
- * STORM-130: Supervisor getting killed due to java.io.FileNotFoundException: File '../stormconf.ser' does not exist.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/_sass/_syntax-highlighting.scss
----------------------------------------------------------------------
diff --git a/docs/_sass/_syntax-highlighting.scss b/docs/_sass/_syntax-highlighting.scss
deleted file mode 100644
index a0d2404..0000000
--- a/docs/_sass/_syntax-highlighting.scss
+++ /dev/null
@@ -1,70 +0,0 @@
-%vertical-rhythm {
-    margin-bottom: $spacing-unit / 2;
-}
-/**
- * Syntax highlighting styles
- */
-.highlight {
-    background: #fff;
-    @extend %vertical-rhythm;
-
-    .c     { color: #998; font-style: italic } // Comment
-    .err   { color: #a61717; background-color: #e3d2d2 } // Error
-    .k     { font-weight: bold } // Keyword
-    .o     { font-weight: bold } // Operator
-    .cm    { color: #998; font-style: italic } // Comment.Multiline
-    .cp    { color: #999; font-weight: bold } // Comment.Preproc
-    .c1    { color: #998; font-style: italic } // Comment.Single
-    .cs    { color: #999; font-weight: bold; font-style: italic } // Comment.Special
-    .gd    { color: #000; background-color: #fdd } // Generic.Deleted
-    .gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
-    .ge    { font-style: italic } // Generic.Emph
-    .gr    { color: #a00 } // Generic.Error
-    .gh    { color: #999 } // Generic.Heading
-    .gi    { color: #000; background-color: #dfd } // Generic.Inserted
-    .gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
-    .go    { color: #888 } // Generic.Output
-    .gp    { color: #555 } // Generic.Prompt
-    .gs    { font-weight: bold } // Generic.Strong
-    .gu    { color: #aaa } // Generic.Subheading
-    .gt    { color: #a00 } // Generic.Traceback
-    .kc    { font-weight: bold } // Keyword.Constant
-    .kd    { font-weight: bold } // Keyword.Declaration
-    .kp    { font-weight: bold } // Keyword.Pseudo
-    .kr    { font-weight: bold } // Keyword.Reserved
-    .kt    { color: #458; font-weight: bold } // Keyword.Type
-    .m     { color: #099 } // Literal.Number
-    .s     { color: #d14 } // Literal.String
-    .na    { color: #008080 } // Name.Attribute
-    .nb    { color: #0086B3 } // Name.Builtin
-    .nc    { color: #458; font-weight: bold } // Name.Class
-    .no    { color: #008080 } // Name.Constant
-    .ni    { color: #800080 } // Name.Entity
-    .ne    { color: #900; font-weight: bold } // Name.Exception
-    .nf    { color: #900; font-weight: bold } // Name.Function
-    .nn    { color: #555 } // Name.Namespace
-    .nt    { color: #000080 } // Name.Tag
-    .nv    { color: #008080 } // Name.Variable
-    .ow    { font-weight: bold } // Operator.Word
-    .w     { color: #bbb } // Text.Whitespace
-    .mf    { color: #099 } // Literal.Number.Float
-    .mh    { color: #099 } // Literal.Number.Hex
-    .mi    { color: #099 } // Literal.Number.Integer
-    .mo    { color: #099 } // Literal.Number.Oct
-    .sb    { color: #d14 } // Literal.String.Backtick
-    .sc    { color: #d14 } // Literal.String.Char
-    .sd    { color: #d14 } // Literal.String.Doc
-    .s2    { color: #d14 } // Literal.String.Double
-    .se    { color: #d14 } // Literal.String.Escape
-    .sh    { color: #d14 } // Literal.String.Heredoc
-    .si    { color: #d14 } // Literal.String.Interpol
-    .sx    { color: #d14 } // Literal.String.Other
-    .sr    { color: #009926 } // Literal.String.Regex
-    .s1    { color: #d14 } // Literal.String.Single
-    .ss    { color: #990073 } // Literal.String.Symbol
-    .bp    { color: #999 } // Name.Builtin.Pseudo
-    .vc    { color: #008080 } // Name.Variable.Class
-    .vg    { color: #008080 } // Name.Variable.Global
-    .vi    { color: #008080 } // Name.Variable.Instance
-    .il    { color: #099 } // Literal.Number.Integer.Long
-}

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about.md
----------------------------------------------------------------------
diff --git a/docs/about.md b/docs/about.md
deleted file mode 100644
index 4bd6d5e..0000000
--- a/docs/about.md
+++ /dev/null
@@ -1,7 +0,0 @@
----
-layout: page
-title: About
-permalink: /about/
----
-
-Storm is a <a href="/about/free-and-open-source.html">free and open source</a> distributed realtime computation system. Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Storm is <a href="/about/simple-api.html">simple</a>, can be used with <a href="/about/multi-language.html">any programming language</a>, and is a lot of fun to use!

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/deployment.md
----------------------------------------------------------------------
diff --git a/docs/about/deployment.md b/docs/about/deployment.md
deleted file mode 100644
index 88ec55f..0000000
--- a/docs/about/deployment.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: about
----
-
-Storm clusters are easy to deploy, requiring a minimum of setup and configuration to get up and running. Storm's out of the box configurations are suitable for production. Read more about how to deploy a Storm cluster [here](/documentation/Setting-up-a-Storm-cluster.html).
-
-If you're on EC2, the [storm-deploy](https://github.com/nathanmarz/storm-deploy) project can provision, configure, and install a Storm cluster from scratch at just the click of a button.
-
-Additionally, Storm is easy to operate once deployed. Storm has been designed to be [extremely robust](/about/fault-tolerant.html) – the cluster will just keep on running, month after month.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/fault-tolerant.md
----------------------------------------------------------------------
diff --git a/docs/about/fault-tolerant.md b/docs/about/fault-tolerant.md
deleted file mode 100644
index 057b372..0000000
--- a/docs/about/fault-tolerant.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: about
----
-
-Storm is fault-tolerant: when workers die, Storm will automatically restart them. If a node dies, the worker will be restarted on another node.
-
-The Storm daemons, Nimbus and the Supervisors, are designed to be stateless and fail-fast. So if they die, they will restart like nothing happened. This means you can *kill -9* the Storm daemons without affecting the health of the cluster or your topologies.
-
-Read more about Storm's fault-tolerance [on the manual](/documentation/Fault-tolerance.html).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/free-and-open-source.md
----------------------------------------------------------------------
diff --git a/docs/about/free-and-open-source.md b/docs/about/free-and-open-source.md
deleted file mode 100644
index 3a942d5..0000000
--- a/docs/about/free-and-open-source.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: about
----
-
-Apache Storm is a free and open source project licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
-
-
-Storm has a large and growing ecosystem of libraries and tools to use in conjunction with Storm including everything from:
-
-1. *Spouts*: These spouts integrate with queueing systems such as JMS, Kafka, Redis pub/sub, and more.
-2. *storm-state*: storm-state makes it easy to manage large amounts of in-memory state in your computations in a reliable by using a distributed filesystem for persistence
-3. *Database integrations*: There are helper bolts for integrating with various databases, such as MongoDB, RDBMS's, Cassandra, and more.
-4. Other miscellaneous utilities
-
-The [Storm documentation](/documentation/Home.html) has links to notable Storm-related projects hosted outside of Apache.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/guarantees-data-processing.md
----------------------------------------------------------------------
diff --git a/docs/about/guarantees-data-processing.md b/docs/about/guarantees-data-processing.md
deleted file mode 100644
index 3d6a0f3..0000000
--- a/docs/about/guarantees-data-processing.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: about
----
-
-Storm guarantees every tuple will be fully processed. One of Storm's core mechanisms is the ability to track the lineage of a tuple as it makes its way through the topology in an extremely efficient way. Read more about how this works [here](/documentation/Guaranteeing-message-processing.html).
-
-Storm's basic abstractions provide an at-least-once processing guarantee, the same guarantee you get when using a queueing system. Messages are only replayed when there are failures.
-
-Using [Trident](/documentation/Trident-tutorial.html), a higher level abstraction over Storm's basic abstractions, you can achieve exactly-once processing semantics.
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/integrates.md
----------------------------------------------------------------------
diff --git a/docs/about/integrates.md b/docs/about/integrates.md
deleted file mode 100644
index 8071bdb..0000000
--- a/docs/about/integrates.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-layout: about
----
-
-Storm integrates with any queueing system and any database system. Storm's [spout](/apidocs/backtype/storm/spout/ISpout.html) abstraction makes it easy to integrate a new queuing system. Example queue integrations include:
-
-1. [Kestrel](https://github.com/nathanmarz/storm-kestrel)
-2. [RabbitMQ / AMQP](https://github.com/Xorlev/storm-amqp-spout)
-3. [Kafka](https://github.com/apache/storm/tree/master/external/storm-kafka)
-4. [JMS](https://github.com/ptgoetz/storm-jms)
-5. [Amazon Kinesis](https://github.com/awslabs/kinesis-storm-spout)
-
-Likewise, integrating Storm with database systems is easy. Simply open a connection to your database and read/write like you normally would. Storm will handle the parallelization, partitioning, and retrying on failures when necessary.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/multi-language.md
----------------------------------------------------------------------
diff --git a/docs/about/multi-language.md b/docs/about/multi-language.md
deleted file mode 100644
index 836bf03..0000000
--- a/docs/about/multi-language.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-layout: about
----
-
-Storm was designed from the ground up to be usable with any programming language. At the core of Storm is a [Thrift](http://thrift.apache.org/) [definition](https://github.com/apache/storm/blob/master/storm-core/src/storm.thrift) for defining and submitting topologies. Since Thrift can be used in any language, topologies can be defined and submitted from any language.
-
-Similarly, spouts and bolts can be defined in any language. Non-JVM spouts and bolts communicate to Storm over a [JSON-based protocol](/documentation/Multilang-protocol.html) over stdin/stdout. Adapters that implement this protocol exist for [Ruby](https://github.com/apache/storm/blob/master/storm-multilang/ruby/src/main/resources/resources/storm.rb), [Python](https://github.com/apache/storm/blob/master/storm-multilang/python/src/main/resources/resources/storm.py), [Javascript](https://github.com/apache/storm/blob/master/storm-multilang/javascript/src/main/resources/resources/storm.js), [Perl](https://github.com/dan-blanchard/io-storm).
-
-*storm-starter* has an [example topology](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/WordCountTopology.java) that implements one of the bolts in Python.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/scalable.md
----------------------------------------------------------------------
diff --git a/docs/about/scalable.md b/docs/about/scalable.md
deleted file mode 100644
index b487e52..0000000
--- a/docs/about/scalable.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-layout: about
----
-
-Storm topologies are inherently parallel and run across a cluster of machines. Different parts of the topology can be scaled individually by tweaking their parallelism. The "rebalance" command of the "storm" command line client can adjust the parallelism of running topologies on the fly. 
-
-Storm's inherent parallelism means it can process very high throughputs of messages with very low latency. Storm was benchmarked at processing **one million 100 byte messages per second per node** on hardware with the following specs:
-
- * **Processor:** 2x Intel E5645@2.4Ghz 
- * **Memory:** 24 GB

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/about/simple-api.md
----------------------------------------------------------------------
diff --git a/docs/about/simple-api.md b/docs/about/simple-api.md
deleted file mode 100644
index 7fc8c10..0000000
--- a/docs/about/simple-api.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: about
----
-
-Storm has a simple and easy to use API. When programming on Storm, you manipulate and transform streams of tuples, and a tuple is a named list of values. Tuples can contain objects of any type; if you want to use a type Storm doesn't know about it's [very easy](/documentation/Serialization.html) to register a serializer for that type.
-
-There are just three abstractions in Storm: spouts, bolts, and topologies. A **spout** is a source of streams in a computation. Typically a spout reads from a queueing broker such as Kestrel, RabbitMQ, or Kafka, but a spout can also generate its own stream or read from somewhere like the Twitter streaming API. Spout implementations already exist for most queueing systems.
-
-A **bolt** processes any number of input streams and produces any number of new output streams. Most of the logic of a computation goes into bolts, such as functions, filters, streaming joins, streaming aggregations, talking to databases, and so on.
-
-A **topology** is a network of spouts and bolts, with each edge in the network representing a bolt subscribing to the output stream of some other spout or bolt. A topology is an arbitrarily complex multi-stage stream computation. Topologies run indefinitely when deployed.
-
-Storm has a "local mode" where a Storm cluster is simulated in-process. This is useful for development and testing. The "storm" command line client is used when ready to submit a topology for execution on an actual cluster.
-
-The [storm-starter](https://github.com/apache/storm/tree/master/examples/storm-starter) project contains example topologies for learning the basics of Storm. Learn more about how to use Storm by reading the [tutorial](/documentation/Tutorial.html) and the [documentation](/documentation/Home.html).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/bootstrap-theme.css
----------------------------------------------------------------------
diff --git a/docs/assets/css/bootstrap-theme.css b/docs/assets/css/bootstrap-theme.css
deleted file mode 100644
index c4cadf1..0000000
--- a/docs/assets/css/bootstrap-theme.css
+++ /dev/null
@@ -1,470 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-
-.btn-default,
-.btn-primary,
-.btn-success,
-.btn-info,
-.btn-warning,
-.btn-danger {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
-}
-.btn-default:active,
-.btn-primary:active,
-.btn-success:active,
-.btn-info:active,
-.btn-warning:active,
-.btn-danger:active,
-.btn-default.active,
-.btn-primary.active,
-.btn-success.active,
-.btn-info.active,
-.btn-warning.active,
-.btn-danger.active {
-  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-          box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
-}
-.btn-default .badge,
-.btn-primary .badge,
-.btn-success .badge,
-.btn-info .badge,
-.btn-warning .badge,
-.btn-danger .badge {
-  text-shadow: none;
-}
-.btn:active,
-.btn.active {
-  background-image: none;
-}
-.btn-default {
-  text-shadow: 0 1px 0 #fff;
-  background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
-  background-image:      -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
-  background-image:         linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #dbdbdb;
-  border-color: #ccc;
-}
-.btn-default:hover,
-.btn-default:focus {
-  background-color: #e0e0e0;
-  background-position: 0 -15px;
-}
-.btn-default:active,
-.btn-default.active {
-  background-color: #e0e0e0;
-  border-color: #dbdbdb;
-}
-.btn-default:disabled,
-.btn-default[disabled] {
-  background-color: #e0e0e0;
-  background-image: none;
-}
-.btn-primary {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
-  background-image:      -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
-  background-image:         linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #245580;
-}
-.btn-primary:hover,
-.btn-primary:focus {
-  background-color: #265a88;
-  background-position: 0 -15px;
-}
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #265a88;
-  border-color: #245580;
-}
-.btn-primary:disabled,
-.btn-primary[disabled] {
-  background-color: #265a88;
-  background-image: none;
-}
-.btn-success {
-  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
-  background-image:      -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
-  background-image:         linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #3e8f3e;
-}
-.btn-success:hover,
-.btn-success:focus {
-  background-color: #419641;
-  background-position: 0 -15px;
-}
-.btn-success:active,
-.btn-success.active {
-  background-color: #419641;
-  border-color: #3e8f3e;
-}
-.btn-success:disabled,
-.btn-success[disabled] {
-  background-color: #419641;
-  background-image: none;
-}
-.btn-info {
-  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
-  background-image:      -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
-  background-image:         linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #28a4c9;
-}
-.btn-info:hover,
-.btn-info:focus {
-  background-color: #2aabd2;
-  background-position: 0 -15px;
-}
-.btn-info:active,
-.btn-info.active {
-  background-color: #2aabd2;
-  border-color: #28a4c9;
-}
-.btn-info:disabled,
-.btn-info[disabled] {
-  background-color: #2aabd2;
-  background-image: none;
-}
-.btn-warning {
-  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
-  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
-  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #e38d13;
-}
-.btn-warning:hover,
-.btn-warning:focus {
-  background-color: #eb9316;
-  background-position: 0 -15px;
-}
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #eb9316;
-  border-color: #e38d13;
-}
-.btn-warning:disabled,
-.btn-warning[disabled] {
-  background-color: #eb9316;
-  background-image: none;
-}
-.btn-danger {
-  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
-  background-image:      -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
-  background-image:         linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-color: #b92c28;
-}
-.btn-danger:hover,
-.btn-danger:focus {
-  background-color: #c12e2a;
-  background-position: 0 -15px;
-}
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #c12e2a;
-  border-color: #b92c28;
-}
-.btn-danger:disabled,
-.btn-danger[disabled] {
-  background-color: #c12e2a;
-  background-image: none;
-}
-.thumbnail,
-.img-thumbnail {
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
-}
-.dropdown-menu > li > a:hover,
-.dropdown-menu > li > a:focus {
-  background-color: #e8e8e8;
-  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
-  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-  background-repeat: repeat-x;
-}
-.dropdown-menu > .active > a,
-.dropdown-menu > .active > a:hover,
-.dropdown-menu > .active > a:focus {
-  background-color: #2e6da4;
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
-  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
-  background-repeat: repeat-x;
-}
-.navbar-default {
-  background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
-  background-image:      -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
-  background-image:         linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-  border-radius: 4px;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
-}
-.navbar-default .navbar-nav > .open > a,
-.navbar-default .navbar-nav > .active > a {
-  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
-  background-image:      -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
-  background-image:         linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
-  background-repeat: repeat-x;
-  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
-          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
-}
-.navbar-brand,
-.navbar-nav > li > a {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
-}
-.navbar-inverse {
-  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
-  background-image:      -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
-  background-image:         linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
-  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
-  background-repeat: repeat-x;
-}
-.navbar-inverse .navbar-nav > .open > a,
-.navbar-inverse .navbar-nav > .active > a {
-  background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
-  background-image:      -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
-  background-image:         linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
-  background-repeat: repeat-x;
-  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
-          box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
-}
-.navbar-inverse .navbar-brand,
-.navbar-inverse .navbar-nav > li > a {
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
-}
-.navbar-static-top,
-.navbar-fixed-top,
-.navbar-fixed-bottom {
-  border-radius: 0;
-}
-@media (max-width: 767px) {
-  .navbar .navbar-nav .open .dropdown-menu > .active > a,
-  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
-  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
-    color: #fff;
-    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-    background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-    background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
-    background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
-    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
-    background-repeat: repeat-x;
-  }
-}
-.alert {
-  text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
-}
-.alert-success {
-  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
-  background-image:      -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
-  background-image:         linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #b2dba1;
-}
-.alert-info {
-  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
-  background-image:      -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
-  background-image:         linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #9acfea;
-}
-.alert-warning {
-  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
-  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
-  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #f5e79e;
-}
-.alert-danger {
-  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
-  background-image:      -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
-  background-image:         linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #dca7a7;
-}
-.progress {
-  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
-  background-image:      -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
-  background-image:         linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
-  background-image:      -o-linear-gradient(top, #337ab7 0%, #286090 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
-  background-image:         linear-gradient(to bottom, #337ab7 0%, #286090 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-success {
-  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
-  background-image:      -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
-  background-image:         linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-info {
-  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
-  background-image:      -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
-  background-image:         linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-warning {
-  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
-  background-image:      -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
-  background-image:         linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-danger {
-  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
-  background-image:      -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
-  background-image:         linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
-  background-repeat: repeat-x;
-}
-.progress-bar-striped {
-  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:      -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-  background-image:         linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
-}
-.list-group {
-  border-radius: 4px;
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
-}
-.list-group-item.active,
-.list-group-item.active:hover,
-.list-group-item.active:focus {
-  text-shadow: 0 -1px 0 #286090;
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
-  background-image:      -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
-  background-image:         linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #2b669a;
-}
-.list-group-item.active .badge,
-.list-group-item.active:hover .badge,
-.list-group-item.active:focus .badge {
-  text-shadow: none;
-}
-.panel {
-  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
-          box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
-}
-.panel-default > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image:      -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
-  background-image:         linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-primary > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image:      -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
-  background-image:         linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-success > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
-  background-image:      -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
-  background-image:         linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-info > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
-  background-image:      -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
-  background-image:         linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-warning > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
-  background-image:      -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
-  background-image:         linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
-  background-repeat: repeat-x;
-}
-.panel-danger > .panel-heading {
-  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
-  background-image:      -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
-  background-image:         linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
-  background-repeat: repeat-x;
-}
-.well {
-  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
-  background-image:      -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
-  background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
-  background-image:         linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
-  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
-  background-repeat: repeat-x;
-  border-color: #dcdcdc;
-  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
-          box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
-}
-/*# sourceMappingURL=bootstrap-theme.css.map */


[13/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Concepts.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Concepts.md b/docs/documentation/Concepts.md
deleted file mode 100644
index bd7ed3d..0000000
--- a/docs/documentation/Concepts.md
+++ /dev/null
@@ -1,118 +0,0 @@
----
-title: Concepts
-layout: documentation
-documentation: true
----
-
-This page lists the main concepts of Storm and links to resources where you can find more information. The concepts discussed are:
-
-1. Topologies
-2. Streams
-3. Spouts
-4. Bolts
-5. Stream groupings
-6. Reliability
-7. Tasks
-8. Workers
-
-### Topologies
-
-The logic for a realtime application is packaged into a Storm topology. A Storm topology is analogous to a MapReduce job. One key difference is that a MapReduce job eventually finishes, whereas a topology runs forever (or until you kill it, of course). A topology is a graph of spouts and bolts that are connected with stream groupings. These concepts are described below.
-
-**Resources:**
-
-* [TopologyBuilder](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html): use this class to construct topologies in Java
-* [Running topologies on a production cluster](Running-topologies-on-a-production-cluster.html)
-* [Local mode](Local-mode.html): Read this to learn how to develop and test topologies in local mode.
-
-### Streams
-
-The stream is the core abstraction in Storm. A stream is an unbounded sequence of tuples that is processed and created in parallel in a distributed fashion. Streams are defined with a schema that names the fields in the stream's tuples. By default, tuples can contain integers, longs, shorts, bytes, strings, doubles, floats, booleans, and byte arrays. You can also define your own serializers so that custom types can be used natively within tuples.
-
-Every stream is given an id when declared. Since single-stream spouts and bolts are so common, [OutputFieldsDeclarer](/javadoc/apidocs/backtype/storm/topology/OutputFieldsDeclarer.html) has convenience methods for declaring a single stream without specifying an id. In this case, the stream is given the default id of "default".
-
-
-**Resources:**
-
-* [Tuple](/javadoc/apidocs/backtype/storm/tuple/Tuple.html): streams are composed of tuples
-* [OutputFieldsDeclarer](/javadoc/apidocs/backtype/storm/topology/OutputFieldsDeclarer.html): used to declare streams and their schemas
-* [Serialization](Serialization.html): Information about Storm's dynamic typing of tuples and declaring custom serializations
-* [ISerialization](/javadoc/apidocs/backtype/storm/serialization/ISerialization.html): custom serializers must implement this interface
-* [CONFIG.TOPOLOGY_SERIALIZATIONS](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_SERIALIZATIONS): custom serializers can be registered using this configuration
-
-### Spouts
-
-A spout is a source of streams in a topology. Generally spouts will read tuples from an external source and emit them into the topology (e.g. a Kestrel queue or the Twitter API). Spouts can either be __reliable__ or __unreliable__. A reliable spout is capable of replaying a tuple if it failed to be processed by Storm, whereas an unreliable spout forgets about the tuple as soon as it is emitted.
-
-Spouts can emit more than one stream. To do so, declare multiple streams using the `declareStream` method of [OutputFieldsDeclarer](/javadoc/apidocs/backtype/storm/topology/OutputFieldsDeclarer.html) and specify the stream to emit to when using the `emit` method on [SpoutOutputCollector](/javadoc/apidocs/backtype/storm/spout/SpoutOutputCollector.html).
-
-The main method on spouts is `nextTuple`. `nextTuple` either emits a new tuple into the topology or simply returns if there are no new tuples to emit. It is imperative that `nextTuple` does not block for any spout implementation, because Storm calls all the spout methods on the same thread.
-
-The other main methods on spouts are `ack` and `fail`. These are called when Storm detects that a tuple emitted from the spout either successfully completed through the topology or failed to be completed. `ack` and `fail` are only called for reliable spouts. See [the Javadoc](/javadoc/apidocs/backtype/storm/spout/ISpout.html) for more information.
-
-**Resources:**
-
-* [IRichSpout](/javadoc/apidocs/backtype/storm/topology/IRichSpout.html): this is the interface that spouts must implement.
-* [Guaranteeing message processing](Guaranteeing-message-processing.html)
-
-### Bolts
-
-All processing in topologies is done in bolts. Bolts can do anything from filtering, functions, aggregations, joins, talking to databases, and more. 
-
-Bolts can do simple stream transformations. Doing complex stream transformations often requires multiple steps and thus multiple bolts. For example, transforming a stream of tweets into a stream of trending images requires at least two steps: a bolt to do a rolling count of retweets for each image, and one or more bolts to stream out the top X images (you can do this particular stream transformation in a more scalable way with three bolts than with two). 
-
-Bolts can emit more than one stream. To do so, declare multiple streams using the `declareStream` method of [OutputFieldsDeclarer](/javadoc/apidocs/backtype/storm/topology/OutputFieldsDeclarer.html) and specify the stream to emit to when using the `emit` method on [OutputCollector](/javadoc/apidocs/backtype/storm/task/OutputCollector.html).
-
-When you declare a bolt's input streams, you always subscribe to specific streams of another component. If you want to subscribe to all the streams of another component, you have to subscribe to each one individually. [InputDeclarer](/javadoc/apidocs/backtype/storm/topology/InputDeclarer.html) has syntactic sugar for subscribing to streams declared on the default stream id. Saying `declarer.shuffleGrouping("1")` subscribes to the default stream on component "1" and is equivalent to `declarer.shuffleGrouping("1", DEFAULT_STREAM_ID)`.
-
-The main method in bolts is the `execute` method which takes in as input a new tuple. Bolts emit new tuples using the [OutputCollector](/javadoc/apidocs/backtype/storm/task/OutputCollector.html) object. Bolts must call the `ack` method on the `OutputCollector` for every tuple they process so that Storm knows when tuples are completed (and can eventually determine that its safe to ack the original spout tuples). For the common case of processing an input tuple, emitting 0 or more tuples based on that tuple, and then acking the input tuple, Storm provides an [IBasicBolt](/javadoc/apidocs/backtype/storm/topology/IBasicBolt.html) interface which does the acking automatically.
-
-Please note that [OutputCollector](/javadoc/apidocs/backtype/storm/task/OutputCollector.html) is not thread-safe, and all emits, acks, and fails must happen on the same thread. Please refer [Troubleshooting](troubleshooting.html) for more details.
-
-**Resources:**
-
-* [IRichBolt](/javadoc/apidocs/backtype/storm/topology/IRichBolt.html): this is general interface for bolts.
-* [IBasicBolt](/javadoc/apidocs/backtype/storm/topology/IBasicBolt.html): this is a convenience interface for defining bolts that do filtering or simple functions.
-* [OutputCollector](/javadoc/apidocs/backtype/storm/task/OutputCollector.html): bolts emit tuples to their output streams using an instance of this class
-* [Guaranteeing message processing](Guaranteeing-message-processing.html)
-
-### Stream groupings
-
-Part of defining a topology is specifying for each bolt which streams it should receive as input. A stream grouping defines how that stream should be partitioned among the bolt's tasks.
-
-There are eight built-in stream groupings in Storm, and you can implement a custom stream grouping by implementing the [CustomStreamGrouping](/javadoc/apidocs/backtype/storm/grouping/CustomStreamGrouping.html) interface:
-
-1. **Shuffle grouping**: Tuples are randomly distributed across the bolt's tasks in a way such that each bolt is guaranteed to get an equal number of tuples.
-2. **Fields grouping**: The stream is partitioned by the fields specified in the grouping. For example, if the stream is grouped by the "user-id" field, tuples with the same "user-id" will always go to the same task, but tuples with different "user-id"'s may go to different tasks.
-3. **Partial Key grouping**: The stream is partitioned by the fields specified in the grouping, like the Fields grouping, but are load balanced between two downstream bolts, which provides better utilization of resources when the incoming data is skewed. [This paper](https://melmeric.files.wordpress.com/2014/11/the-power-of-both-choices-practical-load-balancing-for-distributed-stream-processing-engines.pdf) provides a good explanation of how it works and the advantages it provides.
-4. **All grouping**: The stream is replicated across all the bolt's tasks. Use this grouping with care.
-5. **Global grouping**: The entire stream goes to a single one of the bolt's tasks. Specifically, it goes to the task with the lowest id.
-6. **None grouping**: This grouping specifies that you don't care how the stream is grouped. Currently, none groupings are equivalent to shuffle groupings. Eventually though, Storm will push down bolts with none groupings to execute in the same thread as the bolt or spout they subscribe from (when possible).
-7. **Direct grouping**: This is a special kind of grouping. A stream grouped this way means that the __producer__ of the tuple decides which task of the consumer will receive this tuple. Direct groupings can only be declared on streams that have been declared as direct streams. Tuples emitted to a direct stream must be emitted using one of the [emitDirect](/javadoc/apidocs/backtype/storm/task/OutputCollector.html#emitDirect(int, int, java.util.List) methods. A bolt can get the task ids of its consumers by either using the provided [TopologyContext](/javadoc/apidocs/backtype/storm/task/TopologyContext.html) or by keeping track of the output of the `emit` method in [OutputCollector](/javadoc/apidocs/backtype/storm/task/OutputCollector.html) (which returns the task ids that the tuple was sent to).
-8. **Local or shuffle grouping**: If the target bolt has one or more tasks in the same worker process, tuples will be shuffled to just those in-process tasks. Otherwise, this acts like a normal shuffle grouping.
-
-**Resources:**
-
-* [TopologyBuilder](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html): use this class to define topologies
-* [InputDeclarer](/javadoc/apidocs/backtype/storm/topology/InputDeclarer.html): this object is returned whenever `setBolt` is called on `TopologyBuilder` and is used for declaring a bolt's input streams and how those streams should be grouped
-* [CoordinatedBolt](/javadoc/apidocs/backtype/storm/task/CoordinatedBolt.html): this bolt is useful for distributed RPC topologies and makes heavy use of direct streams and direct groupings
-
-### Reliability
-
-Storm guarantees that every spout tuple will be fully processed by the topology. It does this by tracking the tree of tuples triggered by every spout tuple and determining when that tree of tuples has been successfully completed. Every topology has a "message timeout" associated with it. If Storm fails to detect that a spout tuple has been completed within that timeout, then it fails the tuple and replays it later. 
-
-To take advantage of Storm's reliability capabilities, you must tell Storm when new edges in a tuple tree are being created and tell Storm whenever you've finished processing an individual tuple. These are done using the [OutputCollector](/javadoc/apidocs/backtype/storm/task/OutputCollector.html) object that bolts use to emit tuples. Anchoring is done in the `emit` method, and you declare that you're finished with a tuple using the `ack` method.
-
-This is all explained in much more detail in [Guaranteeing message processing](Guaranteeing-message-processing.html). 
-
-### Tasks
-
-Each spout or bolt executes as many tasks across the cluster. Each task corresponds to one thread of execution, and stream groupings define how to send tuples from one set of tasks to another set of tasks. You set the parallelism for each spout or bolt in the `setSpout` and `setBolt` methods of [TopologyBuilder](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html).
-
-### Workers
-
-Topologies execute across one or more worker processes. Each worker process is a physical JVM and executes a subset of all the tasks for the topology. For example, if the combined parallelism of the topology is 300 and 50 workers are allocated, then each worker will execute 6 tasks (as threads within the worker). Storm tries to spread the tasks evenly across all the workers.
-
-**Resources:**
-
-* [Config.TOPOLOGY_WORKERS](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_WORKERS): this config sets the number of workers to allocate for executing the topology

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Configuration.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Configuration.md b/docs/documentation/Configuration.md
deleted file mode 100644
index 6d85aa1..0000000
--- a/docs/documentation/Configuration.md
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Configuration
-layout: documentation
-documentation: true
----
-Storm has a variety of configurations for tweaking the behavior of nimbus, supervisors, and running topologies. Some configurations are system configurations and cannot be modified on a topology by topology basis, whereas other configurations can be modified per topology. 
-
-Every configuration has a default value defined in [defaults.yaml](https://github.com/apache/storm/blob/master/conf/defaults.yaml) in the Storm codebase. You can override these configurations by defining a storm.yaml in the classpath of Nimbus and the supervisors. Finally, you can define a topology-specific configuration that you submit along with your topology when using [StormSubmitter](/javadoc/apidocs/backtype/storm/StormSubmitter.html). However, the topology-specific configuration can only override configs prefixed with "TOPOLOGY".
-
-Storm 0.7.0 and onwards lets you override configuration on a per-bolt/per-spout basis. The only configurations that can be overriden this way are:
-
-1. "topology.debug"
-2. "topology.max.spout.pending"
-3. "topology.max.task.parallelism"
-4. "topology.kryo.register": This works a little bit differently than the other ones, since the serializations will be available to all components in the topology. More details on [Serialization](Serialization.html). 
-
-The Java API lets you specify component specific configurations in two ways:
-
-1. *Internally:* Override `getComponentConfiguration` in any spout or bolt and return the component-specific configuration map.
-2. *Externally:* `setSpout` and `setBolt` in `TopologyBuilder` return an object with methods `addConfiguration` and `addConfigurations` that can be used to override the configurations for the component.
-
-The preference order for configuration values is defaults.yaml < storm.yaml < topology specific configuration < internal component specific configuration < external component specific configuration. 
-
-
-**Resources:**
-
-* [Config](/javadoc/apidocs/backtype/storm/Config.html): a listing of all configurations as well as a helper class for creating topology specific configurations
-* [defaults.yaml](https://github.com/apache/storm/blob/master/conf/defaults.yaml): the default values for all configurations
-* [Setting up a Storm cluster](Setting-up-a-Storm-cluster.html): explains how to create and configure a Storm cluster
-* [Running topologies on a production cluster](Running-topologies-on-a-production-cluster.html): lists useful configurations when running topologies on a cluster
-* [Local mode](Local-mode.html): lists useful configurations when using local mode
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Contributing-to-Storm.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Contributing-to-Storm.md b/docs/documentation/Contributing-to-Storm.md
deleted file mode 100644
index fdc5835..0000000
--- a/docs/documentation/Contributing-to-Storm.md
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Contributing
-layout: documentation
-documentation: true
----
-
-### Getting started with contributing
-
-Some of the issues on the [issue tracker](https://issues.apache.org/jira/browse/STORM) are marked with the "Newbie" label. If you're interesting in contributing to Storm but don't know where to begin, these are good issues to start with. These issues are a great way to get your feet wet with learning the codebase because they require learning about only an isolated portion of the codebase and are a relatively small amount of work.
-
-### Learning the codebase
-
-The [Implementation docs](Implementation-docs.html) section of the wiki gives detailed walkthroughs of the codebase. Reading through these docs is highly recommended to understand the codebase.
-
-### Contribution process
-
-Contributions to the Storm codebase should be sent as [GitHub](https://github.com/apache/storm) pull requests. If there's any problems to the pull request we can iterate on it using GitHub's commenting features.
-
-For small patches, feel free to submit pull requests directly for them. For larger contributions, please use the following process. The idea behind this process is to prevent any wasted work and catch design issues early on:
-
-1. Open an issue on the [issue tracker](https://issues.apache.org/jira/browse/STORM) if one doesn't exist already
-2. Comment on the issue with your plan for implementing the issue. Explain what pieces of the codebase you're going to touch and how everything is going to fit together.
-3. Storm committers will iterate with you on the design to make sure you're on the right track
-4. Implement your issue, submit a pull request, and iterate from there.
-
-### Modules built on top of Storm
-
-Modules built on top of Storm (like spouts, bolts, etc) that aren't appropriate for Storm core can be done as your own project or as part of [@stormprocessor](https://github.com/stormprocessor). To be part of @stormprocessor put your project on your own Github and then send an email to the mailing list proposing to make it part of @stormprocessor. Then the community can discuss whether it's useful enough to be part of @stormprocessor. Then you'll be added to the @stormprocessor organization and can maintain your project there. The advantage of hosting your module in @stormprocessor is that it will be easier for potential users to find your project.
-
-### Contributing documentation
-
-Documentation contributions are very welcome! The best way to send contributions is as emails through the mailing list.
-

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Creating-a-new-Storm-project.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Creating-a-new-Storm-project.md b/docs/documentation/Creating-a-new-Storm-project.md
deleted file mode 100644
index b6186b5..0000000
--- a/docs/documentation/Creating-a-new-Storm-project.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: Creating a New Storm Project
-layout: documentation
-documentation: true
----
-This page outlines how to set up a Storm project for development. The steps are:
-
-1. Add Storm jars to classpath
-2. If using multilang, add multilang dir to classpath
-
-Follow along to see how to set up the [storm-starter](https://github.com/apache/storm/blob/master/examples/storm-starter) project in Eclipse.
-
-### Add Storm jars to classpath
-
-You'll need the Storm jars on your classpath to develop Storm topologies. Using [Maven](Maven.html) is highly recommended. [Here's an example](https://github.com/apache/storm/blob/master/examples/storm-starter/pom.xml) of how to setup your pom.xml for a Storm project. If you don't want to use Maven, you can include the jars from the Storm release on your classpath.
-
-To set up the classpath in Eclipse, create a new Java project, include `src/jvm/` as a source path, and make sure all the jars in `lib/` and `lib/dev/` are in the `Referenced Libraries` section of the project.
-
-### If using multilang, add multilang dir to classpath
-
-If you implement spouts or bolts in languages other than Java, then those implementations should be under the `multilang/resources/` directory of the project. For Storm to find these files in local mode, the `resources/` dir needs to be on the classpath. You can do this in Eclipse by adding `multilang/` as a source folder. You may also need to add multilang/resources as a source directory.
-
-For more information on writing topologies in other languages, see [Using non-JVM languages with Storm](Using-non-JVM-languages-with-Storm.html).
-
-To test that everything is working in Eclipse, you should now be able to `Run` the `WordCountTopology.java` file. You will see messages being emitted at the console for 10 seconds.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/DSLs-and-multilang-adapters.md
----------------------------------------------------------------------
diff --git a/docs/documentation/DSLs-and-multilang-adapters.md b/docs/documentation/DSLs-and-multilang-adapters.md
deleted file mode 100644
index 0ed5450..0000000
--- a/docs/documentation/DSLs-and-multilang-adapters.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Storm DSLs and Multi-Lang Adapters
-layout: documentation
-documentation: true
----
-* [Scala DSL](https://github.com/velvia/ScalaStorm)
-* [JRuby DSL](https://github.com/colinsurprenant/redstorm)
-* [Clojure DSL](Clojure-DSL.html)
-* [Storm/Esper integration](https://github.com/tomdz/storm-esper): Streaming SQL on top of Storm
-* [io-storm](https://github.com/dan-blanchard/io-storm): Perl multilang adapter

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Defining-a-non-jvm-language-dsl-for-storm.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Defining-a-non-jvm-language-dsl-for-storm.md b/docs/documentation/Defining-a-non-jvm-language-dsl-for-storm.md
deleted file mode 100644
index 77eb392..0000000
--- a/docs/documentation/Defining-a-non-jvm-language-dsl-for-storm.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-title: Defining a Non-JVM DSL for Storm
-layout: documentation
-documentation: true
----
-The right place to start to learn how to make a non-JVM DSL for Storm is [storm-core/src/storm.thrift](https://github.com/apache/storm/blob/master/storm-core/src/storm.thrift). Since Storm topologies are just Thrift structures, and Nimbus is a Thrift daemon, you can create and submit topologies in any language.
-
-When you create the Thrift structs for spouts and bolts, the code for the spout or bolt is specified in the ComponentObject struct:
-
-```
-union ComponentObject {
-  1: binary serialized_java;
-  2: ShellComponent shell;
-  3: JavaObject java_object;
-}
-```
-
-For a Python DSL, you would want to make use of "2" and "3". ShellComponent lets you specify a script to run that component (e.g., your python code). And JavaObject lets you specify native java spouts and bolts for the component (and Storm will use reflection to create that spout or bolt).
-
-There's a "storm shell" command that will help with submitting a topology. Its usage is like this:
-
-```
-storm shell resources/ python topology.py arg1 arg2
-```
-
-storm shell will then package resources/ into a jar, upload the jar to Nimbus, and call your topology.py script like this:
-
-```
-python topology.py arg1 arg2 {nimbus-host} {nimbus-port} {uploaded-jar-location}
-```
-
-Then you can connect to Nimbus using the Thrift API and submit the topology, passing {uploaded-jar-location} into the submitTopology method. For reference, here's the submitTopology definition:
-
-```java
-void submitTopology(1: string name, 2: string uploadedJarLocation, 3: string jsonConf, 4: StormTopology topology) throws (1: AlreadyAliveException e, 2: InvalidTopologyException ite);
-```
-
-Finally, one of the key things to do in a non-JVM DSL is make it easy to define the entire topology in one file (the bolts, spouts, and the definition of the topology).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Distributed-RPC.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Distributed-RPC.md b/docs/documentation/Distributed-RPC.md
deleted file mode 100644
index 484178b..0000000
--- a/docs/documentation/Distributed-RPC.md
+++ /dev/null
@@ -1,199 +0,0 @@
----
-title: Distributed RPC
-layout: documentation
-documentation: true
----
-The idea behind distributed RPC (DRPC) is to parallelize the computation of really intense functions on the fly using Storm. The Storm topology takes in as input a stream of function arguments, and it emits an output stream of the results for each of those function calls. 
-
-DRPC is not so much a feature of Storm as it is a pattern expressed from Storm's primitives of streams, spouts, bolts, and topologies. DRPC could have been packaged as a separate library from Storm, but it's so useful that it's bundled with Storm.
-
-### High level overview
-
-Distributed RPC is coordinated by a "DRPC server" (Storm comes packaged with an implementation of this). The DRPC server coordinates receiving an RPC request, sending the request to the Storm topology, receiving the results from the Storm topology, and sending the results back to the waiting client. From a client's perspective, a distributed RPC call looks just like a regular RPC call. For example, here's how a client would compute the results for the "reach" function with the argument "http://twitter.com":
-
-```java
-DRPCClient client = new DRPCClient("drpc-host", 3772);
-String result = client.execute("reach", "http://twitter.com");
-```
-
-The distributed RPC workflow looks like this:
-
-![Tasks in a topology](images/drpc-workflow.png)
-
-A client sends the DRPC server the name of the function to execute and the arguments to that function. The topology implementing that function uses a `DRPCSpout` to receive a function invocation stream from the DRPC server. Each function invocation is tagged with a unique id by the DRPC server. The topology then computes the result and at the end of the topology a bolt called `ReturnResults` connects to the DRPC server and gives it the result for the function invocation id. The DRPC server then uses the id to match up that result with which client is waiting, unblocks the waiting client, and sends it the result.
-
-### LinearDRPCTopologyBuilder
-
-Storm comes with a topology builder called [LinearDRPCTopologyBuilder](/javadoc/apidocs/backtype/storm/drpc/LinearDRPCTopologyBuilder.html) that automates almost all the steps involved for doing DRPC. These include:
-
-1. Setting up the spout
-2. Returning the results to the DRPC server
-3. Providing functionality to bolts for doing finite aggregations over groups of tuples
-
-Let's look at a simple example. Here's the implementation of a DRPC topology that returns its input argument with a "!" appended:
-
-```java
-public static class ExclaimBolt extends BaseBasicBolt {
-    public void execute(Tuple tuple, BasicOutputCollector collector) {
-        String input = tuple.getString(1);
-        collector.emit(new Values(tuple.getValue(0), input + "!"));
-    }
-
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("id", "result"));
-    }
-}
-
-public static void main(String[] args) throws Exception {
-    LinearDRPCTopologyBuilder builder = new LinearDRPCTopologyBuilder("exclamation");
-    builder.addBolt(new ExclaimBolt(), 3);
-    // ...
-}
-```
-
-As you can see, there's very little to it. When creating the `LinearDRPCTopologyBuilder`, you tell it the name of the DRPC function for the topology. A single DRPC server can coordinate many functions, and the function name distinguishes the functions from one another. The first bolt you declare will take in as input 2-tuples, where the first field is the request id and the second field is the arguments for that request. `LinearDRPCTopologyBuilder` expects the last bolt to emit an output stream containing 2-tuples of the form [id, result]. Finally, all intermediate tuples must contain the request id as the first field.
-
-In this example, `ExclaimBolt` simply appends a "!" to the second field of the tuple. `LinearDRPCTopologyBuilder` handles the rest of the coordination of connecting to the DRPC server and sending results back.
-
-### Local mode DRPC
-
-DRPC can be run in local mode. Here's how to run the above example in local mode:
-
-```java
-LocalDRPC drpc = new LocalDRPC();
-LocalCluster cluster = new LocalCluster();
-
-cluster.submitTopology("drpc-demo", conf, builder.createLocalTopology(drpc));
-
-System.out.println("Results for 'hello':" + drpc.execute("exclamation", "hello"));
-
-cluster.shutdown();
-drpc.shutdown();
-```
-
-First you create a `LocalDRPC` object. This object simulates a DRPC server in process, just like how `LocalCluster` simulates a Storm cluster in process. Then you create the `LocalCluster` to run the topology in local mode. `LinearDRPCTopologyBuilder` has separate methods for creating local topologies and remote topologies. In local mode the `LocalDRPC` object does not bind to any ports so the topology needs to know about the object to communicate with it. This is why `createLocalTopology` takes in the `LocalDRPC` object as input.
-
-After launching the topology, you can do DRPC invocations using the `execute` method on `LocalDRPC`.
-
-### Remote mode DRPC
-
-Using DRPC on an actual cluster is also straightforward. There's three steps:
-
-1. Launch DRPC server(s)
-2. Configure the locations of the DRPC servers
-3. Submit DRPC topologies to Storm cluster
-
-Launching a DRPC server can be done with the `storm` script and is just like launching Nimbus or the UI:
-
-```
-bin/storm drpc
-```
-
-Next, you need to configure your Storm cluster to know the locations of the DRPC server(s). This is how `DRPCSpout` knows from where to read function invocations. This can be done through the `storm.yaml` file or the topology configurations. Configuring this through the `storm.yaml` looks something like this:
-
-```yaml
-drpc.servers:
-  - "drpc1.foo.com"
-  - "drpc2.foo.com"
-```
-
-Finally, you launch DRPC topologies using `StormSubmitter` just like you launch any other topology. To run the above example in remote mode, you do something like this:
-
-```java
-StormSubmitter.submitTopology("exclamation-drpc", conf, builder.createRemoteTopology());
-```
-
-`createRemoteTopology` is used to create topologies suitable for Storm clusters.
-
-### A more complex example
-
-The exclamation DRPC example was a toy example for illustrating the concepts of DRPC. Let's look at a more complex example which really needs the parallelism a Storm cluster provides for computing the DRPC function. The example we'll look at is computing the reach of a URL on Twitter.
-
-The reach of a URL is the number of unique people exposed to a URL on Twitter. To compute reach, you need to:
-
-1. Get all the people who tweeted the URL
-2. Get all the followers of all those people
-3. Unique the set of followers
-4. Count the unique set of followers
-
-A single reach computation can involve thousands of database calls and tens of millions of follower records during the computation. It's a really, really intense computation. As you're about to see, implementing this function on top of Storm is dead simple. On a single machine, reach can take minutes to compute; on a Storm cluster, you can compute reach for even the hardest URLs in a couple seconds.
-
-A sample reach topology is defined in storm-starter [here](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/ReachTopology.java). Here's how you define the reach topology:
-
-```java
-LinearDRPCTopologyBuilder builder = new LinearDRPCTopologyBuilder("reach");
-builder.addBolt(new GetTweeters(), 3);
-builder.addBolt(new GetFollowers(), 12)
-        .shuffleGrouping();
-builder.addBolt(new PartialUniquer(), 6)
-        .fieldsGrouping(new Fields("id", "follower"));
-builder.addBolt(new CountAggregator(), 2)
-        .fieldsGrouping(new Fields("id"));
-```
-
-The topology executes as four steps:
-
-1. `GetTweeters` gets the users who tweeted the URL. It transforms an input stream of `[id, url]` into an output stream of `[id, tweeter]`. Each `url` tuple will map to many `tweeter` tuples.
-2. `GetFollowers` gets the followers for the tweeters. It transforms an input stream of `[id, tweeter]` into an output stream of `[id, follower]`. Across all the tasks, there may of course be duplication of follower tuples when someone follows multiple people who tweeted the same URL.
-3. `PartialUniquer` groups the followers stream by the follower id. This has the effect of the same follower going to the same task. So each task of `PartialUniquer` will receive mutually independent sets of followers. Once `PartialUniquer` receives all the follower tuples directed at it for the request id, it emits the unique count of its subset of followers.
-4. Finally, `CountAggregator` receives the partial counts from each of the `PartialUniquer` tasks and sums them up to complete the reach computation.
-
-Let's take a look at the `PartialUniquer` bolt:
-
-```java
-public class PartialUniquer extends BaseBatchBolt {
-    BatchOutputCollector _collector;
-    Object _id;
-    Set<String> _followers = new HashSet<String>();
-    
-    @Override
-    public void prepare(Map conf, TopologyContext context, BatchOutputCollector collector, Object id) {
-        _collector = collector;
-        _id = id;
-    }
-
-    @Override
-    public void execute(Tuple tuple) {
-        _followers.add(tuple.getString(1));
-    }
-    
-    @Override
-    public void finishBatch() {
-        _collector.emit(new Values(_id, _followers.size()));
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("id", "partial-count"));
-    }
-}
-```
-
-`PartialUniquer` implements `IBatchBolt` by extending `BaseBatchBolt`. A batch bolt provides a first class API to processing a batch of tuples as a concrete unit. A new instance of the batch bolt is created for each request id, and Storm takes care of cleaning up the instances when appropriate. 
-
-When `PartialUniquer` receives a follower tuple in the `execute` method, it adds it to the set for the request id in an internal `HashSet`. 
-
-Batch bolts provide the `finishBatch` method which is called after all the tuples for this batch targeted at this task have been processed. In the callback, `PartialUniquer` emits a single tuple containing the unique count for its subset of follower ids.
-
-Under the hood, `CoordinatedBolt` is used to detect when a given bolt has received all of the tuples for any given request id. `CoordinatedBolt` makes use of direct streams to manage this coordination.
-
-The rest of the topology should be self-explanatory. As you can see, every single step of the reach computation is done in parallel, and defining the DRPC topology was extremely simple.
-
-### Non-linear DRPC topologies
-
-`LinearDRPCTopologyBuilder` only handles "linear" DRPC topologies, where the computation is expressed as a sequence of steps (like reach). It's not hard to imagine functions that would require a more complicated topology with branching and merging of the bolts. For now, to do this you'll need to drop down into using `CoordinatedBolt` directly. Be sure to talk about your use case for non-linear DRPC topologies on the mailing list to inform the construction of more general abstractions for DRPC topologies.
-
-### How LinearDRPCTopologyBuilder works
-
-* DRPCSpout emits [args, return-info]. return-info is the host and port of the DRPC server as well as the id generated by the DRPC server
-* constructs a topology comprising of:
-  * DRPCSpout
-  * PrepareRequest (generates a request id and creates a stream for the return info and a stream for the args)
-  * CoordinatedBolt wrappers and direct groupings
-  * JoinResult (joins the result with the return info)
-  * ReturnResult (connects to the DRPC server and returns the result)
-* LinearDRPCTopologyBuilder is a good example of a higher level abstraction built on top of Storm's primitives
-
-### Advanced
-* KeyedFairBolt for weaving the processing of multiple requests at the same time
-* How to use `CoordinatedBolt` directly
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Documentation.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Documentation.md b/docs/documentation/Documentation.md
deleted file mode 100644
index ab555c1..0000000
--- a/docs/documentation/Documentation.md
+++ /dev/null
@@ -1,56 +0,0 @@
----
-title: Documentation
-layout: documentation
-documentation: true
----
-### Basics of Storm
-
-* [Javadoc](/javadoc/apidocs/index.html)
-* [Concepts](Concepts.html)
-* [Configuration](Configuration.html)
-* [Guaranteeing message processing](Guaranteeing-message-processing.html)
-* [Fault-tolerance](Fault-tolerance.html)
-* [Command line client](Command-line-client.html)
-* [Understanding the parallelism of a Storm topology](Understanding-the-parallelism-of-a-Storm-topology.html)
-* [FAQ](FAQ.html)
-
-### Trident
-
-Trident is an alternative interface to Storm. It provides exactly-once processing, "transactional" datastore persistence, and a set of common stream analytics operations.
-
-* [Trident Tutorial](Trident-tutorial.html)     -- basic concepts and walkthrough
-* [Trident API Overview](Trident-API-Overview.html) -- operations for transforming and orchestrating data
-* [Trident State](Trident-state.html)        -- exactly-once processing and fast, persistent aggregation
-* [Trident spouts](Trident-spouts.html)       -- transactional and non-transactional data intake
-
-### Setup and deploying
-
-* [Setting up a Storm cluster](Setting-up-a-Storm-cluster.html)
-* [Local mode](Local-mode.html)
-* [Troubleshooting](Troubleshooting.html)
-* [Running topologies on a production cluster](Running-topologies-on-a-production-cluster.html)
-* [Building Storm](Maven.html) with Maven
-
-### Intermediate
-
-* [Serialization](Serialization.html)
-* [Common patterns](Common-patterns.html)
-* [Clojure DSL](Clojure-DSL.html)
-* [Using non-JVM languages with Storm](Using-non-JVM-languages-with-Storm.html)
-* [Distributed RPC](Distributed-RPC.html)
-* [Transactional topologies](Transactional-topologies.html)
-* [Kestrel and Storm](Kestrel-and-Storm.html)
-* [Direct groupings](Direct-groupings.html)
-* [Hooks](Hooks.html)
-* [Metrics](Metrics.html)
-* [Lifecycle of a trident tuple]()
-* [UI REST API](ui-rest-api.html)
-* [Logs](Logs.html)
-* [Dynamic Log Level Settings](dynamic-log-level-settings.html)
-* [Dynamic Worker Profiling](dynamic-worker-profiling.html)
-
-### Advanced
-
-* [Defining a non-JVM language DSL for Storm](Defining-a-non-jvm-language-dsl-for-storm.html)
-* [Multilang protocol](Multilang-protocol.html) (how to provide support for another language)
-* [Implementation docs](Implementation-docs.html)

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/FAQ.md
----------------------------------------------------------------------
diff --git a/docs/documentation/FAQ.md b/docs/documentation/FAQ.md
deleted file mode 100644
index a65da1e..0000000
--- a/docs/documentation/FAQ.md
+++ /dev/null
@@ -1,130 +0,0 @@
----
-title: FAQ
-layout: documentation
-documentation: true
----
-
-## Best Practices
-
-### What rules of thumb can you give me for configuring Storm+Trident?
-
-* number of workers a multiple of number of machines; parallelism a multiple of number of workers; number of kafka partitions a multiple of number of spout parallelism
-* Use one worker per topology per machine
-* Start with fewer, larger aggregators, one per machine with workers on it
-* Use the isolation scheduler
-* Use one acker per worker -- 0.9 makes that the default, but earlier versions do not.
-* enable GC logging; you should see very few major GCs if things are in reasonable shape.
-* set the trident batch millis to about 50% of your typical end-to-end latency.
-* Start with a max spout pending that is for sure too small -- one for trident, or the number of executors for storm -- and increase it until you stop seeing changes in the flow. You'll probably end up with something near `2*(throughput in recs/sec)*(end-to-end latency)` (2x the Little's law capacity).
-
-### What are some of the best ways to get a worker to mysteriously and bafflingly die?
-
-* Do you have write access to the log directory
-* Are you blowing out your heap?
-* Are all the right libraries installed on all of the workers?
-* Is the zookeeper hostname still set to localhost?
-* Did you supply a correct, unique hostname -- one that resolves back to the machine -- to each worker, and put it in the storm conf file?
-* Have you opened firewall/securitygroup permissions _bidirectionally_ among a) all the workers, b) the storm master, c) zookeeper? Also, from the workers to any kafka/kestrel/database/etc that your topology accesses? Use netcat to poke the appropriate ports and be sure. 
-
-### Halp! I cannot see:
-
-* **my logs** Logs by default go to $STORM_HOME/logs. Check that you have write permissions to that directory. They are configured in 
-    * log4j2/{cluster, worker}.xml (> 0.9);
-    * logback/cluster.xml (0.9);
-    * log4j/*.properties in earlier versions (< 0.9).
-* **final JVM settings** Add the `-XX+PrintFlagsFinal` commandline option in the childopts (see the conf file)
-* **final Java system properties** Add `Properties props = System.getProperties(); props.list(System.out);` near where you build your topology.
-
-### How many Workers should I use?
-
-The total number of workers is set by the supervisors -- there's some number of JVM slots each supervisor will superintend. The thing you set on the topology is how many worker slots it will try to claim.
-
-There's no great reason to use more than one worker per topology per machine.
-
-With one topology running on three 8-core nodes, and parallelism hint 24, each bolt gets 8 executors per machine, i.e. one for each core. There are three big benefits to running three workers (with 8 assigned executors each) compare to running say 24 workers (one assigned executor each).
-
-First, data that is repartitioned (shuffles or group-bys) to executors in the same worker will not have to hit the transfer buffer. Instead, tuples are deposited directly from send to receive buffer. That's a big win. By contrast, if the destination executor were on the same machine in a different worker, it would have to go send -> worker transfer -> local socket -> worker recv -> exec recv buffer. It doesn't hit the network card, but it's not as big a win as when executors are in the same worker.
-
-Second, you're typically better off with three aggregators having very large backing cache than having twenty-four aggregators having small backing caches. This reduces the effect of skew, and improves LRU efficiency.
-
-Lastly, fewer workers reduces control flow chatter.
-
-## Topology
-
-### Can a Trident topology have Multiple Streams?
-
-> Can a Trident Topology work like a workflow with conditional paths (if-else)? e.g. A Spout (S1) connects to a bolt (B0) which based on certain values in the incoming tuple routes them to either bolt (B1) or bolt (B2) but not both.
-
-A Trident "each" operator returns a Stream object, which you can store in a variable. You can then run multiple eaches on the same Stream to split it, e.g.: 
-
-        Stream s = topology.each(...).groupBy(...).aggregate(...) 
-        Stream branch1 = s.each(..., FilterA) 
-        Stream branch2 = s.each(..., FilterB) 
-
-You can join streams with join, merge or multiReduce.
-
-At time of writing, you can't emit to multiple output streams from Trident -- see [STORM-68](https://issues.apache.org/jira/browse/STORM-68)
-
-### Why am I getting a NotSerializableException/IllegalStateException when my topology is being started up?
-
-Within the Storm lifecycle, the topology is instantiated and then serialized to byte format to be stored in ZooKeeper, prior to the topology being executed. Within this step, if a spout or bolt within the topology has an initialized unserializable property, serialization will fail. If there is a need for a field that is unserializable, initialize it within the bolt or spout's prepare method, which is run after the topology is delivered to the worker.
-
-## Spouts
-
-### What is a coordinator, and why are there several?
-
-A trident-spout is actually run within a storm _bolt_. The storm-spout of a trident topology is the MasterBatchCoordinator -- it coordinates trident batches and is the same no matter what spouts you use. A batch is born when the MBC dispenses a seed tuple to each of the spout-coordinators. The spout-coordinator bolts know how your particular spouts should cooperate -- so in the kafka case, it's what helps figure out what partition and offset range each spout should pull from.
-
-### What can I store into the spout's metadata record?
-
-You should only store static data, and as little of it as possible, into the metadata record (note: maybe you _can_ store more interesting things; you shouldn't, though)
-
-### How often is the 'emitPartitionBatchNew' function called?
-
-Since the MBC is the actual spout, all the tuples in a batch are just members of its tupletree. That means storm's "max spout pending" config effectively defines the number of concurrent batches trident runs. The MBC emits a new batch if it has fewer than max-spending tuples pending and if at least one [trident batch interval](https://github.com/apache/storm/blob/master/conf/defaults.yaml#L115)'s worth of seconds has passed since the last batch.
-
-### If nothing was emitted does Trident slow down the calls?
-
-Yes, there's a pluggable "spout wait strategy"; the default is to sleep for a [configurable amount of time](https://github.com/apache/storm/blob/master/conf/defaults.yaml#L110)
-
-### OK, then what is the trident batch interval for?
-
-You know how computers of the 486 era had a [turbo button](http://en.wikipedia.org/wiki/Turbo_button) on them? It's like that. 
-
-Actually, it has two practical uses. One is to throttle spouts that poll a remote source without throttling processing. For example, we have a spout that looks in a given S3 bucket for a new batch-uploaded file to read, linebreak and emit. We don't want it hitting S3 more than every few seconds: files don't show up more than once every few minutes, and a batch takes a few seconds to process.
-
-The other is to limit overpressure on the internal queues during startup or under a heavy burst load -- if the spouts spring to life and suddenly jam ten batches' worth of records into the system, you could have a mass of less-urgent tuples from batch 7 clog up the transfer buffer and prevent the $commit tuple from batch 3 to get through (or even just the regular old tuples from batch 3). What we do is set the trident batch interval to about half the typical end-to-end processing latency -- if it takes 600ms to process a batch, it's OK to only kick off a batch every 300ms.
-
-Note that this is a cap, not an additional delay -- with a period of 300ms, if your batch takes 258ms Trident will only delay an additional 42ms.
-
-### How do you set the batch size?
-
-Trident doesn't place its own limits on the batch count. In the case of the Kafka spout, the max fetch bytes size divided by the average record size defines an effective records per subbatch partition.
-
-### How do I resize a batch?
-
-The trident batch is a somewhat overloaded facility. Together with the number of partitions, the batch size is constrained by or serves to define
-
-1. the unit of transactional safety (tuples at risk vs time)
-2. per partition, an effective windowing mechanism for windowed stream analytics
-3. per partition, the number of simultaneous queries that will be made by a partitionQuery, partitionPersist, etc;
-4. per partition, the number of records convenient for the spout to dispatch at the same time;
-
-You can't change the overall batch size once generated, but you can change the number of partitions -- do a shuffle and then change the parallelism hint
-
-## Time Series
-
-### How do I aggregate events by time?
-
-If you have records with an immutable timestamp, and you would like to count, average or otherwise aggregate them into discrete time buckets, Trident is an excellent and scalable solution.
-
-Write an `Each` function that turns the timestamp into a time bucket: if the bucket size was "by hour", then the timestamp `2013-08-08 12:34:56` would be mapped to the `2013-08-08 12:00:00` time bucket, and so would everything else in the twelve o'clock hour. Then group on that timebucket and use a grouped persistentAggregate. The persistentAggregate uses a local cacheMap backed by a data store. Groups with many records require very few reads from the data store, and use efficient bulk reads and writes; as long as your data feed is relatively prompt Trident will make very efficient use of memory and network. Even if a server drops off line for a day, then delivers that full day's worth of data in a rush, the old results will be calmly retrieved and updated -- and without interfering with calculating the current results.
-
-### How can I know that all records for a time bucket have been received?
-
-You cannot know that all events are collected -- this is an epistemological challenge, not a distributed systems challenge. You can:
-
-* Set a time limit using domain knowledge
-* Introduce a _punctuation_: a record known to come after all records in the given time bucket. Trident uses this scheme to know when a batch is complete. If you for instance receive records from a set of sensors, each in order for that sensor, then once all sensors have sent you a 3:02:xx or later timestamp lets you know you can commit. 
-* When possible, make your process incremental: each value that comes in makes the answer more an more true. A Trident ReducerAggregator is an operator that takes a prior result and a set of new records and returns a new result. This lets the result be cached and serialized to a datastore; if a server drops off line for a day and then comes back with a full day's worth of data in a rush, the old results will be calmly retrieved and updated.
-* Lambda architecture: Record all events into an archival store (S3, HBase, HDFS) on receipt. in the fast layer, once the time window is clear, process the bucket to get an actionable answer, and ignore everything older than the time window. Periodically run a global aggregation to calculate a "correct" answer.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Fault-tolerance.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Fault-tolerance.md b/docs/documentation/Fault-tolerance.md
deleted file mode 100644
index d70fd1d..0000000
--- a/docs/documentation/Fault-tolerance.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-title: Fault Tolerance
-layout: documentation
-documentation: true
----
-This page explains the design details of Storm that make it a fault-tolerant system.
-
-## What happens when a worker dies?
-
-When a worker dies, the supervisor will restart it. If it continuously fails on startup and is unable to heartbeat to Nimbus, Nimbus will reassign the worker to another machine.
-
-## What happens when a node dies?
-
-The tasks assigned to that machine will time-out and Nimbus will reassign those tasks to other machines.
-
-## What happens when Nimbus or Supervisor daemons die?
-
-The Nimbus and Supervisor daemons are designed to be fail-fast (process self-destructs whenever any unexpected situation is encountered) and stateless (all state is kept in Zookeeper or on disk). As described in [Setting up a Storm cluster](Setting-up-a-Storm-cluster.html), the Nimbus and Supervisor daemons must be run under supervision using a tool like daemontools or monit. So if the Nimbus or Supervisor daemons die, they restart like nothing happened.
-
-Most notably, no worker processes are affected by the death of Nimbus or the Supervisors. This is in contrast to Hadoop, where if the JobTracker dies, all the running jobs are lost. 
-
-## Is Nimbus a single point of failure?
-
-If you lose the Nimbus node, the workers will still continue to function. Additionally, supervisors will continue to restart workers if they die. However, without Nimbus, workers won't be reassigned to other machines when necessary (like if you lose a worker machine). 
-
-So the answer is that Nimbus is "sort of" a SPOF. In practice, it's not a big deal since nothing catastrophic happens when the Nimbus daemon dies. There are plans to make Nimbus highly available in the future.
-
-## How does Storm guarantee data processing?
-
-Storm provides mechanisms to guarantee data processing even if nodes die or messages are lost. See [Guaranteeing message processing](Guaranteeing-message-processing.html) for the details.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Guaranteeing-message-processing.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Guaranteeing-message-processing.md b/docs/documentation/Guaranteeing-message-processing.md
deleted file mode 100644
index 9ade3fa..0000000
--- a/docs/documentation/Guaranteeing-message-processing.md
+++ /dev/null
@@ -1,181 +0,0 @@
----
-title: Guaranteeing Message Processing
-layout: documentation
-documentation: true
----
-Storm guarantees that each message coming off a spout will be fully processed. This page describes how Storm accomplishes this guarantee and what you have to do as a user to benefit from Storm's reliability capabilities.
-
-### What does it mean for a message to be "fully processed"?
-
-A tuple coming off a spout can trigger thousands of tuples to be created based on it. Consider, for example, the streaming word count topology:
-
-```java
-TopologyBuilder builder = new TopologyBuilder();
-builder.setSpout("sentences", new KestrelSpout("kestrel.backtype.com",
-                                               22133,
-                                               "sentence_queue",
-                                               new StringScheme()));
-builder.setBolt("split", new SplitSentence(), 10)
-        .shuffleGrouping("sentences");
-builder.setBolt("count", new WordCount(), 20)
-        .fieldsGrouping("split", new Fields("word"));
-```
-
-This topology reads sentences off of a Kestrel queue, splits the sentences into its constituent words, and then emits for each word the number of times it has seen that word before. A tuple coming off the spout triggers many tuples being created based on it: a tuple for each word in the sentence and a tuple for the updated count for each word. The tree of messages looks something like this:
-
-![Tuple tree](images/tuple_tree.png)
-
-Storm considers a tuple coming off a spout "fully processed" when the tuple tree has been exhausted and every message in the tree has been processed. A tuple is considered failed when its tree of messages fails to be fully processed within a specified timeout. This timeout can be configured on a topology-specific basis using the [Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_MESSAGE_TIMEOUT_SECS) configuration and defaults to 30 seconds.
-
-### What happens if a message is fully processed or fails to be fully processed?
-
-To understand this question, let's take a look at the lifecycle of a tuple coming off of a spout. For reference, here is the interface that spouts implement (see the [Javadoc](/javadoc/apidocs/backtype/storm/spout/ISpout.html) for more information):
-
-```java
-public interface ISpout extends Serializable {
-    void open(Map conf, TopologyContext context, SpoutOutputCollector collector);
-    void close();
-    void nextTuple();
-    void ack(Object msgId);
-    void fail(Object msgId);
-}
-```
-
-First, Storm requests a tuple from the `Spout` by calling the `nextTuple` method on the `Spout`. The `Spout` uses the `SpoutOutputCollector` provided in the `open` method to emit a tuple to one of its output streams. When emitting a tuple, the `Spout` provides a "message id" that will be used to identify the tuple later. For example, the `KestrelSpout` reads a message off of the kestrel queue and emits as the "message id" the id provided by Kestrel for the message. Emitting a message to the `SpoutOutputCollector` looks like this:
-
-```java
-_collector.emit(new Values("field1", "field2", 3) , msgId);
-```
-
-Next, the tuple gets sent to consuming bolts and Storm takes care of tracking the tree of messages that is created. If Storm detects that a tuple is fully processed, Storm will call the `ack` method on the originating `Spout` task with the message id that the `Spout` provided to Storm. Likewise, if the tuple times-out Storm will call the `fail` method on the `Spout`. Note that a tuple will be acked or failed by the exact same `Spout` task that created it. So if a `Spout` is executing as many tasks across the cluster, a tuple won't be acked or failed by a different task than the one that created it.
-
-Let's use `KestrelSpout` again to see what a `Spout` needs to do to guarantee message processing. When `KestrelSpout` takes a message off the Kestrel queue, it "opens" the message. This means the message is not actually taken off the queue yet, but instead placed in a "pending" state waiting for acknowledgement that the message is completed. While in the pending state, a message will not be sent to other consumers of the queue. Additionally, if a client disconnects all pending messages for that client are put back on the queue. When a message is opened, Kestrel provides the client with the data for the message as well as a unique id for the message. The `KestrelSpout` uses that exact id as the "message id" for the tuple when emitting the tuple to the `SpoutOutputCollector`. Sometime later on, when `ack` or `fail` are called on the `KestrelSpout`, the `KestrelSpout` sends an ack or fail message to Kestrel with the message id to take the message off the queue or have it put back on.
-
-### What is Storm's reliability API?
-
-There's two things you have to do as a user to benefit from Storm's reliability capabilities. First, you need to tell Storm whenever you're creating a new link in the tree of tuples. Second, you need to tell Storm when you have finished processing an individual tuple. By doing both these things, Storm can detect when the tree of tuples is fully processed and can ack or fail the spout tuple appropriately. Storm's API provides a concise way of doing both of these tasks. 
-
-Specifying a link in the tuple tree is called _anchoring_. Anchoring is done at the same time you emit a new tuple. Let's use the following bolt as an example. This bolt splits a tuple containing a sentence into a tuple for each word:
-
-```java
-public class SplitSentence extends BaseRichBolt {
-        OutputCollector _collector;
-        
-        public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
-            _collector = collector;
-        }
-
-        public void execute(Tuple tuple) {
-            String sentence = tuple.getString(0);
-            for(String word: sentence.split(" ")) {
-                _collector.emit(tuple, new Values(word));
-            }
-            _collector.ack(tuple);
-        }
-
-        public void declareOutputFields(OutputFieldsDeclarer declarer) {
-            declarer.declare(new Fields("word"));
-        }        
-    }
-```
-
-Each word tuple is _anchored_ by specifying the input tuple as the first argument to `emit`. Since the word tuple is anchored, the spout tuple at the root of the tree will be replayed later on if the word tuple failed to be processed downstream. In contrast, let's look at what happens if the word tuple is emitted like this:
-
-```java
-_collector.emit(new Values(word));
-```
-
-Emitting the word tuple this way causes it to be _unanchored_. If the tuple fails be processed downstream, the root tuple will not be replayed. Depending on the fault-tolerance guarantees you need in your topology, sometimes it's appropriate to emit an unanchored tuple.
-
-An output tuple can be anchored to more than one input tuple. This is useful when doing streaming joins or aggregations. A multi-anchored tuple failing to be processed will cause multiple tuples to be replayed from the spouts. Multi-anchoring is done by specifying a list of tuples rather than just a single tuple. For example:
-
-```java
-List<Tuple> anchors = new ArrayList<Tuple>();
-anchors.add(tuple1);
-anchors.add(tuple2);
-_collector.emit(anchors, new Values(1, 2, 3));
-```
-
-Multi-anchoring adds the output tuple into multiple tuple trees. Note that it's also possible for multi-anchoring to break the tree structure and create tuple DAGs, like so:
-
-![Tuple DAG](images/tuple-dag.png)
-
-Storm's implementation works for DAGs as well as trees (pre-release it only worked for trees, and the name "tuple tree" stuck).
-
-Anchoring is how you specify the tuple tree -- the next and final piece to Storm's reliability API is specifying when you've finished processing an individual tuple in the tuple tree. This is done by using the `ack` and `fail` methods on the `OutputCollector`. If you look back at the `SplitSentence` example, you can see that the input tuple is acked after all the word tuples are emitted.
-
-You can use the `fail` method on the `OutputCollector` to immediately fail the spout tuple at the root of the tuple tree. For example, your application may choose to catch an exception from a database client and explicitly fail the input tuple. By failing the tuple explicitly, the spout tuple can be replayed faster than if you waited for the tuple to time-out.
-
-Every tuple you process must be acked or failed. Storm uses memory to track each tuple, so if you don't ack/fail every tuple, the task will eventually run out of memory. 
-
-A lot of bolts follow a common pattern of reading an input tuple, emitting tuples based on it, and then acking the tuple at the end of the `execute` method. These bolts fall into the categories of filters and simple functions. Storm has an interface called `BasicBolt` that encapsulates this pattern for you. The `SplitSentence` example can be written as a `BasicBolt` like follows:
-
-```java
-public class SplitSentence extends BaseBasicBolt {
-        public void execute(Tuple tuple, BasicOutputCollector collector) {
-            String sentence = tuple.getString(0);
-            for(String word: sentence.split(" ")) {
-                collector.emit(new Values(word));
-            }
-        }
-
-        public void declareOutputFields(OutputFieldsDeclarer declarer) {
-            declarer.declare(new Fields("word"));
-        }        
-    }
-```
-
-This implementation is simpler than the implementation from before and is semantically identical. Tuples emitted to `BasicOutputCollector` are automatically anchored to the input tuple, and the input tuple is acked for you automatically when the execute method completes.
-
-In contrast, bolts that do aggregations or joins may delay acking a tuple until after it has computed a result based on a bunch of tuples. Aggregations and joins will commonly multi-anchor their output tuples as well. These things fall outside the simpler pattern of `IBasicBolt`.
-
-### How do I make my applications work correctly given that tuples can be replayed?
-
-As always in software design, the answer is "it depends." Storm 0.7.0 introduced the "transactional topologies" feature, which enables you to get fully fault-tolerant exactly-once messaging semantics for most computations. Read more about transactional topologies [here](Transactional-topologies.html). 
-
-
-### How does Storm implement reliability in an efficient way?
-
-A Storm topology has a set of special "acker" tasks that track the DAG of tuples for every spout tuple. When an acker sees that a DAG is complete, it sends a message to the spout task that created the spout tuple to ack the message. You can set the number of acker executors for a topology in the topology configuration using [Config.TOPOLOGY_ACKER_EXECUTORS](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_ACKER_EXECUTORS). Storm defaults TOPOLOGY_ACKER_EXECUTORS to be equal to the number of workers configured in the topology -- you will need to increase this number for topologies processing large amounts of messages.
-
-The best way to understand Storm's reliability implementation is to look at the lifecycle of tuples and tuple DAGs. When a tuple is created in a topology, whether in a spout or a bolt, it is given a random 64 bit id. These ids are used by ackers to track the tuple DAG for every spout tuple.
-
-Every tuple knows the ids of all the spout tuples for which it exists in their tuple trees. When you emit a new tuple in a bolt, the spout tuple ids from the tuple's anchors are copied into the new tuple. When a tuple is acked, it sends a message to the appropriate acker tasks with information about how the tuple tree changed. In particular it tells the acker "I am now completed within the tree for this spout tuple, and here are the new tuples in the tree that were anchored to me". 
-
-For example, if tuples "D" and "E" were created based on tuple "C", here's how the tuple tree changes when "C" is acked: 
-
-![What happens on an ack](images/ack_tree.png)
-
-Since "C" is removed from the tree at the same time that "D" and "E" are added to it, the tree can never be prematurely completed.
-
-There are a few more details to how Storm tracks tuple trees. As mentioned already, you can have an arbitrary number of acker tasks in a topology. This leads to the following question: when a tuple is acked in the topology, how does it know to which acker task to send that information? 
-
-Storm uses mod hashing to map a spout tuple id to an acker task. Since every tuple carries with it the spout tuple ids of all the trees they exist within, they know which acker tasks to communicate with. 
-
-Another detail of Storm is how the acker tasks track which spout tasks are responsible for each spout tuple they're tracking. When a spout task emits a new tuple, it simply sends a message to the appropriate acker telling it that its task id is responsible for that spout tuple. Then when an acker sees a tree has been completed, it knows to which task id to send the completion message.
-
-Acker tasks do not track the tree of tuples explicitly. For large tuple trees with tens of thousands of nodes (or more), tracking all the tuple trees could overwhelm the memory used by the ackers. Instead, the ackers take a different strategy that only requires a fixed amount of space per spout tuple (about 20 bytes). This tracking algorithm is the key to how Storm works and is one of its major breakthroughs.
-
-An acker task stores a map from a spout tuple id to a pair of values. The first value is the task id that created the spout tuple which is used later on to send completion messages. The second value is a 64 bit number called the "ack val". The ack val is a representation of the state of the entire tuple tree, no matter how big or how small.  It is simply the xor of all tuple ids that have been created and/or acked in the tree.
-
-When an acker task sees that an "ack val" has become 0, then it knows that the tuple tree is completed. Since tuple ids are random 64 bit numbers, the chances of an "ack val" accidentally becoming 0 is extremely small. If you work the math, at 10K acks per second, it will take 50,000,000 years until a mistake is made. And even then, it will only cause data loss if that tuple happens to fail in the topology.
-
-Now that you understand the reliability algorithm, let's go over all the failure cases and see how in each case Storm avoids data loss:
-
-- **A tuple isn't acked because the task died**: In this case the spout tuple ids at the root of the trees for the failed tuple will time out and be replayed.
-- **Acker task dies**: In this case all the spout tuples the acker was tracking will time out and be replayed.
-- **Spout task dies**: In this case the source that the spout talks to is responsible for replaying the messages. For example, queues like Kestrel and RabbitMQ will place all pending messages back on the queue when a client disconnects.
-
-As you have seen, Storm's reliability mechanisms are completely distributed, scalable, and fault-tolerant. 
-
-### Tuning reliability
-
-Acker tasks are lightweight, so you don't need very many of them in a topology. You can track their performance through the Storm UI (component id "__acker"). If the throughput doesn't look right, you'll need to add more acker tasks. 
-
-If reliability isn't important to you -- that is, you don't care about losing tuples in failure situations -- then you can improve performance by not tracking the tuple tree for spout tuples. Not tracking a tuple tree halves the number of messages transferred since normally there's an ack message for every tuple in the tuple tree. Additionally, it requires fewer ids to be kept in each downstream tuple, reducing bandwidth usage.
-
-There are three ways to remove reliability. The first is to set Config.TOPOLOGY_ACKERS to 0. In this case, Storm will call the `ack` method on the spout immediately after the spout emits a tuple. The tuple tree won't be tracked.
-
-The second way is to remove reliability on a message by message basis. You can turn off tracking for an individual spout tuple by omitting a message id in the `SpoutOutputCollector.emit` method.
-
-Finally, if you don't care if a particular subset of the tuples downstream in the topology fail to be processed, you can emit them as unanchored tuples. Since they're not anchored to any spout tuples, they won't cause any spout tuples to fail if they aren't acked.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Home.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Home.md b/docs/documentation/Home.md
deleted file mode 100644
index 452dfba..0000000
--- a/docs/documentation/Home.md
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Storm Documentation
-layout: documentation
----
-Storm is a distributed realtime computation system. Similar to how Hadoop provides a set of general primitives for doing batch processing, Storm provides a set of general primitives for doing realtime computation. Storm is simple, can be used with any programming language, [is used by many companies](/documentation/Powered-By.html), and is a lot of fun to use!
-
-### Read these first
-
-* [Rationale](Rationale.html)
-* [Tutorial](Tutorial.html)
-* [Setting up development environment](Setting-up-development-environment.html)
-* [Creating a new Storm project](Creating-a-new-Storm-project.html)
-
-### Documentation
-
-* [Documentation Index](/doc-index.html)
-* [Manual](Documentation.html)
-* [Javadoc](/javadoc/apidocs/index.html)
-* [FAQ](FAQ.html)
-
-### Getting help
-
-__NOTE:__ The google groups account storm-user@googlegroups.com is now officially deprecated in favor of the Apache-hosted user/dev mailing lists.
-
-#### Storm Users
-Storm users should send messages and subscribe to [user@storm.apache.org](mailto:user@storm.apache.org).
-
-You can subscribe to this list by sending an email to [user-subscribe@storm.apache.org](mailto:user-subscribe@storm.apache.org). Likewise, you can cancel a subscription by sending an email to [user-unsubscribe@storm.apache.org](mailto:user-unsubscribe@storm.apache.org).
-
-You can view the archives of the mailing list [here](http://mail-archives.apache.org/mod_mbox/storm-user/).
-
-#### Storm Developers
-Storm developers should send messages and subscribe to [dev@storm.apache.org](mailto:dev@storm.apache.org).
-
-You can subscribe to this list by sending an email to [dev-subscribe@storm.apache.org](mailto:dev-subscribe@storm.apache.org). Likewise, you can cancel a subscription by sending an email to [dev-unsubscribe@storm.apache.org](mailto:dev-unsubscribe@storm.apache.org).
-
-You can view the archives of the mailing list [here](http://mail-archives.apache.org/mod_mbox/storm-dev/).
-
-#### Which list should I send/subscribe to?
-If you are using a pre-built binary distribution of Storm, then chances are you should send questions, comments, storm-related announcements, etc. to [user@storm.apache.org](user@storm.apache.org). 
-
-If you are building storm from source, developing new features, or otherwise hacking storm source code, then [dev@storm.apache.org](dev@storm.apache.org) is more appropriate. 
-
-#### What will happen with storm-user@googlegroups.com?
-All existing messages will remain archived there, and can be accessed/searched [here](https://groups.google.com/forum/#!forum/storm-user).
-
-New messages sent to storm-user@googlegroups.com will either be rejected/bounced or replied to with a message to direct the email to the appropriate Apache-hosted group.
-
-#### IRC
-You can also come to the #storm-user room on [freenode](http://freenode.net/). You can usually find a Storm developer there to help you out.
-
-
-
-### Related projects
-
-* [storm-contrib](https://github.com/nathanmarz/storm-contrib)
-* [storm-deploy](http://github.com/nathanmarz/storm-deploy): One click deploys for Storm clusters on AWS
-* [Spout implementations](Spout-implementations.html)
-* [DSLs and multilang adapters](DSLs-and-multilang-adapters.html)
-* [Serializers](Serializers.html)
-
-### Contributing to Storm
-
-* [Contributing to Storm](Contributing-to-Storm.html)
-* [Project ideas](Project-ideas.html)
-
-### Powered by Storm
-
-[Companies and projects powered by Storm](Powered-By.html)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Hooks.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Hooks.md b/docs/documentation/Hooks.md
deleted file mode 100644
index e923348..0000000
--- a/docs/documentation/Hooks.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Hooks
-layout: documentation
-documentation: true
----
-Storm provides hooks with which you can insert custom code to run on any number of events within Storm. You create a hook by extending the [BaseTaskHook](/javadoc/apidocs/backtype/storm/hooks/BaseTaskHook.html) class and overriding the appropriate method for the event you want to catch. There are two ways to register your hook:
-
-1. In the open method of your spout or prepare method of your bolt using the [TopologyContext#addTaskHook](/javadoc/apidocs/backtype/storm/task/TopologyContext.html) method.
-2. Through the Storm configuration using the ["topology.auto.task.hooks"](/javadoc/apidocs/backtype/storm/Config.html#TOPOLOGY_AUTO_TASK_HOOKS) config. These hooks are automatically registered in every spout or bolt, and are useful for doing things like integrating with a custom monitoring system.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Implementation-docs.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Implementation-docs.md b/docs/documentation/Implementation-docs.md
deleted file mode 100644
index 9c3a427..0000000
--- a/docs/documentation/Implementation-docs.md
+++ /dev/null
@@ -1,20 +0,0 @@
----
-title: Storm Internal Implementation
-layout: documentation
-documentation: true
----
-This section of the wiki is dedicated to explaining how Storm is implemented. You should have a good grasp of how to use Storm before reading these sections. 
-
-- [Structure of the codebase](Structure-of-the-codebase.html)
-- [Lifecycle of a topology](Lifecycle-of-a-topology.html)
-- [Message passing implementation](Message-passing-implementation.html)
-- [Acking framework implementation](Acking-framework-implementation.html)
-- [Metrics](Metrics.html)
-- How transactional topologies work
-   - subtopology for TransactionalSpout
-   - how state is stored in ZK
-   - subtleties around what to do when emitting batches out of order
-- Unit testing
-  - time simulation
-  - complete-topology
-  - tracker clusters

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Installing-native-dependencies.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Installing-native-dependencies.md b/docs/documentation/Installing-native-dependencies.md
deleted file mode 100644
index 3207b8e..0000000
--- a/docs/documentation/Installing-native-dependencies.md
+++ /dev/null
@@ -1,38 +0,0 @@
----
-layout: documentation
----
-The native dependencies are only needed on actual Storm clusters. When running Storm in local mode, Storm uses a pure Java messaging system so that you don't need to install native dependencies on your development machine.
-
-Installing ZeroMQ and JZMQ is usually straightforward. Sometimes, however, people run into issues with autoconf and get strange errors. If you run into any issues, please email the [Storm mailing list](http://groups.google.com/group/storm-user) or come get help in the #storm-user room on freenode. 
-
-Storm has been tested with ZeroMQ 2.1.7, and this is the recommended ZeroMQ release that you install. You can download a ZeroMQ release [here](http://download.zeromq.org/). Installing ZeroMQ should look something like this:
-
-```
-wget http://download.zeromq.org/zeromq-2.1.7.tar.gz
-tar -xzf zeromq-2.1.7.tar.gz
-cd zeromq-2.1.7
-./configure
-make
-sudo make install
-```
-
-JZMQ is the Java bindings for ZeroMQ. JZMQ doesn't have any releases (we're working with them on that), so there is risk of a regression if you always install from the master branch. To prevent a regression from happening, you should instead install from [this fork](http://github.com/nathanmarz/jzmq) which is tested to work with Storm. Installing JZMQ should look something like this:
-
-```
-#install jzmq
-git clone https://github.com/nathanmarz/jzmq.git
-cd jzmq
-./autogen.sh
-./configure
-make
-sudo make install
-```
-
-To get the JZMQ build to work, you may need to do one or all of the following:
-
-1. Set JAVA_HOME environment variable appropriately
-2. Install Java dev package (more info [here](http://codeslinger.posterous.com/getting-zeromq-and-jzmq-running-on-mac-os-x) for Mac OSX users)
-3. Upgrade autoconf on your machine
-4. Follow the instructions in [this blog post](http://blog.pmorelli.com/getting-zeromq-and-jzmq-running-on-mac-os-x)
-
-If you run into any errors when running `./configure`, [this thread](http://stackoverflow.com/questions/3522248/how-do-i-compile-jzmq-for-zeromq-on-osx) may provide a solution.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Kestrel-and-Storm.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Kestrel-and-Storm.md b/docs/documentation/Kestrel-and-Storm.md
deleted file mode 100644
index f8eea2c..0000000
--- a/docs/documentation/Kestrel-and-Storm.md
+++ /dev/null
@@ -1,200 +0,0 @@
----
-title: Storm and Kestrel
-layout: documentation
-documentation: true
----
-This page explains how to use to Storm to consume items from a Kestrel cluster.
-
-## Preliminaries
-### Storm
-This tutorial uses examples from the [storm-kestrel](https://github.com/nathanmarz/storm-kestrel) project and the [storm-starter](http://github.com/apache/storm/blob/master/examples/storm-starter) project. It's recommended that you clone those projects and follow along with the examples. Read [Setting up development environment](Setting-up-development-environment.html) and [Creating a new Storm project](https://github.com/apache/storm/wiki/Creating-a-new-Storm-project) to get your machine set up.
-### Kestrel
-It assumes you are able to run locally a Kestrel server as described [here](https://github.com/nathanmarz/storm-kestrel).
-
-## Kestrel Server and Queue
-A single kestrel server has a set of queues. A Kestrel queue is a very simple message queue that runs on the JVM and uses the memcache protocol (with some extensions) to talk to clients. For details, look at the implementation of the [KestrelThriftClient](https://github.com/nathanmarz/storm-kestrel/blob/master/src/jvm/backtype/storm/spout/KestrelThriftClient.java) class provided in [storm-kestrel](https://github.com/nathanmarz/storm-kestrel) project.
-
-Each queue is strictly ordered following the FIFO (first in, first out) principle. To keep up with performance items are cached in system memory; though, only the first 128MB is kept in memory. When stopping the server, the queue state is stored in a journal file.
-
-Further, details can be found [here](https://github.com/nathanmarz/kestrel/blob/master/docs/guide.md).
-
-Kestrel is:
-* fast
-* small
-* durable
-* reliable
-
-For instance, Twitter uses Kestrel as the backbone of its messaging infrastructure as described [here] (http://bhavin.directi.com/notes-on-kestrel-the-open-source-twitter-queue/).
-
-## Add items to Kestrel
-At first, we need to have a program that can add items to a Kestrel queue. The following method takes benefit of the KestrelClient implementation in [storm-kestrel](https://github.com/nathanmarz/storm-kestrel). It adds sentences into a Kestrel queue randomly chosen out of an array that holds five possible sentences.
-
-```
-    private static void queueSentenceItems(KestrelClient kestrelClient, String queueName)
-			throws ParseError, IOException {
-
-		String[] sentences = new String[] {
-	            "the cow jumped over the moon",
-	            "an apple a day keeps the doctor away",
-	            "four score and seven years ago",
-	            "snow white and the seven dwarfs",
-	            "i am at two with nature"};
-
-		Random _rand = new Random();
-
-		for(int i=1; i<=10; i++){
-
-			String sentence = sentences[_rand.nextInt(sentences.length)];
-
-			String val = "ID " + i + " " + sentence;
-
-			boolean queueSucess = kestrelClient.queue(queueName, val);
-
-			System.out.println("queueSucess=" +queueSucess+ " [" + val +"]");
-		}
-	}
-```
-
-## Remove items from Kestrel
-
-This method dequeues items from a queue without removing them.
-```
-    private static void dequeueItems(KestrelClient kestrelClient, String queueName) throws IOException, ParseError
-			 {
-		for(int i=1; i<=12; i++){
-
-			Item item = kestrelClient.dequeue(queueName);
-
-			if(item==null){
-				System.out.println("The queue (" + queueName + ") contains no items.");
-			}
-			else
-			{
-				byte[] data = item._data;
-
-				String receivedVal = new String(data);
-
-				System.out.println("receivedItem=" + receivedVal);
-			}
-		}
-```
-
-This method dequeues items from a queue and then removes them.
-```
-    private static void dequeueAndRemoveItems(KestrelClient kestrelClient, String queueName)
-    throws IOException, ParseError
-		 {
-			for(int i=1; i<=12; i++){
-
-				Item item = kestrelClient.dequeue(queueName);
-
-
-				if(item==null){
-					System.out.println("The queue (" + queueName + ") contains no items.");
-				}
-				else
-				{
-					int itemID = item._id;
-
-
-					byte[] data = item._data;
-
-					String receivedVal = new String(data);
-
-					kestrelClient.ack(queueName, itemID);
-
-					System.out.println("receivedItem=" + receivedVal);
-				}
-			}
-	}
-```
-
-## Add Items continuously to Kestrel
-
-This is our final program to run in order to add continuously sentence items to a queue called **sentence_queue** of a locally running Kestrel server.
-
-In order to stop it type a closing bracket char ']' in console and hit 'Enter'.
-
-```
-    import java.io.IOException;
-    import java.io.InputStream;
-    import java.util.Random;
-
-    import backtype.storm.spout.KestrelClient;
-    import backtype.storm.spout.KestrelClient.Item;
-    import backtype.storm.spout.KestrelClient.ParseError;
-
-    public class AddSentenceItemsToKestrel {
-
-    	/**
-    	 * @param args
-    	 */
-    	public static void main(String[] args) {
-
-    		InputStream is = System.in;
-
-			char closing_bracket = ']';
-
-			int val = closing_bracket;
-
-			boolean aux = true;
-
-			try {
-
-				KestrelClient kestrelClient = null;
-				String queueName = "sentence_queue";
-
-				while(aux){
-
-					kestrelClient = new KestrelClient("localhost",22133);
-
-					queueSentenceItems(kestrelClient, queueName);
-
-					kestrelClient.close();
-
-					Thread.sleep(1000);
-
-					if(is.available()>0){
-					 if(val==is.read())
-						 aux=false;
-					}
-				}
-			} catch (IOException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-			catch (ParseError e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			} catch (InterruptedException e) {
-				// TODO Auto-generated catch block
-				e.printStackTrace();
-			}
-
-			System.out.println("end");
-
-	    }
-	}
-```
-## Using KestrelSpout
-
-This topology reads sentences off of a Kestrel queue using KestrelSpout, splits the sentences into its constituent words (Bolt: SplitSentence), and then emits for each word the number of times it has seen that word before (Bolt: WordCount). How data is processed is described in detail in [Guaranteeing message processing](Guaranteeing-message-processing.html).
-
-```
-    TopologyBuilder builder = new TopologyBuilder();
-    builder.setSpout("sentences", new KestrelSpout("localhost",22133,"sentence_queue",new StringScheme()));
-    builder.setBolt("split", new SplitSentence(), 10)
-    	        .shuffleGrouping("sentences");
-    builder.setBolt("count", new WordCount(), 20)
-	        .fieldsGrouping("split", new Fields("word"));
-```
-
-## Execution
-
-At first, start your local kestrel server in production or development mode.
-
-Than, wait about 5 seconds in order to avoid a ConnectException.
-
-Now execute the program to add items to the queue and launch the Storm topology. The order in which you launch the programs is of no importance.
-
-If you run the topology with TOPOLOGY_DEBUG you should see tuples being emitted in the topology.


[03/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/images/spout.svg
----------------------------------------------------------------------
diff --git a/docs/images/spout.svg b/docs/images/spout.svg
deleted file mode 100644
index 0105957..0000000
--- a/docs/images/spout.svg
+++ /dev/null
@@ -1,833 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="652.63159"
-   height="196.05263"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="spout.svg"
-   inkscape:export-filename="/Users/evans/src/storm/docs/images/spout.png"
-   inkscape:export-xdpi="88.139603"
-   inkscape:export-ydpi="88.139603">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient5388"
-       osb:paint="gradient">
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:1;"
-         offset="0"
-         id="stop5390" />
-      <stop
-         style="stop-color:#00a3d8;stop-opacity:0;"
-         offset="1"
-         id="stop5392" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5382"
-       osb:paint="solid">
-      <stop
-         style="stop-color:#0000fb;stop-opacity:0;"
-         offset="0"
-         id="stop5384" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5388"
-       id="linearGradient3801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.97388098,0,0,1.0638134,-6.1694074,-977.00683)"
-       x1="465.78949"
-       y1="465.1911"
-       x2="490.78949"
-       y2="465.1911" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="386.38"
-       y1="81.633003"
-       gradientTransform="translate(28.11,-1.7569)"
-       x2="433.48999"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="130.03"
-       id="linearGradient3686" />
-    <linearGradient
-       inkscape:collect="always"
-       x1="244.60001"
-       y1="81.633003"
-       gradientTransform="translate(-28.11,1.7569)"
-       x2="288.82001"
-       gradientUnits="userSpaceOnUse"
-       xlink:href="#linearGradient3678"
-       y2="178.42999"
-       id="linearGradient3684" />
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3678">
-      <stop
-         offset="0"
-         style="stop-color:#a9a9a9"
-         id="stop3680" />
-      <stop
-         offset="1"
-         style="stop-color:#a9a9a9;stop-opacity:0"
-         id="stop3682" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       color-interpolation-filters="sRGB"
-       height="3.1508999"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       id="filter5371-4">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-8" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-9"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-6" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       id="filter5329-0"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.6493015"
-         id="feGaussianBlur5331-1" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6014"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <mask
-       id="mask7539"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7541"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAG8AAAA6CAAAAACb7Vj4AAAAAXNCSVQI5gpbmQAAAiFJREFUWIXtmMlu5DAMRLlJdttB/v9DE7clcZmDrU7nMEAwUA8QwHXUgQ9FLRAL4NJI4Y+W/lXx9+IICIgjYR0ZAfEgn/URgZCQEIYiAwLCw8MhDqJ0HjEzESEOdRgR7m5mfjb34BEyiyRhptE8N9OmaPbMA+KUppySMI3luWlrtSCEYXQeEkuabrcpp8QjDUZYa7XcASLC4MFDlnxb12WeMvM4HIBZLftGEO5P/oBIptv6/rbOOfFIf9bq/ingpkpf/gBJ0rS8va/LnMfy6r4xaC1yHsSznySS52V9X+csI3laJwHdswjRNx5JmuZlXZeJaRzPrTBomVLH9X4eJ3SelyWnkf4ag5XpuGZf/gCQiEVyznmWkf4YNGcRpv6OdB4Q0fHGDPUHSYSZiPqrfO4fIiASIiHhwAtodBRFQETAABjYvB/p4l28i3fxLt7Fu3gX77fxBAAgIgIiPMLDj7lpjMKPogERxwx//j8D3N1MtfFIy65N1czde2DQee6mWmsVGPufr7VWVXN/zgsiwk1b2ScGHfqf17rte2lqHs/ze7hrK/smYKPnsf1z20tT92/+XPWYDMv4efNj26t2YPenrWwCVnOikf30Vu/bx1aanht48Ny0MIHur8kLPu9FzeHBi3CtCF5flYfc6zd/4YYIYeVFeU+pxwmFx/1zg3B7XZ7V29n3jyzC7ZV53Xnfe3X6yiOH6pFHnv7+d9566XfrDzpndw8qE6zWAAAAAElFTkSuQmCC"
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7523"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7525"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFMAAAA6CAAAAADpIjpOAAAAAXNCSVQI5gpbmQAAAhlJREFUWIXtmMtu2zAQRedFSpaC/P+HNrJIzqMLiY6zaBHaLVCgnqUAHtwhh9K9Avh/C7/16HcVvwYgICCOAjs2AuJGPxmIQEhICMPYgIDw8HCIgyqdScxMRIjDSiPC3c3Mz404mITMIkmY6RGmm2lTNLtnAnFKU05JmMaZbtpaLQhhGJ2JxJKmy2XKKfGo0AhrrZYrQETYTSciS76s6zJPmXlUp1kt+0YQ7nc6gUimy/r+ts458ahOa3X/EHBTpU+dgCRpWt7e12XO48y6bwxai5wHfPZOInle1vd1zjLK1DoJ6J5FiL4wSdI0L+u6TExjTLfCoGVKHdl7P05+npclp1GdjcHKdIzhp04AJGKRnHOeZVQng+YswtTvS2cCER13aVgnJBFmIupvinM/EQGREAkJBwfU6FiIgIiAATDY6LfqxXwxX8wX88V8Mf8FpgAARERAhEd4+OH3vl/hx8KAiMPTn9/3AHc3U208Kt21qZq5ew8JneluqrVWgXFvU2utquZ+nxEiwk1b2ScGHfY2Wrd9L03N497Ph7u2sm8C9ohX3D+2vTR1/6LTVQ9nWh7ztD+2vWqHdp3ayiZgNSca7d1bvW4/ttL03NCD6aaFCXR/PCN8XIuaw40Z4VoRvD6TZa71i85wQ4Sw8kTmKvU4ebjNpxuE23PZsLfe95Mswu3ZDHvOfCfQZ9YerlvWPnX+jX8Cr/qz9ROUOHcPsWPOzwAAAABJRU5ErkJggg=="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7515"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7517"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7499"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7501"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7467"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7469"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEwAAAA6CAAAAAA/h+ArAAAAAXNCSVQI5gpbmQAAAhFJREFUWIXtl8tu4zAMRfmS7NhF//9DW8eS+JiFrTQBZgAlmF3DpQEe3CtR8CXArygc+vTXin93IiAgDpM6LwLihj2bEYGQkBDGeQEB4eHhEAdOOoyYmYgQx7VFhLubmZ+eDxghs0gSZnoK5mbaFM3uYUCc0pRTEqYnYG7aWi0IYRgdhsSSpstlyinxsLQIa62WK0BE2E0ZIku+rOsyT5l5WJlZLftGEO53yoBIpsv6+bHOOfGwMmt1/xZwU6UfZYAkaVo+Ptdlzk/A6r4xaC1yXttpk0TyvKyf65xlGKZ1EtA9ixA9wEjSNC/rukxMgzC3wqBlSp3VbR73Oc/LktOwssZgZTrG6UcZABKxSM45zzKsjEFzFmHqk95hQETHKxhXBkmEmYj6cz7PDBEQCZGQcHTQjI4OBEQEDIBRT0P1hr1hb9gb9ob9XpgAAEREQIRHePiRjgYq/OgIiDhy7fnfDHB3M9XGw2Jdm6qZu/eE3GHuplprFXgiHtRaq6q53wfkiHDTVvaJQcfjgdZt30tT87jPtOGureybgD0VqfbvbS9N3R+UueqR3MqTYe9r26t2WlemrWwCVnOiYZve6nX72krT89AOmJsWJtD9hYD8fS1q/mizInh9Kbpf64OycEOEsPLKUlHqcZ9wmzM3CLcX153usp8ZWYTby4vYObS9lX5WxPG6rYinsv+6vL7r+foDarB3D6c7UPwAAAAASUVORK5CYII="
-         height="1"
-         width="1" />
-    </mask>
-    <mask
-       id="mask7459"
-       height="1"
-       width="1"
-       y="0"
-       x="0"
-       maskUnits="userSpaceOnUse">
-      <image
-         id="image7461"
-         xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALYAAADvCAAAAAB6GnHnAAAAAXNCSVQI5gpbmQAAA2JJREFUeJzt1suO4zgMhWFSFzuVNPr9H3QqsSWRnIWdunQVML06JQzOvzACZfOFIOSIMPYf6V8d/XDx5UTfP6ioTmg+ComQePsBJ1NVkiZNKjPKQ0LCw8MlDng5vlBNOeeUkup8apGIcHcz83NjDnbSnEupJec0KdvNRh9q9pEtKde6LrWWnKZku43e264SpiEnW1MudX15WZda84TjjrDe2/4QiQgTebI1l+Xldrte1iXnnyV+m1nbt3uScP8wbUmprC+3379ul6XmCadtvW2vRdzGSO/TFk2lrtdfv2/XyzIlu233LKPt5bwyziVJpSyX6+337bKUCdmjrUXGtpSS0id2KnW9XG+365rTzxq/yW3PMva1PtXPJTnuksvlel3qhNPuWWxfj+v5fdoimlIuZVmW5VImnHaWsSyl5PR8Gz7ZklI63pQzTltqKTmnlJ5/mM7dVhXVpJo06XwXt6XDpqKqoiEy30b8VWQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRkY2MrKRkY2MbGRkIyMbGdnIyEZGNjKykZGNjGxkZCMjGxnZyMhGRjYyspGRjYxsZGQjIxsZ2cjIRlZERCIiJOR4iP+06WvvuggJOdkiIhHmZmNk1R/0fV+MMczcIp4nJzvczfporarPtzc+Wmujm7mf8oMdEWa9bWtJni
 dk275tW+v2Nu9zt92stf1R1VuZcUna4/7YWzM7x31O26237V6S9zrltPt2f71vrX9iR7j19qjq+1rzhNO2vm+v/zz+YItbb4+stl+WnCZku7XtcX99tG7H9XxO28ae1Nuj1knZve/bY9uHfbxJ3IdqWKu5pCnZPqy3fe/D/cNuq5uEj5Zz1hlfNxFm1nsff94kEuGjpSnVh9vNzM5hy4lU1ZQ0adK3o4kKkfDwcI/4xBZRldM8J/tcifPkk1G/nExSvD0Y+5/3L0oOf3SlGk1TAAAAAElFTkSuQmCC"
-         height="1"
-         width="1" />
-    </mask>
-    <filter
-       inkscape:collect="always"
-       x="-1.0755"
-       y="-1.0755"
-       width="3.1508999"
-       height="3.1508999"
-       id="filter5371-3"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="19.681861"
-         id="feGaussianBlur5373-5" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-28.11,1.7569)"
-       x1="244.60001"
-       y1="81.633003"
-       x2="288.82001"
-       y2="178.42999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3678"
-       id="linearGradient6563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(28.11,-1.7569)"
-       x1="386.38"
-       y1="81.633003"
-       x2="433.48999"
-       y2="130.03" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.1575153"
-     inkscape:cx="40.758418"
-     inkscape:cy="-13.452476"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1151"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
-     inkscape:window-maximized="1"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-10.447372,-246.5464)">
-    <g
-       id="g6586"
-       inkscape:export-filename="/Users/evans/Desktop/MT Storm TechPulse/Spouts.png"
-       inkscape:export-xdpi="367.2363"
-       inkscape:export-ydpi="367.2363"
-       transform="translate(-60.605263,-256.47368)">
-      <rect
-         y="503.02008"
-         x="71.052635"
-         height="196.05263"
-         width="652.63159"
-         id="rect6456"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <g
-         id="g6458"
-         transform="matrix(0.65500642,0,0,0.65500642,-152.59443,317.02394)">
-        <rect
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6460"
-           width="160"
-           height="160"
-           x="362.52631"
-           y="345.02008" />
-        <rect
-           transform="matrix(-0.00975266,0.99995244,-0.9999666,-0.00817331,0,0)"
-           y="-492.97839"
-           x="447.45413"
-           height="21.696198"
-           width="24.347038"
-           id="rect6462"
-           style="fill:url(#linearGradient6466);fill-opacity:1;stroke:none" />
-        <path
-           sodipodi:nodetypes="cccccccccccc"
-           inkscape:connector-curvature="0"
-           id="path6464"
-           d="m 393.00281,403.51244 41.45112,-0.39622 0.88112,-14.12176 -17.03772,-1.04253 0.3336,-10.06427 43.6265,0.74442 -0.37641,10.73252 -14.97353,-0.0513 -0.39461,14.50865 c 41.37718,-0.98045 45.3577,0.18812 43.51217,47.03851 l -24.58416,0.68261 c 0.38224,-23.64611 8.10402,-20.71225 -73.3201,-19.97252"
-           style="fill:none;stroke:#000000;stroke-width:5.34683466;stroke-miterlimit:4;stroke-opacity:1" />
-      </g>
-      <g
-         transform="matrix(0.71875576,-0.05334955,0.05428722,0.70634106,166.96209,419.29104)"
-         id="g6468"
-         inkscape:export-filename="/Users/evans/Desktop/storm1.png"
-         inkscape:export-xdpi="861.47681"
-         inkscape:export-ydpi="861.47681">
-        <rect
-           y="202.36218"
-           x="16.428572"
-           height="41.785706"
-           width="723.57141"
-           id="rect6470"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <g
-           style="fill:#ffffff;fill-opacity:1"
-           id="g6472">
-          <rect
-             style="fill:#ffffff;fill-opacity:1;stroke:none"
-             id="rect6474"
-             width="692.14288"
-             height="3.2142835"
-             x="25.714285"
-             y="234.14789" />
-          <path
-             sodipodi:type="star"
-             style="fill:#ffffff;fill-opacity:1;stroke:none"
-             id="path6476"
-             sodipodi:sides="3"
-             sodipodi:cx="731.51184"
-             sodipodi:cy="237.06165"
-             sodipodi:r1="6.3856277"
-             sodipodi:r2="3.1928139"
-             sodipodi:arg1="0.057080782"
-             sodipodi:arg2="1.1042783"
-             inkscape:flatsided="true"
-             inkscape:rounded="0"
-             inkscape:randomized="0"
-             d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-             inkscape:transform-center-x="-2.1245453"
-             inkscape:transform-center-y="-0.18214936"
-             transform="matrix(1.4794213,0,0,1,-359.95185,-0.72859745)" />
-        </g>
-        <g
-           id="g6478">
-          <rect
-             style="fill:#00a3d8;fill-opacity:1;stroke:none"
-             id="rect6480"
-             width="90.913727"
-             height="19.697975"
-             x="23.233509"
-             y="206.8645" />
-          <text
-             xml:space="preserve"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             x="41.531769"
-             y="222.48097"
-             id="text6482"
-             sodipodi:linespacing="125%"><tspan
-               sodipodi:role="line"
-               id="tspan6484"
-               x="41.531769"
-               y="222.48097">Tuple</tspan></text>
-        </g>
-        <g
-           transform="translate(103,-1)"
-           id="g6486">
-          <rect
-             y="206.8645"
-             x="23.233509"
-             height="19.697975"
-             width="90.913727"
-             id="rect6488"
-             style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-          <text
-             sodipodi:linespacing="125%"
-             id="text6490"
-             y="222.48097"
-             x="41.531769"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             xml:space="preserve"><tspan
-               y="222.48097"
-               x="41.531769"
-               id="tspan6492"
-               sodipodi:role="line">Tuple</tspan></text>
-        </g>
-        <g
-           id="g6494"
-           transform="translate(203,-1)">
-          <rect
-             style="fill:#00a3d8;fill-opacity:1;stroke:none"
-             id="rect6496"
-             width="90.913727"
-             height="19.697975"
-             x="23.233509"
-             y="206.8645" />
-          <text
-             xml:space="preserve"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             x="41.531769"
-             y="222.48097"
-             id="text6498"
-             sodipodi:linespacing="125%"><tspan
-               sodipodi:role="line"
-               id="tspan6500"
-               x="41.531769"
-               y="222.48097">Tuple</tspan></text>
-        </g>
-        <g
-           transform="translate(304,-1)"
-           id="g6502">
-          <rect
-             y="206.8645"
-             x="23.233509"
-             height="19.697975"
-             width="90.913727"
-             id="rect6504"
-             style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-          <text
-             sodipodi:linespacing="125%"
-             id="text6506"
-             y="222.48097"
-             x="41.531769"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             xml:space="preserve"><tspan
-               y="222.48097"
-               x="41.531769"
-               id="tspan6508"
-               sodipodi:role="line">Tuple</tspan></text>
-        </g>
-        <g
-           id="g6510"
-           transform="translate(406,-2)">
-          <rect
-             style="fill:#00a3d8;fill-opacity:1;stroke:none"
-             id="rect6512"
-             width="90.913727"
-             height="19.697975"
-             x="23.233509"
-             y="206.8645" />
-          <text
-             xml:space="preserve"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             x="41.531769"
-             y="222.48097"
-             id="text6514"
-             sodipodi:linespacing="125%"><tspan
-               sodipodi:role="line"
-               id="tspan6516"
-               x="41.531769"
-               y="222.48097">Tuple</tspan></text>
-        </g>
-        <g
-           transform="translate(508,-1)"
-           id="g6518">
-          <rect
-             y="206.8645"
-             x="23.233509"
-             height="19.697975"
-             width="90.913727"
-             id="rect6520"
-             style="fill:#00a3d8;fill-opacity:1;stroke:none" />
-          <text
-             sodipodi:linespacing="125%"
-             id="text6522"
-             y="222.48097"
-             x="41.531769"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             xml:space="preserve"><tspan
-               y="222.48097"
-               x="41.531769"
-               id="tspan6524"
-               sodipodi:role="line">Tuple</tspan></text>
-        </g>
-        <g
-           id="g6526"
-           transform="translate(606,-2)">
-          <rect
-             style="fill:#00a3d8;fill-opacity:1;stroke:none"
-             id="rect6528"
-             width="90.913727"
-             height="19.697975"
-             x="23.233509"
-             y="206.8645" />
-          <text
-             xml:space="preserve"
-             style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-             x="41.531769"
-             y="222.48097"
-             id="text6530"
-             sodipodi:linespacing="125%"><tspan
-               sodipodi:role="line"
-               id="tspan6532"
-               x="41.531769"
-               y="222.48097">Tuple</tspan></text>
-        </g>
-      </g>
-      <g
-         transform="matrix(0.72973279,0.06571344,-0.06571344,0.72973279,198.76754,402.55253)"
-         id="g6534">
-        <rect
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           id="rect6536"
-           width="723.57141"
-           height="41.785706"
-           x="16.428572"
-           y="256.96744" />
-        <g
-           transform="translate(-2.1052601e-8,54.605263)"
-           id="g6538"
-           style="fill:#ffffff;fill-opacity:1">
-          <rect
-             y="234.14789"
-             x="25.714285"
-             height="3.2142835"
-             width="692.14288"
-             id="rect6540"
-             style="fill:#ffffff;fill-opacity:1;stroke:none" />
-          <path
-             transform="matrix(1.4794213,0,0,1,-359.95185,-0.72859745)"
-             inkscape:transform-center-y="-0.18214936"
-             inkscape:transform-center-x="-2.1245453"
-             d="m 737.88707,237.42594 -9.87833,4.97467 0.63098,-11.04222 z"
-             inkscape:randomized="0"
-             inkscape:rounded="0"
-             inkscape:flatsided="true"
-             sodipodi:arg2="1.1042783"
-             sodipodi:arg1="0.057080782"
-             sodipodi:r2="3.1928139"
-             sodipodi:r1="6.3856277"
-             sodipodi:cy="237.06165"
-             sodipodi:cx="731.51184"
-             sodipodi:sides="3"
-             id="path6542"
-             style="fill:#ffffff;fill-opacity:1;stroke:none"
-             sodipodi:type="star" />
-        </g>
-        <rect
-           style="fill:#f89800;fill-opacity:1;stroke:none"
-           id="rect6544"
-           width="90.913727"
-           height="19.697975"
-           x="23.233509"
-           y="261.46976" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="41.531769"
-           y="277.08624"
-           id="text6546"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan6548"
-             x="41.531769"
-             y="277.08624">Tuple</tspan></text>
-        <rect
-           y="260.46976"
-           x="126.23351"
-           height="19.697975"
-           width="90.913727"
-           id="rect6550"
-           style="fill:#f89800;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text6552"
-           y="276.08624"
-           x="144.53177"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="276.08624"
-             x="144.53177"
-             id="tspan6554"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#f89800;fill-opacity:1;stroke:none"
-           id="rect6556"
-           width="90.913727"
-           height="19.697975"
-           x="226.23351"
-           y="260.46976" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="244.53177"
-           y="276.08624"
-           id="text6558"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan6560"
-             x="244.53177"
-             y="276.08624">Tuple</tspan></text>
-        <rect
-           y="260.46976"
-           x="327.23352"
-           height="19.697975"
-           width="90.913727"
-           id="rect6562"
-           style="fill:#f89800;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text6564"
-           y="276.08624"
-           x="345.53177"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="276.08624"
-             x="345.53177"
-             id="tspan6566"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#f89800;fill-opacity:1;stroke:none"
-           id="rect6568"
-           width="90.913727"
-           height="19.697975"
-           x="429.23352"
-           y="259.46976" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="447.53177"
-           y="275.08624"
-           id="text6570"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan6572"
-             x="447.53177"
-             y="275.08624">Tuple</tspan></text>
-        <rect
-           y="260.46976"
-           x="531.23352"
-           height="19.697975"
-           width="90.913727"
-           id="rect6574"
-           style="fill:#f89800;fill-opacity:1;stroke:none" />
-        <text
-           sodipodi:linespacing="125%"
-           id="text6576"
-           y="276.08624"
-           x="549.53174"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           xml:space="preserve"><tspan
-             y="276.08624"
-             x="549.53174"
-             id="tspan6578"
-             sodipodi:role="line">Tuple</tspan></text>
-        <rect
-           style="fill:#f89800;fill-opacity:1;stroke:none"
-           id="rect6580"
-           width="90.913727"
-           height="19.697975"
-           x="629.23352"
-           y="259.46976" />
-        <text
-           xml:space="preserve"
-           style="font-size:20.1988945px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-           x="647.53174"
-           y="275.08624"
-           id="text6582"
-           sodipodi:linespacing="125%"><tspan
-             sodipodi:role="line"
-             id="tspan6584"
-             x="647.53174"
-             y="275.08624">Tuple</tspan></text>
-      </g>
-    </g>
-    <g
-       id="g7447"
-       transform="matrix(1.25,0,0,-1.25,-684.78675,1951.2461)" />
-  </g>
-</svg>


[10/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Serialization.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Serialization.md b/docs/documentation/Serialization.md
deleted file mode 100644
index fb86161..0000000
--- a/docs/documentation/Serialization.md
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: Serialization
-layout: documentation
-documentation: true
----
-This page is about how the serialization system in Storm works for versions 0.6.0 and onwards. Storm used a different serialization system prior to 0.6.0 which is documented on [Serialization (prior to 0.6.0)](Serialization-\(prior-to-0.6.0\).html). 
-
-Tuples can be comprised of objects of any types. Since Storm is a distributed system, it needs to know how to serialize and deserialize objects when they're passed between tasks.
-
-Storm uses [Kryo](http://code.google.com/p/kryo/) for serialization. Kryo is a flexible and fast serialization library that produces small serializations.
-
-By default, Storm can serialize primitive types, strings, byte arrays, ArrayList, HashMap, HashSet, and the Clojure collection types. If you want to use another type in your tuples, you'll need to register a custom serializer.
-
-### Dynamic typing
-
-There are no type declarations for fields in a Tuple. You put objects in fields and Storm figures out the serialization dynamically. Before we get to the interface for serialization, let's spend a moment understanding why Storm's tuples are dynamically typed.
-
-Adding static typing to tuple fields would add large amount of complexity to Storm's API. Hadoop, for example, statically types its keys and values but requires a huge amount of annotations on the part of the user. Hadoop's API is a burden to use and the "type safety" isn't worth it. Dynamic typing is simply easier to use.
-
-Further than that, it's not possible to statically type Storm's tuples in any reasonable way. Suppose a Bolt subscribes to multiple streams. The tuples from all those streams may have different types across the fields. When a Bolt receives a `Tuple` in `execute`, that tuple could have come from any stream and so could have any combination of types. There might be some reflection magic you can do to declare a different method for every tuple stream a bolt subscribes to, but Storm opts for the simpler, straightforward approach of dynamic typing.
-
-Finally, another reason for using dynamic typing is so Storm can be used in a straightforward manner from dynamically typed languages like Clojure and JRuby.
-
-### Custom serialization
-
-As mentioned, Storm uses Kryo for serialization. To implement custom serializers, you need to register new serializers with Kryo. It's highly recommended that you read over [Kryo's home page](http://code.google.com/p/kryo/) to understand how it handles custom serialization.
-
-Adding custom serializers is done through the "topology.kryo.register" property in your topology config. It takes a list of registrations, where each registration can take one of two forms:
-
-1. The name of a class to register. In this case, Storm will use Kryo's `FieldsSerializer` to serialize the class. This may or may not be optimal for the class -- see the Kryo docs for more details.
-2. A map from the name of a class to register to an implementation of [com.esotericsoftware.kryo.Serializer](http://code.google.com/p/kryo/source/browse/trunk/src/com/esotericsoftware/kryo/Serializer.java).
-
-Let's look at an example.
-
-```
-topology.kryo.register:
-  - com.mycompany.CustomType1
-  - com.mycompany.CustomType2: com.mycompany.serializer.CustomType2Serializer
-  - com.mycompany.CustomType3
-```
-
-`com.mycompany.CustomType1` and `com.mycompany.CustomType3` will use the `FieldsSerializer`, whereas `com.mycompany.CustomType2` will use `com.mycompany.serializer.CustomType2Serializer` for serialization.
-
-Storm provides helpers for registering serializers in a topology config. The [Config](/javadoc/apidocs/backtype/storm/Config.html) class has a method called `registerSerialization` that takes in a registration to add to the config.
-
-There's an advanced config called `Config.TOPOLOGY_SKIP_MISSING_KRYO_REGISTRATIONS`. If you set this to true, Storm will ignore any serializations that are registered but do not have their code available on the classpath. Otherwise, Storm will throw errors when it can't find a serialization. This is useful if you run many topologies on a cluster that each have different serializations, but you want to declare all the serializations across all topologies in the `storm.yaml` files.
-
-### Java serialization
-
-If Storm encounters a type for which it doesn't have a serialization registered, it will use Java serialization if possible. If the object can't be serialized with Java serialization, then Storm will throw an error.
-
-Beware that Java serialization is extremely expensive, both in terms of CPU cost as well as the size of the serialized object. It is highly recommended that you register custom serializers when you put the topology in production. The Java serialization behavior is there so that it's easy to prototype new topologies.
-
-You can turn off the behavior to fall back on Java serialization by setting the `Config.TOPOLOGY_FALL_BACK_ON_JAVA_SERIALIZATION` config to false.
-
-### Component-specific serialization registrations
-
-Storm 0.7.0 lets you set component-specific configurations (read more about this at [Configuration](Configuration.html)). Of course, if one component defines a serialization that serialization will need to be available to other bolts -- otherwise they won't be able to receive messages from that component!
-
-When a topology is submitted, a single set of serializations is chosen to be used by all components in the topology for sending messages. This is done by merging the component-specific serializer registrations with the regular set of serialization registrations. If two components define serializers for the same class, one of the serializers is chosen arbitrarily.
-
-To force a serializer for a particular class if there's a conflict between two component-specific registrations, just define the serializer you want to use in the topology-specific configuration. The topology-specific configuration has precedence over component-specific configurations for serialization registrations.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Serializers.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Serializers.md b/docs/documentation/Serializers.md
deleted file mode 100644
index 2ab7266..0000000
--- a/docs/documentation/Serializers.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-layout: documentation
----
-* [storm-json](https://github.com/rapportive-oss/storm-json): Simple JSON serializer for Storm
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Setting-up-a-Storm-cluster.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Setting-up-a-Storm-cluster.md b/docs/documentation/Setting-up-a-Storm-cluster.md
deleted file mode 100644
index ee4ad15..0000000
--- a/docs/documentation/Setting-up-a-Storm-cluster.md
+++ /dev/null
@@ -1,115 +0,0 @@
----
-title: Setting up a Storm Cluster
-layout: documentation
-documentation: true
----
-This page outlines the steps for getting a Storm cluster up and running. If you're on AWS, you should check out the [storm-deploy](https://github.com/nathanmarz/storm-deploy/wiki) project. [storm-deploy](https://github.com/nathanmarz/storm-deploy/wiki) completely automates the provisioning, configuration, and installation of Storm clusters on EC2. It also sets up Ganglia for you so you can monitor CPU, disk, and network usage.
-
-If you run into difficulties with your Storm cluster, first check for a solution is in the [Troubleshooting](Troubleshooting.html) page. Otherwise, email the mailing list.
-
-Here's a summary of the steps for setting up a Storm cluster:
-
-1. Set up a Zookeeper cluster
-2. Install dependencies on Nimbus and worker machines
-3. Download and extract a Storm release to Nimbus and worker machines
-4. Fill in mandatory configurations into storm.yaml
-5. Launch daemons under supervision using "storm" script and a supervisor of your choice
-
-### Set up a Zookeeper cluster
-
-Storm uses Zookeeper for coordinating the cluster. Zookeeper **is not** used for message passing, so the load Storm places on Zookeeper is quite low. Single node Zookeeper clusters should be sufficient for most cases, but if you want failover or are deploying large Storm clusters you may want larger Zookeeper clusters. Instructions for deploying Zookeeper are [here](http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html). 
-
-A few notes about Zookeeper deployment:
-
-1. It's critical that you run Zookeeper under supervision, since Zookeeper is fail-fast and will exit the process if it encounters any error case. See [here](http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html#sc_supervision) for more details. 
-2. It's critical that you set up a cron to compact Zookeeper's data and transaction logs. The Zookeeper daemon does not do this on its own, and if you don't set up a cron, Zookeeper will quickly run out of disk space. See [here](http://zookeeper.apache.org/doc/r3.3.3/zookeeperAdmin.html#sc_maintenance) for more details.
-
-### Install dependencies on Nimbus and worker machines
-
-Next you need to install Storm's dependencies on Nimbus and the worker machines. These are:
-
-1. Java 6
-2. Python 2.6.6
-
-These are the versions of the dependencies that have been tested with Storm. Storm may or may not work with different versions of Java and/or Python.
-
-
-### Download and extract a Storm release to Nimbus and worker machines
-
-Next, download a Storm release and extract the zip file somewhere on Nimbus and each of the worker machines. The Storm releases can be downloaded [from here](http://github.com/apache/storm/releases).
-
-### Fill in mandatory configurations into storm.yaml
-
-The Storm release contains a file at `conf/storm.yaml` that configures the Storm daemons. You can see the default configuration values [here](https://github.com/apache/storm/blob/master/conf/defaults.yaml). storm.yaml overrides anything in defaults.yaml. There's a few configurations that are mandatory to get a working cluster:
-
-1) **storm.zookeeper.servers**: This is a list of the hosts in the Zookeeper cluster for your Storm cluster. It should look something like:
-
-```yaml
-storm.zookeeper.servers:
-  - "111.222.333.444"
-  - "555.666.777.888"
-```
-
-If the port that your Zookeeper cluster uses is different than the default, you should set **storm.zookeeper.port** as well.
-
-2) **storm.local.dir**: The Nimbus and Supervisor daemons require a directory on the local disk to store small amounts of state (like jars, confs, and things like that).
- You should create that directory on each machine, give it proper permissions, and then fill in the directory location using this config. For example:
-
-```yaml
-storm.local.dir: "/mnt/storm"
-```
-If you run storm on windows,it could be:
-```yaml
-storm.local.dir: "C:\\storm-local"
-```
-If you use a relative path,it will be relative to where you installed storm(STORM_HOME).
-You can leave it empty with default value `$STORM_HOME/storm-local`
-3) **nimbus.host**: The worker nodes need to know which machine is the master in order to download topology jars and confs. For example:
-
-```yaml
-nimbus.host: "111.222.333.44"
-```
-
-4) **supervisor.slots.ports**: For each worker machine, you configure how many workers run on that machine with this config. Each worker uses a single port for receiving messages, and this setting defines which ports are open for use. If you define five ports here, then Storm will allocate up to five workers to run on this machine. If you define three ports, Storm will only run up to three. By default, this setting is configured to run 4 workers on the ports 6700, 6701, 6702, and 6703. For example:
-
-```yaml
-supervisor.slots.ports:
-    - 6700
-    - 6701
-    - 6702
-    - 6703
-```
-
-### Monitoring Health of Supervisors
-
-Storm provides a mechanism by which administrators can configure the supervisor to run administrator supplied scripts periodically to determine if a node is healthy or not. Administrators can have the supervisor determine if the node is in a healthy state by performing any checks of their choice in scripts located in storm.health.check.dir. If a script detects the node to be in an unhealthy state, it must print a line to standard output beginning with the string ERROR. The supervisor will periodically run the scripts in the health check dir and check the output. If the script’s output contains the string ERROR, as described above, the supervisor will shut down any workers and exit. 
-
-If the supervisor is running with supervision "/bin/storm node-health-check" can be called to determine if the supervisor should be launched or if the node is unhealthy.
-
-The health check directory location can be configured with:
-
-```yaml
-storm.health.check.dir: "healthchecks"
-
-```
-The scripts must have execute permissions.
-The time to allow any given healthcheck script to run before it is marked failed due to timeout can be configured with:
-
-```yaml
-storm.health.check.timeout.ms: 5000
-```
-
-### Configure external libraries and environmental variables (optional)
-
-If you need support from external libraries or custom plugins, you can place such jars into the extlib/ and extlib-daemon/ directories. Note that the extlib-daemon/ directory stores jars used only by daemons (Nimbus, Supervisor, DRPC, UI, Logviewer), e.g., HDFS and customized scheduling libraries. Accordingly, two environmental variables STORM_EXT_CLASSPATH and STORM_EXT_CLASSPATH_DAEMON can be configured by users for including the external classpath and daemon-only external classpath.
-
-
-### Launch daemons under supervision using "storm" script and a supervisor of your choice
-
-The last step is to launch all the Storm daemons. It is critical that you run each of these daemons under supervision. Storm is a __fail-fast__ system which means the processes will halt whenever an unexpected error is encountered. Storm is designed so that it can safely halt at any point and recover correctly when the process is restarted. This is why Storm keeps no state in-process -- if Nimbus or the Supervisors restart, the running topologies are unaffected. Here's how to run the Storm daemons:
-
-1. **Nimbus**: Run the command "bin/storm nimbus" under supervision on the master machine.
-2. **Supervisor**: Run the command "bin/storm supervisor" under supervision on each worker machine. The supervisor daemon is responsible for starting and stopping worker processes on that machine.
-3. **UI**: Run the Storm UI (a site you can access from the browser that gives diagnostics on the cluster and topologies) by running the command "bin/storm ui" under supervision. The UI can be accessed by navigating your web browser to http://{nimbus host}:8080. 
-
-As you can see, running the daemons is very straightforward. The daemons will log to the logs/ directory in wherever you extracted the Storm release.

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Setting-up-a-Storm-project-in-Eclipse.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Setting-up-a-Storm-project-in-Eclipse.md b/docs/documentation/Setting-up-a-Storm-project-in-Eclipse.md
deleted file mode 100644
index 5137cd9..0000000
--- a/docs/documentation/Setting-up-a-Storm-project-in-Eclipse.md
+++ /dev/null
@@ -1 +0,0 @@
-- fill me in
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Setting-up-development-environment.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Setting-up-development-environment.md b/docs/documentation/Setting-up-development-environment.md
deleted file mode 100644
index fa450be..0000000
--- a/docs/documentation/Setting-up-development-environment.md
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Setting Up a Development Environment
-layout: documentation
-documentation: true
----
-This page outlines what you need to do to get a Storm development environment set up. In summary, the steps are:
-
-1. Download a [Storm release](..//downloads.html) , unpack it, and put the unpacked `bin/` directory on your PATH
-2. To be able to start and stop topologies on a remote cluster, put the cluster information in `~/.storm/storm.yaml`
-
-More detail on each of these steps is below.
-
-### What is a development environment?
-
-Storm has two modes of operation: local mode and remote mode. In local mode, you can develop and test topologies completely in process on your local machine. In remote mode, you submit topologies for execution on a cluster of machines.
-
-A Storm development environment has everything installed so that you can develop and test Storm topologies in local mode, package topologies for execution on a remote cluster, and submit/kill topologies on a remote cluster.
-
-Let's quickly go over the relationship between your machine and a remote cluster. A Storm cluster is managed by a master node called "Nimbus". Your machine communicates with Nimbus to submit code (packaged as a jar) and topologies for execution on the cluster, and Nimbus will take care of distributing that code around the cluster and assigning workers to run your topology. Your machine uses a command line client called `storm` to communicate with Nimbus. The `storm` client is only used for remote mode; it is not used for developing and testing topologies in local mode.
-
-### Installing a Storm release locally
-
-If you want to be able to submit topologies to a remote cluster from your machine, you should install a Storm release locally. Installing a Storm release will give you the `storm` client that you can use to interact with remote clusters. To install Storm locally, download a release [from here](https://github.com/apache/storm/releases) and unzip it somewhere on your computer. Then add the unpacked `bin/` directory onto your `PATH` and make sure the `bin/storm` script is executable.
-
-Installing a Storm release locally is only for interacting with remote clusters. For developing and testing topologies in local mode, it is recommended that you use Maven to include Storm as a dev dependency for your project. You can read more about using Maven for this purpose on [Maven](Maven.html). 
-
-### Starting and stopping topologies on a remote cluster
-
-The previous step installed the `storm` client on your machine which is used to communicate with remote Storm clusters. Now all you have to do is tell the client which Storm cluster to talk to. To do this, all you have to do is put the host address of the master in the `~/.storm/storm.yaml` file. It should look something like this:
-
-```
-nimbus.host: "123.45.678.890"
-```
-
-Alternatively, if you use the [storm-deploy](https://github.com/nathanmarz/storm-deploy) project to provision Storm clusters on AWS, it will automatically set up your ~/.storm/storm.yaml file. You can manually attach to a Storm cluster (or switch between multiple clusters) using the "attach" command, like so:
-
-```
-lein run :deploy --attach --name mystormcluster
-```
-
-More information is on the storm-deploy [wiki](https://github.com/nathanmarz/storm-deploy/wiki)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Spout-implementations.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Spout-implementations.md b/docs/documentation/Spout-implementations.md
deleted file mode 100644
index 9952558..0000000
--- a/docs/documentation/Spout-implementations.md
+++ /dev/null
@@ -1,10 +0,0 @@
----
-title: Spout Implementations
-layout: documentation
-documentation: true
----
-* [storm-kestrel](https://github.com/nathanmarz/storm-kestrel): Adapter to use Kestrel as a spout
-* [storm-amqp-spout](https://github.com/rapportive-oss/storm-amqp-spout): Adapter to use AMQP source as a spout
-* [storm-jms](https://github.com/ptgoetz/storm-jms): Adapter to use a JMS source as a spout
-* [storm-redis-pubsub](https://github.com/sorenmacbeth/storm-redis-pubsub): A spout that subscribes to a Redis pubsub stream
-* [storm-beanstalkd-spout](https://github.com/haitaoyao/storm-beanstalkd-spout): A spout that subscribes to a beanstalkd queue
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/State-checkpointing.md
----------------------------------------------------------------------
diff --git a/docs/documentation/State-checkpointing.md b/docs/documentation/State-checkpointing.md
deleted file mode 100644
index 889b387..0000000
--- a/docs/documentation/State-checkpointing.md
+++ /dev/null
@@ -1,147 +0,0 @@
-# State support in core storm
-Storm core has abstractions for bolts to save and retrieve the state of its operations. There is a default in-memory
-based state implementation and also a Redis backed implementation that provides state persistence.
-
-## State management
-Bolts that requires its state to be managed and persisted by the framework should implement the `IStatefulBolt` interface or
-extend the `BaseStatefulBolt` and implement `void initState(T state)` method. The `initState` method is invoked by the framework
-during the bolt initialization with the previously saved state of the bolt. This is invoked after prepare but before the bolt starts
-processing any tuples.
-
-Currently the only kind of `State` implementation that is supported is `KeyValueState` which provides key-value mapping.
-
-For example a word count bolt could use the key value state abstraction for the word counts as follows.
-
-1. Extend the BaseStatefulBolt and type parameterize it with KeyValueState which would store the mapping of word to count.
-2. The bolt gets initialized with its previously saved state in the init method. This will contain the word counts
-last committed by the framework during the previous run.
-3. In the execute method, update the word count.
-
- ```java
- public class WordCountBolt extends BaseStatefulBolt<KeyValueState<String, Long>> {
- private KeyValueState<String, Long> wordCounts;
- ...
-     @Override
-     public void initState(KeyValueState<String, Long> state) {
-       wordCounts = state;
-     }
-     @Override
-     public void execute(Tuple tuple, BasicOutputCollector collector) {
-       String word = tuple.getString(0);
-       Integer count = wordCounts.get(word, 0);
-       count++;
-       wordCounts.put(word, count);
-       collector.emit(new Values(word, count));
-     }
- ...
- }
- ```
-4. The framework periodically checkpoints the state of the bolt (default every second). The frequency
-can be changed by setting the storm config `topology.state.checkpoint.interval.ms`
-5. For state persistence, use a state provider that supports persistence by setting the `topology.state.provider` in the
-storm config. E.g. for using Redis based key-value state implementation set `topology.state.provider: org.apache.storm.redis.state.RedisKeyValueStateProvider`
-in storm.yaml. The provider implementation jar should be in the class path, which in this case means putting the `storm-redis-*.jar`
-in the extlib directory.
-6. The state provider properties can be overridden by setting `topology.state.provider.config`. For Redis state this is a
-json config with the following properties.
-
- ```
- {
-   "keyClass": "Optional fully qualified class name of the Key type.",
-   "valueClass": "Optional fully qualified class name of the Value type.",
-   "keySerializerClass": "Optional Key serializer implementation class.",
-   "valueSerializerClass": "Optional Value Serializer implementation class.",
-   "jedisPoolConfig": {
-     "host": "localhost",
-     "port": 6379,
-     "timeout": 2000,
-     "database": 0,
-     "password": "xyz"
-     }
- }
- ```
-
-## Checkpoint mechanism
-Checkpoint is triggered by an internal checkpoint spout at the specified `topology.state.checkpoint.interval.ms`. If there is
-at-least one `IStatefulBolt` in the topology, the checkpoint spout is automatically added by the topology builder . For stateful topologies,
-the topology builder wraps the `IStatefulBolt` in a `StatefulBoltExecutor` which handles the state commits on receiving the checkpoint tuples.
-The non stateful bolts are wrapped in a `CheckpointTupleForwarder` which just forwards the checkpoint tuples so that the checkpoint tuples
-can flow through the topology DAG. The checkpoint tuples flow through a separate internal stream namely `$checkpoint`. The topology builder
-wires the checkpoint stream across the whole topology with the checkpoint spout at the root.
-
-```
-              default                         default               default
-[spout1]   ---------------> [statefulbolt1] ----------> [bolt1] --------------> [statefulbolt2]
-                          |                 ---------->         -------------->
-                          |                   ($chpt)               ($chpt)
-                          |
-[$checkpointspout] _______| ($chpt)
-```
-
-At checkpoint intervals the checkpoint tuples are emitted by the checkpoint spout. On receiving a checkpoint tuple, the state of the bolt
-is saved and then the checkpoint tuple is forwarded to the next component. Each bolt waits for the checkpoint to arrive on all its input
-streams before it saves its state so that the state represents a consistent state across the topology. Once the checkpoint spout receives
-ACK from all the bolts, the state commit is complete and the transaction is recorded as committed by the checkpoint spout.
-
-The state commit works like a three phase commit protocol with a prepare and commit phase so that the state across the topology is saved
-in a consistent and atomic manner.
-
-### Recovery
-The recovery phase is triggered when the topology is started for the first time. If the previous transaction was not successfully
-prepared, a `rollback` message is sent across the topology so that if a bolt has some prepared transactions it can be discarded.
-If the previous transaction was prepared successfully but not committed, a `commit` message is sent across the topology so that
-the prepared transactions can be committed. After these steps are complete, the bolts are initialized with the state.
-
-The recovery is also triggered if one of the bolts fails to acknowledge the checkpoint message or say a worker crashed in
-the middle. Thus when the worker is restarted by the supervisor, the checkpoint mechanism makes sure that the bolt gets
-initialized with its previous state and the checkpointing continues from the point where it left off.
-
-### Guarantee
-Storm relies on the acking mechanism to replay tuples in case of failures. It is possible that the state is committed
-but the worker crashes before acking the tuples. In this case the tuples are replayed causing duplicate state updates.
-Also currently the StatefulBoltExecutor continues to process the tuples from a stream after it has received a checkpoint
-tuple on one stream while waiting for checkpoint to arrive on other input streams for saving the state. This can also cause
-duplicate state updates during recovery.
-
-The state abstraction does not eliminate duplicate evaluations and currently provides only at-least once guarantee.
-
-### IStateful bolt hooks
-IStateful bolt interface provides hook methods where in the stateful bolts could implement some custom actions.
-```java
-    /**
-     * This is a hook for the component to perform some actions just before the
-     * framework commits its state.
-     */
-    void preCommit(long txid);
-
-    /**
-     * This is a hook for the component to perform some actions just before the
-     * framework prepares its state.
-     */
-    void prePrepare(long txid);
-
-    /**
-     * This is a hook for the component to perform some actions just before the
-     * framework rolls back the prepared state.
-     */
-    void preRollback();
-```
-This is optional and stateful bolts are not expected to provide any implementation. This is provided so that other
-system level components can be built on top of the stateful abstractions where we might want to take some actions before the
-stateful bolt's state is prepared, committed or rolled back.
-
-## Providing custom state implementations
-Currently the only kind of `State` implementation supported is `KeyValueState` which provides key-value mapping.
-
-Custom state implementations should provide implementations for the methods defined in the `org.apache.storm.State` interface.
-These are the `void prepareCommit(long txid)`, `void commit(long txid)`, `rollback()` methods. `commit()` method is optional
-and is useful if the bolt manages the state on its own. This is currently used only by the internal system bolts,
-for e.g. the CheckpointSpout to save its state.
-
-`KeyValueState` implementation should also implement the methods defined in the `org.apache.storm.state.KeyValueState` interface.
-
-### State provider
-The framework instantiates the state via the corresponding `StateProvider` implementation. A custom state should also provide
-a `StateProvider` implementation which can load and return the state based on the namespace. Each state belongs to a unique namespace.
-The namespace is typically unique per task so that each task can have its own state. The StateProvider and the corresponding
-State implementation should be available in the class path of Storm (by placing them in the extlib directory).

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Storm-multi-language-protocol-(versions-0.7.0-and-below).md
----------------------------------------------------------------------
diff --git a/docs/documentation/Storm-multi-language-protocol-(versions-0.7.0-and-below).md b/docs/documentation/Storm-multi-language-protocol-(versions-0.7.0-and-below).md
deleted file mode 100644
index 093406c..0000000
--- a/docs/documentation/Storm-multi-language-protocol-(versions-0.7.0-and-below).md
+++ /dev/null
@@ -1,124 +0,0 @@
----
-title: Storm Multi-Lang Protocol (Versions 0.7.0 and below)
-layout: documentation
-documentation: true
----
-This page explains the multilang protocol for versions 0.7.0 and below. The protocol changed in version 0.7.1.
-
-# Storm Multi-Language Protocol
-
-## The ShellBolt
-
-Support for multiple languages is implemented via the ShellBolt class.  This
-class implements the IBolt interfaces and implements the protocol for
-executing a script or program via the shell using Java's ProcessBuilder class.
-
-## Output fields
-
-Output fields are part of the Thrift definition of the topology. This means that when you multilang in Java, you need to create a bolt that extends ShellBolt, implements IRichBolt, and declared the fields in `declareOutputFields`. 
-You can learn more about this on [Concepts](Concepts.html)
-
-## Protocol Preamble
-
-A simple protocol is implemented via the STDIN and STDOUT of the executed
-script or program. A mix of simple strings and JSON encoded data are exchanged
-with the process making support possible for pretty much any language.
-
-# Packaging Your Stuff
-
-To run a ShellBolt on a cluster, the scripts that are shelled out to must be
-in the `resources/` directory within the jar submitted to the master.
-
-However, During development or testing on a local machine, the resources
-directory just needs to be on the classpath.
-
-## The Protocol
-
-Notes:
-* Both ends of this protocol use a line-reading mechanism, so be sure to
-trim off newlines from the input and to append them to your output.
-* All JSON inputs and outputs are terminated by a single line contained "end".
-* The bullet points below are written from the perspective of the script writer's
-STDIN and STDOUT.
-
-
-* Your script will be executed by the Bolt.
-* STDIN: A string representing a path. This is a PID directory.
-Your script should create an empty file named with it's pid in this directory. e.g.
-the PID is 1234, so an empty file named 1234 is created in the directory. This
-file lets the supervisor know the PID so it can shutdown the process later on.
-* STDOUT: Your PID. This is not JSON encoded, just a string. ShellBolt will log the PID to its log.
-* STDIN: (JSON) The Storm configuration.  Various settings and properties.
-* STDIN: (JSON) The Topology context
-* The rest happens in a while(true) loop
-* STDIN: A tuple! This is a JSON encoded structure like this:
-
-```
-{
-    // The tuple's id
-	"id": -6955786537413359385,
-	// The id of the component that created this tuple
-	"comp": 1,
-	// The id of the stream this tuple was emitted to
-	"stream": 1,
-	// The id of the task that created this tuple
-	"task": 9,
-	// All the values in this tuple
-	"tuple": ["snow white and the seven dwarfs", "field2", 3]
-}
-```
-
-* STDOUT: The results of your bolt, JSON encoded. This can be a sequence of acks, fails, emits, and/or logs. Emits look like:
-
-```
-{
-	"command": "emit",
-	// The ids of the tuples this output tuples should be anchored to
-	"anchors": [1231231, -234234234],
-	// The id of the stream this tuple was emitted to. Leave this empty to emit to default stream.
-	"stream": 1,
-	// If doing an emit direct, indicate the task to sent the tuple to
-	"task": 9,
-	// All the values in this tuple
-	"tuple": ["field1", 2, 3]
-}
-```
-
-An ack looks like:
-
-```
-{
-	"command": "ack",
-	// the id of the tuple to ack
-	"id": 123123
-}
-```
-
-A fail looks like:
-
-```
-{
-	"command": "fail",
-	// the id of the tuple to fail
-	"id": 123123
-}
-```
-
-A "log" will log a message in the worker log. It looks like:
-
-```
-{
-	"command": "log",
-	// the message to log
-	"msg": "hello world!"
-
-}
-```
-
-* STDOUT: emit "sync" as a single line by itself when the bolt has finished emitting/acking/failing and is ready for the next input
-
-### sync
-
-Note: This command is not JSON encoded, it is sent as a simple string.
-
-This lets the parent bolt know that the script has finished processing and is ready for another tuple.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Structure-of-the-codebase.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Structure-of-the-codebase.md b/docs/documentation/Structure-of-the-codebase.md
deleted file mode 100644
index 5da6039..0000000
--- a/docs/documentation/Structure-of-the-codebase.md
+++ /dev/null
@@ -1,142 +0,0 @@
----
-title: Structure of the Codebase
-layout: documentation
-documentation: true
----
-There are three distinct layers to Storm's codebase.
-
-First, Storm was designed from the very beginning to be compatible with multiple languages. Nimbus is a Thrift service and topologies are defined as Thrift structures. The usage of Thrift allows Storm to be used from any language.
-
-Second, all of Storm's interfaces are specified as Java interfaces. So even though there's a lot of Clojure in Storm's implementation, all usage must go through the Java API. This means that every feature of Storm is always available via Java.
-
-Third, Storm's implementation is largely in Clojure. Line-wise, Storm is about half Java code, half Clojure code. But Clojure is much more expressive, so in reality the great majority of the implementation logic is in Clojure. 
-
-The following sections explain each of these layers in more detail.
-
-### storm.thrift
-
-The first place to look to understand the structure of Storm's codebase is the [storm.thrift](https://github.com/apache/storm/blob/master/storm-core/src/storm.thrift) file.
-
-Storm uses [this fork](https://github.com/nathanmarz/thrift/tree/storm) of Thrift (branch 'storm') to produce the generated code. This "fork" is actually Thrift 7 with all the Java packages renamed to be `org.apache.thrift7`. Otherwise, it's identical to Thrift 7. This fork was done because of the lack of backwards compatibility in Thrift and the need for many people to use other versions of Thrift in their Storm topologies.
-
-Every spout or bolt in a topology is given a user-specified identifier called the "component id". The component id is used to specify subscriptions from a bolt to the output streams of other spouts or bolts. A [StormTopology](https://github.com/apache/storm/blob/master/storm-core/src/storm.thrift#L91) structure contains a map from component id to component for each type of component (spouts and bolts).
-
-Spouts and bolts have the same Thrift definition, so let's just take a look at the [Thrift definition for bolts](https://github.com/apache/storm/blob/master/storm-core/src/storm.thrift#L102). It contains a `ComponentObject` struct and a `ComponentCommon` struct.
-
-The `ComponentObject` defines the implementation for the bolt. It can be one of three types:
-
-1. A serialized java object (that implements [IBolt](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/task/IBolt.java))
-2. A `ShellComponent` object that indicates the implementation is in another language. Specifying a bolt this way will cause Storm to instantiate a [ShellBolt](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/task/ShellBolt.java) object to handle the communication between the JVM-based worker process and the non-JVM-based implementation of the component.
-3. A `JavaObject` structure which tells Storm the classname and constructor arguments to use to instantiate that bolt. This is useful if you want to define a topology in a non-JVM language. This way, you can make use of JVM-based spouts and bolts without having to create and serialize a Java object yourself.
-
-`ComponentCommon` defines everything else for this component. This includes:
-
-1. What streams this component emits and the metadata for each stream (whether it's a direct stream, the fields declaration)
-2. What streams this component consumes (specified as a map from component_id:stream_id to the stream grouping to use)
-3. The parallelism for this component
-4. The component-specific [configuration](https://github.com/apache/storm/wiki/Configuration) for this component
-
-Note that the structure spouts also have a `ComponentCommon` field, and so spouts can also have declarations to consume other input streams. Yet the Storm Java API does not provide a way for spouts to consume other streams, and if you put any input declarations there for a spout you would get an error when you tried to submit the topology. The reason that spouts have an input declarations field is not for users to use, but for Storm itself to use. Storm adds implicit streams and bolts to the topology to set up the [acking framework](https://github.com/apache/storm/wiki/Guaranteeing-message-processing), and two of these implicit streams are from the acker bolt to each spout in the topology. The acker sends "ack" or "fail" messages along these streams whenever a tuple tree is detected to be completed or failed. The code that transforms the user's topology into the runtime topology is located [here](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/co
 mmon.clj#L279).
-
-### Java interfaces
-
-The interfaces for Storm are generally specified as Java interfaces. The main interfaces are:
-
-1. [IRichBolt](/javadoc/apidocs/backtype/storm/topology/IRichBolt.html)
-2. [IRichSpout](/javadoc/apidocs/backtype/storm/topology/IRichSpout.html)
-3. [TopologyBuilder](/javadoc/apidocs/backtype/storm/topology/TopologyBuilder.html)
-
-The strategy for the majority of the interfaces is to:
-
-1. Specify the interface using a Java interface
-2. Provide a base class that provides default implementations when appropriate
-
-You can see this strategy at work with the [BaseRichSpout](/javadoc/apidocs/backtype/storm/topology/base/BaseRichSpout.html) class.
-
-Spouts and bolts are serialized into the Thrift definition of the topology as described above. 
-
-One subtle aspect of the interfaces is the difference between `IBolt` and `ISpout` vs. `IRichBolt` and `IRichSpout`. The main difference between them is the addition of the `declareOutputFields` method in the "Rich" versions of the interfaces. The reason for the split is that the output fields declaration for each output stream needs to be part of the Thrift struct (so it can be specified from any language), but as a user you want to be able to declare the streams as part of your class. What `TopologyBuilder` does when constructing the Thrift representation is call `declareOutputFields` to get the declaration and convert it into the Thrift structure. The conversion happens [at this portion](https://github.com/apache/storm/blob/master/storm-core/src/jvm/backtype/storm/topology/TopologyBuilder.java#L205) of the `TopologyBuilder` code.
-
-
-### Implementation
-
-Specifying all the functionality via Java interfaces ensures that every feature of Storm is available via Java. Moreso, the focus on Java interfaces ensures that the user experience from Java-land is pleasant as well.
-
-The implementation of Storm, on the other hand, is primarily in Clojure. While the codebase is about 50% Java and 50% Clojure in terms of LOC, most of the implementation logic is in Clojure. There are two notable exceptions to this, and that is the [DRPC](https://github.com/apache/storm/wiki/Distributed-RPC) and [transactional topologies](https://github.com/apache/storm/wiki/Transactional-topologies) implementations. These are implemented purely in Java. This was done to serve as an illustration for how to implement a higher level abstraction on Storm. The DRPC and transactional topologies implementations are in the [backtype.storm.coordination](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/coordination), [backtype.storm.drpc](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/drpc), and [backtype.storm.transactional](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/transactional) packages.
-
-Here's a summary of the purpose of the main Java packages and Clojure namespace:
-
-#### Java packages
-
-[backtype.storm.coordination](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/coordination): Implements the pieces required to coordinate batch-processing on top of Storm, which both DRPC and transactional topologies use. `CoordinatedBolt` is the most important class here.
-
-[backtype.storm.drpc](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/drpc): Implementation of the DRPC higher level abstraction
-
-[backtype.storm.generated](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/generated): The generated Thrift code for Storm (generated using [this fork](https://github.com/nathanmarz/thrift) of Thrift, which simply renames the packages to org.apache.thrift7 to avoid conflicts with other Thrift versions)
-
-[backtype.storm.grouping](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/grouping): Contains interface for making custom stream groupings
-
-[backtype.storm.hooks](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/hooks): Interfaces for hooking into various events in Storm, such as when tasks emit tuples, when tuples are acked, etc. User guide for hooks is [here](https://github.com/apache/storm/wiki/Hooks).
-
-[backtype.storm.serialization](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/serialization): Implementation of how Storm serializes/deserializes tuples. Built on top of [Kryo](http://code.google.com/p/kryo/).
-
-[backtype.storm.spout](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/spout): Definition of spout and associated interfaces (like the `SpoutOutputCollector`). Also contains `ShellSpout` which implements the protocol for defining spouts in non-JVM languages.
-
-[backtype.storm.task](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/task): Definition of bolt and associated interfaces (like `OutputCollector`). Also contains `ShellBolt` which implements the protocol for defining bolts in non-JVM languages. Finally, `TopologyContext` is defined here as well, which is provided to spouts and bolts so they can get data about the topology and its execution at runtime.
-
-[backtype.storm.testing](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/testing): Contains a variety of test bolts and utilities used in Storm's unit tests.
-
-[backtype.storm.topology](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/topology): Java layer over the underlying Thrift structure to provide a clean, pure-Java API to Storm (users don't have to know about Thrift). `TopologyBuilder` is here as well as the helpful base classes for the different spouts and bolts. The slightly-higher level `IBasicBolt` interface is here, which is a simpler way to write certain kinds of bolts.
-
-[backtype.storm.transactional](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/transactional): Implementation of transactional topologies.
-
-[backtype.storm.tuple](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/tuple): Implementation of Storm's tuple data model.
-
-[backtype.storm.utils](https://github.com/apache/storm/tree/master/storm-core/src/jvm/backtype/storm/tuple): Data structures and miscellaneous utilities used throughout the codebase.
-
-
-#### Clojure namespaces
-
-[backtype.storm.bootstrap](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/bootstrap.clj): Contains a helpful macro to import all the classes and namespaces that are used throughout the codebase.
-
-[backtype.storm.clojure](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/clojure.clj): Implementation of the Clojure DSL for Storm.
-
-[backtype.storm.cluster](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/cluster.clj): All Zookeeper logic used in Storm daemons is encapsulated in this file. This code manages how cluster state (like what tasks are running where, what spout/bolt each task runs as) is mapped to the Zookeeper "filesystem" API.
-
-[backtype.storm.command.*](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/command): These namespaces implement various commands for the `storm` command line client. These implementations are very short.
-
-[backtype.storm.config](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/config.clj): Implementation of config reading/parsing code for Clojure. Also has utility functions for determining what local path nimbus/supervisor/daemons should be using for various things. e.g. the `master-inbox` function will return the local path that Nimbus should use when jars are uploaded to it.
-
-[backtype.storm.daemon.acker](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/acker.clj): Implementation of the "acker" bolt, which is a key part of how Storm guarantees data processing.
-
-[backtype.storm.daemon.common](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/common.clj): Implementation of common functions used in Storm daemons, like getting the id for a topology based on the name, mapping a user's topology into the one that actually executes (with implicit acking streams and acker bolt added - see `system-topology!` function), and definitions for the various heartbeat and other structures persisted by Storm.
-
-[backtype.storm.daemon.drpc](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/drpc.clj): Implementation of the DRPC server for use with DRPC topologies.
-
-[backtype.storm.daemon.nimbus](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/nimbus.clj): Implementation of Nimbus.
-
-[backtype.storm.daemon.supervisor](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/supervisor.clj): Implementation of Supervisor.
-
-[backtype.storm.daemon.task](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/task.clj): Implementation of an individual task for a spout or bolt. Handles message routing, serialization, stats collection for the UI, as well as the spout-specific and bolt-specific execution implementations.
-
-[backtype.storm.daemon.worker](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/daemon/worker.clj): Implementation of a worker process (which will contain many tasks within). Implements message transferring and task launching.
-
-[backtype.storm.event](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/event.clj): Implements a simple asynchronous function executor. Used in various places in Nimbus and Supervisor to make functions execute in serial to avoid any race conditions.
-
-[backtype.storm.log](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/log.clj): Defines the functions used to log messages to log4j.
-
-[backtype.storm.messaging.*](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/messaging): Defines a higher level interface to implementing point to point messaging. In local mode Storm uses in-memory Java queues to do this; on a cluster, it uses ZeroMQ. The generic interface is defined in protocol.clj.
-
-[backtype.storm.stats](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/stats.clj): Implementation of stats rollup routines used when sending stats to ZK for use by the UI. Does things like windowed and rolling aggregations at multiple granularities.
-
-[backtype.storm.testing](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/testing.clj): Implementation of facilities used to test Storm topologies. Includes time simulation, `complete-topology` for running a fixed set of tuples through a topology and capturing the output, tracker topologies for having fine grained control over detecting when a cluster is "idle", and other utilities.
-
-[backtype.storm.thrift](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/thrift.clj): Clojure wrappers around the generated Thrift API to make working with Thrift structures more pleasant.
-
-[backtype.storm.timer](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/timer.clj): Implementation of a background timer to execute functions in the future or on a recurring interval. Storm couldn't use the [Timer](http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Timer.html) class because it needed integration with time simulation in order to be able to unit test Nimbus and the Supervisor.
-
-[backtype.storm.ui.*](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/ui): Implementation of Storm UI. Completely independent from rest of code base and uses the Nimbus Thrift API to get data.
-
-[backtype.storm.util](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/util.clj): Contains generic utility functions used throughout the code base.
- 
-[backtype.storm.zookeeper](https://github.com/apache/storm/blob/master/storm-core/src/clj/backtype/storm/zookeeper.clj): Clojure wrapper around the Zookeeper API and implements some "high-level" stuff like "mkdirs" and "delete-recursive".
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Support-for-non-java-languages.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Support-for-non-java-languages.md b/docs/documentation/Support-for-non-java-languages.md
deleted file mode 100644
index d03dcad..0000000
--- a/docs/documentation/Support-for-non-java-languages.md
+++ /dev/null
@@ -1,9 +0,0 @@
----
-title: Support for Non-Java Languages
-layout: documentation
-documentation: true
----
-* [Scala DSL](https://github.com/velvia/ScalaStorm)
-* [JRuby DSL](https://github.com/colinsurprenant/storm-jruby)
-* [Clojure DSL](Clojure-DSL.html)
-* [io-storm](https://github.com/gphat/io-storm): Perl multilang adapter

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/documentation/Transactional-topologies.md
----------------------------------------------------------------------
diff --git a/docs/documentation/Transactional-topologies.md b/docs/documentation/Transactional-topologies.md
deleted file mode 100644
index 8c999e7..0000000
--- a/docs/documentation/Transactional-topologies.md
+++ /dev/null
@@ -1,361 +0,0 @@
----
-title: Transactional Topologies
-layout: documentation
-documentation: true
----
-**NOTE**: Transactional topologies have been deprecated -- use the [Trident](Trident-tutorial.html) framework instead.
-
-__________________________________________________________________________
-
-Storm [guarantees data processing](Guaranteeing-message-processing.html) by providing an at least once processing guarantee. The most common question asked about Storm is "Given that tuples can be replayed, how do you do things like counting on top of Storm? Won't you overcount?"
-
-Storm 0.7.0 introduces transactional topologies, which enable you to get exactly once messaging semantics for pretty much any computation. So you can do things like counting in a fully-accurate, scalable, and fault-tolerant way.
-
-Like [Distributed RPC](Distributed-RPC.html), transactional topologies aren't so much a feature of Storm as they are a higher level abstraction built on top of Storm's primitives of streams, spouts, bolts, and topologies.
-
-This page explains the transactional topology abstraction, how to use the API, and provides details as to its implementation.
-
-## Concepts
-
-Let's build up to Storm's abstraction for transactional topologies one step at a time. Let's start by looking at the simplest possible approach, and then we'll iterate on the design until we reach Storm's design.
-
-### Design 1
-
-The core idea behind transactional topologies is to provide a _strong ordering_ on the processing of data. The simplest manifestation of this, and the first design we'll look at, is processing the tuples one at a time and not moving on to the next tuple until the current tuple has been successfully processed by the topology.
-
-Each tuple is associated with a transaction id. If the tuple fails and needs to be replayed, then it is emitted with the exact same transaction id. A transaction id is an integer that increments for every tuple, so the first tuple will have transaction id `1`, the second id `2`, and so on.
-
-The strong ordering of tuples gives you the capability to achieve exactly-once semantics even in the case of tuple replay. Let's look at an example of how you would do this.
-
-Suppose you want to do a global count of the tuples in the stream. Instead of storing just the count in the database, you instead store the count and the latest transaction id together as one value in the database. When your code updates the count in the db, it should update the count *only if the transaction id in the database differs from the transaction id for the tuple currently being processed*. Consider the two cases:
-
-1. *The transaction id in the database is different than the current transaction id:* Because of the strong ordering of transactions, we know for sure that the current tuple isn't represented in that count. So we can safely increment the count and update the transaction id.
-2. *The transaction id is the same as the current transaction id:* Then we know that this tuple is already incorporated into the count and can skip the update. The tuple must have failed after updating the database but before reporting success back to Storm.
-
-This logic and the strong ordering of transactions ensures that the count in the database will be accurate even if tuples are replayed.  Credit for this trick of storing a transaction id in the database along with the value goes to the Kafka devs, particularly [this design document](http://incubator.apache.org/kafka/07/design.html).
-
-Furthermore, notice that the topology can safely update many sources of state in the same transaction and achieve exactly-once semantics. If there's a failure, any updates that already succeeded will skip on the retry, and any updates that failed will properly retry. For example, if you were processing a stream of tweeted urls, you could update a database that stores a tweet count for each url as well as a database that stores a tweet count for each domain.
-
-There is a significant problem though with this design of processing one tuple at time. Having to wait for each tuple to be _completely processed_ before moving on to the next one is horribly inefficient. It entails a huge amount of database calls (at least one per tuple), and this design makes very little use of the parallelization capabilities of Storm. So it isn't very scalable.
-
-### Design 2
-
-Instead of processing one tuple at a time, a better approach is to process a batch of tuples for each transaction. So if you're doing a global count, you would increment the count by the number of tuples in the entire batch. If a batch fails, you replay the exact batch that failed. Instead of assigning a transaction id to each tuple, you assign a transaction id to each batch, and the processing of the batches is strongly ordered. Here's a diagram of this design:
-
-![Storm cluster](images/transactional-batches.png)
-
-So if you're processing 1000 tuples per batch, your application will do 1000x less database operations than design 1. Additionally, it takes advantage of Storm's parallelization capabilities as the computation for each batch can be parallelized.
-
-While this design is significantly better than design 1, it's still not as resource-efficient as possible. The workers in the topology spend a lot of time being idle waiting for the other portions of the computation to finish. For example, in a topology like this:
-
-![Storm cluster](images/transactional-design-2.png)
-
-After bolt 1 finishes its portion of the processing, it will be idle until the rest of the bolts finish and the next batch can be emitted from the spout.
-
-### Design 3 (Storm's design)
-
-A key realization is that not all the work for processing batches of tuples needs to be strongly ordered. For example, when computing a global count, there's two parts to the computation:
-
-1. Computing the partial count for the batch
-2. Updating the global count in the database with the partial count
-
-The computation of #2 needs to be strongly ordered across the batches, but there's no reason you shouldn't be able to _pipeline_ the computation of the batches by computing #1 for many batches in parallel. So while batch 1 is working on updating the database, batches 2 through 10 can compute their partial counts.
-
-Storm accomplishes this distinction by breaking the computation of a batch into two phases:
-
-1. The processing phase: this is the phase that can be done in parallel for many batches
-2. The commit phase: The commit phases for batches are strongly ordered. So the commit for batch 2 is not done until the commit for batch 1 has been successful.
-
-The two phases together are called a "transaction". Many batches can be in the processing phase at a given moment, but only one batch can be in the commit phase. If there's any failure in the processing or commit phase for a batch, the entire transaction is replayed (both phases).
-
-## Design details
-
-When using transactional topologies, Storm does the following for you:
-
-1. *Manages state:* Storm stores in Zookeeper all the state necessary to do transactional topologies. This includes the current transaction id as well as the metadata defining the parameters for each batch.
-2. *Coordinates the transactions:* Storm will manage everything necessary to determine which transactions should be processing or committing at any point.
-3. *Fault detection:* Storm leverages the acking framework to efficiently determine when a batch has successfully processed, successfully committed, or failed. Storm will then replay batches appropriately. You don't have to do any acking or anchoring -- Storm manages all of this for you.
-4. *First class batch processing API*: Storm layers an API on top of regular bolts to allow for batch processing of tuples. Storm manages all the coordination for determining when a task has received all the tuples for that particular transaction. Storm will also take care of cleaning up any accumulated state for each transaction (like the partial counts).
-
-Finally, another thing to note is that transactional topologies require a source queue that can replay an exact batch of messages. Technologies like [Kestrel](https://github.com/robey/kestrel) can't do this. [Apache Kafka](http://incubator.apache.org/kafka/index.html) is a perfect fit for this kind of spout, and [storm-kafka](https://github.com/apache/storm/tree/master/external/storm-kafka) contains a transactional spout implementation for Kafka.
-
-## The basics through example
-
-You build transactional topologies by using [TransactionalTopologyBuilder](/javadoc/apidocs/backtype/storm/transactional/TransactionalTopologyBuilder.html). Here's the transactional topology definition for a topology that computes the global count of tuples from the input stream. This code comes from [TransactionalGlobalCount](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/TransactionalGlobalCount.java) in storm-starter.
-
-```java
-MemoryTransactionalSpout spout = new MemoryTransactionalSpout(DATA, new Fields("word"), PARTITION_TAKE_PER_BATCH);
-TransactionalTopologyBuilder builder = new TransactionalTopologyBuilder("global-count", "spout", spout, 3);
-builder.setBolt("partial-count", new BatchCount(), 5)
-        .shuffleGrouping("spout");
-builder.setBolt("sum", new UpdateGlobalCount())
-        .globalGrouping("partial-count");
-```
-
-`TransactionalTopologyBuilder` takes as input in the constructor an id for the transactional topology, an id for the spout within the topology, a transactional spout, and optionally the parallelism for the transactional spout. The id for the transactional topology is used to store state about the progress of topology in Zookeeper, so that if you restart the topology it will continue where it left off.
-
-A transactional topology has a single `TransactionalSpout` that is defined in the constructor of `TransactionalTopologyBuilder`. In this example, `MemoryTransactionalSpout` is used which reads in data from an in-memory partitioned source of data (the `DATA` variable). The second argument defines the fields for the data, and the third argument specifies the maximum number of tuples to emit from each partition per batch of tuples. The interface for defining your own transactional spouts is discussed later on in this tutorial.
-
-Now on to the bolts. This topology parallelizes the computation of the global count. The first bolt, `BatchCount`, randomly partitions the input stream using a shuffle grouping and emits the count for each partition. The second bolt, `UpdateGlobalCount`, does a global grouping and sums together the partial counts to get the count for the batch. It then updates the global count in the database if necessary.
-
-Here's the definition of `BatchCount`:
-
-```java
-public static class BatchCount extends BaseBatchBolt {
-    Object _id;
-    BatchOutputCollector _collector;
-
-    int _count = 0;
-
-    @Override
-    public void prepare(Map conf, TopologyContext context, BatchOutputCollector collector, Object id) {
-        _collector = collector;
-        _id = id;
-    }
-
-    @Override
-    public void execute(Tuple tuple) {
-        _count++;
-    }
-
-    @Override
-    public void finishBatch() {
-        _collector.emit(new Values(_id, _count));
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("id", "count"));
-    }
-}
-```
-
-A new instance of this object is created for every batch that's being processed. The actual bolt this runs within is called [BatchBoltExecutor](https://github.com/apache/storm/blob/0.7.0/src/jvm/backtype/storm/coordination/BatchBoltExecutor.java) and manages the creation and cleanup for these objects.
-
-The `prepare` method parameterizes this batch bolt with the Storm config, the topology context, an output collector, and the id for this batch of tuples. In the case of transactional topologies, the id will be a [TransactionAttempt](/javadoc/apidocs/backtype/storm/transactional/TransactionAttempt.html) object. The batch bolt abstraction can be used in Distributed RPC as well which uses a different type of id for the batches. `BatchBolt` can actually be parameterized with the type of the id, so if you only intend to use the batch bolt for transactional topologies, you can extend `BaseTransactionalBolt` which has this definition:
-
-```java
-public abstract class BaseTransactionalBolt extends BaseBatchBolt<TransactionAttempt> {
-}
-```
-
-All tuples emitted within a transactional topology must have the `TransactionAttempt` as the first field of the tuple. This lets Storm identify which tuples belong to which batches. So when you emit tuples you need to make sure to meet this requirement.
-
-The `TransactionAttempt` contains two values: the "transaction id" and the "attempt id". The "transaction id" is the unique id chosen for this batch and is the same no matter how many times the batch is replayed. The "attempt id" is a unique id for this particular batch of tuples and lets Storm distinguish tuples from different emissions of the same batch. Without the attempt id, Storm could confuse a replay of a batch with tuples from a prior time that batch was emitted. This would be disastrous.
-
-The transaction id increases by 1 for every batch emitted. So the first batch has id "1", the second has id "2", and so on.
-
-The `execute` method is called for every tuple in the batch. You should accumulate state for the batch in a local instance variable every time this method is called. The `BatchCount` bolt increments a local counter variable for every tuple.
-
-Finally, `finishBatch` is called when the task has received all tuples intended for it for this particular batch. `BatchCount` emits the partial count to the output stream when this method is called.
-
-Here's the definition of `UpdateGlobalCount`:
-
-```java
-public static class UpdateGlobalCount extends BaseTransactionalBolt implements ICommitter {
-    TransactionAttempt _attempt;
-    BatchOutputCollector _collector;
-
-    int _sum = 0;
-
-    @Override
-    public void prepare(Map conf, TopologyContext context, BatchOutputCollector collector, TransactionAttempt attempt) {
-        _collector = collector;
-        _attempt = attempt;
-    }
-
-    @Override
-    public void execute(Tuple tuple) {
-        _sum+=tuple.getInteger(1);
-    }
-
-    @Override
-    public void finishBatch() {
-        Value val = DATABASE.get(GLOBAL_COUNT_KEY);
-        Value newval;
-        if(val == null || !val.txid.equals(_attempt.getTransactionId())) {
-            newval = new Value();
-            newval.txid = _attempt.getTransactionId();
-            if(val==null) {
-                newval.count = _sum;
-            } else {
-                newval.count = _sum + val.count;
-            }
-            DATABASE.put(GLOBAL_COUNT_KEY, newval);
-        } else {
-            newval = val;
-        }
-        _collector.emit(new Values(_attempt, newval.count));
-    }
-
-    @Override
-    public void declareOutputFields(OutputFieldsDeclarer declarer) {
-        declarer.declare(new Fields("id", "sum"));
-    }
-}
-```
-
-`UpdateGlobalCount` is specific to transactional topologies so it extends `BaseTransactionalBolt`. In the `execute` method, `UpdateGlobalCount` accumulates the count for this batch by summing together the partial batches. The interesting stuff happens in `finishBatch`.
-
-First, notice that this bolt implements the `ICommitter` interface. This tells Storm that the `finishBatch` method of this bolt should be part of the commit phase of the transaction. So calls to `finishBatch` for this bolt will be strongly ordered by transaction id (calls to `execute` on the other hand can happen during either the processing or commit phases). An alternative way to mark a bolt as a committer is to use the `setCommitterBolt` method in `TransactionalTopologyBuilder` instead of `setBolt`.
-
-The code for `finishBatch` in `UpdateGlobalCount` gets the current value from the database and compares its transaction id to the transaction id for this batch. If they are the same, it does nothing. Otherwise, it increments the value in the database by the partial count for this batch.
-
-A more involved transactional topology example that updates multiple databases idempotently can be found in storm-starter in the [TransactionalWords](https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/TransactionalWords.java) class.
-
-## Transactional Topology API
-
-This section outlines the different pieces of the transactional topology API.
-
-### Bolts
-
-There are three kinds of bolts possible in a transactional topology:
-
-1. [BasicBolt](/javadoc/apidocs/backtype/storm/topology/base/BaseBasicBolt.html): This bolt doesn't deal with batches of tuples and just emits tuples based on a single tuple of input.
-2. [BatchBolt](/javadoc/apidocs/backtype/storm/topology/base/BaseBatchBolt.html): This bolt processes batches of tuples. `execute` is called for each tuple, and `finishBatch` is called when the batch is complete.
-3. BatchBolt's that are marked as committers: The only difference between this bolt and a regular batch bolt is when `finishBatch` is called. A committer bolt has `finishedBatch` called during the commit phase. The commit phase is guaranteed to occur only after all prior batches have successfully committed, and it will be retried until all bolts in the topology succeed the commit for the batch. There are two ways to make a `BatchBolt` a committer, by having the `BatchBolt` implement the [ICommitter](/javadoc/apidocs/backtype/storm/transactional/ICommitter.html) marker interface, or by using the `setCommiterBolt` method in `TransactionalTopologyBuilder`.
-
-#### Processing phase vs. commit phase in bolts
-
-To nail down the difference between the processing phase and commit phase of a transaction, let's look at an example topology:
-
-![Storm cluster](images/transactional-commit-flow.png)
-
-In this topology, only the bolts with a red outline are committers.
-
-During the processing phase, bolt A will process the complete batch from the spout, call `finishBatch` and send its tuples to bolts B and C. Bolt B is a committer so it will process all the tuples but finishBatch won't be called. Bolt C also will not have `finishBatch` called because it doesn't know if it has received all the tuples from Bolt B yet (because Bolt B is waiting for the transaction to commit). Finally, Bolt D will receive any tuples Bolt C emitted during invocations of its `execute` method.
-
-When the batch commits, `finishBatch` is called on Bolt B. Once it finishes, Bolt C can now detect that it has received all the tuples and will call `finishBatch`. Finally, Bolt D will receive its complete batch and call `finishBatch`.
-
-Notice that even though Bolt D is a committer, it doesn't have to wait for a second commit message when it receives the whole batch. Since it receives the whole batch during the commit phase, it goes ahead and completes the transaction.
-
-Committer bolts act just like batch bolts during the commit phase. The only difference between committer bolts and batch bolts is that committer bolts will not call `finishBatch` during the processing phase of a transaction.
-
-#### Acking
-
-Notice that you don't have to do any acking or anchoring when working with transactional topologies. Storm manages all of that underneath the hood. The acking strategy is heavily optimized.
-
-#### Failing a transaction
-
-When using regular bolts, you can call the `fail` method on `OutputCollector` to fail the tuple trees of which that tuple is a member. Since transactional topologies hide the acking framework from you, they provide a different mechanism to fail a batch (and cause the batch to be replayed). Just throw a [FailedException](/javadoc/apidocs/backtype/storm/topology/FailedException.html). Unlike regular exceptions, this will only cause that particular batch to replay and will not crash the process.
-
-### Transactional spout
-
-The `TransactionalSpout` interface is completely different from a regular `Spout` interface. A `TransactionalSpout` implementation emits batches of tuples and must ensure that the same batch of tuples is always emitted for the same transaction id.
-
-A transactional spout looks like this while a topology is executing:
-
-![Storm cluster](images/transactional-spout-structure.png)
-
-The coordinator on the left is a regular Storm spout that emits a tuple whenever a batch should be emitted for a transaction. The emitters execute as a regular Storm bolt and are responsible for emitting the actual tuples for the batch. The emitters subscribe to the "batch emit" stream of the coordinator using an all grouping.
-
-The need to be idempotent with respect to the tuples it emits requires a `TransactionalSpout` to store a small amount of state. The state is stored in Zookeeper.
-
-The details of implementing a `TransactionalSpout` are in [the Javadoc](/javadoc/apidocs/backtype/storm/transactional/ITransactionalSpout.html).
-
-#### Partitioned Transactional Spout
-
-A common kind of transactional spout is one that reads the batches from a set of partitions across many queue brokers. For example, this is how [TransactionalKafkaSpout](https://github.com/apache/storm/tree/master/external/storm-kafka/src/jvm/storm/kafka/TransactionalKafkaSpout.java) works. An `IPartitionedTransactionalSpout` automates the bookkeeping work of managing the state for each partition to ensure idempotent replayability. See [the Javadoc](/javadoc/apidocs/backtype/storm/transactional/partitioned/IPartitionedTransactionalSpout.html) for more details.
-
-### Configuration
-
-There's two important bits of configuration for transactional topologies:
-
-1. *Zookeeper:* By default, transactional topologies will store state in the same Zookeeper instance as used to manage the Storm cluster. You can override this with the "transactional.zookeeper.servers" and "transactional.zookeeper.port" configs.
-2. *Number of active batches permissible at once:* You must set a limit to the number of batches that can be processed at once. You configure this using the "topology.max.spout.pending" config. If you don't set this config, it will default to 1.
-
-## What if you can't emit the same batch of tuples for a given transaction id?
-
-So far the discussion around transactional topologies has assumed that you can always emit the exact same batch of tuples for the same transaction id. So what do you do if this is not possible?
-
-Consider an example of when this is not possible. Suppose you are reading tuples from a partitioned message broker (stream is partitioned across many machines), and a single transaction will include tuples from all the individual machines. Now suppose one of the nodes goes down at the same time that a transaction fails. Without that node, it is impossible to replay the same batch of tuples you just played for that transaction id. The processing in your topology will halt as its unable to replay the identical batch. The only possible solution is to emit a different batch for that transaction id than you emitted before. Is it possible to still achieve exactly-once messaging semantics even if the batches change?
-
-It turns out that you can still achieve exactly-once messaging semantics in your processing with a non-idempotent transactional spout, although this requires a bit more work on your part in developing the topology.
-
-If a batch can change for a given transaction id, then the logic we've been using so far of "skip the update if the transaction id in the database is the same as the id for the current transaction" is no longer valid. This is because the current batch is different than the batch for the last time the transaction was committed, so the result will not necessarily be the same. You can fix this problem by storing a little bit more state in the database. Let's again use the example of storing a global count in the database and suppose the partial count for the batch is stored in the `partialCount` variable.
-
-Instead of storing a value in the database that looks like this:
-
-```java
-class Value {
-  Object count;
-  BigInteger txid;
-}
-```
-
-For non-idempotent transactional spouts you should instead store a value that looks like this:
-
-```java
-class Value {
-  Object count;
-  BigInteger txid;
-  Object prevCount;
-}
-```
-
-The logic for the update is as follows:
-
-1. If the transaction id for the current batch is the same as the transaction id in the database, set `val.count = val.prevCount + partialCount`.
-2. Otherwise, set `val.prevCount = val.count`, `val.count = val.count + partialCount` and `val.txid = batchTxid`.
-
-This logic works because once you commit a particular transaction id for the first time, all prior transaction ids will never be committed again.
-
-There's a few more subtle aspects of transactional topologies that make opaque transactional spouts possible.
-
-When a transaction fails, all subsequent transactions in the processing phase are considered failed as well. Each of those transactions will be re-emitted and reprocessed. Without this behavior, the following situation could happen:
-
-1. Transaction A emits tuples 1-50
-2. Transaction B emits tuples 51-100
-3. Transaction A fails
-4. Transaction A emits tuples 1-40
-5. Transaction A commits
-6. Transaction B commits
-7. Transaction C emits tuples 101-150
-
-In this scenario, tuples 41-50 are skipped. By failing all subsequent transactions, this would happen instead:
-
-1. Transaction A emits tuples 1-50
-2. Transaction B emits tuples 51-100
-3. Transaction A fails (and causes Transaction B to fail)
-4. Transaction A emits tuples 1-40
-5. Transaction B emits tuples 41-90
-5. Transaction A commits
-6. Transaction B commits
-7. Transaction C emits tuples 91-140
-
-By failing all subsequent transactions on failure, no tuples are skipped. This also shows that a requirement of transactional spouts is that they always emit where the last transaction left off.
-
-A non-idempotent transactional spout is more concisely referred to as an "OpaqueTransactionalSpout" (opaque is the opposite of idempotent). [IOpaquePartitionedTransactionalSpout](/javadoc/apidocs/backtype/storm/transactional/partitioned/IOpaquePartitionedTransactionalSpout.html) is an interface for implementing opaque partitioned transactional spouts, of which [OpaqueTransactionalKafkaSpout](https://github.com/apache/storm/tree/master/external/storm-kafka/src/jvm/storm/kafka/OpaqueTransactionalKafkaSpout.java) is an example. `OpaqueTransactionalKafkaSpout` can withstand losing individual Kafka nodes without sacrificing accuracy as long as you use the update strategy as explained in this section.
-
-## Implementation
-
-The implementation for transactional topologies is very elegant. Managing the commit protocol, detecting failures, and pipelining batches seem complex, but everything turns out to be a straightforward mapping to Storm's primitives.
-
-How the data flow works:
-
-Here's how transactional spout works:
-
-1. Transactional spout is a subtopology consisting of a coordinator spout and an emitter bolt
-2. The coordinator is a regular spout with a parallelism of 1
-3. The emitter is a bolt with a parallelism of P, connected to the coordinator's "batch" stream using an all grouping
-4. When the coordinator determines it's time to enter the processing phase for a transaction, it emits a tuple containing the TransactionAttempt and the metadata for that transaction to the "batch" stream
-5. Because of the all grouping, every single emitter task receives the notification that it's time to emit its portion of the tuples for that transaction attempt
-6. Storm automatically manages the anchoring/acking necessary throughout the whole topology to determine when a transaction has completed the processing phase. The key here is that *the root tuple was created by the coordinator, so the coordinator will receive an "ack" if the processing phase succeeds, and a "fail" if it doesn't succeed for any reason (failure or timeout).
-7. If the processing phase succeeds, and all prior transactions have successfully committed, the coordinator emits a tuple containing the TransactionAttempt to the "commit" stream.
-8. All committing bolts subscribe to the commit stream using an all grouping, so that they will all receive a notification when the commit happens.
-9. Like the processing phase, the coordinator uses the acking framework to determine whether the commit phase succeeded or not. If it receives an "ack", it marks that transaction as complete in zookeeper.
-
-More notes:
-
-- Transactional spouts are a sub-topology consisting of a spout and a bolt
-  - the spout is the coordinator and contains a single task
-  - the bolt is the emitter
-  - the bolt subscribes to the coordinator with an all grouping
-  - serialization of metadata is handled by kryo. kryo is initialized ONLY with the registrations defined in the component configuration for the transactionalspout
-- the coordinator uses the acking framework to determine when a batch has been successfully processed, and then to determine when a batch has been successfully committed.
-- state is stored in zookeeper using RotatingTransactionalState
-- commiting bolts subscribe to the coordinators commit stream using an all grouping
-- CoordinatedBolt is used to detect when a bolt has received all the tuples for a particular batch.
-  - this is the same abstraction that is used in DRPC
-  - for commiting bolts, it waits to receive a tuple from the coordinator's commit stream before calling finishbatch
-  - so it can't call finishbatch until it's received all tuples from all subscribed components AND its received the commit stream tuple (for committers). this ensures that it can't prematurely call finishBatch


[20/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/bootstrap-theme.css.map
----------------------------------------------------------------------
diff --git a/docs/assets/css/bootstrap-theme.css.map b/docs/assets/css/bootstrap-theme.css.map
deleted file mode 100644
index 016a8da..0000000
--- a/docs/assets/css/bootstrap-theme.css.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["less/theme.less","less/mixins/vendor-prefixes.less","bootstrap-theme.css","less/mixins/gradients.less","less/mixins/reset-filter.less"],"names":[],"mappings":"AAcA;;;;;;EAME,0CAAA;ECgDA,6FAAA;EACQ,qFAAA;EC5DT;AFgBC;;;;;;;;;;;;EC2CA,0DAAA;EACQ,kDAAA;EC7CT;AFVD;;;;;;EAiBI,mBAAA;EECH;AFgCC;;EAEE,wBAAA;EE9BH;AFmCD;EGlDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EA+B2C,2BAAA;EAA2B,oBAAA;EExBvE;AFLC;;EAEE,2BAAA;EACA,8BAAA;EEOH;AFJC;;EAEE,2BAAA;EACA,uBAAA;EEMH;AFHC;;EAEE,2BAAA;EACA,wBAAA;EEKH;AFUD;EGnDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE+BD;AF7BC;;EAEE,2BAAA;EACA,8BAAA;EE+BH;AF5BC;;EAEE,2BAAA;EACA,uBAAA;EE8BH;AF3BC;;EAEE,2BAAA;EACA,wBAAA;EE6BH;AFbD;EGpDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEuDD;AFrDC;;EAEE,2BAAA;EACA,8BAAA;EEuDH;AFpDC;;EAEE,2BAAA;EACA,uBAAA;EEsDH;AFnDC;;EAEE,2BAAA;EACA,wBAAA;EEqDH;AFpCD;EGrDI,0EAAA;EACA,q
 EAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE+ED;AF7EC;;EAEE,2BAAA;EACA,8BAAA;EE+EH;AF5EC;;EAEE,2BAAA;EACA,uBAAA;EE8EH;AF3EC;;EAEE,2BAAA;EACA,wBAAA;EE6EH;AF3DD;EGtDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EEuGD;AFrGC;;EAEE,2BAAA;EACA,8BAAA;EEuGH;AFpGC;;EAEE,2BAAA;EACA,uBAAA;EEsGH;AFnGC;;EAEE,2BAAA;EACA,wBAAA;EEqGH;AFlFD;EGvDI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EAEA,wHAAA;ECnBF,qEAAA;EJiCA,6BAAA;EACA,uBAAA;EE+HD;AF7HC;;EAEE,2BAAA;EACA,8BAAA;EE+HH;AF5HC;;EAEE,2BAAA;EACA,uBAAA;EE8HH;AF3HC;;EAEE,2BAAA;EACA,wBAAA;EE6HH;AFnGD;;ECfE,oDAAA;EACQ,4CAAA;ECsHT;AF9FD;;EGxEI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHuEF,2BAAA;EEoGD;AFlGD;;;EG7EI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH6EF,2BAAA;EEwGD;AF/FD;EG1FI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ECnBF,qEAAA;EJ4GA,oBAAA;EC9CA,6FAAA;EACQ,qFAAA;ECoJT;AF1GD;;EG1FI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA
 ;EACA,6BAAA;EACA,wHAAA;EF2CF,0DAAA;EACQ,kDAAA;EC8JT;AFvGD;;EAEE,gDAAA;EEyGD;AFrGD;EG7GI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ECnBF,qEAAA;EFyOD;AF7GD;;EG7GI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EF2CF,yDAAA;EACQ,iDAAA;ECoLT;AFvHD;;EAYI,2CAAA;EE+GH;AF1GD;;;EAGE,kBAAA;EE4GD;AF5FD;EAVI;;;IAGE,aAAA;IG1IF,0EAAA;IACA,qEAAA;IACA,+FAAA;IAAA,wEAAA;IACA,6BAAA;IACA,wHAAA;IDoPD;EACF;AFnGD;EACE,+CAAA;ECxGA,4FAAA;EACQ,oFAAA;EC8MT;AF3FD;EGnKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH2JF,uBAAA;EEuGD;AFlGD;EGpKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH2JF,uBAAA;EE+GD;AFzGD;EGrKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH2JF,uBAAA;EEuHD;AFhHD;EGtKI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH2JF,uBAAA;EE+HD;AFhHD;EG9KI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDiSH;AF7GD;EGxLI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDwSH;AFnHD;EGz
 LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED+SH;AFzHD;EG1LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDsTH;AF/HD;EG3LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED6TH;AFrID;EG5LI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDoUH;AFxID;EG/JI,+MAAA;EACA,0MAAA;EACA,uMAAA;ED0SH;AFpID;EACE,oBAAA;EC3JA,oDAAA;EACQ,4CAAA;ECkST;AFrID;;;EAGE,+BAAA;EGhNE,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EH8MF,uBAAA;EE2ID;AFhJD;;;EAQI,mBAAA;EE6IH;AFnID;EChLE,mDAAA;EACQ,2CAAA;ECsTT;AF7HD;EGzOI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDyWH;AFnID;EG1OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDgXH;AFzID;EG3OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDuXH;AF/ID;EG5OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED8XH;AFrJD;EG7OI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EDqYH;AF3JD;EG9OI,0EAAA;EACA,qEAAA;EACA,+FAAA
 ;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;ED4YH;AF3JD;EGrPI,0EAAA;EACA,qEAAA;EACA,+FAAA;EAAA,wEAAA;EACA,6BAAA;EACA,wHAAA;EHmPF,uBAAA;ECxMA,2FAAA;EACQ,mFAAA;EC0WT","file":"bootstrap-theme.css","sourcesContent":["\n//\n// Load core variables and mixins\n// --------------------------------------------------\n\n@import \"variables.less\";\n@import \"mixins.less\";\n\n\n//\n// Buttons\n// --------------------------------------------------\n\n// Common styles\n.btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0,0,0,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 1px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  // Reset the shadow\n  &:active,\n  &.active {\n    .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));\n  }\n\n  .badge {\n    text-shadow: none;\n  }\n}\n\n// Mixin for generating new styles\n.btn-styles(@btn-color: #555) {\n  #gradient > .vertical(@start-color: @btn-color; @end-color: darken(@btn-color, 12%));\n 
  .reset-filter(); // Disable gradients for IE9 because filter bleeds through rounded corners\n  background-repeat: repeat-x;\n  border-color: darken(@btn-color, 14%);\n\n  &:hover,\n  &:focus  {\n    background-color: darken(@btn-color, 12%);\n    background-position: 0 -15px;\n  }\n\n  &:active,\n  &.active {\n    background-color: darken(@btn-color, 12%);\n    border-color: darken(@btn-color, 14%);\n  }\n\n  &:disabled,\n  &[disabled] {\n    background-color: darken(@btn-color, 12%);\n    background-image: none;\n  }\n}\n\n// Common styles\n.btn {\n  // Remove the gradient for the pressed/active state\n  &:active,\n  &.active {\n    background-image: none;\n  }\n}\n\n// Apply the mixin to the buttons\n.btn-default { .btn-styles(@btn-default-bg); text-shadow: 0 1px 0 #fff; border-color: #ccc; }\n.btn-primary { .btn-styles(@btn-primary-bg); }\n.btn-success { .btn-styles(@btn-success-bg); }\n.btn-info    { .btn-styles(@btn-info-bg); }\n.btn-warning { .btn-styles(@btn-warning-bg); }\n
 .btn-danger  { .btn-styles(@btn-danger-bg); }\n\n\n//\n// Images\n// --------------------------------------------------\n\n.thumbnail,\n.img-thumbnail {\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n\n\n//\n// Dropdowns\n// --------------------------------------------------\n\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-hover-bg; @end-color: darken(@dropdown-link-hover-bg, 5%));\n  background-color: darken(@dropdown-link-hover-bg, 5%);\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n  background-color: darken(@dropdown-link-active-bg, 5%);\n}\n\n\n//\n// Navbar\n// --------------------------------------------------\n\n// Default navbar\n.navbar-default {\n  #gradient > .vertical(@start-color: lighten(@navbar-default-bg, 10%); @end-co
 lor: @navbar-default-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n  border-radius: @navbar-border-radius;\n  @shadow: inset 0 1px 0 rgba(255,255,255,.15), 0 1px 5px rgba(0,0,0,.075);\n  .box-shadow(@shadow);\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: darken(@navbar-default-link-active-bg, 5%); @end-color: darken(@navbar-default-link-active-bg, 2%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.075));\n  }\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255,255,255,.25);\n}\n\n// Inverted navbar\n.navbar-inverse {\n  #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);\n  .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered\n\n  .navbar-nav > .open > a,\n  .navbar-nav > .active > a {\n    #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end
 -color: lighten(@navbar-inverse-link-active-bg, 2.5%));\n    .box-shadow(inset 0 3px 9px rgba(0,0,0,.25));\n  }\n\n  .navbar-brand,\n  .navbar-nav > li > a {\n    text-shadow: 0 -1px 0 rgba(0,0,0,.25);\n  }\n}\n\n// Undo rounded corners in static and fixed navbars\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n\n// Fix active state of dropdown items in collapsed mode\n@media (max-width: @grid-float-breakpoint-max) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a {\n    &,\n    &:hover,\n    &:focus {\n      color: #fff;\n      #gradient > .vertical(@start-color: @dropdown-link-active-bg; @end-color: darken(@dropdown-link-active-bg, 5%));\n    }\n  }\n}\n\n\n//\n// Alerts\n// --------------------------------------------------\n\n// Common styles\n.alert {\n  text-shadow: 0 1px 0 rgba(255,255,255,.2);\n  @shadow: inset 0 1px 0 rgba(255,255,255,.25), 0 1px 2px rgba(0,0,0,.05);\n  .box-shadow(@shadow);\n}\n\n// Mixin for generating n
 ew styles\n.alert-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 7.5%));\n  border-color: darken(@color, 15%);\n}\n\n// Apply the mixin to the alerts\n.alert-success    { .alert-styles(@alert-success-bg); }\n.alert-info       { .alert-styles(@alert-info-bg); }\n.alert-warning    { .alert-styles(@alert-warning-bg); }\n.alert-danger     { .alert-styles(@alert-danger-bg); }\n\n\n//\n// Progress bars\n// --------------------------------------------------\n\n// Give the progress background some depth\n.progress {\n  #gradient > .vertical(@start-color: darken(@progress-bg, 4%); @end-color: @progress-bg)\n}\n\n// Mixin for generating new styles\n.progress-bar-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 10%));\n}\n\n// Apply the mixin to the progress bars\n.progress-bar            { .progress-bar-styles(@progress-bar-bg); }\n.progress-bar-success    { .progress-bar-styles(@progress-bar-success-bg); }\
 n.progress-bar-info       { .progress-bar-styles(@progress-bar-info-bg); }\n.progress-bar-warning    { .progress-bar-styles(@progress-bar-warning-bg); }\n.progress-bar-danger     { .progress-bar-styles(@progress-bar-danger-bg); }\n\n// Reset the striped class because our mixins don't do multiple gradients and\n// the above custom styles override the new `.progress-bar-striped` in v3.2.0.\n.progress-bar-striped {\n  #gradient > .striped();\n}\n\n\n//\n// List groups\n// --------------------------------------------------\n\n.list-group {\n  border-radius: @border-radius-base;\n  .box-shadow(0 1px 2px rgba(0,0,0,.075));\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 darken(@list-group-active-bg, 10%);\n  #gradient > .vertical(@start-color: @list-group-active-bg; @end-color: darken(@list-group-active-bg, 7.5%));\n  border-color: darken(@list-group-active-border, 7.5%);\n\n  .badge {\n    text-shadow: none;\n  }\n}\n
 \n\n//\n// Panels\n// --------------------------------------------------\n\n// Common styles\n.panel {\n  .box-shadow(0 1px 2px rgba(0,0,0,.05));\n}\n\n// Mixin for generating new styles\n.panel-heading-styles(@color) {\n  #gradient > .vertical(@start-color: @color; @end-color: darken(@color, 5%));\n}\n\n// Apply the mixin to the panel headings only\n.panel-default > .panel-heading   { .panel-heading-styles(@panel-default-heading-bg); }\n.panel-primary > .panel-heading   { .panel-heading-styles(@panel-primary-heading-bg); }\n.panel-success > .panel-heading   { .panel-heading-styles(@panel-success-heading-bg); }\n.panel-info > .panel-heading      { .panel-heading-styles(@panel-info-heading-bg); }\n.panel-warning > .panel-heading   { .panel-heading-styles(@panel-warning-heading-bg); }\n.panel-danger > .panel-heading    { .panel-heading-styles(@panel-danger-heading-bg); }\n\n\n//\n// Wells\n// --------------------------------------------------\n\n.well {\n  #gradient > .vertical(@start
 -color: darken(@well-bg, 5%); @end-color: @well-bg);\n  border-color: darken(@well-bg, 10%);\n  @shadow: inset 0 1px 3px rgba(0,0,0,.05), 0 1px 0 rgba(255,255,255,.1);\n  .box-shadow(@shadow);\n}\n","// Vendor Prefixes\n//\n// All vendor mixins are deprecated as of v3.2.0 due to the introduction of\n// Autoprefixer in our Gruntfile. They will be removed in v4.\n\n// - Animations\n// - Backface visibility\n// - Box shadow\n// - Box sizing\n// - Content columns\n// - Hyphens\n// - Placeholder text\n// - Transformations\n// - Transitions\n// - User Select\n\n\n// Animations\n.animation(@animation) {\n  -webkit-animation: @animation;\n       -o-animation: @animation;\n          animation: @animation;\n}\n.animation-name(@name) {\n  -webkit-animation-name: @name;\n          animation-name: @name;\n}\n.animation-duration(@duration) {\n  -webkit-animation-duration: @duration;\n          animation-duration: @duration;\n}\n.animation-timing-function(@timing-function) {\n  -webkit-animation-t
 iming-function: @timing-function;\n          animation-timing-function: @timing-function;\n}\n.animation-delay(@delay) {\n  -webkit-animation-delay: @delay;\n          animation-delay: @delay;\n}\n.animation-iteration-count(@iteration-count) {\n  -webkit-animation-iteration-count: @iteration-count;\n          animation-iteration-count: @iteration-count;\n}\n.animation-direction(@direction) {\n  -webkit-animation-direction: @direction;\n          animation-direction: @direction;\n}\n.animation-fill-mode(@fill-mode) {\n  -webkit-animation-fill-mode: @fill-mode;\n          animation-fill-mode: @fill-mode;\n}\n\n// Backface visibility\n// Prevent browsers from flickering when using CSS 3D transforms.\n// Default value is `visible`, but can be changed to `hidden`\n\n.backface-visibility(@visibility){\n  -webkit-backface-visibility: @visibility;\n     -moz-backface-visibility: @visibility;\n          backface-visibility: @visibility;\n}\n\n// Drop shadows\n//\n// Note: Deprecated `.box-sh
 adow()` as of v3.1.0 since all of Bootstrap's\n// supported browsers that have box shadow capabilities now support it.\n\n.box-shadow(@shadow) {\n  -webkit-box-shadow: @shadow; // iOS <4.3 & Android <4.1\n          box-shadow: @shadow;\n}\n\n// Box sizing\n.box-sizing(@boxmodel) {\n  -webkit-box-sizing: @boxmodel;\n     -moz-box-sizing: @boxmodel;\n          box-sizing: @boxmodel;\n}\n\n// CSS3 Content Columns\n.content-columns(@column-count; @column-gap: @grid-gutter-width) {\n  -webkit-column-count: @column-count;\n     -moz-column-count: @column-count;\n          column-count: @column-count;\n  -webkit-column-gap: @column-gap;\n     -moz-column-gap: @column-gap;\n          column-gap: @column-gap;\n}\n\n// Optional hyphenation\n.hyphens(@mode: auto) {\n  word-wrap: break-word;\n  -webkit-hyphens: @mode;\n     -moz-hyphens: @mode;\n      -ms-hyphens: @mode; // IE10+\n       -o-hyphens: @mode;\n          hyphens: @mode;\n}\n\n// Placeholder text\n.placeholder(@color: @input-color-p
 laceholder) {\n  // Firefox\n  &::-moz-placeholder {\n    color: @color;\n    opacity: 1; // See https://github.com/twbs/bootstrap/pull/11526\n  }\n  &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+\n  &::-webkit-input-placeholder  { color: @color; } // Safari and Chrome\n}\n\n// Transformations\n.scale(@ratio) {\n  -webkit-transform: scale(@ratio);\n      -ms-transform: scale(@ratio); // IE9 only\n       -o-transform: scale(@ratio);\n          transform: scale(@ratio);\n}\n.scale(@ratioX; @ratioY) {\n  -webkit-transform: scale(@ratioX, @ratioY);\n      -ms-transform: scale(@ratioX, @ratioY); // IE9 only\n       -o-transform: scale(@ratioX, @ratioY);\n          transform: scale(@ratioX, @ratioY);\n}\n.scaleX(@ratio) {\n  -webkit-transform: scaleX(@ratio);\n      -ms-transform: scaleX(@ratio); // IE9 only\n       -o-transform: scaleX(@ratio);\n          transform: scaleX(@ratio);\n}\n.scaleY(@ratio) {\n  -webkit-transform: scaleY(@ratio);\n      -ms-transform: scal
 eY(@ratio); // IE9 only\n       -o-transform: scaleY(@ratio);\n          transform: scaleY(@ratio);\n}\n.skew(@x; @y) {\n  -webkit-transform: skewX(@x) skewY(@y);\n      -ms-transform: skewX(@x) skewY(@y); // See https://github.com/twbs/bootstrap/issues/4885; IE9+\n       -o-transform: skewX(@x) skewY(@y);\n          transform: skewX(@x) skewY(@y);\n}\n.translate(@x; @y) {\n  -webkit-transform: translate(@x, @y);\n      -ms-transform: translate(@x, @y); // IE9 only\n       -o-transform: translate(@x, @y);\n          transform: translate(@x, @y);\n}\n.translate3d(@x; @y; @z) {\n  -webkit-transform: translate3d(@x, @y, @z);\n          transform: translate3d(@x, @y, @z);\n}\n.rotate(@degrees) {\n  -webkit-transform: rotate(@degrees);\n      -ms-transform: rotate(@degrees); // IE9 only\n       -o-transform: rotate(@degrees);\n          transform: rotate(@degrees);\n}\n.rotateX(@degrees) {\n  -webkit-transform: rotateX(@degrees);\n      -ms-transform: rotateX(@degrees); // IE9 only\n    
    -o-transform: rotateX(@degrees);\n          transform: rotateX(@degrees);\n}\n.rotateY(@degrees) {\n  -webkit-transform: rotateY(@degrees);\n      -ms-transform: rotateY(@degrees); // IE9 only\n       -o-transform: rotateY(@degrees);\n          transform: rotateY(@degrees);\n}\n.perspective(@perspective) {\n  -webkit-perspective: @perspective;\n     -moz-perspective: @perspective;\n          perspective: @perspective;\n}\n.perspective-origin(@perspective) {\n  -webkit-perspective-origin: @perspective;\n     -moz-perspective-origin: @perspective;\n          perspective-origin: @perspective;\n}\n.transform-origin(@origin) {\n  -webkit-transform-origin: @origin;\n     -moz-transform-origin: @origin;\n      -ms-transform-origin: @origin; // IE9 only\n          transform-origin: @origin;\n}\n\n\n// Transitions\n\n.transition(@transition) {\n  -webkit-transition: @transition;\n       -o-transition: @transition;\n          transition: @transition;\n}\n.transition-property(@transition-pr
 operty) {\n  -webkit-transition-property: @transition-property;\n          transition-property: @transition-property;\n}\n.transition-delay(@transition-delay) {\n  -webkit-transition-delay: @transition-delay;\n          transition-delay: @transition-delay;\n}\n.transition-duration(@transition-duration) {\n  -webkit-transition-duration: @transition-duration;\n          transition-duration: @transition-duration;\n}\n.transition-timing-function(@timing-function) {\n  -webkit-transition-timing-function: @timing-function;\n          transition-timing-function: @timing-function;\n}\n.transition-transform(@transition) {\n  -webkit-transition: -webkit-transform @transition;\n     -moz-transition: -moz-transform @transition;\n       -o-transition: -o-transform @transition;\n          transition: transform @transition;\n}\n\n\n// User select\n// For selecting text on the page\n\n.user-select(@select) {\n  -webkit-user-select: @select;\n     -moz-user-select: @select;\n      -ms-user-select: @
 select; // IE10+\n          user-select: @select;\n}\n",".btn-default,\n.btn-primary,\n.btn-success,\n.btn-info,\n.btn-warning,\n.btn-danger {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.btn-default:active,\n.btn-primary:active,\n.btn-success:active,\n.btn-info:active,\n.btn-warning:active,\n.btn-danger:active,\n.btn-default.active,\n.btn-primary.active,\n.btn-success.active,\n.btn-info.active,\n.btn-warning.active,\n.btn-danger.active {\n  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.btn-default .badge,\n.btn-primary .badge,\n.btn-success .badge,\n.btn-info .badge,\n.btn-warning .badge,\n.btn-danger .badge {\n  text-shadow: none;\n}\n.btn:active,\n.btn.active {\n  background-image: none;\n}\n.btn-default {\n  background-image
 : -webkit-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #e0e0e0 100%);\n  background-image: linear-gradient(to bottom, #ffffff 0%, #e0e0e0 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #dbdbdb;\n  text-shadow: 0 1px 0 #fff;\n  border-color: #ccc;\n}\n.btn-default:hover,\n.btn-default:focus {\n  background-color: #e0e0e0;\n  background-position: 0 -15px;\n}\n.btn-default:active,\n.btn-default.active {\n  background-color: #e0e0e0;\n  border-color: #dbdbdb;\n}\n.btn-default:disabled,\n.btn-default[disabled] {\n  background-color: #e0e0e0;\n  background-image: none;\n}\n.btn-primary {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 10
 0%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #245580;\n}\n.btn-primary:hover,\n.btn-primary:focus {\n  background-color: #265a88;\n  background-position: 0 -15px;\n}\n.btn-primary:active,\n.btn-primary.active {\n  background-color: #265a88;\n  border-color: #245580;\n}\n.btn-primary:disabled,\n.btn-primary[disabled] {\n  background-color: #265a88;\n  background-image: none;\n}\n.btn-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff4
 19641', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #3e8f3e;\n}\n.btn-success:hover,\n.btn-success:focus {\n  background-color: #419641;\n  background-position: 0 -15px;\n}\n.btn-success:active,\n.btn-success.active {\n  background-color: #419641;\n  border-color: #3e8f3e;\n}\n.btn-success:disabled,\n.btn-success[disabled] {\n  background-color: #419641;\n  background-image: none;\n}\n.btn-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #28a4c9;\n}\n.btn-info:hover,\n.btn
 -info:focus {\n  background-color: #2aabd2;\n  background-position: 0 -15px;\n}\n.btn-info:active,\n.btn-info.active {\n  background-color: #2aabd2;\n  border-color: #28a4c9;\n}\n.btn-info:disabled,\n.btn-info[disabled] {\n  background-color: #2aabd2;\n  background-image: none;\n}\n.btn-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #e38d13;\n}\n.btn-warning:hover,\n.btn-warning:focus {\n  background-color: #eb9316;\n  background-position: 0 -15px;\n}\n.btn-warning:active,\n.btn-warning.active {\n  background-color: #eb9316;\n  border-color: #e38d13;\n}\n.btn-
 warning:disabled,\n.btn-warning[disabled] {\n  background-color: #eb9316;\n  background-image: none;\n}\n.btn-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  background-repeat: repeat-x;\n  border-color: #b92c28;\n}\n.btn-danger:hover,\n.btn-danger:focus {\n  background-color: #c12e2a;\n  background-position: 0 -15px;\n}\n.btn-danger:active,\n.btn-danger.active {\n  background-color: #c12e2a;\n  border-color: #b92c28;\n}\n.btn-danger:disabled,\n.btn-danger[disabled] {\n  background-color: #c12e2a;\n  background-image: none;\n}\n.thumbnail,\n.img-thumbnail {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.0
 75);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.dropdown-menu > li > a:hover,\n.dropdown-menu > li > a:focus {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n  background-color: #e8e8e8;\n}\n.dropdown-menu > .active > a,\n.dropdown-menu > .active > a:hover,\n.dropdown-menu > .active > a:focus {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4
 ', GradientType=0);\n  background-color: #2e6da4;\n}\n.navbar-default {\n  background-image: -webkit-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: -o-linear-gradient(top, #ffffff 0%, #f8f8f8 100%);\n  background-image: linear-gradient(to bottom, #ffffff 0%, #f8f8f8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 5px rgba(0, 0, 0, 0.075);\n}\n.navbar-default .navbar-nav > .open > a,\n.navbar-default .navbar-nav > .active > a {\n  background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);\n  background-image: linear-
 gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.075);\n}\n.navbar-brand,\n.navbar-nav > li > a {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.25);\n}\n.navbar-inverse {\n  background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n  background-image: -o-linear-gradient(top, #3c3c3c 0%, #222222 100%);\n  background-image: linear-gradient(to bottom, #3c3c3c 0%, #222222 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.navbar-inverse .navbar-nav > .open > a,\n.navbar-inverse .navbar-nav > .active > a {\n  background-image: -we
 bkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);\n  background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);\n  -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n  box-shadow: inset 0 3px 9px rgba(0, 0, 0, 0.25);\n}\n.navbar-inverse .navbar-brand,\n.navbar-inverse .navbar-nav > li > a {\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.navbar-static-top,\n.navbar-fixed-top,\n.navbar-fixed-bottom {\n  border-radius: 0;\n}\n@media (max-width: 767px) {\n  .navbar .navbar-nav .open .dropdown-menu > .active > a,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,\n  .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n
     background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n    background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n    background-repeat: repeat-x;\n    filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n  }\n}\n.alert {\n  text-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);\n  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25), 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.alert-success {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);\n  border-color: #b2dba1;\n}\n.alert-i
 nfo {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);\n  border-color: #9acfea;\n}\n.alert-warning {\n  background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);\n  border-color: #f5e79e;\n}\n.alert-danger {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c
 3 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);\n  border-color: #dca7a7;\n}\n.progress {\n  background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);\n}\n.progress-bar {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startCo
 lorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);\n}\n.progress-bar-success {\n  background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);\n  background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);\n}\n.progress-bar-info {\n  background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);\n  background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);\n}\n.progress-bar-warning {\n  background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image
 : -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);\n  background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);\n}\n.progress-bar-danger {\n  background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);\n  background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);\n}\n.progress-bar-striped {\n  background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.1
 5) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.list-group {\n  border-radius: 4px;\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.075);\n}\n.list-group-item.active,\n.list-group-item.active:hover,\n.list-group-item.active:focus {\n  text-shadow: 0 -1px 0 #286090;\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);\n  border-
 color: #2b669a;\n}\n.list-group-item.active .badge,\n.list-group-item.active:hover .badge,\n.list-group-item.active:focus .badge {\n  text-shadow: none;\n}\n.panel {\n  -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);\n}\n.panel-default > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);\n  background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);\n}\n.panel-primary > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);\n  background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);\n  background-repeat: repeat-x;\n  filter: progid:DX
 ImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);\n}\n.panel-success > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);\n  background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);\n}\n.panel-info > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);\n  background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);\n}\n.panel-warning > .panel-heading {\n  background-image: -web
 kit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);\n  background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);\n}\n.panel-danger > .panel-heading {\n  background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);\n  background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);\n}\n.well {\n  background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);\n  background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f
 5 100%);\n  background-repeat: repeat-x;\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);\n  border-color: #dcdcdc;\n  -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n  box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n/*# sourceMappingURL=bootstrap-theme.css.map */","// Gradients\n\n#gradient {\n\n  // Horizontal gradient, from left to right\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .horizontal(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(left, @start-color @start-percent, @end-color @end-percent); /
 / Opera 12\n    background-image: linear-gradient(to right, @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  // Vertical gradient, from top to bottom\n  //\n  // Creates two color stops, start and end, by specifying a color and position for each color stop.\n  // Color stops are not available in IE9 and below.\n  .vertical(@start-color: #555; @end-color: #333; @start-percent: 0%; @end-percent: 100%) {\n    background-image: -webkit-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(top, @start-color @start-percent, @end-color @end-percent);  // Opera 12\n    background-image: linear-gradient(to bottom, 
 @start-color @start-percent, @end-color @end-percent); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n    background-repeat: repeat-x;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)\",argb(@start-color),argb(@end-color))); // IE9 and down\n  }\n\n  .directional(@start-color: #555; @end-color: #333; @deg: 45deg) {\n    background-repeat: repeat-x;\n    background-image: -webkit-linear-gradient(@deg, @start-color, @end-color); // Safari 5.1-6, Chrome 10+\n    background-image: -o-linear-gradient(@deg, @start-color, @end-color); // Opera 12\n    background-image: linear-gradient(@deg, @start-color, @end-color); // Standard, IE10, Firefox 16+, Opera 12.10+, Safari 7+, Chrome 26+\n  }\n  .horizontal-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\
 n    background-image: -o-linear-gradient(left, @start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(to right, @start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .vertical-three-colors(@start-color: #00b3ee; @mid-color: #7a43b6; @color-stop: 50%; @end-color: #c3325f) {\n    background-image: -webkit-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: -o-linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-image: linear-gradient(@start-color, @mid-color @color-stop, @end-color);\n    background-repeat: no-repeat;\n    filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientTyp
 e=0)\",argb(@start-color),argb(@end-color))); // IE9 and down, gets no color-stop at all for proper fallback\n  }\n  .radial(@inner-color: #555; @outer-color: #333) {\n    background-image: -webkit-radial-gradient(circle, @inner-color, @outer-color);\n    background-image: radial-gradient(circle, @inner-color, @outer-color);\n    background-repeat: no-repeat;\n  }\n  .striped(@color: rgba(255,255,255,.15); @angle: 45deg) {\n    background-image: -webkit-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: -o-linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n    background-image: linear-gradient(@angle, @color 25%, transparent 25%, transparent 50%, @color 50%, @color 75%, transparent 75%, transparent);\n  }\n}\n","// Reset filters for IE\n//\n// When you need to remove a gradient background, do not forget to use thi
 s to reset\n// the IE filter for IE9 and below.\n\n.reset-filter() {\n  filter: e(%(\"progid:DXImageTransform.Microsoft.gradient(enabled = false)\"));\n}\n"]}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/bootstrap-theme.min.css
----------------------------------------------------------------------
diff --git a/docs/assets/css/bootstrap-theme.min.css b/docs/assets/css/bootstrap-theme.min.css
deleted file mode 100644
index 4c3e7ba..0000000
--- a/docs/assets/css/bootstrap-theme.min.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left b
 ottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default:disabled,.btn-default[disabled]{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endCol
 orstr='#ff265a88', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary:disabled,.btn-primary[disabled]{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{backgroun
 d-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success:disabled,.btn-success[disabled]{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info:disabled,.btn-info[disabled]{background-color:#2aabd2;background-image
 :none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning:disabled,.btn-warning[disabled]{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c12e2a 100%);background-image:-webkit-gradient(linear,lef
 t top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger:disabled,.btn-danger[disabled]{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f
 5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f
 8f8f8));background-image:linear-gradient(to bottom,#fff 0,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9p
 x rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0,#0f0f0f 1
 00%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr=
 '#ff2e6da4', GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(t
 o bottom,#d9edf7 0,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0,#e7c3c3 100%);filter:progid:DXImageTran
 sform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', Gradien
 tType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linea
 r-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,25
 5,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(st
 artColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0,#2e6da4 100%);background-image:-webkit-gradient(linear,left
  top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-grad
 ient(to bottom,#d9edf7 0,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0,#ebcccc 100%);filter:progid:DXImageTransform.
 Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)}
\ No newline at end of file


[17/24] storm git commit: STORM-1468: remove {master}/docs

Posted by pt...@apache.org.
http://git-wip-us.apache.org/repos/asf/storm/blob/2f5c31d2/docs/assets/css/bootstrap.min.css
----------------------------------------------------------------------
diff --git a/docs/assets/css/bootstrap.min.css b/docs/assets/css/bootstrap.min.css
deleted file mode 100644
index b6fe4e0..0000000
--- a/docs/assets/css/bootstrap.min.css
+++ /dev/null
@@ -1,5 +0,0 @@
-/*!
- * Bootstrap v3.3.1 (http://getbootstrap.com)
- * Copyright 2011-2014 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- *//*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}butt
 on,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{fo
 nt-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:before,:after{color:#000!important;text-shadow:none!important;background:transparent!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100%!important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}select{background:#fff!important}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered th,.table-
 bordered td{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\2a"}.glyphicon-plus:before{content:"\2b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001
 "}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before
 {content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:
 before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before
 {content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{
 content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bel
 l:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{conten
 t:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphic
 on-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}
 .glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:before,:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-col
 or;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 smal
 l,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-r
 ight{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover{background-color:#e4b9b9}.page-header{pad
 ding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:
 80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;back
 ground-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-
 xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col
 -xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.
 col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pul
 l-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.3333333
 3%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.333
 33333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{
 width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{l
 eft:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bo
 ttom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-child(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{posit
 ion:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.s
 uccess>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot
 >tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{widt
 h:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bord
 ered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:
 focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;o
 pacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{cursor:not-allowed;background-color:#eee;opacity:1}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date],input[type=time],input[type=datetime-local],input[type=month]{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline in
 put[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.in
 put-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm,.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm,select.form-group-sm .form-control{height:30px;line-height:30px}textarea.input-sm,textarea.form-group-sm .form-control,select[multiple].input-sm,select[multiple].form-group-sm .form-control{height:auto}.input-lg,.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-lg,select.form-group-lg .form-control{height:46px;line-height:46px}textarea.input-lg,textarea.form-group-lg .form-control,select[multiple].input-lg,select[multiple].form-group-lg .form-control{height:auto}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-con
 trol-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio
 -inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,
 0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{wi
 dth:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-g
 roup-lg .control-label{padding-top:14.3px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{pointer-events:none;cu
 rsor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:hover,.btn-default:focus,.btn-default.focus,.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.ac
 tive{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:hover,.btn-primary:focus,.btn-primary.focus,.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-
 primary.active{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:hover,.btn-success:focus,.btn-success.focus,.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,field
 set[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:hover,.btn-info:focus,.btn-info.focus,.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#5bc0de;border
 -color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:hover,.btn-warning:focus,.btn-warning.focus,.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-colo
 r:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:hover,.btn-danger:focus,.btn-danger.focus,.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f
 ;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type
 =submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none;visibility:hidden}.collapse.in{display:block;visibility:visible}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.d
 ropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.dis
 abled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px solid}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-
 group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle
 :not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child>.btn:last-child,.btn-group>.btn-group:first-child>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5
 px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-
 bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group-lg>.form-control,.input-group-lg>.input-group-a
 ddon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.33;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-s
 m>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,
 .input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus
 ,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px
  4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.activ
 e>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-
 justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none;visibility:hidden}.tab-content>.active{display:block;visibility:visible}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important;visibility:visible!important}.navbar-collapse.in{overf
 low-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-ra
 dius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-m
 enu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-f
 orm .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;paddi
 ng-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color
 :transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@
 media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:ho
 ver,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{backgroun
 d-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open 
 .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{positi
 on:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:2;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;c
 ursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-c
 olor:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info
 [href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding:30px 15px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1
 {color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding:48px 0}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link
 {font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripe
 s{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%
 ,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background
 -image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,25
 5,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.1
 5) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item{color:#555}a.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,a.list-group-item:focus{color:#555;text-decoration:none;background-color:
 #f5f5f5}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-it
 em.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,a.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:hover,a.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,a.list-group-item-info:f
 ocus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:hover,a.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,a.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,a.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:hover,a.list-group-item
 -danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border
 -radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:firs
 t-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-l

<TRUNCATED>