.\n\n.list-group {\n // No need to set list-style: none; since .list-group-item is block level\n margin-bottom: 20px;\n padding-left: 0; // reset padding because ul and ol\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n position: relative;\n display: block;\n padding: 10px 15px;\n // Place the border on the list items and negative margin up for better styling\n margin-bottom: -1px;\n background-color: @list-group-bg;\n border: 1px solid @list-group-border;\n\n // Round the first and last items\n &:first-child {\n .border-top-radius(@list-group-border-radius);\n }\n &:last-child {\n margin-bottom: 0;\n .border-bottom-radius(@list-group-border-radius);\n }\n}\n\n\n// Linked list items\n//\n// Use anchor elements instead of `li`s or `div`s to create linked list items.\n// Includes an extra `.active` modifier class for showing selected items.\n\na.list-group-item {\n color: @list-group-link-color;\n\n .list-group-item-heading {\n color: @list-group-link-heading-color;\n }\n\n // Hover state\n &:hover,\n &:focus {\n text-decoration: none;\n color: @list-group-link-hover-color;\n background-color: @list-group-hover-bg;\n }\n}\n\n.list-group-item {\n // Disabled state\n &.disabled,\n &.disabled:hover,\n &.disabled:focus {\n background-color: @list-group-disabled-bg;\n color: @list-group-disabled-color;\n cursor: @cursor-disabled;\n\n // Force color to inherit for custom content\n .list-group-item-heading {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-disabled-text-color;\n }\n }\n\n // Active class on item itself, not parent\n &.active,\n &.active:hover,\n &.active:focus {\n z-index: 2; // Place active items above their siblings for proper border styling\n color: @list-group-active-color;\n background-color: @list-group-active-bg;\n border-color: @list-group-active-border;\n\n // Force color to inherit for custom content\n .list-group-item-heading,\n .list-group-item-heading > small,\n .list-group-item-heading > .small {\n color: inherit;\n }\n .list-group-item-text {\n color: @list-group-active-text-color;\n }\n }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n.list-group-item-variant(success; @state-success-bg; @state-success-text);\n.list-group-item-variant(info; @state-info-bg; @state-info-text);\n.list-group-item-variant(warning; @state-warning-bg; @state-warning-text);\n.list-group-item-variant(danger; @state-danger-bg; @state-danger-text);\n\n\n// Custom content options\n//\n// Extra classes for creating well-formatted content within `.list-group-item`s.\n\n.list-group-item-heading {\n margin-top: 0;\n margin-bottom: 5px;\n}\n.list-group-item-text {\n margin-bottom: 0;\n line-height: 1.3;\n}\n","// List Groups\n\n.list-group-item-variant(@state; @background; @color) {\n .list-group-item-@{state} {\n color: @color;\n background-color: @background;\n\n a& {\n color: @color;\n\n .list-group-item-heading {\n color: inherit;\n }\n\n &:hover,\n &:focus {\n color: @color;\n background-color: darken(@background, 5%);\n }\n &.active,\n &.active:hover,\n &.active:focus {\n color: #fff;\n background-color: @color;\n border-color: @color;\n }\n }\n }\n}\n","//\n// Panels\n// --------------------------------------------------\n\n\n// Base class\n.panel {\n margin-bottom: @line-height-computed;\n background-color: @panel-bg;\n border: 1px solid transparent;\n border-radius: @panel-border-radius;\n .box-shadow(0 1px 1px rgba(0,0,0,.05));\n}\n\n// Panel contents\n.panel-body {\n padding: @panel-body-padding;\n &:extend(.clearfix all);\n}\n\n// Optional heading\n.panel-heading {\n padding: @panel-heading-padding;\n border-bottom: 1px solid transparent;\n .border-top-radius((@panel-border-radius - 1));\n\n > .dropdown .dropdown-toggle {\n color: inherit;\n }\n}\n\n// Within heading, strip any `h*` tag of its default margins for spacing.\n.panel-title {\n margin-top: 0;\n margin-bottom: 0;\n font-size: ceil((@font-size-base * 1.125));\n color: inherit;\n\n > a {\n color: inherit;\n }\n}\n\n// Optional footer (stays gray in every modifier class)\n.panel-footer {\n padding: @panel-footer-padding;\n background-color: @panel-footer-bg;\n border-top: 1px solid @panel-inner-border;\n .border-bottom-radius((@panel-border-radius - 1));\n}\n\n\n// List groups in panels\n//\n// By default, space out list group content from panel headings to account for\n// any kind of custom content between the two.\n\n.panel {\n > .list-group,\n > .panel-collapse > .list-group {\n margin-bottom: 0;\n\n .list-group-item {\n border-width: 1px 0;\n border-radius: 0;\n }\n\n // Add border top radius for first one\n &:first-child {\n .list-group-item:first-child {\n border-top: 0;\n .border-top-radius((@panel-border-radius - 1));\n }\n }\n // Add border bottom radius for last one\n &:last-child {\n .list-group-item:last-child {\n border-bottom: 0;\n .border-bottom-radius((@panel-border-radius - 1));\n }\n }\n }\n}\n// Collapse space between when there's no additional content.\n.panel-heading + .list-group {\n .list-group-item:first-child {\n border-top-width: 0;\n }\n}\n.list-group + .panel-footer {\n border-top-width: 0;\n}\n\n// Tables in panels\n//\n// Place a non-bordered `.table` within a panel (not within a `.panel-body`) and\n// watch it go full width.\n\n.panel {\n > .table,\n > .table-responsive > .table,\n > .panel-collapse > .table {\n margin-bottom: 0;\n\n caption {\n padding-left: @panel-body-padding;\n padding-right: @panel-body-padding;\n }\n }\n // Add border top radius for first one\n > .table:first-child,\n > .table-responsive:first-child > .table:first-child {\n .border-top-radius((@panel-border-radius - 1));\n\n > thead:first-child,\n > tbody:first-child {\n > tr:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n border-top-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-top-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-top-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n // Add border bottom radius for last one\n > .table:last-child,\n > .table-responsive:last-child > .table:last-child {\n .border-bottom-radius((@panel-border-radius - 1));\n\n > tbody:last-child,\n > tfoot:last-child {\n > tr:last-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n border-bottom-right-radius: (@panel-border-radius - 1);\n\n td:first-child,\n th:first-child {\n border-bottom-left-radius: (@panel-border-radius - 1);\n }\n td:last-child,\n th:last-child {\n border-bottom-right-radius: (@panel-border-radius - 1);\n }\n }\n }\n }\n > .panel-body + .table,\n > .panel-body + .table-responsive,\n > .table + .panel-body,\n > .table-responsive + .panel-body {\n border-top: 1px solid @table-border-color;\n }\n > .table > tbody:first-child > tr:first-child th,\n > .table > tbody:first-child > tr:first-child td {\n border-top: 0;\n }\n > .table-bordered,\n > .table-responsive > .table-bordered {\n border: 0;\n > thead,\n > tbody,\n > tfoot {\n > tr {\n > th:first-child,\n > td:first-child {\n border-left: 0;\n }\n > th:last-child,\n > td:last-child {\n border-right: 0;\n }\n }\n }\n > thead,\n > tbody {\n > tr:first-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n > tbody,\n > tfoot {\n > tr:last-child {\n > td,\n > th {\n border-bottom: 0;\n }\n }\n }\n }\n > .table-responsive {\n border: 0;\n margin-bottom: 0;\n }\n}\n\n\n// Collapsable panels (aka, accordion)\n//\n// Wrap a series of panels in `.panel-group` to turn them into an accordion with\n// the help of our collapse JavaScript plugin.\n\n.panel-group {\n margin-bottom: @line-height-computed;\n\n // Tighten up margin so it's only between panels\n .panel {\n margin-bottom: 0;\n border-radius: @panel-border-radius;\n\n + .panel {\n margin-top: 5px;\n }\n }\n\n .panel-heading {\n border-bottom: 0;\n\n + .panel-collapse > .panel-body,\n + .panel-collapse > .list-group {\n border-top: 1px solid @panel-inner-border;\n }\n }\n\n .panel-footer {\n border-top: 0;\n + .panel-collapse .panel-body {\n border-bottom: 1px solid @panel-inner-border;\n }\n }\n}\n\n\n// Contextual variations\n.panel-default {\n .panel-variant(@panel-default-border; @panel-default-text; @panel-default-heading-bg; @panel-default-border);\n}\n.panel-primary {\n .panel-variant(@panel-primary-border; @panel-primary-text; @panel-primary-heading-bg; @panel-primary-border);\n}\n.panel-success {\n .panel-variant(@panel-success-border; @panel-success-text; @panel-success-heading-bg; @panel-success-border);\n}\n.panel-info {\n .panel-variant(@panel-info-border; @panel-info-text; @panel-info-heading-bg; @panel-info-border);\n}\n.panel-warning {\n .panel-variant(@panel-warning-border; @panel-warning-text; @panel-warning-heading-bg; @panel-warning-border);\n}\n.panel-danger {\n .panel-variant(@panel-danger-border; @panel-danger-text; @panel-danger-heading-bg; @panel-danger-border);\n}\n","// Panels\n\n.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {\n border-color: @border;\n\n & > .panel-heading {\n color: @heading-text-color;\n background-color: @heading-bg-color;\n border-color: @heading-border;\n\n + .panel-collapse > .panel-body {\n border-top-color: @border;\n }\n .badge {\n color: @heading-bg-color;\n background-color: @heading-text-color;\n }\n }\n & > .panel-footer {\n + .panel-collapse > .panel-body {\n border-bottom-color: @border;\n }\n }\n}\n","// Embeds responsive\n//\n// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n position: relative;\n display: block;\n height: 0;\n padding: 0;\n overflow: hidden;\n\n .embed-responsive-item,\n iframe,\n embed,\n object,\n video {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n height: 100%;\n width: 100%;\n border: 0;\n }\n\n // Modifier class for 16:9 aspect ratio\n &.embed-responsive-16by9 {\n padding-bottom: 56.25%;\n }\n\n // Modifier class for 4:3 aspect ratio\n &.embed-responsive-4by3 {\n padding-bottom: 75%;\n }\n}\n","//\n// Wells\n// --------------------------------------------------\n\n\n// Base class\n.well {\n min-height: 20px;\n padding: 19px;\n margin-bottom: 20px;\n background-color: @well-bg;\n border: 1px solid @well-border;\n border-radius: @border-radius-base;\n .box-shadow(inset 0 1px 1px rgba(0,0,0,.05));\n blockquote {\n border-color: #ddd;\n border-color: rgba(0,0,0,.15);\n }\n}\n\n// Sizes\n.well-lg {\n padding: 24px;\n border-radius: @border-radius-large;\n}\n.well-sm {\n padding: 9px;\n border-radius: @border-radius-small;\n}\n","//\n// Close icons\n// --------------------------------------------------\n\n\n.close {\n float: right;\n font-size: (@font-size-base * 1.5);\n font-weight: @close-font-weight;\n line-height: 1;\n color: @close-color;\n text-shadow: @close-text-shadow;\n .opacity(.2);\n\n &:hover,\n &:focus {\n color: @close-color;\n text-decoration: none;\n cursor: pointer;\n .opacity(.5);\n }\n\n // Additional properties for button version\n // iOS requires the button element instead of an anchor tag.\n // If you want the anchor version, it requires `href=\"#\"`.\n button& {\n padding: 0;\n cursor: pointer;\n background: transparent;\n border: 0;\n -webkit-appearance: none;\n }\n}\n","//\n// Modals\n// --------------------------------------------------\n\n// .modal-open - body class for killing the scroll\n// .modal - container to scroll within\n// .modal-dialog - positioning shell for the actual modal\n// .modal-content - actual modal w/ bg and corners and shit\n\n// Kill the scroll on the body\n.modal-open {\n overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n display: none;\n overflow: hidden;\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n z-index: @zindex-modal;\n -webkit-overflow-scrolling: touch;\n\n // Prevent Chrome on Windows from adding a focus outline. For details, see\n // https://github.com/twbs/bootstrap/pull/10951.\n outline: 0;\n\n // When fading in the modal, animate it to slide down\n &.fade .modal-dialog {\n .translate(0, -25%);\n .transition-transform(~\"0.3s ease-out\");\n }\n &.in .modal-dialog { .translate(0, 0) }\n}\n.modal-open .modal {\n overflow-x: hidden;\n overflow-y: auto;\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n position: relative;\n width: auto;\n margin: 10px;\n}\n\n// Actual modal\n.modal-content {\n position: relative;\n background-color: @modal-content-bg;\n border: 1px solid @modal-content-fallback-border-color; //old browsers fallback (ie8 etc)\n border: 1px solid @modal-content-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 3px 9px rgba(0,0,0,.5));\n background-clip: padding-box;\n // Remove focus outline from opened modal\n outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n background-color: @modal-backdrop-bg;\n // Fade for backdrop\n &.fade { .opacity(0); }\n &.in { .opacity(@modal-backdrop-opacity); }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n padding: @modal-title-padding;\n border-bottom: 1px solid @modal-header-border-color;\n min-height: (@modal-title-padding + @modal-title-line-height);\n}\n// Close icon\n.modal-header .close {\n margin-top: -2px;\n}\n\n// Title text within header\n.modal-title {\n margin: 0;\n line-height: @modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n position: relative;\n padding: @modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n padding: @modal-inner-padding;\n text-align: right; // right align buttons\n border-top: 1px solid @modal-footer-border-color;\n &:extend(.clearfix all); // clear it in case folks use .pull-* classes on buttons\n\n // Properly space out buttons\n .btn + .btn {\n margin-left: 5px;\n margin-bottom: 0; // account for input[type=\"submit\"] which gets the bottom margin like all other inputs\n }\n // but override that for button groups\n .btn-group .btn + .btn {\n margin-left: -1px;\n }\n // and override it for block buttons as well\n .btn-block + .btn-block {\n margin-left: 0;\n }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n position: absolute;\n top: -9999px;\n width: 50px;\n height: 50px;\n overflow: scroll;\n}\n\n// Scale up the modal\n@media (min-width: @screen-sm-min) {\n // Automatically set modal's width for larger viewports\n .modal-dialog {\n width: @modal-md;\n margin: 30px auto;\n }\n .modal-content {\n .box-shadow(0 5px 15px rgba(0,0,0,.5));\n }\n\n // Modal sizes\n .modal-sm { width: @modal-sm; }\n}\n\n@media (min-width: @screen-md-min) {\n .modal-lg { width: @modal-lg; }\n}\n","//\n// Tooltips\n// --------------------------------------------------\n\n\n// Base class\n.tooltip {\n position: absolute;\n z-index: @zindex-tooltip;\n display: block;\n visibility: visible;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-small;\n font-weight: normal;\n line-height: 1.4;\n .opacity(0);\n\n &.in { .opacity(@tooltip-opacity); }\n &.top { margin-top: -3px; padding: @tooltip-arrow-width 0; }\n &.right { margin-left: 3px; padding: 0 @tooltip-arrow-width; }\n &.bottom { margin-top: 3px; padding: @tooltip-arrow-width 0; }\n &.left { margin-left: -3px; padding: 0 @tooltip-arrow-width; }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n max-width: @tooltip-max-width;\n padding: 3px 8px;\n color: @tooltip-color;\n text-align: center;\n text-decoration: none;\n background-color: @tooltip-bg;\n border-radius: @border-radius-base;\n}\n\n// Arrows\n.tooltip-arrow {\n position: absolute;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n}\n// Note: Deprecated .top-left, .top-right, .bottom-left, and .bottom-right as of v3.3.1\n.tooltip {\n &.top .tooltip-arrow {\n bottom: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-left .tooltip-arrow {\n bottom: 0;\n right: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.top-right .tooltip-arrow {\n bottom: 0;\n left: @tooltip-arrow-width;\n margin-bottom: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width 0;\n border-top-color: @tooltip-arrow-color;\n }\n &.right .tooltip-arrow {\n top: 50%;\n left: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width @tooltip-arrow-width @tooltip-arrow-width 0;\n border-right-color: @tooltip-arrow-color;\n }\n &.left .tooltip-arrow {\n top: 50%;\n right: 0;\n margin-top: -@tooltip-arrow-width;\n border-width: @tooltip-arrow-width 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-left-color: @tooltip-arrow-color;\n }\n &.bottom .tooltip-arrow {\n top: 0;\n left: 50%;\n margin-left: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-left .tooltip-arrow {\n top: 0;\n right: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n &.bottom-right .tooltip-arrow {\n top: 0;\n left: @tooltip-arrow-width;\n margin-top: -@tooltip-arrow-width;\n border-width: 0 @tooltip-arrow-width @tooltip-arrow-width;\n border-bottom-color: @tooltip-arrow-color;\n }\n}\n","//\n// Popovers\n// --------------------------------------------------\n\n\n.popover {\n position: absolute;\n top: 0;\n left: 0;\n z-index: @zindex-popover;\n display: none;\n max-width: @popover-max-width;\n padding: 1px;\n // Reset font and text propertes given new insertion method\n font-family: @font-family-base;\n font-size: @font-size-base;\n font-weight: normal;\n line-height: @line-height-base;\n text-align: left;\n background-color: @popover-bg;\n background-clip: padding-box;\n border: 1px solid @popover-fallback-border-color;\n border: 1px solid @popover-border-color;\n border-radius: @border-radius-large;\n .box-shadow(0 5px 10px rgba(0,0,0,.2));\n\n // Overrides for proper insertion\n white-space: normal;\n\n // Offset the popover to account for the popover arrow\n &.top { margin-top: -@popover-arrow-width; }\n &.right { margin-left: @popover-arrow-width; }\n &.bottom { margin-top: @popover-arrow-width; }\n &.left { margin-left: -@popover-arrow-width; }\n}\n\n.popover-title {\n margin: 0; // reset heading margin\n padding: 8px 14px;\n font-size: @font-size-base;\n background-color: @popover-title-bg;\n border-bottom: 1px solid darken(@popover-title-bg, 5%);\n border-radius: (@border-radius-large - 1) (@border-radius-large - 1) 0 0;\n}\n\n.popover-content {\n padding: 9px 14px;\n}\n\n// Arrows\n//\n// .arrow is outer, .arrow:after is inner\n\n.popover > .arrow {\n &,\n &:after {\n position: absolute;\n display: block;\n width: 0;\n height: 0;\n border-color: transparent;\n border-style: solid;\n }\n}\n.popover > .arrow {\n border-width: @popover-arrow-outer-width;\n}\n.popover > .arrow:after {\n border-width: @popover-arrow-width;\n content: \"\";\n}\n\n.popover {\n &.top > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-top-color: @popover-arrow-outer-color;\n bottom: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n bottom: 1px;\n margin-left: -@popover-arrow-width;\n border-bottom-width: 0;\n border-top-color: @popover-arrow-color;\n }\n }\n &.right > .arrow {\n top: 50%;\n left: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-right-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n left: 1px;\n bottom: -@popover-arrow-width;\n border-left-width: 0;\n border-right-color: @popover-arrow-color;\n }\n }\n &.bottom > .arrow {\n left: 50%;\n margin-left: -@popover-arrow-outer-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-bottom-color: @popover-arrow-outer-color;\n top: -@popover-arrow-outer-width;\n &:after {\n content: \" \";\n top: 1px;\n margin-left: -@popover-arrow-width;\n border-top-width: 0;\n border-bottom-color: @popover-arrow-color;\n }\n }\n\n &.left > .arrow {\n top: 50%;\n right: -@popover-arrow-outer-width;\n margin-top: -@popover-arrow-outer-width;\n border-right-width: 0;\n border-left-color: @popover-arrow-outer-fallback-color; // IE8 fallback\n border-left-color: @popover-arrow-outer-color;\n &:after {\n content: \" \";\n right: 1px;\n border-right-width: 0;\n border-left-color: @popover-arrow-color;\n bottom: -@popover-arrow-width;\n }\n }\n}\n","//\n// Carousel\n// --------------------------------------------------\n\n\n// Wrapper for the slide container and indicators\n.carousel {\n position: relative;\n}\n\n.carousel-inner {\n position: relative;\n overflow: hidden;\n width: 100%;\n\n > .item {\n display: none;\n position: relative;\n .transition(.6s ease-in-out left);\n\n // Account for jankitude on images\n > img,\n > a > img {\n &:extend(.img-responsive);\n line-height: 1;\n }\n\n // WebKit CSS3 transforms for supported devices\n @media all and (transform-3d), (-webkit-transform-3d) {\n transition: transform .6s ease-in-out;\n backface-visibility: hidden;\n perspective: 1000;\n\n &.next,\n &.active.right {\n transform: translate3d(100%, 0, 0);\n left: 0;\n }\n &.prev,\n &.active.left {\n transform: translate3d(-100%, 0, 0);\n left: 0;\n }\n &.next.left,\n &.prev.right,\n &.active {\n transform: translate3d(0, 0, 0);\n left: 0;\n }\n }\n }\n\n > .active,\n > .next,\n > .prev {\n display: block;\n }\n\n > .active {\n left: 0;\n }\n\n > .next,\n > .prev {\n position: absolute;\n top: 0;\n width: 100%;\n }\n\n > .next {\n left: 100%;\n }\n > .prev {\n left: -100%;\n }\n > .next.left,\n > .prev.right {\n left: 0;\n }\n\n > .active.left {\n left: -100%;\n }\n > .active.right {\n left: 100%;\n }\n\n}\n\n// Left/right controls for nav\n// ---------------------------\n\n.carousel-control {\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n width: @carousel-control-width;\n .opacity(@carousel-control-opacity);\n font-size: @carousel-control-font-size;\n color: @carousel-control-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n // We can't have this transition here because WebKit cancels the carousel\n // animation if you trip this while in the middle of another animation.\n\n // Set gradients for backgrounds\n &.left {\n #gradient > .horizontal(@start-color: rgba(0,0,0,.5); @end-color: rgba(0,0,0,.0001));\n }\n &.right {\n left: auto;\n right: 0;\n #gradient > .horizontal(@start-color: rgba(0,0,0,.0001); @end-color: rgba(0,0,0,.5));\n }\n\n // Hover/focus state\n &:hover,\n &:focus {\n outline: 0;\n color: @carousel-control-color;\n text-decoration: none;\n .opacity(.9);\n }\n\n // Toggles\n .icon-prev,\n .icon-next,\n .glyphicon-chevron-left,\n .glyphicon-chevron-right {\n position: absolute;\n top: 50%;\n z-index: 5;\n display: inline-block;\n }\n .icon-prev,\n .glyphicon-chevron-left {\n left: 50%;\n margin-left: -10px;\n }\n .icon-next,\n .glyphicon-chevron-right {\n right: 50%;\n margin-right: -10px;\n }\n .icon-prev,\n .icon-next {\n width: 20px;\n height: 20px;\n margin-top: -10px;\n font-family: serif;\n }\n\n\n .icon-prev {\n &:before {\n content: '\\2039';// SINGLE LEFT-POINTING ANGLE QUOTATION MARK (U+2039)\n }\n }\n .icon-next {\n &:before {\n content: '\\203a';// SINGLE RIGHT-POINTING ANGLE QUOTATION MARK (U+203A)\n }\n }\n}\n\n// Optional indicator pips\n//\n// Add an unordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n position: absolute;\n bottom: 10px;\n left: 50%;\n z-index: 15;\n width: 60%;\n margin-left: -30%;\n padding-left: 0;\n list-style: none;\n text-align: center;\n\n li {\n display: inline-block;\n width: 10px;\n height: 10px;\n margin: 1px;\n text-indent: -999px;\n border: 1px solid @carousel-indicator-border-color;\n border-radius: 10px;\n cursor: pointer;\n\n // IE8-9 hack for event handling\n //\n // Internet Explorer 8-9 does not support clicks on elements without a set\n // `background-color`. We cannot use `filter` since that's not viewed as a\n // background color by the browser. Thus, a hack is needed.\n //\n // For IE8, we set solid black as it doesn't support `rgba()`. For IE9, we\n // set alpha transparency for the best results possible.\n background-color: #000 \\9; // IE8\n background-color: rgba(0,0,0,0); // IE9\n }\n .active {\n margin: 0;\n width: 12px;\n height: 12px;\n background-color: @carousel-indicator-active-bg;\n }\n}\n\n// Optional captions\n// -----------------------------\n// Hidden by default for smaller viewports\n.carousel-caption {\n position: absolute;\n left: 15%;\n right: 15%;\n bottom: 20px;\n z-index: 10;\n padding-top: 20px;\n padding-bottom: 20px;\n color: @carousel-caption-color;\n text-align: center;\n text-shadow: @carousel-text-shadow;\n & .btn {\n text-shadow: none; // No shadow for button elements in carousel-caption\n }\n}\n\n\n// Scale up controls for tablets and up\n@media screen and (min-width: @screen-sm-min) {\n\n // Scale up the controls a smidge\n .carousel-control {\n .glyphicon-chevron-left,\n .glyphicon-chevron-right,\n .icon-prev,\n .icon-next {\n width: 30px;\n height: 30px;\n margin-top: -15px;\n font-size: 30px;\n }\n .glyphicon-chevron-left,\n .icon-prev {\n margin-left: -15px;\n }\n .glyphicon-chevron-right,\n .icon-next {\n margin-right: -15px;\n }\n }\n\n // Show and left align the captions\n .carousel-caption {\n left: 20%;\n right: 20%;\n padding-bottom: 30px;\n }\n\n // Move up the indicators\n .carousel-indicators {\n bottom: 20px;\n }\n}\n","// Clearfix\n//\n// For modern browsers\n// 1. The space content is one way to avoid an Opera bug when the\n// contenteditable attribute is included anywhere else in the document.\n// Otherwise it causes space to appear at the top and bottom of elements\n// that are clearfixed.\n// 2. The use of `table` rather than `block` is only necessary if using\n// `:before` to contain the top-margins of child elements.\n//\n// Source: http://nicolasgallagher.com/micro-clearfix-hack/\n\n.clearfix() {\n &:before,\n &:after {\n content: \" \"; // 1\n display: table; // 2\n }\n &:after {\n clear: both;\n }\n}\n","// Center-align a block level element\n\n.center-block() {\n display: block;\n margin-left: auto;\n margin-right: auto;\n}\n","// CSS image replacement\n//\n// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for\n// mixins being reused as classes with the same name, this doesn't hold up. As\n// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.\n//\n// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757\n\n// Deprecated as of v3.0.1 (will be removed in v4)\n.hide-text() {\n font: ~\"0/0\" a;\n color: transparent;\n text-shadow: none;\n background-color: transparent;\n border: 0;\n}\n\n// New mixin to use as of v3.0.1\n.text-hide() {\n .hide-text();\n}\n","//\n// Responsive: Utility classes\n// --------------------------------------------------\n\n\n// IE10 in Windows (Phone) 8\n//\n// Support for responsive views via media queries is kind of borked in IE10, for\n// Surface/desktop in split view and for Windows Phone 8. This particular fix\n// must be accompanied by a snippet of JavaScript to sniff the user agent and\n// apply some conditional CSS to *only* the Surface/desktop Windows 8. Look at\n// our Getting Started page for more information on this bug.\n//\n// For more information, see the following:\n//\n// Issue: https://github.com/twbs/bootstrap/issues/10497\n// Docs: http://getbootstrap.com/getting-started/#support-ie10-width\n// Source: http://timkadlec.com/2013/01/windows-phone-8-and-device-width/\n// Source: http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/\n\n@-ms-viewport {\n width: device-width;\n}\n\n\n// Visibility utilities\n// Note: Deprecated .visible-xs, .visible-sm, .visible-md, and .visible-lg as of v3.2.0\n.visible-xs,\n.visible-sm,\n.visible-md,\n.visible-lg {\n .responsive-invisibility();\n}\n\n.visible-xs-block,\n.visible-xs-inline,\n.visible-xs-inline-block,\n.visible-sm-block,\n.visible-sm-inline,\n.visible-sm-inline-block,\n.visible-md-block,\n.visible-md-inline,\n.visible-md-inline-block,\n.visible-lg-block,\n.visible-lg-inline,\n.visible-lg-inline-block {\n display: none !important;\n}\n\n.visible-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-visibility();\n }\n}\n.visible-xs-block {\n @media (max-width: @screen-xs-max) {\n display: block !important;\n }\n}\n.visible-xs-inline {\n @media (max-width: @screen-xs-max) {\n display: inline !important;\n }\n}\n.visible-xs-inline-block {\n @media (max-width: @screen-xs-max) {\n display: inline-block !important;\n }\n}\n\n.visible-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-visibility();\n }\n}\n.visible-sm-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: block !important;\n }\n}\n.visible-sm-inline {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline !important;\n }\n}\n.visible-sm-inline-block {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n display: inline-block !important;\n }\n}\n\n.visible-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-visibility();\n }\n}\n.visible-md-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: block !important;\n }\n}\n.visible-md-inline {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline !important;\n }\n}\n.visible-md-inline-block {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n display: inline-block !important;\n }\n}\n\n.visible-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-visibility();\n }\n}\n.visible-lg-block {\n @media (min-width: @screen-lg-min) {\n display: block !important;\n }\n}\n.visible-lg-inline {\n @media (min-width: @screen-lg-min) {\n display: inline !important;\n }\n}\n.visible-lg-inline-block {\n @media (min-width: @screen-lg-min) {\n display: inline-block !important;\n }\n}\n\n.hidden-xs {\n @media (max-width: @screen-xs-max) {\n .responsive-invisibility();\n }\n}\n.hidden-sm {\n @media (min-width: @screen-sm-min) and (max-width: @screen-sm-max) {\n .responsive-invisibility();\n }\n}\n.hidden-md {\n @media (min-width: @screen-md-min) and (max-width: @screen-md-max) {\n .responsive-invisibility();\n }\n}\n.hidden-lg {\n @media (min-width: @screen-lg-min) {\n .responsive-invisibility();\n }\n}\n\n\n// Print utilities\n//\n// Media queries are placed on the inside to be mixin-friendly.\n\n// Note: Deprecated .visible-print as of v3.2.0\n.visible-print {\n .responsive-invisibility();\n\n @media print {\n .responsive-visibility();\n }\n}\n.visible-print-block {\n display: none !important;\n\n @media print {\n display: block !important;\n }\n}\n.visible-print-inline {\n display: none !important;\n\n @media print {\n display: inline !important;\n }\n}\n.visible-print-inline-block {\n display: none !important;\n\n @media print {\n display: inline-block !important;\n }\n}\n\n.hidden-print {\n @media print {\n .responsive-invisibility();\n }\n}\n","// Responsive utilities\n\n//\n// More easily include all the states for responsive-utilities.less.\n.responsive-visibility() {\n display: block !important;\n table& { display: table; }\n tr& { display: table-row !important; }\n th&,\n td& { display: table-cell !important; }\n}\n\n.responsive-invisibility() {\n display: none !important;\n}\n"]}
\ No newline at end of file
diff --git a/WebContent/css/bootstrap.min.css b/WebContent/css/bootstrap.min.css
new file mode 100644
index 00000000..a45a00b0
--- /dev/null
+++ b/WebContent/css/bootstrap.min.css
@@ -0,0 +1,6890 @@
+/*!
+ * 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
+}
+
+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 silver
+}
+
+legend {
+ padding: 0;
+ border: 0
+}
+
+textarea {
+ overflow: auto
+}
+
+optgroup {
+ font-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-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: 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-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: 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;
+ 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: 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-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: 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;
+ 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: 400;
+ 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: 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.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: 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;
+ 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: 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
+}
+
+.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: 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>.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: 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>.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: #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:hover,
+ .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
+ {
+ background-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 {
+ position: 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;
+ cursor: 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-color: #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-stripes {
+ 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, 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-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, .15) 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-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 {
+ 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:focus {
+ 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:first-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-left-radius: 3px;
+ border-top-right-radius: 3px
+}
+
+.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,
+ .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,
+ .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,
+ .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,
+ .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,
+ .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,
+ .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,
+ .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child
+ {
+ border-top-left-radius: 3px
+}
+
+.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,
+ .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,
+ .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,
+ .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,
+ .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,
+ .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,
+ .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,
+ .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child
+ {
+ border-top-right-radius: 3px
+}
+
+.panel>.table:last-child, .panel>.table-responsive:last-child>.table:last-child
+ {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px
+}
+
+.panel>.table:last-child>tbody:last-child>tr:last-child, .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,
+ .panel>.table:last-child>tfoot:last-child>tr:last-child, .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child
+ {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px
+}
+
+.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,
+ .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,
+ .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,
+ .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,
+ .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,
+ .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,
+ .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,
+ .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child
+ {
+ border-bottom-left-radius: 3px
+}
+
+.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,
+ .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,
+ .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,
+ .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,
+ .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,
+ .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,
+ .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,
+ .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child
+ {
+ border-bottom-right-radius: 3px
+}
+
+.panel>.panel-body+.table, .panel>.panel-body+.table-responsive, .panel>.table+.panel-body,
+ .panel>.table-responsive+.panel-body {
+ border-top: 1px solid #ddd
+}
+
+.panel>.table>tbody:first-child>tr:first-child th, .panel>.table>tbody:first-child>tr:first-child td
+ {
+ border-top: 0
+}
+
+.panel>.table-bordered, .panel>.table-responsive>.table-bordered {
+ border: 0
+}
+
+.panel>.table-bordered>thead>tr>th:first-child, .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,
+ .panel>.table-bordered>tbody>tr>th:first-child, .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,
+ .panel>.table-bordered>tfoot>tr>th:first-child, .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,
+ .panel>.table-bordered>thead>tr>td:first-child, .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,
+ .panel>.table-bordered>tbody>tr>td:first-child, .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,
+ .panel>.table-bordered>tfoot>tr>td:first-child, .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child
+ {
+ border-left: 0
+}
+
+.panel>.table-bordered>thead>tr>th:last-child, .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,
+ .panel>.table-bordered>tbody>tr>th:last-child, .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,
+ .panel>.table-bordered>tfoot>tr>th:last-child, .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,
+ .panel>.table-bordered>thead>tr>td:last-child, .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,
+ .panel>.table-bordered>tbody>tr>td:last-child, .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,
+ .panel>.table-bordered>tfoot>tr>td:last-child, .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child
+ {
+ border-right: 0
+}
+
+.panel>.table-bordered>thead>tr:first-child>td, .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,
+ .panel>.table-bordered>tbody>tr:first-child>td, .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,
+ .panel>.table-bordered>thead>tr:first-child>th, .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,
+ .panel>.table-bordered>tbody>tr:first-child>th, .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th
+ {
+ border-bottom: 0
+}
+
+.panel>.table-bordered>tbody>tr:last-child>td, .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,
+ .panel>.table-bordered>tfoot>tr:last-child>td, .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,
+ .panel>.table-bordered>tbody>tr:last-child>th, .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,
+ .panel>.table-bordered>tfoot>tr:last-child>th, .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th
+ {
+ border-bottom: 0
+}
+
+.panel>.table-responsive {
+ margin-bottom: 0;
+ border: 0
+}
+
+.panel-group {
+ margin-bottom: 20px
+}
+
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 4px
+}
+
+.panel-group .panel+.panel {
+ margin-top: 5px
+}
+
+.panel-group .panel-heading {
+ border-bottom: 0
+}
+
+.panel-group .panel-heading+.panel-collapse>.panel-body, .panel-group .panel-heading+.panel-collapse>.list-group
+ {
+ border-top: 1px solid #ddd
+}
+
+.panel-group .panel-footer {
+ border-top: 0
+}
+
+.panel-group .panel-footer+.panel-collapse .panel-body {
+ border-bottom: 1px solid #ddd
+}
+
+.panel-default {
+ border-color: #ddd
+}
+
+.panel-default>.panel-heading {
+ color: #333;
+ background-color: #f5f5f5;
+ border-color: #ddd
+}
+
+.panel-default>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #ddd
+}
+
+.panel-default>.panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333
+}
+
+.panel-default>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #ddd
+}
+
+.panel-primary {
+ border-color: #337ab7
+}
+
+.panel-primary>.panel-heading {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7
+}
+
+.panel-primary>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #337ab7
+}
+
+.panel-primary>.panel-heading .badge {
+ color: #337ab7;
+ background-color: #fff
+}
+
+.panel-primary>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #337ab7
+}
+
+.panel-success {
+ border-color: #d6e9c6
+}
+
+.panel-success>.panel-heading {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6
+}
+
+.panel-success>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #d6e9c6
+}
+
+.panel-success>.panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d
+}
+
+.panel-success>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #d6e9c6
+}
+
+.panel-info {
+ border-color: #bce8f1
+}
+
+.panel-info>.panel-heading {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1
+}
+
+.panel-info>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #bce8f1
+}
+
+.panel-info>.panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f
+}
+
+.panel-info>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #bce8f1
+}
+
+.panel-warning {
+ border-color: #faebcc
+}
+
+.panel-warning>.panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc
+}
+
+.panel-warning>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #faebcc
+}
+
+.panel-warning>.panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b
+}
+
+.panel-warning>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #faebcc
+}
+
+.panel-danger {
+ border-color: #ebccd1
+}
+
+.panel-danger>.panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1
+}
+
+.panel-danger>.panel-heading+.panel-collapse>.panel-body {
+ border-top-color: #ebccd1
+}
+
+.panel-danger>.panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442
+}
+
+.panel-danger>.panel-footer+.panel-collapse>.panel-body {
+ border-bottom-color: #ebccd1
+}
+
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden
+}
+
+.embed-responsive .embed-responsive-item, .embed-responsive iframe,
+ .embed-responsive embed, .embed-responsive object, .embed-responsive video
+ {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 0
+}
+
+.embed-responsive.embed-responsive-16by9 {
+ padding-bottom: 56.25%
+}
+
+.embed-responsive.embed-responsive-4by3 {
+ padding-bottom: 75%
+}
+
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05)
+}
+
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, .15)
+}
+
+.well-lg {
+ padding: 24px;
+ border-radius: 6px
+}
+
+.well-sm {
+ padding: 9px;
+ border-radius: 3px
+}
+
+.close {
+ float: right;
+ font-size: 21px;
+ font-weight: 700;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ filter: alpha(opacity = 20);
+ opacity: .2
+}
+
+.close:hover, .close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ filter: alpha(opacity = 50);
+ opacity: .5
+}
+
+button.close {
+ -webkit-appearance: none;
+ padding: 0;
+ cursor: pointer;
+ background: 0 0;
+ border: 0
+}
+
+.modal-open {
+ overflow: hidden
+}
+
+.modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ display: none;
+ overflow: hidden;
+ -webkit-overflow-scrolling: touch;
+ outline: 0
+}
+
+.modal.fade .modal-dialog {
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: -o-transform .3s ease-out;
+ transition: transform .3s ease-out;
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%)
+}
+
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0)
+}
+
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto
+}
+
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px
+}
+
+.modal-content {
+ position: relative;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ outline: 0;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, .5)
+}
+
+.modal-backdrop {
+ position: absolute;
+ top: 0;
+ right: 0;
+ left: 0;
+ background-color: #000
+}
+
+.modal-backdrop.fade {
+ filter: alpha(opacity = 0);
+ opacity: 0
+}
+
+.modal-backdrop.in {
+ filter: alpha(opacity = 50);
+ opacity: .5
+}
+
+.modal-header {
+ min-height: 16.43px;
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5
+}
+
+.modal-header .close {
+ margin-top: -2px
+}
+
+.modal-title {
+ margin: 0;
+ line-height: 1.42857143
+}
+
+.modal-body {
+ position: relative;
+ padding: 15px
+}
+
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5
+}
+
+.modal-footer .btn+.btn {
+ margin-bottom: 0;
+ margin-left: 5px
+}
+
+.modal-footer .btn-group .btn+.btn {
+ margin-left: -1px
+}
+
+.modal-footer .btn-block+.btn-block {
+ margin-left: 0
+}
+
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll
+}
+
+@media ( min-width :768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5)
+ }
+ .modal-sm {
+ width: 300px
+ }
+}
+
+@media ( min-width :992px) {
+ .modal-lg {
+ width: 900px
+ }
+}
+
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 1.4;
+ visibility: visible;
+ filter: alpha(opacity = 0);
+ opacity: 0
+}
+
+.tooltip.in {
+ filter: alpha(opacity = 90);
+ opacity: .9
+}
+
+.tooltip.top {
+ padding: 5px 0;
+ margin-top: -3px
+}
+
+.tooltip.right {
+ padding: 0 5px;
+ margin-left: 3px
+}
+
+.tooltip.bottom {
+ padding: 5px 0;
+ margin-top: 3px
+}
+
+.tooltip.left {
+ padding: 0 5px;
+ margin-left: -3px
+}
+
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #fff;
+ text-align: center;
+ text-decoration: none;
+ background-color: #000;
+ border-radius: 4px
+}
+
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid
+}
+
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000
+}
+
+.tooltip.top-left .tooltip-arrow {
+ right: 5px;
+ bottom: 0;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000
+}
+
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000
+}
+
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000
+}
+
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000
+}
+
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000
+}
+
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000
+}
+
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000
+}
+
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.42857143;
+ text-align: left;
+ white-space: normal;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, .2)
+}
+
+.popover.top {
+ margin-top: -10px
+}
+
+.popover.right {
+ margin-left: 10px
+}
+
+.popover.bottom {
+ margin-top: 10px
+}
+
+.popover.left {
+ margin-left: -10px
+}
+
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0
+}
+
+.popover-content {
+ padding: 9px 14px
+}
+
+.popover>.arrow, .popover>.arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid
+}
+
+.popover>.arrow {
+ border-width: 11px
+}
+
+.popover>.arrow:after {
+ content: "";
+ border-width: 10px
+}
+
+.popover.top>.arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999;
+ border-top-color: rgba(0, 0, 0, .25);
+ border-bottom-width: 0
+}
+
+.popover.top>.arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-color: #fff;
+ border-bottom-width: 0
+}
+
+.popover.right>.arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: #999;
+ border-right-color: rgba(0, 0, 0, .25);
+ border-left-width: 0
+}
+
+.popover.right>.arrow:after {
+ bottom: -10px;
+ left: 1px;
+ content: " ";
+ border-right-color: #fff;
+ border-left-width: 0
+}
+
+.popover.bottom>.arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999;
+ border-bottom-color: rgba(0, 0, 0, .25)
+}
+
+.popover.bottom>.arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-width: 0;
+ border-bottom-color: #fff
+}
+
+.popover.left>.arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999;
+ border-left-color: rgba(0, 0, 0, .25)
+}
+
+.popover.left>.arrow:after {
+ right: 1px;
+ bottom: -10px;
+ content: " ";
+ border-right-width: 0;
+ border-left-color: #fff
+}
+
+.carousel {
+ position: relative
+}
+
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden
+}
+
+.carousel-inner>.item {
+ position: relative;
+ display: none;
+ -webkit-transition: .6s ease-in-out left;
+ -o-transition: .6s ease-in-out left;
+ transition: .6s ease-in-out left
+}
+
+.carousel-inner>.item>img, .carousel-inner>.item>a>img {
+ line-height: 1
+}
+
+@media all and (transform-3d) , ( -webkit-transform-3d ) {
+ .carousel-inner>.item {
+ -webkit-transition: -webkit-transform .6s ease-in-out;
+ -o-transition: -o-transform .6s ease-in-out;
+ transition: transform .6s ease-in-out;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000;
+ perspective: 1000
+ }
+ .carousel-inner>.item.next, .carousel-inner>.item.active.right {
+ left: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0)
+ }
+ .carousel-inner>.item.prev, .carousel-inner>.item.active.left {
+ left: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0)
+ }
+ .carousel-inner>.item.next.left, .carousel-inner>.item.prev.right,
+ .carousel-inner>.item.active {
+ left: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0)
+ }
+}
+
+.carousel-inner>.active, .carousel-inner>.next, .carousel-inner>.prev {
+ display: block
+}
+
+.carousel-inner>.active {
+ left: 0
+}
+
+.carousel-inner>.next, .carousel-inner>.prev {
+ position: absolute;
+ top: 0;
+ width: 100%
+}
+
+.carousel-inner>.next {
+ left: 100%
+}
+
+.carousel-inner>.prev {
+ left: -100%
+}
+
+.carousel-inner>.next.left, .carousel-inner>.prev.right {
+ left: 0
+}
+
+.carousel-inner>.active.left {
+ left: -100%
+}
+
+.carousel-inner>.active.right {
+ left: 100%
+}
+
+.carousel-control {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 15%;
+ font-size: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+ filter: alpha(opacity = 50);
+ opacity: .5
+}
+
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0,
+ rgba(0, 0, 0, .0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0,
+ rgba(0, 0, 0, .0001) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)),
+ to(rgba(0, 0, 0, .0001)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0,
+ rgba(0, 0, 0, .0001) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',
+ endColorstr='#00000000', GradientType=1);
+ background-repeat: repeat-x
+}
+
+.carousel-control.right {
+ right: 0;
+ left: auto;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0,
+ rgba(0, 0, 0, .5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0,
+ rgba(0, 0, 0, .5) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)),
+ to(rgba(0, 0, 0, .5)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0,
+ rgba(0, 0, 0, .5) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',
+ endColorstr='#80000000', GradientType=1);
+ background-repeat: repeat-x
+}
+
+.carousel-control:hover, .carousel-control:focus {
+ color: #fff;
+ text-decoration: none;
+ filter: alpha(opacity = 90);
+ outline: 0;
+ opacity: .9
+}
+
+.carousel-control .icon-prev, .carousel-control .icon-next,
+ .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right
+ {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block
+}
+
+.carousel-control .icon-prev, .carousel-control .glyphicon-chevron-left
+ {
+ left: 50%;
+ margin-left: -10px
+}
+
+.carousel-control .icon-next, .carousel-control .glyphicon-chevron-right
+ {
+ right: 50%;
+ margin-right: -10px
+}
+
+.carousel-control .icon-prev, .carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ margin-top: -10px;
+ font-family: serif
+}
+
+.carousel-control .icon-prev:before {
+ content: '\2039'
+}
+
+.carousel-control .icon-next:before {
+ content: '\203a'
+}
+
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ padding-left: 0;
+ margin-left: -30%;
+ text-align: center;
+ list-style: none
+}
+
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+ border: 1px solid #fff;
+ border-radius: 10px
+}
+
+.carousel-indicators .active {
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ background-color: #fff
+}
+
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6)
+}
+
+.carousel-caption .btn {
+ text-shadow: none
+}
+
+@media screen and (min-width:768px) {
+ .carousel-control .glyphicon-chevron-left, .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev, .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -15px;
+ font-size: 30px
+ }
+ .carousel-control .glyphicon-chevron-left, .carousel-control .icon-prev
+ {
+ margin-left: -15px
+ }
+ .carousel-control .glyphicon-chevron-right, .carousel-control .icon-next
+ {
+ margin-right: -15px
+ }
+ .carousel-caption {
+ right: 20%;
+ left: 20%;
+ padding-bottom: 30px
+ }
+ .carousel-indicators {
+ bottom: 20px
+ }
+}
+
+.clearfix:before, .clearfix:after, .dl-horizontal dd:before,
+ .dl-horizontal dd:after, .container:before, .container:after,
+ .container-fluid:before, .container-fluid:after, .row:before, .row:after,
+ .form-horizontal .form-group:before, .form-horizontal .form-group:after,
+ .btn-toolbar:before, .btn-toolbar:after, .btn-group-vertical>.btn-group:before,
+ .btn-group-vertical>.btn-group:after, .nav:before, .nav:after, .navbar:before,
+ .navbar:after, .navbar-header:before, .navbar-header:after,
+ .navbar-collapse:before, .navbar-collapse:after, .pager:before, .pager:after,
+ .panel-body:before, .panel-body:after, .modal-footer:before,
+ .modal-footer:after {
+ display: table;
+ content: " "
+}
+
+.clearfix:after, .dl-horizontal dd:after, .container:after,
+ .container-fluid:after, .row:after, .form-horizontal .form-group:after,
+ .btn-toolbar:after, .btn-group-vertical>.btn-group:after, .nav:after,
+ .navbar:after, .navbar-header:after, .navbar-collapse:after, .pager:after,
+ .panel-body:after, .modal-footer:after {
+ clear: both
+}
+
+.center-block {
+ display: block;
+ margin-right: auto;
+ margin-left: auto
+}
+
+.pull-right {
+ float: right !important
+}
+
+.pull-left {
+ float: left !important
+}
+
+.hide {
+ display: none !important
+}
+
+.show {
+ display: block !important
+}
+
+.invisible {
+ visibility: hidden
+}
+
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0
+}
+
+.hidden {
+ display: none !important;
+ visibility: hidden !important
+}
+
+.affix {
+ position: fixed
+}
+
+@
+-ms-viewport {
+ width: device-width
+}
+
+.visible-xs, .visible-sm, .visible-md, .visible-lg {
+ display: none !important
+}
+
+.visible-xs-block, .visible-xs-inline, .visible-xs-inline-block,
+ .visible-sm-block, .visible-sm-inline, .visible-sm-inline-block,
+ .visible-md-block, .visible-md-inline, .visible-md-inline-block,
+ .visible-lg-block, .visible-lg-inline, .visible-lg-inline-block {
+ display: none !important
+}
+
+@media ( max-width :767px) {
+ .visible-xs {
+ display: block !important
+ }
+ table.visible-xs {
+ display: table
+ }
+ tr.visible-xs {
+ display: table-row !important
+ }
+ th.visible-xs, td.visible-xs {
+ display: table-cell !important
+ }
+}
+
+@media ( max-width :767px) {
+ .visible-xs-block {
+ display: block !important
+ }
+}
+
+@media ( max-width :767px) {
+ .visible-xs-inline {
+ display: inline !important
+ }
+}
+
+@media ( max-width :767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media ( min-width :768px) and (max-width:991px) {
+ .visible-sm {
+ display: block !important
+ }
+ table.visible-sm {
+ display: table
+ }
+ tr.visible-sm {
+ display: table-row !important
+ }
+ th.visible-sm, td.visible-sm {
+ display: table-cell !important
+ }
+}
+
+@media ( min-width :768px) and (max-width:991px) {
+ .visible-sm-block {
+ display: block !important
+ }
+}
+
+@media ( min-width :768px) and (max-width:991px) {
+ .visible-sm-inline {
+ display: inline !important
+ }
+}
+
+@media ( min-width :768px) and (max-width:991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media ( min-width :992px) and (max-width:1199px) {
+ .visible-md {
+ display: block !important
+ }
+ table.visible-md {
+ display: table
+ }
+ tr.visible-md {
+ display: table-row !important
+ }
+ th.visible-md, td.visible-md {
+ display: table-cell !important
+ }
+}
+
+@media ( min-width :992px) and (max-width:1199px) {
+ .visible-md-block {
+ display: block !important
+ }
+}
+
+@media ( min-width :992px) and (max-width:1199px) {
+ .visible-md-inline {
+ display: inline !important
+ }
+}
+
+@media ( min-width :992px) and (max-width:1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media ( min-width :1200px) {
+ .visible-lg {
+ display: block !important
+ }
+ table.visible-lg {
+ display: table
+ }
+ tr.visible-lg {
+ display: table-row !important
+ }
+ th.visible-lg, td.visible-lg {
+ display: table-cell !important
+ }
+}
+
+@media ( min-width :1200px) {
+ .visible-lg-block {
+ display: block !important
+ }
+}
+
+@media ( min-width :1200px) {
+ .visible-lg-inline {
+ display: inline !important
+ }
+}
+
+@media ( min-width :1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media ( max-width :767px) {
+ .hidden-xs {
+ display: none !important
+ }
+}
+
+@media ( min-width :768px) and (max-width:991px) {
+ .hidden-sm {
+ display: none !important
+ }
+}
+
+@media ( min-width :992px) and (max-width:1199px) {
+ .hidden-md {
+ display: none !important
+ }
+}
+
+@media ( min-width :1200px) {
+ .hidden-lg {
+ display: none !important
+ }
+}
+
+.visible-print {
+ display: none !important
+}
+
+@media print {
+ .visible-print {
+ display: block !important
+ }
+ table.visible-print {
+ display: table
+ }
+ tr.visible-print {
+ display: table-row !important
+ }
+ th.visible-print, td.visible-print {
+ display: table-cell !important
+ }
+}
+
+.visible-print-block {
+ display: none !important
+}
+
+@media print {
+ .visible-print-block {
+ display: block !important
+ }
+}
+
+.visible-print-inline {
+ display: none !important
+}
+
+@media print {
+ .visible-print-inline {
+ display: inline !important
+ }
+}
+
+.visible-print-inline-block {
+ display: none !important
+}
+
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important
+ }
+}
+
+@media print {
+ .hidden-print {
+ display: none !important
+ }
+}
\ No newline at end of file
diff --git a/WebContent/css/screen.css b/WebContent/css/screen.css
new file mode 100644
index 00000000..cb18429a
--- /dev/null
+++ b/WebContent/css/screen.css
@@ -0,0 +1,879 @@
+@import url(http://fonts.googleapis.com/css?family=Open+Sans);
+
+@import url(http://fonts.googleapis.com/css?family=Questrial);
+
+/* Reset & Basics (Inspired by E. Meyers)
+================================================== */
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p,
+ blockquote, pre, a, address, cite, code, em, img, small, strong, ol, ul,
+ li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead,
+ tr, th, td, article, aside, canvas, embed, figure, figcaption, footer,
+ header, hgroup, menu, nav, section, summary, time, audio, video {
+ margin: 0;
+ padding: 0;
+ border: 0;
+ font-size: 100%;
+ font: inherit;
+ vertical-align: baseline;
+}
+
+article, aside, details, figcaption, figure, footer, header, hgroup,
+ menu, time, nav, section {
+ display: block;
+}
+
+html, body, .wrapper {
+ min-height: 100%;
+}
+
+/* Body
+================================================== */
+html, body {
+ height: 100%;
+}
+
+.wrapper {
+ min-height: 100%;
+}
+
+body {
+ overflow-x: hidden;
+ font: 17px/28px ff-meta-serif-web-pro, "Georgia", serif;
+ color: #333;
+ background: #fff;
+}
+
+/* Typography
+================================================== */
+h1, h2, h3, h4, h5, h6 {
+ font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
+ font-weight: normal;
+ text-transform: uppercase;
+ font-weight: 700;
+ color: #000;
+ text-rendering: optimizeLegibility;
+}
+
+h1 {
+ font-size: 50px;
+ padding-bottom: 30px;
+}
+
+h2 {
+ font-size: 45px;
+ padding-bottom: 25px;
+}
+
+h3 {
+ font-size: 40px;
+ padding-bottom: 20px;
+}
+
+h4 {
+ font-size: 35px;
+ padding-bottom: 15px;
+}
+
+h5 {
+ font-size: 30px;
+ padding-bottom: 10px;
+}
+
+p {
+ margin: 0 0 28px 0;
+}
+
+strong {
+ font-weight: bold;
+}
+
+em {
+ font-style: italic;
+}
+
+sup {
+ line-height: 0;
+}
+
+small {
+ font-size: 70%;
+}
+
+cite {
+ font-size: 80%;
+ font-style: italic;
+}
+
+/* Teaser
+================================================== */
+header#teaser h1 {
+ text-transform: none !important;
+ color: #333;
+ font-size: 28px !important;
+ font-weight: 300 !important;
+}
+
+/* Links
+================================================== */
+a {
+ color: #F40034;
+ text-decoration: none;
+ -webkit-transition: color .2s ease-in-out;
+ -moz-transition: color .2s ease-in-out;
+ transition: color .2s ease-in-out;
+}
+
+a:hover {
+ color: #F40034;
+}
+
+/* Layout
+================================================== */
+/* White container that is the "page" */
+.wrapper {
+ max-width: 1500px;
+ margin: 0 auto;
+ background: #fff;
+}
+
+/* Containers to keep content to a set width */
+.nav, .art-header-inner, .footer, .art-list, .abt, .fourohfour {
+ width: 980px;
+}
+
+.nav, .art-body-inner, .footer, .art-list, .abt, .fourohfour {
+ position: relative;
+ margin: 0 auto;
+}
+
+/* Nav
+================================================== */
+.nav {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ height: 70px;
+ padding-top: 40px;
+ margin-left: -490px; /* Half width of nav */
+ border-bottom: 1px solid #333;
+ z-index: 2;
+}
+
+.nav.fixed {
+ position: fixed;
+}
+
+#logo {
+ float: left;
+}
+
+.nav-primary {
+ float: right;
+}
+
+.nav-primary li {
+ display: inline-block;
+ margin-left: 10px;
+ font-weight: 500;
+}
+
+#logo h1, .nav-primary li, .nav-primary li a {
+ font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
+ font-weight: 700;
+ font-size: 13px;
+ line-height: 30px;
+ color: #000;
+ text-transform: uppercase;
+}
+
+#logo h1 {
+ height: 30px;
+ margin-left: 0px;
+ letter-spacing: 1px;
+ font-family: 'Questrial', sans-serif;
+ font-size: 30px;
+}
+
+#logo h1 span {
+ color: #F40034 !important;
+}
+
+.nav li:first-child {
+ margin-left: 0; /* Remove left margin from the first nav li */
+}
+
+/* Home Page
+================================================== */
+div#home {
+
+}
+
+#home>div.cover {
+ max-width: 980px;
+ margin: 0px auto;
+ /*padding-top: 110px;*/
+}
+
+div.cover {
+
+}
+
+div.cover>img {
+ width: 100%;
+ height: 100%;
+}
+
+/* Article
+================================================== */
+.art {
+ margin-top: -131px;
+}
+/* Header */
+.art-header {
+ height: 900px;
+ /* Background image is defined in the post */
+ background-position: top center;
+ background-attachment: fixed;
+ overflow: hidden;
+}
+/* Contains the time, title and subtitle for an article */
+.art-header-inner {
+ position: fixed;
+ top: 300px;
+ left: 50%;
+ margin-left: -490px;
+}
+
+.art-time, .art-title, .art-subtitle {
+ text-align: center;
+ text-transform: uppercase;
+}
+
+.art-time {
+ font-size: 14px;
+ line-height: 1.8;
+ letter-spacing: 4px;
+}
+
+.art-title {
+ font-size: 100px;
+ line-height: .9;
+ letter-spacing: -2px;
+ width: 100%;
+}
+
+.art-subtitle {
+ margin-top: 4px;
+ font-size: 14px;
+ line-height: 1.3;
+ letter-spacing: 4px;
+}
+
+/* If small header, make few adjustments */
+.small .art-title {
+ font-size: 70px;
+ line-height: 65px;
+}
+
+.small.art-header-inner {
+ top: 320px;
+}
+
+/* Body */
+.art-body {
+ position: relative;
+ width: 100%;
+ background: #fff;
+ z-index: 100;
+ -webkit-box-shadow: 0 -3px 3px rgba(0, 0, 0, .2);
+ -moz-box-shadow: 0 -3px 3px rgba(0, 0, 0, .2);
+ box-shadow: 0 -3px 3px rgba(0, 0, 0, .2);
+}
+
+.art-body-inner {
+ font-family: Georgia, Cambria, "Times New Roman", Times, serif;
+ max-width: 640px;
+ padding: 80px 0 50px;
+ letter-spacing: 0.01rem;
+ font-weight: 400;
+ font-style: normal;
+ font-size: 21px;
+ line-height: 1.5;
+}
+
+.art-body-inner a:hover {
+ border-bottom: 1px solid #F40034;
+ padding-bottom: 2px;
+}
+
+.art-body-inner ul, .art-body-inner ol {
+ /* For lists in the article body */
+ margin-bottom: 26px;
+}
+
+.art-body-inner ul li {
+ list-style: disc;
+}
+
+.art-body-inner mark {
+ background-color: #fdffb6;
+ padding: 2px;
+ -webkit-box-shadow: #fdffb6 0 0 5px;
+ -moz-box-shadow: #fdffb6 0 0 5px;
+ box-shadow: #fdffb6 0 0 5px;
+}
+
+.art-body-inner blockquote {
+ font-size: 16px;
+ background: #f9f9f9;
+ border-left: 10px solid #ccc;
+ margin: 1.5em 10px;
+ padding: 0.5em 10px;
+ quotes: "\201C" "\201D" "\2018" "\2019";
+}
+
+.art-body-inner blockquote p:first-child:before {
+ color: #ccc;
+ content: "“";
+ font-size: 4em;
+ line-height: 0.1em;
+ margin-right: 0.25em;
+ vertical-align: -0.4em;
+}
+
+.art-body-inner blockquote p {
+ margin-bottom: 1.5em;
+}
+
+.art-body-inner blockquote p:last-child {
+ margin-bottom: 0;
+}
+
+.dropcap { /* First character on articles */
+ float: left;
+ margin: 47px 10px 20px 0;
+ font-size: 100px;
+ line-height: 0;
+}
+
+.art-subhead {
+ /* Subheads are used to break up sections of an article */
+ margin: 60px 0 15px;
+ font-size: 20px;
+ line-height: 28px;
+ letter-spacing: 3px;
+}
+
+.callout { /* Callouts are like large pullquotes */
+ font-weight: bold;
+}
+
+.art-body-inner img {
+ max-width: 100%;
+ max-height: 600px;
+ margin-bottom: 26px;
+}
+
+.art-body-inner img.center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.art-body-inner .art-reference {
+ font-size: 80%;
+ color: #999;
+ margin-top: 50px;
+}
+
+/* For simple, white background posts */
+.simple .art-body {
+ background: none;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+/* List of Articles
+================================================== */
+.art-list {
+ padding: 120px 0 0;
+}
+
+.art-list-body {
+ position: relative;
+ overflow: hidden;
+}
+
+.art-list-item {
+ padding: 40px 0;
+ list-style: none;
+ overflow: hidden;
+ border-bottom: 1px solid #ccc;
+}
+
+.art-list-item:last-child {
+ border-bottom: none;
+}
+
+.art-list-title {
+ font-size: 26px;
+ line-height: 26px;
+ font-weight: 700;
+}
+
+.art-list-item-title-and-time {
+ float: left;
+ width: 30%;
+ margin-bottom: 10px;
+}
+
+.art-list-time {
+ font-size: 12px;
+ line-height: 20px;
+ letter-spacing: 2px;
+ text-transform: uppercase;
+ color: #999;
+}
+
+.art-list-title a {
+ color: #000;
+}
+
+.art-list-title a:hover {
+ color: #F40034;
+}
+
+.art-list-item p {
+ width: 65%;
+ float: left;
+ margin-left: 5%;
+ margin-bottom: 0;
+ font-size: 16px;
+ line-height: 24px;
+}
+
+/* Footer
+================================================== */
+.footer {
+ padding: 30px 0 40px;
+ overflow: hidden;
+ border-top: 1px solid #ccc;
+}
+
+.footer, .footer a {
+ font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
+ font-size: 13px;
+ text-transform: uppercase;
+ color: #777;
+}
+
+.footer a:hover {
+ color: #000;
+}
+
+.back-to-top, .footer-nav, .offsite-links {
+ width: 45%;
+ float: left;
+}
+
+.psi {
+ width: 10%;
+ float: left;
+ text-align: center;
+}
+
+.footer-nav {
+ text-align: center;
+}
+
+.offsite-links {
+ text-align: right;
+}
+
+.footer .twitter-link:hover {
+ color: #0084B4;
+}
+
+.footer .instagram-link:hover {
+ color: #3F729B;
+}
+
+.footer .github-link:hover {
+ color: #c5376d;
+}
+
+.footer .caffein8-link:hover {
+ color: black;
+}
+
+.footer .rss-link:hover {
+ color: #e85d24;
+}
+/* Remove prev & next links on loop */
+.art-list+.footer .footer-nav, .abt+.footer .footer-nav {
+ text-indent: -9999px;
+ text-align: left;
+}
+
+/* White Reverse Theme
+================================================== */
+/* Nav */
+.nav.white {
+ border-bottom-color: #fff;
+ border-bottom-color: rgba(255, 255, 255, .3);
+}
+
+.nav.white li a, .nav.white li, .nav.white #logo h1 {
+ color: #fff;
+ text-shadow: 0 0 8px rgba(0, 0, 0, .5);
+}
+
+.nav.white #logo h1 {
+ background-position: top center;
+}
+
+nav.pagination {
+ text-align: right;
+ padding-bottom: 25px;
+}
+/* Art header */
+.art-header.white {
+ background-color: #111;
+}
+
+.art-header.white .art-time, .art-header.white .art-title, .art-header.white .art-subtitle
+ {
+ color: #fff;
+ text-shadow: 0 0 8px rgba(0, 0, 0, .5);
+}
+
+/* About page
+================================================== */
+.abt {
+ padding: 200px 0 100px;
+ list-style: none;
+}
+
+.abt .abt-header {
+ font-size: 140px;
+ line-height: 1;
+ text-transform: none;
+}
+
+.abt .abt-subheader {
+ font-size: 24px;
+ font-style: italic;
+ text-transform: none;
+ color: #777;
+}
+
+.abt-body {
+ -moz-column-count: 2;
+ -moz-column-gap: 20px;
+ -webkit-column-count: 2;
+ -webkit-column-gap: 20px;
+ margin-bottom: 28px;
+}
+
+.abt-signoff {
+ line-height: 1.3;
+ font-style: italic;
+ color: #777;
+}
+
+/* 404 page
+================================================== */
+.fourohfour {
+ padding: 240px 0 100px;
+ text-align: center;
+}
+
+/* Code
+================================================== */
+code, tt {
+ background: #ededee;
+ color: #3C4043;
+ font-size: 90%;
+ padding: 1px 3px;
+}
+
+pre {
+ width: 92%;
+ overflow: auto;
+ margin: 2rem 0;
+ padding: 1rem 0.8rem 1rem 1.2rem;
+ color: #3f3b36;
+ border: 1px solid #ccc;
+ border-left: 1rem solid #ccc;
+ font: lighter 1.2rem/2rem monospace;
+ background: url(/assets/img/pre.png) repeat 0 -0.9rem;
+ background-size: 1px 4rem;
+}
+
+pre code, tt {
+ font-size: inherit;
+ white-space: -moz-pre-wrap;
+ white-space: pre-wrap;
+ background: transparent;
+ border: none;
+ padding: 0;
+}
+
+.gist {
+ font-size: 14px;
+}
+
+/* Responsive
+================================================== */
+@media only screen and (max-width: 1080px) {
+ /* Set all of the 980 containers to flexible width */
+ .nav, .art-body-inner, .art-header-inner, .footer, .art-list, .abt,
+ .fourohfour {
+ width: 90%;
+ }
+ .nav, .art-header-inner {
+ margin-left: -45%;
+ }
+}
+
+@media only screen and (max-width: 1024px) {
+ /* Everything becomes scrolling and non-fading */
+ .nav, .nav.fixed {
+ position: relative;
+ opacity: 1 !important; /* Important to override JS values */
+ display: inline-block;
+ }
+ .art-header-inner {
+ position: relative;
+ top: 0 !important; /* Important to override JS values */
+ margin-top: 240px !important; /* Important to override JS values */
+ opacity: 1 !important; /* Important to override JS values */
+ }
+ /* Articles no longer have fixed heights */
+ .art-header {
+ height: auto;
+ padding-bottom: 100px;
+ background-size: cover !important;
+ background-attachment: scroll;
+ }
+ /* Remove bottom space out if articles doesn't have a background */
+ .simple .art-header {
+ padding-bottom: 0;
+ }
+ .art-list {
+ padding-top: 0;
+ }
+ .abt {
+ padding: 40px 0;
+ }
+ .fourohfour {
+ padding: 80px 0 60px;
+ }
+}
+
+@media only screen and (max-width: 780px) {
+ .art-body-inner ul, .art-body-inner ol {
+ margin-left: 20px;
+ }
+ .art-title {
+ letter-spacing: 0;
+ }
+ .art-subtitle, .art-time {
+ font-size: 12px;
+ }
+ .nav {
+ padding-top: 25px;
+ height: 55px;
+ }
+ .art-list-item-title-and-time, .art-list-item p {
+ float: none;
+ width: auto;
+ margin-left: 0;
+ }
+ .abt-body {
+ -moz-column-count: 1;
+ -webkit-column-count: 1;
+ }
+}
+
+@media only screen and (max-width: 500px) {
+ .nav-primary li {
+ margin-left: 10px;
+ }
+ .nav #logo h1 {
+ font-size: 16px;
+ letter-spacing: -1px;
+ }
+ .nav li a {
+ font-size: 12px;
+ }
+ .art-header {
+ padding-bottom: 50px;
+ }
+ .art-header-inner {
+ margin-top: 190px !important;
+ }
+ .art-body-inner {
+ padding-top: 30px;
+ }
+ body {
+ font-size: 15px;
+ line-height: 24px;
+ }
+ p {
+ margin-bottom: 24px;
+ }
+ .footer {
+ padding: 10px 0 20px;
+ }
+ .back-to-top, .footer-nav {
+ width: 50%;
+ }
+ .back-to-top {
+ text-align: left;
+ }
+ .footer-nav {
+ text-align: right;
+ }
+ .offsite-links {
+ float: left;
+ width: 100%;
+ text-align: left;
+ }
+ .offsite-links a {
+ font-size: 12px;
+ }
+ .art-list+.footer .footer-nav {
+ display: none;
+ }
+ .abt .abt-header {
+ font-size: 80px;
+ }
+ .abt .abt-subheader {
+ font-size: 18px;
+ }
+}
+
+/* Misc
+================================================== */
+::selection {
+ background: #000;
+ color: #fff;
+}
+
+::-moz-selection {
+ background: #000;
+ color: #fff;
+}
+
+img.left {
+ float: left;
+ margin-right: 20px;
+}
+
+img.right {
+ float: right;
+ margin-left: 20px;
+}
+/* Clearfixing pile */
+.nav:before, .art-body-inner:before, .footer:before, .art-list:before {
+ content: "";
+ display: table;
+}
+
+.nav:after, .art-body-inner:after, .footer:after, .art-list:after {
+ clear: both;
+}
+
+.nav, .art-body-inner, .footer, .art-list {
+ zoom: 1; /* For IE 6/7 (trigger hasLayout) */
+}
+
+@
+-webkit-keyframes le-fade { 0% {
+ opacity: 0;
+}
+
+100%
+{
+opacity
+:
+
+1;
+}
+}
+@
+-moz-keyframes le-fade { 0% {
+ opacity: 0;
+}
+
+100%
+{
+opacity
+:
+
+1;
+}
+}
+.art-header-inner {
+ -webkit-animation: le-fade .5s 0 1 ease-out;
+ -moz-animation: le-fade .5s 0 1 ease-out;
+}
+
+.art-list, .nav, .abt, .art-body {
+ -webkit-animation: le-fade .5s 0s 1 ease-out;
+ -moz-animation: le-fade .5s 0s 1 ease-out;
+}
+
+hr.featured-article {
+ padding: 0;
+ border: none;
+ border-top: medium double #bbb;
+ color: #bbb;
+ text-align: center;
+}
+
+hr.featured-article:after {
+ content: "✠Featured Article âœ";
+ display: inline-block;
+ position: relative;
+ top: -0.8em;
+ font-size: 1.2em;
+ padding: 0 0.6em;
+ background: white;
+}
+
+/* FORM */
+#contact-area {
+ width: 600px;
+ margin-top: 25px;
+}
+
+#contact-area input, #contact-area textarea {
+ padding: 5px;
+ width: 471px;
+ font-family: Helvetica, sans-serif;
+ margin: 0px 0px 10px 0px;
+ border: 2px solid #ccc;
+}
+
+#contact-area textarea {
+ height: 90px;
+}
+
+#contact-area textarea:focus, #contact-area input:focus {
+ border: 2px solid #900;
+}
+
+#contact-area input.submit-button {
+ width: 100px;
+}
+
+label {
+ float: left;
+ text-align: right;
+ margin-right: 15px;
+ width: 100px;
+ padding-top: 5px;
+}
\ No newline at end of file
diff --git a/WebContent/edit_post.xhtml b/WebContent/edit_post.xhtml
new file mode 100644
index 00000000..258d6f9e
--- /dev/null
+++ b/WebContent/edit_post.xhtml
@@ -0,0 +1,49 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebContent/edit_user.xhtml b/WebContent/edit_user.xhtml
new file mode 100644
index 00000000..fcb375ca
--- /dev/null
+++ b/WebContent/edit_user.xhtml
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Edit User
+
+
+
+
+
+
+
+
+
+
+
+ ID |
+ Username |
+ Password |
+ Name |
+ e-mail |
+ role |
+ Commands |
+
+
+
+ #{editUser.id} |
+ |
+ |
+ |
+ |
+
+
+
+
+ |
+ |
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/editor_menu.xhtml b/WebContent/editor_menu.xhtml
new file mode 100644
index 00000000..88e018a2
--- /dev/null
+++ b/WebContent/editor_menu.xhtml
@@ -0,0 +1,38 @@
+
+
+
+
+ Unpublished Post
+
+
+
+
+
+
+
+ Post |
+ Commands |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/fonts/glyphicons-halflings-regular.eot b/WebContent/fonts/glyphicons-halflings-regular.eot
new file mode 100644
index 00000000..4a4ca865
Binary files /dev/null and b/WebContent/fonts/glyphicons-halflings-regular.eot differ
diff --git a/WebContent/fonts/glyphicons-halflings-regular.svg b/WebContent/fonts/glyphicons-halflings-regular.svg
new file mode 100644
index 00000000..25691af8
--- /dev/null
+++ b/WebContent/fonts/glyphicons-halflings-regular.svg
@@ -0,0 +1,229 @@
+
+
+
\ No newline at end of file
diff --git a/WebContent/fonts/glyphicons-halflings-regular.ttf b/WebContent/fonts/glyphicons-halflings-regular.ttf
new file mode 100644
index 00000000..67fa00bf
Binary files /dev/null and b/WebContent/fonts/glyphicons-halflings-regular.ttf differ
diff --git a/WebContent/fonts/glyphicons-halflings-regular.woff b/WebContent/fonts/glyphicons-halflings-regular.woff
new file mode 100644
index 00000000..8c54182a
Binary files /dev/null and b/WebContent/fonts/glyphicons-halflings-regular.woff differ
diff --git a/WebContent/header.xhtml b/WebContent/header.xhtml
new file mode 100644
index 00000000..e3628874
--- /dev/null
+++ b/WebContent/header.xhtml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/assets/img/favicon.ico b/WebContent/img/favicon.ico
similarity index 100%
rename from assets/img/favicon.ico
rename to WebContent/img/favicon.ico
diff --git a/assets/img/pre.png b/WebContent/img/pre.png
similarity index 100%
rename from assets/img/pre.png
rename to WebContent/img/pre.png
diff --git a/WebContent/index.xhtml b/WebContent/index.xhtml
new file mode 100644
index 00000000..8759c15b
--- /dev/null
+++ b/WebContent/index.xhtml
@@ -0,0 +1,31 @@
+
+
+
+
+ Home
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebContent/login.xhtml b/WebContent/login.xhtml
new file mode 100644
index 00000000..09fc1b39
--- /dev/null
+++ b/WebContent/login.xhtml
@@ -0,0 +1,47 @@
+
+
+
+
+ JSF 2.2: Blank Starting-Point Project
+
+
+
+
+
+
+
+
+ Login
+
+
+
+
+
+ Username :
+
+
+
+
+
+ Password :
+
+
+
+
+
+
+
+
+
+
diff --git a/WebContent/logout.xhtml b/WebContent/logout.xhtml
new file mode 100644
index 00000000..148ea770
--- /dev/null
+++ b/WebContent/logout.xhtml
@@ -0,0 +1,15 @@
+
+
+
+
+ Logout
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/my_post.xhtml b/WebContent/my_post.xhtml
new file mode 100644
index 00000000..0281200d
--- /dev/null
+++ b/WebContent/my_post.xhtml
@@ -0,0 +1,41 @@
+
+
+
+
+ My Posts
+
+
+
+
+
+
+
+ Post |
+ Commands |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
+
diff --git a/WebContent/navigation_bar.xhtml b/WebContent/navigation_bar.xhtml
new file mode 100644
index 00000000..f5068d12
--- /dev/null
+++ b/WebContent/navigation_bar.xhtml
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/WebContent/post_manager.xhtml b/WebContent/post_manager.xhtml
new file mode 100644
index 00000000..1bbdc865
--- /dev/null
+++ b/WebContent/post_manager.xhtml
@@ -0,0 +1,106 @@
+
+
+
+
+ All Posts
+
+
+
+
+
+
Published Post
+
+
+ Post |
+ Commands |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
Unpublished Post
+
+
+ Post |
+ Commands |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
Soft-Deleted Post
+
+
+ Post |
+ Commands |
+
+
+
+ |
+
+
+ |
+
+
+ |
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/resources/js/date.js b/WebContent/resources/js/date.js
new file mode 100644
index 00000000..1051017b
--- /dev/null
+++ b/WebContent/resources/js/date.js
@@ -0,0 +1,49 @@
+function isValidDate(str) {
+ // code 1 = not a date
+ // code 2 = past date
+ // code 3 = invalid date
+
+ var date_patt = /^\d{4}-\d{2}-\d{2}$/;
+ if (date_patt.test(str)) {
+ var year = +str.substring(0, 4);
+ var month = +str.substring(5, 7) - 1;
+ var day = +str.substring(8, 10);
+
+ var given = new Date(year, month, day);
+ if (!(day === given.getDate() && month === given.getMonth() && year === given
+ .getFullYear()))
+ return 3;
+
+ var now = new Date();
+
+ if (year === now.getFullYear()) {
+ if (month === now.getMonth()) {
+ if (day < now.getDate()) {
+ return 2;
+ }
+ } else if (month < now.getMonth()) {
+ return 2;
+ }
+ } else if (year < now.getFullYear()) {
+ return 2;
+ }
+
+ return 0;
+
+ } else {
+ return 1;
+ }
+}
+
+function checkDate() {
+ var date = document.getElementById("dateInput");
+ var res = isValidDate(date.value);
+
+ if (res == 0) {
+ return true;
+ } else {
+ var error_area = document.getElementById("error_msg");
+ error_area.innerHTML = "Error: " + res + " Format tanggal dalam bentuk yyyy-MM-dd dan lebih besar dari hari ini";
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/WebContent/resources/js/helper.js b/WebContent/resources/js/helper.js
new file mode 100644
index 00000000..d8b3e568
--- /dev/null
+++ b/WebContent/resources/js/helper.js
@@ -0,0 +1,78 @@
+window.onload = get_comments
+
+function get_comments() {
+ var xmlhttp = new XMLHttpRequest();
+
+ xmlhttp.onreadystatechange = function() {
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+ document.getElementById("comments_part").innerHTML = xmlhttp.responseText;
+ }
+ }
+
+ var getter = "CommentGetter?id=";
+ getter = getter.concat(document.getElementById("inputID").value);
+ xmlhttp.open("GET", getter, true);
+ xmlhttp.send();
+}
+
+function checkEmail() {
+ var email = document.getElementById("email_area").value;
+ var email_patt = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+ var result = email_patt.test(email);
+
+ return result;
+}
+
+function myfunction() {
+ var isEmailValid = checkEmail();
+ var errorDOM = document.getElementById("error_area");
+
+ if (isEmailValid) {
+ errorDOM.innerHTML = "";
+
+ // konek ajax ke server
+ var id_tag = document.getElementById("inputID")
+ var name_tag = document.getElementById("inputNama");
+ var email_tag = document.getElementById("email_area");
+ var content_tag = document.getElementById("inputKomentar");
+
+ var id_v = encodeURIComponent(id_tag.value);
+ var name_v = encodeURIComponent(name_tag.value);
+ var email_v = encodeURIComponent(email_tag.value);
+ var content_v = encodeURIComponent(content_tag.value);
+
+ name_tag.value = "";
+ email_tag.value = "";
+ content_tag.value = "";
+
+ var to_send = "id=" + id_v + "&name=" + name_v + "&email=" + email_v
+ + "&content=" + content_v;
+
+ var xmlhttp = new XMLHttpRequest();
+
+ xmlhttp.onreadystatechange = function() {
+ if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
+ if (xmlhttp.responseText === "SUCCESS") {
+ get_comments();
+ }
+ }
+ }
+
+ xmlhttp.open("POST", "CommentPoster", true);
+ xmlhttp.setRequestHeader("Content-Type",
+ "application/x-www-form-urlencoded");
+
+ xmlhttp.send(to_send);
+
+ } else {
+ errorDOM.innerHTML = "Email anda tidak valid";
+ }
+}
+
+function konfirmasi() {
+ var tanya = confirm('Apakah anda yakin menghapus post ini?');
+ if (tanya == true)
+ return true;
+ else
+ return false;
+}
\ No newline at end of file
diff --git a/WebContent/samples/README.txt b/WebContent/samples/README.txt
new file mode 100644
index 00000000..f94afe06
--- /dev/null
+++ b/WebContent/samples/README.txt
@@ -0,0 +1,54 @@
+The files in the "samples" folder are meant to be used as a starting point
+for your own JSF facelets (i.e., .xhtml) files, to save you from typing in
+the long and tedious DOCTYPE,
declaration, and basic tags.
+
+Please note that the files use the JSF 2.2 format, and are not compatible with
+JSF 2.1 and earlier.
+
+The the versions that say "with-comments" have some explanations inside the
+files in HTML comments. Most of the time, you probably want to use the
+other versions, that do NOT say "with-comments", because you do not want your
+final files to contain the comments. For each (with and without comments),
+there is a version for the case when you are making a form, and another
+version for the case where you have a pure output (results) page that contains
+no form.
+
+You have two main options: copying the files into your own JSF project,
+or copying and renaming the entire jsf-blank project as described in
+the notes.
+
+A) If you make a new project of your own, start by specifying the JSF 2.2
+user library (you have to do this the FIRST time only). Go to Window,
+Preferences, Java, Build Path, User Libraries, do Add, name it something
+like JSF-2.2-Library, then Add External JARs, then point at your JSF
+2.2 JAR file. Then make a Dynamic Web Project, and choose "JavaServer Faces
+v 2.2 project". You probably want to remove the default URL mapping and
+use *.jsf instead. Then, copy the appropriate .xhtml file
+from jsf-blank/WebContent/samples into the WebContent
+(not the WebContent/samples) folder of your app. Rename the file to
+give it a name that is meaningful for your app.
+ Optional: copy web.xml and faces-config.xml from jsf-blank/WebContent/WEB-INF
+into the WEB-INF folder of your new app. In particular, the web.xml made
+by the Eclipse wizard is not what you usually want, since it has some
+extraneous things and since it omits the Development value for
+javax.faces.PROJECT_STAGE, which is VERY useful during development.
+ Optional: also copy the "css" folder from jsf-blank/WebContent/ into
+the WebContent folder of your app. You can omit this step, but then you
+won't have a style sheet, and your pages will not look the same as my
+examples.
+
+B) If you copy and rename the entire jsf-blank project, first remember that
+you have to patch the .component file as described in the tutorial. Then, copy
+sample-file-no-form.xhtml and sample-file-with-form.xhtml into WebContent and
+rename them to have meaningful names. You should delete index.xhtml, page-b.xhtml,
+the samples folder, and the somepackage Java package, so that your project does
+not have extraneous files.
+
+Either way, the samples are simply supposed to save you from typing in the core
+.xhtml tags. You still have to write all the Java code as described in the
+tutorial.
+
+
+
+Taken from http://www.coreservlets.com/JSF-Tutorial/jsf2/ --
+MANY more details on creating and copying JSF projects there.
\ No newline at end of file
diff --git a/WebContent/samples/sample-file-no-form-with-comments.xhtml b/WebContent/samples/sample-file-no-form-with-comments.xhtml
new file mode 100644
index 00000000..07f99c48
--- /dev/null
+++ b/WebContent/samples/sample-file-no-form-with-comments.xhtml
@@ -0,0 +1,19 @@
+
+
+
+ Your Title Here
+
+
+
+
+ Your Heading Here
+
+
+
+#{yourBean.yourProperty}
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/samples/sample-file-no-form.xhtml b/WebContent/samples/sample-file-no-form.xhtml
new file mode 100644
index 00000000..20936d49
--- /dev/null
+++ b/WebContent/samples/sample-file-no-form.xhtml
@@ -0,0 +1,13 @@
+
+
+
+ Your Title Here
+
+
+
+ Your Heading Here
+
+
+
\ No newline at end of file
diff --git a/WebContent/samples/sample-file-with-form-with-comments.xhtml b/WebContent/samples/sample-file-with-form-with-comments.xhtml
new file mode 100644
index 00000000..d8b05d7e
--- /dev/null
+++ b/WebContent/samples/sample-file-with-form-with-comments.xhtml
@@ -0,0 +1,31 @@
+
+
+
+
+ Your Title Here
+
+
+
+
+ Your Heading Here
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/samples/sample-file-with-form.xhtml b/WebContent/samples/sample-file-with-form.xhtml
new file mode 100644
index 00000000..4f9bf5b3
--- /dev/null
+++ b/WebContent/samples/sample-file-with-form.xhtml
@@ -0,0 +1,17 @@
+
+
+
+ Your Title Here
+
+
+
+ Your Heading Here
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/WebContent/view_post.xhtml b/WebContent/view_post.xhtml
new file mode 100644
index 00000000..eb794d04
--- /dev/null
+++ b/WebContent/view_post.xhtml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Komentar
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/css/screen.css b/assets/css/screen.css
deleted file mode 100644
index 1d8fdf3b..00000000
--- a/assets/css/screen.css
+++ /dev/null
@@ -1,861 +0,0 @@
-@import url(http://fonts.googleapis.com/css?family=Open+Sans);
-@import url(http://fonts.googleapis.com/css?family=Questrial);
-
-/* Reset & Basics (Inspired by E. Meyers)
-================================================== */
-html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, address, cite, code, em, img, small, strong, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, embed, figure, figcaption, footer, header, hgroup, menu, nav, section, summary, time, audio, video {
- margin: 0;
- padding: 0;
- border: 0;
- font-size: 100%;
- font: inherit;
- vertical-align: baseline; }
-article, aside, details, figcaption, figure, footer, header, hgroup, menu, time, nav, section {
- display: block; }
-html, body, .wrapper {
- min-height: 100%;
-}
-
-
-/* Body
-================================================== */
-html, body {
- height: 100%;
-}
-.wrapper {
- min-height: 100%;
-}
-body {
- overflow-x: hidden;
- font: 17px/28px ff-meta-serif-web-pro, "Georgia", serif;
- color: #333;
- background: #fff;
-}
-
-
-/* Typography
-================================================== */
-h1, h2, h3, h4, h5, h6 {
- font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
- font-weight: normal;
- text-transform: uppercase;
- font-weight: 700;
- color: #000;
- text-rendering: optimizeLegibility;
-}
-
-h1 {
- font-size: 50px;
- padding-bottom: 30px;
-}
-
-h2 {
- font-size: 45px;
- padding-bottom: 25px;
-}
-
-h3 {
- font-size: 40px;
- padding-bottom: 20px;
-}
-
-h4 {
- font-size: 35px;
- padding-bottom: 15px;
-}
-
-h5 {
- font-size: 30px;
- padding-bottom: 10px;
-}
-
-p {
- margin: 0 0 28px 0;
-}
-
-strong {
- font-weight: bold;
-}
-em {
- font-style: italic;
-}
-sup {
- line-height: 0;
-}
-
-small {
- font-size: 70%;
-}
-
-cite {
- font-size: 80%;
- font-style: italic;
- }
-
-/* Teaser
-================================================== */
-
-header#teaser h1 {
- text-transform: none !important;
- color: #333;
- font-size: 28px !important;
- font-weight: 300 !important;
-}
-
-
-/* Links
-================================================== */
-a {
- color: #F40034;
- text-decoration: none;
- -webkit-transition: color .2s ease-in-out;
- -moz-transition: color .2s ease-in-out;
- transition: color .2s ease-in-out;
-}
-a:hover {
- color: #F40034;
-}
-
-/* Layout
-================================================== */
-/* White container that is the "page" */
-.wrapper {
- max-width: 1500px;
- margin: 0 auto;
- background: #fff;
-}
-
-/* Containers to keep content to a set width */
-.nav,
-.art-header-inner,
-.footer,
-.art-list,
-.abt,
-.fourohfour {
- width: 980px;
-}
-.nav,
-.art-body-inner,
-.footer,
-.art-list,
-.abt,
-.fourohfour {
- position: relative;
- margin: 0 auto;
-}
-
-/* Nav
-================================================== */
-.nav {
- position: absolute;
- top: 0;
- left: 50%;
- height: 70px;
- padding-top: 40px;
- margin-left: -490px; /* Half width of nav */
- border-bottom: 1px solid #333;
- z-index: 2;
-}
-.nav.fixed {
- position: fixed;
-}
-#logo {
- float: left;
-}
-.nav-primary {
- float: right;
-}
-.nav-primary li {
- display: inline-block;
- margin-left: 10px;
- font-weight: 500;
-}
-#logo h1,
-.nav-primary li,
-.nav-primary li a {
- font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
- font-weight: 700;
- font-size: 13px;
- line-height: 30px;
- color: #000;
- text-transform: uppercase;
-}
-
-#logo h1 {
- height: 30px;
- margin-left: 0px;
- letter-spacing: 1px;
- font-family: 'Questrial', sans-serif;
- font-size: 30px;
-}
-
-#logo h1 span{
- color: #F40034 !important;
-}
-
-.nav li:first-child {
- margin-left: 0; /* Remove left margin from the first nav li */
-}
-
-/* Home Page
-================================================== */
-
-div#home {}
-
-#home > div.cover {
- max-width: 980px;
- margin: 0px auto;
- /*padding-top: 110px;*/
-}
-
-div.cover {
-
-}
-
-div.cover > img {
- width: 100%;
- height: 100%;
-}
-
-
-/* Article
-================================================== */
-.art {
- margin-top: -131px;
-}
-/* Header */
-.art-header {
- height: 900px;
- /* Background image is defined in the post */
- background-position: top center;
- background-attachment: fixed;
- overflow: hidden;
-}
-/* Contains the time, title and subtitle for an article */
-.art-header-inner {
- position: fixed;
- top: 300px;
- left: 50%;
- margin-left: -490px;
-}
-.art-time,
-.art-title,
-.art-subtitle {
- text-align: center;
- text-transform: uppercase;
-}
-.art-time {
- font-size: 14px;
- line-height: 1.8;
- letter-spacing: 4px;
-}
-.art-title {
- font-size: 100px;
- line-height: .9;
- letter-spacing: -2px;
- width: 100%;
-}
-.art-subtitle {
- margin-top: 4px;
- font-size: 14px;
- line-height: 1.3;
- letter-spacing: 4px;
-}
-
-/* If small header, make few adjustments */
-.small .art-title {
- font-size: 70px;
- line-height: 65px;
-}
-.small.art-header-inner {
- top: 320px;
-}
-
-/* Body */
-.art-body {
- position: relative;
- width: 100%;
- background: #fff;
- z-index: 100;
- -webkit-box-shadow: 0 -3px 3px rgba(0,0,0,.2);
- -moz-box-shadow: 0 -3px 3px rgba(0,0,0,.2);
- box-shadow: 0 -3px 3px rgba(0,0,0,.2);
-}
-.art-body-inner {
- font-family: Georgia,Cambria,"Times New Roman",Times,serif;
- max-width: 640px;
- padding: 80px 0 50px;
- letter-spacing: 0.01rem;
- font-weight: 400;
- font-style: normal;
- font-size: 21px;
- line-height: 1.5;
-}
-.art-body-inner a:hover {
- border-bottom: 1px solid #F40034;
- padding-bottom:2px;
-}
-.art-body-inner ul,
-.art-body-inner ol { /* For lists in the article body */
- margin-bottom: 26px;
-}
-.art-body-inner ul li {
- list-style: disc;
-}
-
-.art-body-inner mark {
- background-color: #fdffb6;
- padding: 2px;
- -webkit-box-shadow: #fdffb6 0 0 5px;
- -moz-box-shadow: #fdffb6 0 0 5px;
- box-shadow: #fdffb6 0 0 5px;
-}
-
-.art-body-inner blockquote {
- font-size: 16px;
- background: #f9f9f9;
- border-left: 10px solid #ccc;
- margin: 1.5em 10px;
- padding: 0.5em 10px;
- quotes: "\201C""\201D""\2018""\2019";
-}
-
-.art-body-inner blockquote p:first-child:before {
- color: #ccc;
- content: "“";
- font-size: 4em;
- line-height: 0.1em;
- margin-right: 0.25em;
- vertical-align: -0.4em;
-}
-
-.art-body-inner blockquote p {
- margin-bottom: 1.5em;
-}
-
-.art-body-inner blockquote p:last-child {
- margin-bottom: 0;
-}
-
-
-.dropcap { /* First character on articles */
- float: left;
- margin: 47px 10px 20px 0;
- font-size: 100px;
- line-height: 0;
-}
-.art-subhead { /* Subheads are used to break up sections of an article */
- margin: 60px 0 15px;
- font-size: 20px;
- line-height: 28px;
- letter-spacing: 3px;
-}
-.callout { /* Callouts are like large pullquotes */
- font-weight: bold;
-}
-.art-body-inner img {
- max-width: 100%;
- max-height: 600px;
- margin-bottom: 26px;
-}
-.art-body-inner img.center {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-.art-body-inner .art-reference {
- font-size: 80%;
- color: #999;
- margin-top: 50px;
-}
-
-/* For simple, white background posts */
-.simple .art-body {
- background: none;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
-}
-
-
-/* List of Articles
-================================================== */
-.art-list {
- padding: 120px 0 0;
-}
-.art-list-body {
- position: relative;
- overflow: hidden;
-}
-.art-list-item {
- padding: 40px 0;
- list-style: none;
- overflow: hidden;
- border-bottom: 1px solid #ccc;
-}
-.art-list-item:last-child {
- border-bottom: none;
-}
-.art-list-title {
- font-size: 26px;
- line-height: 26px;
- font-weight: 700;
-}
-.art-list-item-title-and-time {
- float: left;
- width: 30%;
- margin-bottom: 10px;
-}
-.art-list-time {
- font-size: 12px;
- line-height: 20px;
- letter-spacing: 2px;
- text-transform: uppercase;
- color: #999;
-}
-.art-list-title a {
- color: #000;
-}
-.art-list-title a:hover {
- color: #F40034;
-}
-.art-list-item p {
- width: 65%;
- float: left;
- margin-left: 5%;
- margin-bottom: 0;
- font-size: 16px;
- line-height: 24px;
-}
-
-
-/* Footer
-================================================== */
-.footer {
- padding: 30px 0 40px;
- overflow: hidden;
- border-top: 1px solid #ccc;
-}
-.footer,
-.footer a {
- font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif;
- font-size: 13px;
- text-transform: uppercase;
- color: #777;
-}
-.footer a:hover {
- color: #000;
-}
-.back-to-top,
-.footer-nav,
-.offsite-links {
- width: 45%;
- float: left;
-}
-.psi {
- width:10%;
- float:left;
- text-align: center;
-}
-.footer-nav {
- text-align: center;
-}
-.offsite-links {
- text-align: right;
-}
-.footer .twitter-link:hover {
- color: #0084B4;
-}
-.footer .instagram-link:hover {
- color: #3F729B;
-}
-.footer .github-link:hover {
- color: #c5376d;
-}
-.footer .caffein8-link:hover{
- color: black;
-}
-.footer .rss-link:hover {
- color: #e85d24;
-}
-/* Remove prev & next links on loop */
-.art-list + .footer .footer-nav,
-.abt + .footer .footer-nav {
- text-indent: -9999px;
- text-align: left;
-}
-
-
-/* White Reverse Theme
-================================================== */
-/* Nav */
-.nav.white {
- border-bottom-color: #fff;
- border-bottom-color: rgba(255,255,255,.3);
-}
-.nav.white li a,
-.nav.white li,
-.nav.white #logo h1 {
- color: #fff;
- text-shadow: 0 0 8px rgba(0,0,0,.5);
-}
-.nav.white #logo h1 {
- background-position: top center;
-}
-
-nav.pagination{
- text-align: right;
- padding-bottom: 25px;
-}
-/* Art header */
-.art-header.white {
- background-color: #111;
-}
-.art-header.white .art-time,
-.art-header.white .art-title,
-.art-header.white .art-subtitle {
- color: #fff;
- text-shadow: 0 0 8px rgba(0,0,0,.5);
-}
-
-
-/* About page
-================================================== */
-.abt {
- padding: 200px 0 100px;
- list-style: none;
-}
-.abt .abt-header {
- font-size: 140px;
- line-height: 1;
- text-transform: none;
-}
-.abt .abt-subheader {
- font-size: 24px;
- font-style: italic;
- text-transform: none;
- color: #777;
-}
-.abt-body {
- -moz-column-count: 2;
- -moz-column-gap: 20px;
- -webkit-column-count: 2;
- -webkit-column-gap: 20px;
- margin-bottom: 28px;
-}
-.abt-signoff {
- line-height: 1.3;
- font-style: italic;
- color: #777;
-}
-
-/* 404 page
-================================================== */
-.fourohfour {
- padding: 240px 0 100px;
- text-align: center;
-}
-
-/* Code
-================================================== */
-
-code, tt {
-background: #ededee;
-color: #3C4043;
-font-size: 90%;
-padding: 1px 3px;
-}
-
-pre {
- width: 92%;
- overflow: auto;
- margin: 2rem 0;
- padding: 1rem 0.8rem 1rem 1.2rem;
- color: #3f3b36;
- border: 1px solid #ccc;
- border-left: 1rem solid #ccc;
- font: lighter 1.2rem/2rem monospace;
- background: url(/assets/img/pre.png) repeat 0 -0.9rem;
- background-size: 1px 4rem;
-}
-
-pre code, tt {
-font-size: inherit;
-white-space: -moz-pre-wrap;
-white-space: pre-wrap;
-background: transparent;
-border: none;
-padding: 0;
-}
-
-
-.gist {
- font-size: 14px;
-}
-
-
-/* Responsive
-================================================== */
-@media only screen and (max-width: 1080px) {
- /* Set all of the 980 containers to flexible width */
- .nav,
- .art-body-inner,
- .art-header-inner,
- .footer,
- .art-list,
- .abt,
- .fourohfour {
- width: 90%;
- }
- .nav,
- .art-header-inner {
- margin-left: -45%;
- }
-}
-
-@media only screen and (max-width: 1024px) {
- /* Everything becomes scrolling and non-fading */
- .nav,
- .nav.fixed {
- position: relative;
- opacity: 1 !important; /* Important to override JS values */
- display: inline-block;
- }
- .art-header-inner {
- position: relative;
- top: 0 !important; /* Important to override JS values */
- margin-top: 240px !important; /* Important to override JS values */
- opacity: 1 !important; /* Important to override JS values */
- }
- /* Articles no longer have fixed heights */
- .art-header {
- height: auto;
- padding-bottom: 100px;
- background-size: cover !important;
- background-attachment: scroll;
- }
- /* Remove bottom space out if articles doesn't have a background */
- .simple .art-header {
- padding-bottom: 0;
- }
- .art-list {
- padding-top: 0;
- }
- .abt {
- padding: 40px 0;
- }
- .fourohfour {
- padding: 80px 0 60px;
- }
-}
-
-@media only screen and (max-width: 780px) {
- .art-body-inner ul,
- .art-body-inner ol {
- margin-left: 20px;
- }
- .art-title {
- letter-spacing: 0;
- }
- .art-subtitle,
- .art-time {
- font-size: 12px;
- }
- .nav {
- padding-top: 25px;
- height: 55px;
- }
- .art-list-item-title-and-time,
- .art-list-item p {
- float: none;
- width: auto;
- margin-left: 0;
- }
- .abt-body {
- -moz-column-count: 1;
- -webkit-column-count: 1;
- }
-}
-
-@media only screen and (max-width: 500px) {
- .nav-primary li {
- margin-left: 10px;
- }
- .nav #logo h1 {
- font-size: 16px;
- letter-spacing: -1px;
- }
- .nav li a {
- font-size: 12px;
- }
- .art-header {
- padding-bottom: 50px;
- }
- .art-header-inner {
- margin-top: 190px !important;
- }
- .art-body-inner {
- padding-top: 30px;
- }
- body {
- font-size: 15px;
- line-height: 24px;
- }
- p {
- margin-bottom: 24px;
- }
- .footer {
- padding: 10px 0 20px;
- }
- .back-to-top,
- .footer-nav {
- width: 50%;
- }
- .back-to-top {
- text-align: left;
- }
- .footer-nav {
- text-align: right;
- }
- .offsite-links {
- float: left;
- width: 100%;
- text-align: left;
- }
- .offsite-links a {
- font-size: 12px;
- }
- .art-list + .footer .footer-nav {
- display: none;
- }
- .abt .abt-header {
- font-size: 80px;
- }
- .abt .abt-subheader {
- font-size: 18px;
- }
-}
-
-
-/* Misc
-================================================== */
-::selection {
- background: #000;
- color: #fff;
-}
-::-moz-selection {
- background: #000;
- color: #fff;
-}
-img.left {
- float: left;
- margin-right: 20px;
-}
-img.right {
- float: right;
- margin-left: 20px;
-}
-/* Clearfixing pile */
-.nav:before,
-.art-body-inner:before,
-.footer:before,
-.art-list:before {
- content:"";
- display:table;
-}
-.nav:after,
-.art-body-inner:after,
-.footer:after,
-.art-list:after {
- clear:both;
-}
-.nav,
-.art-body-inner,
-.footer,
-.art-list {
- zoom:1; /* For IE 6/7 (trigger hasLayout) */
-}
-
-
-@-webkit-keyframes le-fade {
- 0% {
- opacity: 0;
- }
- 100% {
- opacity: 1;
- }
-}
-@-moz-keyframes le-fade {
- 0% {
- opacity: 0;
- }
- 100% {
- opacity: 1;
- }
-}
-
-.art-header-inner {
- -webkit-animation: le-fade .5s 0 1 ease-out;
- -moz-animation: le-fade .5s 0 1 ease-out;
-}
-
-.art-list,
-.nav,
-.abt,
-.art-body {
- -webkit-animation: le-fade .5s 0s 1 ease-out;
- -moz-animation: le-fade .5s 0s 1 ease-out;
-}
-
-hr.featured-article {
- padding: 0;
- border: none;
- border-top: medium double #bbb;
- color: #bbb;
- text-align: center;
-}
-hr.featured-article:after {
- content: "✠Featured Article âœ";
- display: inline-block;
- position: relative;
- top: -0.8em;
- font-size: 1.2em;
- padding: 0 0.6em;
- background: white;
-}
-
-/* FORM */
-
-#contact-area {
- width: 600px;
- margin-top: 25px;
-}
-
-#contact-area input, #contact-area textarea {
- padding: 5px;
- width: 471px;
- font-family: Helvetica, sans-serif;
- margin: 0px 0px 10px 0px;
- border: 2px solid #ccc;
-}
-
-#contact-area textarea {
- height: 90px;
-}
-
-#contact-area textarea:focus, #contact-area input:focus {
- border: 2px solid #900;
-}
-
-#contact-area input.submit-button {
- width: 100px;
-
-}
-
-label {
- float: left;
- text-align: right;
- margin-right: 15px;
- width: 100px;
- padding-top: 5px;
-}
\ No newline at end of file
diff --git a/build/classes/.gitignore b/build/classes/.gitignore
new file mode 100644
index 00000000..9aee139f
--- /dev/null
+++ b/build/classes/.gitignore
@@ -0,0 +1,4 @@
+/constrain/
+/controller/
+/entities/
+/servlet/
diff --git a/index.html b/index.html
deleted file mode 100644
index 07cff0ba..00000000
--- a/index.html
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simple Blog
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/new_post.html b/new_post.html
deleted file mode 100644
index fc4e18ee..00000000
--- a/new_post.html
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simple Blog | Tambah Post
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/other/wbd_db.sql b/other/wbd_db.sql
new file mode 100644
index 00000000..85c2bb4e
--- /dev/null
+++ b/other/wbd_db.sql
@@ -0,0 +1,130 @@
+-- phpMyAdmin SQL Dump
+-- version 4.1.6
+-- http://www.phpmyadmin.net
+--
+-- Host: 127.0.0.1
+-- Generation Time: Nov 25, 2014 at 07:15 PM
+-- Server version: 5.6.16
+-- PHP Version: 5.5.9
+
+SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
+SET time_zone = "+00:00";
+
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+
+--
+-- Database: `wbd_db`
+--
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `comment`
+--
+
+CREATE TABLE IF NOT EXISTS `comment` (
+ `num` int(11) NOT NULL AUTO_INCREMENT,
+ `id_post` int(11) NOT NULL,
+ `isi` text NOT NULL,
+ `waktu` date NOT NULL,
+ `name` varchar(2047) NOT NULL,
+ `email` varchar(2047) NOT NULL,
+ PRIMARY KEY (`num`,`id_post`),
+ KEY `id_post` (`id_post`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
+
+--
+-- Dumping data for table `comment`
+--
+
+INSERT INTO `comment` (`num`, `id_post`, `isi`, `waktu`, `name`, `email`) VALUES
+(1, 2, 'null', '2014-11-25', 'null', 'null'),
+(2, 2, 'null', '2014-11-25', 'null', 'null'),
+(6, 2, 'null', '2014-11-25', 'null', 'null'),
+(7, 2, 'c', '2014-11-25', 'a', 'b'),
+(8, 2, 't', '2014-11-25', 'a', 'b'),
+(9, 1, 'c', '2014-11-25', 'a', 'b'),
+(10, 1, 'wowwowowowowoowoowwowowowow', '2014-11-25', 'Wow', 'Mr@vain.com'),
+(11, 1, '3', '2014-11-25', 'asdf', 'asdf@a.com'),
+(12, 1, 'lolasdfsadf', '2014-11-26', 'dendi', 'dendi@dendimon.org');
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `post`
+--
+
+CREATE TABLE IF NOT EXISTS `post` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `id_user` int(11) NOT NULL,
+ `judul` varchar(2047) NOT NULL,
+ `isi` text NOT NULL,
+ `waktu` date NOT NULL,
+ `is_deleted` tinyint(1) DEFAULT '0',
+ `is_published` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`id`),
+ KEY `id_user` (`id_user`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
+
+--
+-- Dumping data for table `post`
+--
+
+INSERT INTO `post` (`id`, `id_user`, `judul`, `isi`, `waktu`, `is_deleted`, `is_published`) VALUES
+(1, 2, 'Morphling', 'Morphling is a ranged agility hero that has many flexible abilities and item builds and is leveled as a very strong hard carry. He relies strongly on his attributes, and is an effective ganker. Unlike other agility carries who rely on physical attacks, he relies on his powerful abilities to initiate and shift into a state from which he can make a kill. Waveform lets him surge directly forward to a location, damaging enemies on his path, working both as a nuke or an escape. Adaptive Strike is an interesting scaling ability that blasts enemies with magical water while also stunning, knocking back, and dealing damage. Its power is based on either Agility or Strength. Morph allows him to edit his physical being, switching it from Agility or Strength, transforming him into a strong damage dealer or a tank. His ultimate, Replicate, creates a copy of either an ally or an enemy. At will, he can take on the place of that Replicate and instantly surprise enemies. ', '2014-11-25', 0, 1),
+(2, 3, 'Huskar', 'Huskar the Sacred Warrior is a ranged Strength hero who is an effective ganker and carry, with both great benefits and risks offered. He is known to be a powerful adversary in most games, as his damage per second can easily kill other heroes at any point in the game assuming no one is near by to save them. Unlike most heroes, he doesn''t use mana much to use his abilities, rather, he sacrifices his own health to inflict the highest damage possible. His passive Berserker''s Blood defines the power of sacrifice; he gets more dangerous the more he gets hurt. This gives him increased magic resistance and attack speed depending how much life is missing, and the given magic resistance and attack speed are staggering, potentially having the highest damage output in the earliest stage. Huskar can use his own life force to attack using Burning Spears which scorches foes and gives him an advantage early on. Due to the health cost of Burning Spears, his Berserker''s Blood activates, granting him the ability to decimate any target. Inner Vitality magically heals Huskar or his allies, regenerating health each second based upon the target''s primary attribute, and heals more when the health is on a critical level. His Life Break is his most dangerous ability and a risky one too. Charging towards his target, Huskar sheds a large amount of life force to cut a target''s current HP to fractions. This is great to use as an initiation spell, as it deals immense damage based on the target''s current health, breaking it down, allowing Huskar and his allies to feel the pain that the Sacred Warrior felt. Courageous and fearless, Huskar is powerful at any stage of the game, and is willing to suffer and face death, for him to contribute and deliver a marvelous victory to his team. ', '2014-11-25', 0, 1),
+(4, 4, 'Lina', 'Lina the Slayer is a ranged Intelligence hero, adept at destroying enemy heroes quickly by delivering massive bursts of magical damage, making her one of the most effective gankers in the game. She possesses immense damaging capabilities all throughout the game, but is very fragile. Two of her fiery spells are her main source of damage, Dragon Slave sends a wave of fire to burn enemies in her path while Light Strike Array stuns them with a concentrated pillar of solar flame. Each of her spells deals great damage early on and has a low cooldown. Her Fiery Soul bolsters her attack and movement speed every time she casts a spell, which gives her scaling damage for the later game. Laguna Blade, her ultimate, is her ace in the hole. Lina fires off a huge bolt of lightning at a single target, dealing colossal damage. Laguna Blade''s damage is staggering in early-mid game, and late game is still enough to destroy frail enemy heroes. Dragon Slave, Light Strike Array, and Laguna Blade are incredible flaming nukes that can incinerate her target instantly, and Fiery Soul allows her to transition into a strong and fast physical attacker. Though her power falls from its peak late game, mana-boosting and damage-increasing items can be purchased to keep herself up. ', '2014-11-25', 0, 1),
+(5, 2, 'Sven', 'Sven the Rogue Knight is a versatile melee strength Hero with superior physical power yet is coupled with various abilities that provide various utility. He can fulfill various roles, but is often played as a support or a semi-carry due to his high utility even without items. He possesses a versatile arsenal, from shouts that grant armor both for escaping and pushing to throwable gauntlets that disorient enemies around the target unit. With enough items, Sven has the potential to be a strong late-game carry due to his ultimate which increases his damage and his passive which allows him to hit multiple targets at once. He is a formidable foe and his versatility makes the Rogue Knight a great asset to any team. ', '2014-11-25', 0, 0),
+(6, 2, 'Sven', 'Sven the Rogue Knight is a versatile melee strength Hero with superior physical power yet is coupled with various abilities that provide various utility. He can fulfill various roles, but is often played as a support or a semi-carry due to his high utility even without items. He possesses a versatile arsenal, from shouts that grant armor both for escaping and pushing to throwable gauntlets that disorient enemies around the target unit. With enough items, Sven has the potential to be a strong late-game carry due to his ultimate which increases his damage and his passive which allows him to hit multiple targets at once. He is a formidable foe and his versatility makes the Rogue Knight a great asset to any team. ', '2014-11-25', 0, 0);
+
+-- --------------------------------------------------------
+
+--
+-- Table structure for table `user`
+--
+
+CREATE TABLE IF NOT EXISTS `user` (
+ `id` int(11) NOT NULL AUTO_INCREMENT,
+ `username` char(255) NOT NULL,
+ `password` char(255) NOT NULL,
+ `nama` varchar(2047) NOT NULL,
+ `email` varchar(2047) NOT NULL,
+ `role` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ UNIQUE KEY `username` (`username`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Role terbagi menjadi guest(0), user(10), editor(20), dan admin(30)' AUTO_INCREMENT=7 ;
+
+--
+-- Dumping data for table `user`
+--
+
+INSERT INTO `user` (`id`, `username`, `password`, `nama`, `email`, `role`) VALUES
+(2, 'dendimon', 'secret', 'Daniel Ishutin', 'dendi@navi.gg', 10),
+(3, 'puppey', 'secret', 'Clement Ivanov', 'puppey@top.sc', 20),
+(4, 'kuroky', 'secret', 'Kuro Salehi Takshanomi', 'kuroky@top.sc', 10),
+(5, 'xboct', 'secret', 'Alexander Dashkevich', 'xboct@top.sc', 10),
+(6, 'icefrog', 'secret', 'Bruno Carlucci', 'icefrog@dota2.com', 30);
+
+--
+-- Constraints for dumped tables
+--
+
+--
+-- Constraints for table `comment`
+--
+ALTER TABLE `comment`
+ ADD CONSTRAINT `comment_ibfk_1` FOREIGN KEY (`id_post`) REFERENCES `post` (`id`) ON DELETE CASCADE;
+
+--
+-- Constraints for table `post`
+--
+ALTER TABLE `post`
+ ADD CONSTRAINT `post_ibfk_1` FOREIGN KEY (`id_user`) REFERENCES `user` (`id`) ON DELETE CASCADE;
+
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
diff --git a/post.html b/post.html
deleted file mode 100644
index c0b6f9e6..00000000
--- a/post.html
+++ /dev/null
@@ -1,140 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-Simple Blog | Apa itu Simple Blog?
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis aliquam minus consequuntur amet nulla eius, neque beatae, nostrum possimus, officiis eaque consectetur. Sequi sunt maiores dolore, illum quidem eos explicabo! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam consequuntur consequatur molestiae saepe sed, incidunt sunt inventore minima voluptatum adipisci hic, est ipsa iste. Nobis, aperiam provident quae. Reprehenderit, iste.
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores animi tenetur nam delectus eveniet iste non culpa laborum provident minima numquam excepturi rem commodi, officia accusamus eos voluptates obcaecati. Possimus?
-
-
-
-
Komentar
-
-
-
-
-
-
- -
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis repudiandae quae natus quos alias eos repellendus a obcaecati cupiditate similique quibusdam, atque omnis illum, minus ex dolorem facilis tempora deserunt! …
-
-
- -
-
-
Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis repudiandae quae natus quos alias eos repellendus a obcaecati cupiditate similique quibusdam, atque omnis illum, minus ex dolorem facilis tempora deserunt! …
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/readme.md b/readme.md
index 5e7e48f5..7c1a8d39 100644
--- a/readme.md
+++ b/readme.md
@@ -1,39 +1,115 @@
-# Simple Blog Java
-
-Tugas 2 IF3110.
-
-
-
-## Deskripsi
-
-Gunakan template ini untuk membuat sebuah blog sederhana dengan menggunakan bahasa pemrograman PHP.
-
-## Spesifikasi
-
-Spesifikasi untuk Tugas II IF3110 dapat diakses pada pranala berikut:
-
-https://www.dropbox.com/sh/ig1hf108ad9fqxi/AAA2PMjPFICSFo3ypdrHl39La?dl=0
-
-## Deliverable
-
-Tiap-tiap Kelompok Membuat Organizationnya masing-masing, dengan langkah:
-
-1. Klik tanda Tambah disamping username pada Github, Pilih Create New Organization
-
-2. Buat Organisasi dengan Nama : IF3110-II-Nomor_Kelompok . Nomor Kelompok dapat diakses [disini](https://docs.google.com/spreadsheets/d/1Y-FGJ_feIVYNRv-o0ycBXyfAiKMFXKA17cvw3Mhjd1A/edit?usp=sharing)
-
-3. Masukkan email address salah satu anggota untuk billing email ( bebas ).
-
-4. Undang anggota kelompok untuk menjadi anggota Organisasi.
-
-5. Lakukan Fork Repository ini ke Organisasi yang baru dibentuk
-
-6. Setelah selesai mengerjakan, lakukan Pull Request.
-
-## Lisensi
-
-© 2014 Asisten IF3110
-
-Yogi | [Sonny](http://github.com/sonnylazuardi) | Fathan | Renusa | Kelvin | Yanuar
-
-Dosen: [Yudistira Dwi Wardhana](http://github.com/yudis)
\ No newline at end of file
+Spesifikasi tugas WBD
+=====================
+1. Harus pakai **JSF**
+
+1. Autentikasi / Login
+ 1. login harus bisa memiliki beberapa level role:
+ 1. Regular, dengan fitur
+ - Dapat melihat post yang sudah di publish
+ - dapat memberikan komentar terhadap suatu post yang sudah di
+ publish
+ - Menambahkan post baru
+ - Mengedit post yang sudah di publish
+ - Menghapus post sendiri <-- ga harus kok
+ 2. Editor, dengan fitur
+ - Mengedit post yang belum di publish
+ - Melihat seluruh jenis post
+ - Mengubah status post dari unpublish menjadi published
+ - dapat memberikan komentar terhadap suatu post yang sudah di
+ publish
+ 3. Admin, dengan fitur
+ - dapat melakukan Create, Read, Update, Delete terhadap user yang
+ ada pada basis data
+ - Melihat seluruh jenis post
+ - Mengedit seluruh jenis post
+ - Menghapus seluruh jenis post
+ - dapat memberikan komentar terhadap suatu post yang sudah di
+ publish
+ - Menambahkan post baru
+ - Mengubah status post dari unpublish menjadi published dan sebaliknya
+ 2. tetap bisa dipakai tanpa login (sebagai guest), dengan fitur:
+ - Dapat memberikan komentar terhadap suatu post yang sudah di publish
+ - Dapat melihat post yang sudah di publish
+ 3. Menggunakan **cookies** sehingga beberapa waktu setelah browser ditutup
+ data login user masih tetap ada
+
+2. Sebuah Post mengandung
+ - Judul
+ - Tanggal
+ - Konten
+ - isPublished
+ - isDeleted
+
+3. List Post
+ - Berisi daftar post yang sudah pernah dibuat dengan status **published**
+ - Terdapat judul, tanggal, dan konten
+ - terdapat menu untuk mengedit/menghapus post sesuai role
+
+4. Add Post
+ - Halaman untuk menambahkan post baru
+ - memiliki form untuk mengisi atribut Post (Judul, Tanggal, Konten)
+ - Lakukan **validasi** untuk tanggal dengan *javascript** agar tanggal yang
+ dimasukkan >= tanggal saat menambahkan post
+ - hanya dapat digunakan oleh **admin** dan **user reguler**
+ - Setiap post yang baru ditambahkan memiliki status **unpublished**
+
+5. Publish Post
+ - Menampilkan seluruh post yang berstatus **unpublished**
+ - Pada setiap post terdapat menu untuk meng-**edit** serta menerbitkan post
+ tersebut
+ - Fitur ini hanya dapat digunakan oleh **admin** dan **editor**
+
+6. Edit Post
+ - Mengedit post yang sudah pernah dibuat
+ - Form yang ditampilkan **sama** seperti menambahkan form baru
+ - Fitur ini hanya dapat digunakan oleh **admin** dan **user reguler**
+
+7. Delete Post
+ - Menghapus post yang sudah pernah dibuat
+ - Lakukan **konfirmasi** dengan **javascript** untuk konfirmasi terhadap
+ penghapusan post tersebut
+ - Pesannya adalah "Apakah Anda yakin menghapus post ini?"
+ - Jika **yes** maka post dihapus, jika **no** maka post tidak jadi dihapus
+
+8. View Post
+ - Halaman untuk melihat suatu post secara detail
+ - Terdapat informasi post seperti Judul, Tanggal, dan Konten.
+ - Pada halaman ini juga terdapat Komentar
+
+9. Atribut Komentar
+ - Nama orang yang komentar
+ - Email orang yang komentar
+ - Isi
+ - Tanggal komentar dibuat
+
+0. Komentar
+ - Komentar berisi daftar komentar yang ditulis untuk post tertentu
+ - Form komentar berisi Nama, Email, dan Komentar.
+ - setiap item pada list komentar berisi nama, tanggal, dan komentar.
+ - Untuk user yang sudah login, field nama dan email tidak perlu diisi lagi,
+ nilainya langsung diambil dari basis data user yang bersangkutan.
+ - Lakukan **Validasi** email dengan javascript
+ - Komentar dibuat dengan ajax, ajax dipanggil saat loading View Post, dan
+ Menambahkan komentar baru
+
+1. Manajemen User
+ - Menampilkan seluruh user yang terdapat pada basis data
+ - Terdapat menu untuk dapat melakukan CRUD
+ - Fitur hanya dapat diakses oleh **admin**
+
+
+Bonus
+=====
+1. Upload Gambar
+2. Soft Delete
+3. WYSIWYG untuk Form Post
+4. Tampilan
+
+Todo
+====
+
+- perbagus tampilan
+- debug untuk fitur guest
+- debug untuk fitur user
+- debug untuk fitur editor
+- debug untuk fitur admin
diff --git a/src/constrain/Constant.java b/src/constrain/Constant.java
new file mode 100644
index 00000000..6ad4a583
--- /dev/null
+++ b/src/constrain/Constant.java
@@ -0,0 +1,22 @@
+package constrain;
+
+public final class Constant {
+ public static final String DATABASE_URL = "jdbc:mysql://localhost:3306/wbd_db";
+ public static final String DATABASE_USER = "root";
+ public static final String DATABASE_PASS = "";
+
+ public static final int COOKIE_MAX_AGE = 1000000;
+
+ public static final String MENU_HOME_NAME = "Home";
+ public static final String MENU_HOME_URL = "index.jsf";
+ public static final String MENU_ADDPOST_NAME = "Add Post";
+ public static final String MENU_ADDPOST_URL = "add_post.jsf";
+ public static final String MENU_MYPOST_NAME = "My Post";
+ public static final String MENU_MYPOST_URL = "my_post.jsf";
+ public static final String MENU_EDITOR_NAME = "Editor Menu";
+ public static final String MENU_EDITOR_URL = "editor_menu.jsf";
+ public static final String MENU_POSTMANAGER_NAME = "Post Manager";
+ public static final String MENU_POSTMANAGER_URL = "post_manager.jsf";
+ public static final String MENU_USERMANAGER_NAME = "User Manager";
+ public static final String MENU_USERMANAGER_URL = "crud.jsf";
+}
\ No newline at end of file
diff --git a/src/controller/AddPost.java b/src/controller/AddPost.java
new file mode 100644
index 00000000..541d62ee
--- /dev/null
+++ b/src/controller/AddPost.java
@@ -0,0 +1,88 @@
+package controller;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.Date;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+import entities.Post;
+import entities.UserData;
+
+@ManagedBean
+@RequestScoped
+public class AddPost {
+ @ManagedProperty(value = "#{userData}")
+ private UserData alpha;
+
+ public void setAlpha(UserData z) {
+ alpha = z;
+ }
+
+ private Post post;
+
+ public AddPost() {
+ post = new Post();
+ }
+
+ public String getTitle() {
+ return post.getTitle();
+ }
+
+ public void setTitle(String str) {
+ post.setTitle(str);
+ }
+
+ public String getContent() {
+ return post.getContent();
+ }
+
+ public void setContent(String str) {
+ post.setContent(str);
+ }
+
+ public Date getDate() {
+ return post.getDate();
+ }
+
+ public void setDate(Date date) {
+ System.out.println("Set Date Called");
+ post.setDate(date);
+ System.out.println(post.getDate().toString());
+ }
+
+ public String execute() {
+ if (alpha != null) {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ @SuppressWarnings("deprecation")
+ String date = "" + (1900 + post.getDate().getYear()) + "-"
+ + (post.getDate().getMonth() + 1) + "-"
+ + post.getDate().getDate();
+
+ Connection con = dbUtil.getLiveConnection();
+ String query = "INSERT INTO `post` (`id_user`, `judul`, `isi`, `waktu`, `is_deleted`, `is_published`) VALUES (?, ?, ?, ?, 0, 0)";
+ System.out
+ .printf("INSERT INTO `post` (`id_user`, `judul`, `isi`, `waktu`, `is_deleted`, `is_published`) VALUES (%d, %s, %s, %s, 0, 0)\n",
+ alpha.getUserID(), getTitle(),
+ getContent(), date);
+ PreparedStatement pst;
+ try {
+ pst = con.prepareStatement(query);
+ pst.setInt(1, alpha.getUserID());
+ pst.setString(2, getTitle());
+ pst.setString(3, getContent());
+ pst.setString(4, date);
+ pst.execute();
+ } catch (SQLException e) {
+ System.out.println("Failed Query");
+ e.printStackTrace();
+ }
+ }
+ return "index?faces-redirect=true";
+ }
+}
diff --git a/src/controller/DatabaseObject.java b/src/controller/DatabaseObject.java
new file mode 100644
index 00000000..1a32e31e
--- /dev/null
+++ b/src/controller/DatabaseObject.java
@@ -0,0 +1,76 @@
+package controller;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ApplicationScoped;
+import javax.faces.bean.ManagedBean;
+
+import entities.Post;
+import entities.UserDetails;
+
+@ManagedBean
+@ApplicationScoped
+public class DatabaseObject {
+ private String allPostQuery = "SELECT * FROM `post` WHERE `is_deleted` = 0 AND `is_published` = 1 ORDER BY `waktu` DESC";
+
+ /**
+ *
+ * @return Posts that is not deleted and published
+ */
+ public List getPostList() {
+
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+ ResultSet rs = dbUtil.execute(allPostQuery);
+
+ List result = new ArrayList();
+ try {
+ while (rs.next()) {
+ Post post = new Post();
+ post.setId(rs.getInt(1));
+ post.setTitle(rs.getString(3));
+ post.setContent(rs.getString(4));
+ post.setDate(rs.getDate(5));
+ result.add(post);
+ }
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ System.err.println("Error at DatabaseObject.getPostList()");
+ System.exit(10);
+ }
+
+ return result;
+ }
+
+ /**
+ *
+ * @return users in database
+ */
+ public List getUserList() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+ ResultSet rs = dbUtil.execute("SELECT * FROM `user`");
+
+ List result = new ArrayList();
+ try {
+ while (rs.next()) {
+ UserDetails user = new UserDetails();
+ user.setUserId(rs.getInt(1));
+ user.setUsername(rs.getString(2));
+ user.setPassword(rs.getString(3));
+ user.setName(rs.getString(4));
+ user.setEmail(rs.getString(5));
+ user.setRole(rs.getInt(6));
+ result.add(user);
+ }
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ System.err.println("Error at DatabaseObject.getPostList()");
+ System.exit(10);
+ }
+
+ return result;
+ }
+
+}
diff --git a/src/controller/DatabaseUtility.java b/src/controller/DatabaseUtility.java
new file mode 100644
index 00000000..d6bd8e9a
--- /dev/null
+++ b/src/controller/DatabaseUtility.java
@@ -0,0 +1,114 @@
+package controller;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.text.CharacterIterator;
+import java.text.StringCharacterIterator;
+
+import constrain.Constant;
+import entities.UserDetails;
+
+public class DatabaseUtility {
+ private static void addCharEntity(Integer aIdx, StringBuilder aBuilder) {
+ String padding = "";
+ if (aIdx <= 9) {
+ padding = "00";
+ } else if (aIdx <= 99) {
+ padding = "0";
+ } else {
+ // no prefix
+ }
+ String number = padding + aIdx.toString();
+ aBuilder.append("" + number + ";");
+ }
+
+ public static DatabaseUtility getInstance() {
+ return instance;
+ }
+
+ private static DatabaseUtility instance = new DatabaseUtility();
+
+ private Connection con;
+
+ private DatabaseUtility() {
+ }
+
+ public ResultSet execute(String stm) {
+ ResultSet rs = null;
+ PreparedStatement pst = null;
+
+ if (con == null)
+ con = getConnection();
+
+ try {
+ pst = con.prepareStatement(stm);
+ pst.execute();
+ rs = pst.getResultSet();
+
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return rs;
+ }
+
+ public UserDetails findUser(String username, String password) {
+ ResultSet rs = null;
+ PreparedStatement pst = null;
+
+ if (con == null)
+ con = getConnection();
+
+ String stm = "SELECT * FROM user";
+ UserDetails result = null;
+ try {
+ pst = con.prepareStatement(stm);
+ pst.execute();
+ rs = pst.getResultSet();
+
+ while (rs.next()) {
+ if (rs.getString(2).equals(username)
+ && rs.getString(3).equals(password)) {
+ result = new UserDetails(rs.getString(4), rs.getString(5),
+ rs.getInt(1));
+ result.setRole(rs.getInt(6));
+ result.setPassword(rs.getString(3));
+ result.setUsername(rs.getString(2));
+ }
+ }
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ return result;
+ }
+
+ /*
+ * addCharEntity and forHTML from:
+ * http://www.javapractices.com/topic/TopicAction.do?Id=96
+ */
+
+ private Connection getConnection() {
+ Connection connection = null;
+
+ String url = Constant.DATABASE_URL;
+ String user = Constant.DATABASE_USER;
+ String password = Constant.DATABASE_PASS;
+
+ try {
+ DriverManager.registerDriver(new com.mysql.jdbc.Driver());
+ connection = DriverManager.getConnection(url, user, password);
+ System.out.println("Database connection completed");
+ } catch (SQLException exception) {
+ System.out.println("Database connection fail");
+ System.out.println(exception.getMessage());
+ }
+ return connection;
+ }
+
+ public Connection getLiveConnection() {
+ return con;
+ }
+
+}
diff --git a/src/controller/DateConverter.java b/src/controller/DateConverter.java
new file mode 100644
index 00000000..6acb4d8a
--- /dev/null
+++ b/src/controller/DateConverter.java
@@ -0,0 +1,37 @@
+package controller;
+
+import java.util.Date;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.convert.ConverterException;
+import javax.faces.convert.DateTimeConverter;
+import javax.faces.convert.FacesConverter;
+
+@FacesConverter("dateConverter")
+public class DateConverter extends DateTimeConverter {
+
+ public DateConverter() {
+ setPattern("yyyy-MM-dd");
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ public Object getAsObject(FacesContext context, UIComponent component, String value) {
+ try{
+ Date date = (Date) super.getAsObject(context, component, value);
+ Date now = new Date();
+ now.setHours(0);
+ now.setMinutes(0);
+ now.setSeconds(0);
+
+ if(date.before(now)){
+ throw new ConverterException("Date is smaller than today");
+ }
+ return (Object) date;
+ }catch(ConverterException ex){
+ throw new ConverterException("Invalid format, use this pattern: "+ super.getPattern());
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/src/controller/EditPost.java b/src/controller/EditPost.java
new file mode 100644
index 00000000..5c3bd708
--- /dev/null
+++ b/src/controller/EditPost.java
@@ -0,0 +1,92 @@
+package controller;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+
+import entities.Post;
+
+@ManagedBean
+public class EditPost {
+
+ @ManagedProperty(value = "#{viewPost}")
+ private ViewPost view;
+
+ private Post post;
+
+ public EditPost() {
+ post = new Post();
+ }
+
+ public String getContent() {
+ return post.getContent();
+ }
+
+ public String getDate() {
+ return post.getDate().toString();
+ }
+
+ public int getId() {
+ return post.getId();
+ }
+
+ public String getTitle() {
+ return post.getTitle();
+ }
+
+ public void HardDelete(int temp_id) {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "Delete from post WHERE id = " + temp_id;
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void initialize() {
+ view = new ViewPost();
+ view.setId(this.post.getId());
+ view.execute();
+ this.setContent(view.getContent());
+ post.setDate(view.getDate());
+ this.setTitle(view.getTitle());
+ }
+
+ public void setContent(String str) {
+ post.setContent(str);
+ }
+
+ public void setDate(String dateStr) {
+ System.out.println("Set date Called");
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
+ Date date;
+ try {
+ date = formatter.parse(dateStr);
+ post.setDate(date);
+ System.out.println(getDate());
+ } catch (ParseException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Failed to set Date!");
+ e.printStackTrace();
+ }
+ }
+
+ public void setId(int id) {
+ post.setId(id);
+ }
+
+ public void setTitle(String str) {
+ post.setTitle(str);
+ }
+
+ public void setView(ViewPost vp) {
+ view = vp;
+ }
+}
diff --git a/src/controller/EditPostStatus.java b/src/controller/EditPostStatus.java
new file mode 100644
index 00000000..cd026aa8
--- /dev/null
+++ b/src/controller/EditPostStatus.java
@@ -0,0 +1,64 @@
+package controller;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+
+@ManagedBean
+@RequestScoped
+public class EditPostStatus {
+ private int id;
+
+ public void delete(int temp_id) {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE post SET is_deleted = 1 WHERE id = "
+ + temp_id;
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void undelete(int temp_id){
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE post SET is_deleted = 0 WHERE id = "
+ + temp_id;
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void publish(int temp_id) {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE post SET is_published = 1 WHERE id = "
+ + temp_id;
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void unpublish(int temp_id) {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE post SET is_published = 0 WHERE id = "
+ + temp_id;
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int i) {
+ id = i;
+ }
+
+}
\ No newline at end of file
diff --git a/src/controller/EditUser.java b/src/controller/EditUser.java
new file mode 100644
index 00000000..afeb31fa
--- /dev/null
+++ b/src/controller/EditUser.java
@@ -0,0 +1,202 @@
+package controller;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.RequestScoped;
+
+@ManagedBean
+@RequestScoped
+public class EditUser {
+ private int user_id;
+ private String user_username;
+ private String user_password;
+ private String user_name;
+ private String user_email;
+ private String user_strRole;
+ private int user_role;
+
+ public void addUser() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "INSERT INTO user (username, password, nama, email, role) "
+ + "VALUES ('"
+ + this.getUsername()
+ + "','"
+ + this.getPassword()
+ + "','"
+ + this.getName()
+ + "',"
+ + "'"
+ + this.getEmail()
+ + "'"
+ + "," + this.getRole() + ")";
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+
+ setUsername("");
+ setPassword("");
+ setName("");
+ setEmail("");
+ setRole(10);
+ }
+
+ public void changeEmail() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE user SET email = '" + this.getEmail()
+ + "' WHERE id = " + this.getId();
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void changeName() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE user SET nama = '" + this.getName()
+ + "' WHERE id = " + this.getId();
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void changePassword(){
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE user SET password = '"+ this.getPassword() +"' WHERE id = " + this.getId();
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void changeRole() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "UPDATE user SET role = " + this.getRole()
+ + " WHERE id = " + this.getId();
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public void deleteUser(int i) {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ String query = "DELETE FROM user WHERE id = " + i;
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+
+ public String getEmail() {
+ return user_email;
+ }
+
+ public int getId() {
+ return user_id;
+ }
+
+ public String getName() {
+ return user_name;
+ }
+
+ public String getPassword() {
+ return user_password;
+ }
+
+ public int getRole() {
+ return user_role;
+ }
+
+ public String getStrRole() {
+ return user_strRole;
+ }
+
+ public String getUsername() {
+ return user_username;
+ }
+
+ public void Initialize(){
+
+ }
+
+ public void setEmail(String email) {
+ user_email = email;
+ }
+
+ public void setId(int id) {
+ user_id = id;
+ }
+
+ public void setName(String name) {
+ user_name = name;
+ }
+
+ public void setPassword(String password) {
+ user_password = password;
+ }
+
+ public void setRole(int role) {
+ user_role = role;
+ }
+
+ public void setStrRole(String str) {
+ user_strRole = str;
+ }
+
+ public void setUsername(String username) {
+ user_username = username;
+ }
+
+ public void StrtoIntRole() {
+ if (this.user_strRole=="Regular") user_role=10;
+ else if (this.user_strRole=="Editor") user_role=20;
+ else if (this.user_strRole=="Admin") user_role=30;
+ }
+
+ /*public String execute() {
+ if(post!=null){
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ @SuppressWarnings("deprecation")
+ String date = ""+(1900+post.getDate().getYear())+"/"+(post.getDate().getMonth()+1)+"/"+post.getDate().getDate();
+
+ String inTitle = DatabaseUtility.forHTML(post.getTitle());
+ String inContent = DatabaseUtility.forHTML(post.getContent());
+
+ String query = "UPDATE post SET judul ='"+ inTitle+
+ "', isi ='"+ inContent +"', waktu = '"+date+"' WHERE id = "+ post.getId();
+
+ System.out.println(query);
+
+ dbUtil.execute(query);
+ }
+ return "index";
+ }
+ */
+
+ public String updateUser(){
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+ String query = "UPDATE user SET username = '"
+ + this.getUsername()
+ + "', password = '"
+ + this.getPassword()
+ +"', nama ='"
+ + this.getName()
+ +"', email ='"
+ + this.getEmail()
+ +"', role = "
+ +this.getRole()
+ + " WHERE id = " + this.getId();
+ System.out.println(query);
+ dbUtil.execute(query);
+ return "index";
+ }
+
+}
diff --git a/src/controller/ViewPost.java b/src/controller/ViewPost.java
new file mode 100644
index 00000000..588bbe26
--- /dev/null
+++ b/src/controller/ViewPost.java
@@ -0,0 +1,277 @@
+package controller;
+
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.ManagedProperty;
+import javax.faces.bean.RequestScoped;
+
+import entities.Comment;
+import entities.Post;
+import entities.UserData;
+
+@ManagedBean
+@RequestScoped
+public class ViewPost {
+ private int id;
+ private String name, email, comment;
+
+ private Post post;
+
+ @ManagedProperty(value = "#{userData}")
+ UserData userData;
+
+ public void execute() {
+ try {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+ ResultSet rs = dbUtil.execute("SELECT * FROM `post` WHERE `id` = "
+ + id);
+ if (rs != null) {
+ rs.next();
+ post = new Post();
+ post.setId(rs.getInt(1));
+ post.setTitle(rs.getString(3));
+ post.setContent(rs.getString(4));
+ post.setDate(rs.getDate(5));
+ }
+ } catch (SQLException ex) {
+ System.err.println("Error when getting post with id = " + id);
+ }
+ }
+
+ public String getComment() {
+ return comment;
+ }
+
+ public List getComments() {
+ List result = new ArrayList<>();
+
+ try {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+ ResultSet rs = dbUtil
+ .execute("SELECT * FROM `comment` WHERE `id_post` = " + id
+ + " ORDER BY `num` DESC");
+
+ if (rs != null) {
+ while (rs.next()) {
+ Comment comment = new Comment();
+ comment.setName(rs.getString(5));
+ comment.setEmail(rs.getString(6));
+ comment.setTime(rs.getString(4));
+ comment.setContent(rs.getString(3));
+ result.add(comment);
+ }
+ }
+ } catch (SQLException ex) {
+ System.err.println("Error when getting post with id = " + id);
+ }
+
+ return result;
+ }
+
+ public String getContent() {
+ return post.getContent();
+ }
+
+ public Date getDate() {
+ return post.getDate();
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ /**
+ *
+ * @param id_user
+ * @return posts of id_user
+ */
+ public List getOwnerPostList() {
+ List result = new ArrayList<>();
+
+ Connection con = DatabaseUtility.getInstance().getLiveConnection();
+
+ ResultSet rs;
+ try {
+ String idPostQuery = "SELECT * FROM `post` WHERE `is_deleted` = 0 AND `is_published` = 1 AND `id_user` = ?";
+
+ PreparedStatement pstmt = con.prepareStatement(idPostQuery);
+ pstmt.setInt(1, userData.getDetails().getUserId());
+ pstmt.execute();
+ rs = pstmt.getResultSet();
+
+ while (rs.next()) {
+ Post post = new Post();
+ post.setId(rs.getInt(1));
+ post.setTitle(rs.getString(3));
+ post.setContent(rs.getString(4));
+ post.setDate(rs.getDate(5));
+ result.add(post);
+ }
+
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Error in getPostList(id_user)");
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ public List getPublishednotDeletedPostList() {
+ List result = new ArrayList<>();
+
+ Connection con = DatabaseUtility.getInstance().getLiveConnection();
+
+ ResultSet rs;
+ try {
+ String idPostQuery = "SELECT * FROM `post` WHERE `is_deleted` = 0 and `is_published` = 1";
+
+ PreparedStatement pstmt = con.prepareStatement(idPostQuery);
+ pstmt.execute();
+ rs = pstmt.getResultSet();
+
+ while (rs.next()) {
+ Post post = new Post();
+ post.setId(rs.getInt(1));
+ post.setTitle(rs.getString(3));
+ post.setContent(rs.getString(4));
+ post.setDate(rs.getDate(5));
+ result.add(post);
+ }
+
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Error in getSoftDeletedPostList");
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ public List getSoftDeletedPostList() {
+ List result = new ArrayList<>();
+
+ Connection con = DatabaseUtility.getInstance().getLiveConnection();
+
+ ResultSet rs;
+ try {
+ String idPostQuery = "SELECT * FROM `post` WHERE `is_deleted` = 1";
+
+ PreparedStatement pstmt = con.prepareStatement(idPostQuery);
+ pstmt.execute();
+ rs = pstmt.getResultSet();
+
+ while (rs.next()) {
+ Post post = new Post();
+ post.setId(rs.getInt(1));
+ post.setTitle(rs.getString(3));
+ post.setContent(rs.getString(4));
+ post.setDate(rs.getDate(5));
+ result.add(post);
+ }
+
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Error in getSoftDeletedPostList");
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ public String getTitle() {
+ return post.getTitle();
+ }
+
+ public List getUnpublishedPostList() {
+ List result = new ArrayList<>();
+
+ Connection con = DatabaseUtility.getInstance().getLiveConnection();
+
+ ResultSet rs;
+ try {
+ String idPostQuery = "SELECT * FROM `post` WHERE `is_deleted` = 0 AND `is_published` = 0";
+
+ PreparedStatement pstmt = con.prepareStatement(idPostQuery);
+ // pstmt.setInt(1, post.getId());
+ pstmt.execute();
+ rs = pstmt.getResultSet();
+
+ while (rs.next()) {
+ Post post = new Post();
+ post.setId(rs.getInt(1));
+ post.setTitle(rs.getString(3));
+ post.setContent(rs.getString(4));
+ post.setDate(rs.getDate(5));
+ result.add(post);
+ }
+
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Error in getUnpublishedPostList");
+ e.printStackTrace();
+ }
+
+ return result;
+ }
+
+ public String postComment() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+ Date date = new Date(System.currentTimeMillis());
+ String newstring = new SimpleDateFormat("yyyy-MM-dd").format(date);
+
+ ResultSet rs = dbUtil
+ .execute("INSERT INTO `comment`(`id_post`, `isi`, `waktu`, `name`, `email`) VALUES ("
+ + id
+ + ",'"
+ + comment
+ + "','"
+ + newstring
+ + "','"
+ + name + "','" + email + "')");
+
+ System.out.println("postComment() executed");
+ assert (rs == null);
+
+ return null;
+ }
+
+ public void setComment(String comment) {
+ this.comment = comment;
+ }
+
+ public void setDummy(String lol) {}
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public void setId(int i) {
+ id = i;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public void setUserData(UserData ud) {
+ userData = ud;
+ }
+
+}
diff --git a/src/entities/Comment.java b/src/entities/Comment.java
new file mode 100644
index 00000000..07d62945
--- /dev/null
+++ b/src/entities/Comment.java
@@ -0,0 +1,37 @@
+package entities;
+
+public class Comment {
+ private String name, email, content, time;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public void setEmail(String email) {
+ this.email = email;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getTime() {
+ return time;
+ }
+
+ public void setTime(String time) {
+ this.time = time;
+ }
+}
diff --git a/src/entities/EmailValidator.java b/src/entities/EmailValidator.java
new file mode 100644
index 00000000..357fdc9e
--- /dev/null
+++ b/src/entities/EmailValidator.java
@@ -0,0 +1,29 @@
+package entities;
+
+import java.util.regex.Pattern;
+
+import javax.faces.application.FacesMessage;
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.validator.FacesValidator;
+import javax.faces.validator.Validator;
+import javax.faces.validator.ValidatorException;
+
+@FacesValidator("com.myvalid.EmailValidator")
+public class EmailValidator implements Validator {
+ private static String EMAIL_PATTERN = "^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
+ private static Pattern pattern = Pattern.compile(EMAIL_PATTERN);
+
+ @Override
+ public void validate(FacesContext arg0, UIComponent arg1, Object arg2)
+ throws ValidatorException {
+ // TODO Auto-generated method stub
+ String email = arg2.toString();
+
+ if (!pattern.matcher(email).matches()) {
+ FacesMessage msg = new FacesMessage("Submit gagal","Email anda salah");
+ msg.setSeverity(FacesMessage.SEVERITY_ERROR);
+ throw new ValidatorException(msg);
+ }
+ }
+}
diff --git a/src/entities/NavigationMenu.java b/src/entities/NavigationMenu.java
new file mode 100644
index 00000000..43a37f19
--- /dev/null
+++ b/src/entities/NavigationMenu.java
@@ -0,0 +1,34 @@
+package entities;
+
+public class NavigationMenu{
+ private String name;
+ private String url;
+
+ public NavigationMenu(){
+ name="";
+ url="";
+ }
+
+ public NavigationMenu(String name, String url){
+ this.name = name;
+ this.url = url;
+ }
+
+ public String getName(){
+ return name;
+ }
+
+ public void setName(String name){
+ this.name = name;
+ }
+
+ public String getUrl(){
+ return url;
+ }
+
+ public void setUrl(String url){
+ this.url = url;
+ }
+
+
+}
\ No newline at end of file
diff --git a/src/entities/Post.java b/src/entities/Post.java
new file mode 100644
index 00000000..cb63f829
--- /dev/null
+++ b/src/entities/Post.java
@@ -0,0 +1,42 @@
+package entities;
+
+import java.util.Date;
+
+public class Post {
+ private String title, content;
+ private Date date;
+ private int id;
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String str) {
+ title = str;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String str) {
+ content = str;
+ }
+
+ public Date getDate() {
+ return date;
+ }
+
+ public void setDate(Date t) {
+ date = t;
+ }
+
+ public int getId(){
+ return id;
+ }
+
+ public void setId(int i){
+ id = i;
+ }
+
+}
diff --git a/src/entities/UserData.java b/src/entities/UserData.java
new file mode 100644
index 00000000..1c87cc17
--- /dev/null
+++ b/src/entities/UserData.java
@@ -0,0 +1,213 @@
+package entities;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.bean.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import constrain.Constant;
+import controller.DatabaseUtility;
+
+@ManagedBean
+@SessionScoped
+public class UserData implements Serializable {
+
+ private static final long serialVersionUID = -8430435915513518517L;
+ private String username, password;
+ private boolean loggedIn = false;
+ private UserDetails details;
+
+ public void check(int p, String page) {
+ int now = 1;
+ if (details != null) {
+ if (!loggedIn)
+ System.err.println("when details != null, loggedIn should be = true");
+ now <<= (details.getRole() / 10);
+ }
+
+ if ((now & p) == 0) {
+ try {
+ FacesContext.getCurrentInstance().getExternalContext()
+ .redirect(page);
+ } catch (IOException e) {
+ System.err.println("OMG THIS IS THE MOST FATAL ERROR EVER");
+ e.printStackTrace();
+ }
+ }
+ }
+
+ public void checkCookie() {
+ FacesContext fc = FacesContext.getCurrentInstance();
+
+ HttpServletRequest servletRequest = (HttpServletRequest) (fc
+ .getExternalContext().getRequest());
+ Cookie cookies[] = servletRequest.getCookies();
+
+ if (cookies != null && !isLoggedIn()) {
+ for (int i = 0; i < cookies.length; i++) {
+ String cookieName = cookies[i].getName();
+ String cookieValue = cookies[i].getValue();
+
+ if (cookieName.equals("username"))
+ setUsername(cookieValue);
+
+ if (cookieName.equals("password"))
+ setPassword(cookieValue);
+ }
+
+ login();
+ }
+ }
+
+ public UserDetails getDetails() {
+ return details;
+ }
+
+ public String getEmail() {
+ if (isLoggedIn())
+ return details.getEmail();
+ else
+ return "";
+ }
+
+ public String getName() {
+ if (isLoggedIn())
+ return details.getName();
+ else
+ return "";
+ }
+
+ public String getLoginLink() {
+ if (!isLoggedIn()) {
+ return " ";
+ } else {
+ return " ";
+ }
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public String getUserHeader() {
+ return ("header.xhtml");
+ }
+
+ public int getUserID() {
+ if (isLoggedIn())
+ return details.getUserId();
+ else
+ return -1;
+ }
+
+ public List getUserMenu() {
+ List result = new ArrayList();
+ if (loggedIn == false) {
+ result.add(new NavigationMenu(Constant.MENU_HOME_NAME,
+ Constant.MENU_HOME_URL));
+ return result;
+ } else if (details.getRole() == 10) {
+ result.add(new NavigationMenu(Constant.MENU_HOME_NAME,
+ Constant.MENU_HOME_URL));
+ result.add(new NavigationMenu(Constant.MENU_ADDPOST_NAME,
+ Constant.MENU_ADDPOST_URL));
+ result.add(new NavigationMenu(Constant.MENU_MYPOST_NAME,
+ Constant.MENU_MYPOST_URL));
+ return result;
+ } else if (details.getRole() == 20) {
+ result.add(new NavigationMenu(Constant.MENU_HOME_NAME,
+ Constant.MENU_HOME_URL));
+ result.add(new NavigationMenu(Constant.MENU_EDITOR_NAME,
+ Constant.MENU_EDITOR_URL));
+ return result;
+ } else if (details.getRole() == 30) {
+ result.add(new NavigationMenu(Constant.MENU_HOME_NAME,
+ Constant.MENU_HOME_URL));
+ result.add(new NavigationMenu(Constant.MENU_ADDPOST_NAME,
+ Constant.MENU_ADDPOST_URL));
+ result.add(new NavigationMenu(Constant.MENU_POSTMANAGER_NAME,
+ Constant.MENU_POSTMANAGER_URL));
+ result.add(new NavigationMenu(Constant.MENU_USERMANAGER_NAME,
+ Constant.MENU_USERMANAGER_URL));
+ return result;
+ } else {
+ return result;
+ }
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public boolean isLoggedIn() {
+ return loggedIn;
+ }
+
+ public String login() {
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+ details = dbUtil.findUser(username, password);
+ if (details != null) {
+ System.out.println("Login, Username and Password Found");
+ loggedIn = true;
+ loginCookie();
+ return ("index?faces-redirect=true");
+ }
+
+ return null;
+ }
+
+ private void loginCookie() {
+ FacesContext fc = FacesContext.getCurrentInstance();
+
+ Cookie cookieUser = new Cookie("username", username);
+ Cookie cookiePassword = new Cookie("password", password);
+
+ cookieUser.setMaxAge(Constant.COOKIE_MAX_AGE);
+ cookiePassword.setMaxAge(Constant.COOKIE_MAX_AGE);
+
+ HttpServletResponse servletResponse = (HttpServletResponse) (fc
+ .getExternalContext().getResponse());
+ servletResponse.addCookie(cookieUser);
+ servletResponse.addCookie(cookiePassword);
+ }
+
+ public String logout() {
+ loggedIn = false;
+ setUsername(null);
+ setPassword(null);
+ logoutCookie();
+ System.out.println("Logout Done");
+ return "index?faces-redirect=true";
+ }
+
+ private void logoutCookie() {
+ FacesContext fc = FacesContext.getCurrentInstance();
+
+ Cookie cookieUser = new Cookie("username", null);
+ Cookie cookiePassword = new Cookie("password", null);
+
+ cookieUser.setMaxAge(0);
+ cookiePassword.setMaxAge(0);
+
+ HttpServletResponse servletResponse = (HttpServletResponse) (fc
+ .getExternalContext().getResponse());
+ servletResponse.addCookie(cookieUser);
+ servletResponse.addCookie(cookiePassword);
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+}
diff --git a/src/entities/UserDetails.java b/src/entities/UserDetails.java
new file mode 100644
index 00000000..7970bd81
--- /dev/null
+++ b/src/entities/UserDetails.java
@@ -0,0 +1,86 @@
+package entities;
+
+public class UserDetails {
+ private String name, email, username, password;
+ private int user_id, role;
+
+ public UserDetails() {
+ }
+
+ public UserDetails(String name, String email, int user_id) {
+ this.name = name;
+ this.email = email;
+ this.user_id = user_id;
+ }
+
+ public String getEmail() {
+ return email;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public int getRole() {
+ return role;
+ }
+
+ public String getStrRole() {
+ String str;
+ switch (role) {
+ case 10: {
+ str = "Regular";
+ break;
+ }
+ case 20: {
+ str = "Editor";
+ break;
+ }
+ case 30: {
+ str = "Admin";
+ break;
+ }
+ default: {
+ str = "Unknown";
+ }
+ }
+
+ return str;
+ }
+
+ public int getUserId() {
+ return user_id;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setEmail(String str) {
+ email = str;
+ }
+
+ public void setName(String str) {
+ name = str;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public void setRole(int role) {
+ this.role = role;
+ }
+
+ public void setUserId(int n) {
+ user_id = n;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+}
diff --git a/src/servlet/CommentGetter.java b/src/servlet/CommentGetter.java
new file mode 100644
index 00000000..099b1697
--- /dev/null
+++ b/src/servlet/CommentGetter.java
@@ -0,0 +1,110 @@
+package servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.text.MessageFormat;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import constrain.Constant;
+
+/**
+ * Servlet implementation class CommentGetter
+ */
+@WebServlet("/CommentGetter")
+public class CommentGetter extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ private String templateString = "
";
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public CommentGetter() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+ doPost(request, response);
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+
+ String suserID = request.getParameter("id");
+ int userID = Integer.parseInt(suserID);
+ Connection connection = null;
+
+ String url = Constant.DATABASE_URL;
+ String user = Constant.DATABASE_USER;
+ String password = Constant.DATABASE_PASS;
+
+ try {
+ DriverManager.registerDriver(new com.mysql.jdbc.Driver());
+ connection = DriverManager.getConnection(url, user, password);
+
+ } catch (SQLException exception) {
+ System.out.println("Database connection fail");
+ System.out.println(exception.getMessage());
+ // failed database response
+ failedMessage(response);
+ return;
+ }
+
+ String stm = "SELECT * FROM `comment` WHERE `id_post` = ? ORDER BY `num` DESC";
+
+ ResultSet rs = null;
+ try {
+ PreparedStatement pst = connection.prepareStatement(stm);
+ pst.setInt(1, userID);
+ pst.execute();
+ rs = pst.getResultSet();
+
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+ while (rs.next()) {
+ out.write(MessageFormat.format(templateString, rs.getString(5),
+ rs.getString(6), rs.getString(4), rs.getString(3)));
+ }
+
+ } catch (SQLException e) {
+ System.out.println("Database connection fail");
+ System.out.println(e.getMessage());
+ // failed database response
+ failedMessage(response);
+ }
+ }
+
+ private void failedMessage(HttpServletResponse response) {
+ PrintWriter out;
+ try {
+ out = response.getWriter();
+ out.write("Database failure");
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ System.out.println("DOOMED in failedMessage()");
+ }
+ }
+
+}
diff --git a/src/servlet/CommentPoster.java b/src/servlet/CommentPoster.java
new file mode 100644
index 00000000..c87c08f6
--- /dev/null
+++ b/src/servlet/CommentPoster.java
@@ -0,0 +1,111 @@
+package servlet;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import constrain.Constant;
+
+/**
+ * Servlet implementation class CommentPoster
+ */
+@WebServlet("/CommentPoster")
+public class CommentPoster extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public CommentPoster() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST);
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+
+ String sid = request.getParameter("id");
+ int id = Integer.parseInt(sid);
+ String name = request.getParameter("name");
+ String email = request.getParameter("email");
+ String content = request.getParameter("content");
+ Date now = new Date(System.currentTimeMillis());
+ String snow = new SimpleDateFormat("yyyy-MM-dd").format(now);
+
+ Connection connection = null;
+
+ String url = Constant.DATABASE_URL;
+ String user = Constant.DATABASE_USER;
+ String password = Constant.DATABASE_PASS;
+
+ try {
+ DriverManager.registerDriver(new com.mysql.jdbc.Driver());
+ connection = DriverManager.getConnection(url, user, password);
+
+ } catch (SQLException exception) {
+ System.out.println("Database connection fail");
+ System.out.println(exception.getMessage());
+ // failed database response
+ failedMessage(response);
+ return;
+ }
+
+ String stm = "INSERT INTO `comment`(`id_post`,`isi`,`waktu`,`name`,`email`) VALUES (?,?,?,?,?)";
+
+ try {
+ PreparedStatement pst = connection.prepareStatement(stm);
+ pst.setInt(1, id);
+ pst.setString(2, content);
+ pst.setString(3, snow);
+ pst.setString(4, name);
+ pst.setString(5, email);
+ pst.execute();
+
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+ out.print("SUCCESS");
+
+ } catch (SQLException e) {
+ System.out.println("Database update fail");
+ System.out.println(e.getMessage());
+ // failed database response
+ failedMessage(response);
+ }
+ }
+
+ private void failedMessage(HttpServletResponse response) {
+ try {
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ System.out.println("Doomed in CommentPoster.failedMessage()");
+ }
+ }
+
+}
diff --git a/src/servlet/PostUpdater.java b/src/servlet/PostUpdater.java
new file mode 100644
index 00000000..781085e2
--- /dev/null
+++ b/src/servlet/PostUpdater.java
@@ -0,0 +1,77 @@
+package servlet;
+
+import java.io.IOException;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.SQLException;
+
+import javax.servlet.ServletException;
+import javax.servlet.annotation.WebServlet;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import controller.DatabaseUtility;
+
+/**
+ * Servlet implementation class PostUpdater
+ */
+@WebServlet("/PostUpdater")
+public class PostUpdater extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * @see HttpServlet#HttpServlet()
+ */
+ public PostUpdater() {
+ super();
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ // TODO Auto-generated method stub
+ }
+
+ /**
+ * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
+ * response)
+ */
+ protected void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+ int id = Integer.parseInt(request.getParameter("id"));
+ String title = request.getParameter("title");
+ String content = request.getParameter("content");
+ String date = request.getParameter("date");
+
+ DatabaseUtility dbUtil = DatabaseUtility.getInstance();
+
+
+ Connection con = dbUtil.getLiveConnection();
+ String query = "UPDATE `post` SET `judul`=?, `isi`=?, `waktu`=? WHERE `id`=?";
+ PreparedStatement pst;
+ System.out
+ .printf("UPDATE `post` SET `judul`=%s, `isi`=%s, `waktu`=%s WHERE `id`=%d\n",
+ title, content, date, id);
+
+ try {
+ pst = con.prepareStatement(query);
+ pst.setString(1, title);
+ pst.setString(2, content);
+ pst.setString(3, date);
+ pst.setInt(4, id);
+ pst.execute();
+ response.sendRedirect("index.jsf");
+
+ } catch (SQLException e) {
+ System.out.println("Query Failed");
+ e.printStackTrace();
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ }
+ }
+
+}