Compare commits

...

12 Commits
v1 ... master

Author SHA1 Message Date
caskd 6dd03c3922 Remove white borders 2019-06-09 09:58:51 +02:00
caskd 9fd46adf20 Remove white border on mobile view 2019-05-06 22:50:29 +02:00
caskd 433a910be2 Newest branding 2019-05-05 23:03:59 +02:00
caskd edc7019673 Added few missing stuff 2018-11-05 19:26:24 +01:00
caskd 958fd5ac46 fml tbh 2018-11-03 17:33:58 +01:00
caskd 0c94be7a62 Another Messup v2 2018-11-03 17:27:56 +01:00
caskd 3a0f95e106 Messed up path for resources 2018-11-03 17:19:37 +01:00
caskd 323005a8be Use branding 2018-11-03 12:17:09 +01:00
caskd ce52650dcc Use terminal theme for the ace editor 2018-11-01 17:52:19 +01:00
caskd 6ed3cba149 Proper AdminLTE, more readable 2018-11-01 05:02:55 +01:00
caskd 7e60a83007 Another missing oddie 2018-11-01 03:43:04 +01:00
caskd c4a76f07a4 Fix odd missing config and ignore precompiled version 2018-11-01 03:36:19 +01:00
51 changed files with 1555 additions and 3465 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
theme.tar.gz
.env

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
public/favicons/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 KiB

View File

@ -12,7 +12,7 @@
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"theme_color": "#ee2222",
"background_color": "#121212",
"display": "standalone"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -0,0 +1,412 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="60mm"
height="60mm"
viewBox="0 0 60 60"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="logo-rounded.svg">
<title
id="title5858">RedXen Logo</title>
<defs
id="defs2">
<linearGradient
inkscape:collect="always"
id="Hill">
<stop
style="stop-color:#000000;stop-opacity:1"
offset="0"
id="stop4787" />
<stop
style="stop-color:#111111;stop-opacity:1"
offset="1"
id="stop4789" />
</linearGradient>
<inkscape:path-effect
effect="bspline"
id="path-effect4821"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<linearGradient
id="Background"
inkscape:collect="always">
<stop
id="stop5809"
offset="0"
style="stop-color:#780a0a;stop-opacity:1" />
<stop
id="stop5811"
offset="1"
style="stop-color:#e03333;stop-opacity:1" />
</linearGradient>
<inkscape:path-effect
effect="spiro"
id="path-effect5763"
is_visible="true" />
<inkscape:path-effect
effect="spiro"
id="path-effect5759"
is_visible="true" />
<inkscape:path-effect
effect="bspline"
id="path-effect5751"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect5747"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect5377"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect5373"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<inkscape:path-effect
effect="bspline"
id="path-effect5287"
is_visible="true"
weight="33.333333"
steps="2"
helper_size="0"
apply_no_weight="true"
apply_with_weight="true"
only_selected="false" />
<linearGradient
inkscape:collect="always"
xlink:href="#Background"
id="linearGradient5802"
x1="9.9999981"
y1="247"
x2="70"
y2="247"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1,0,0,1.5,1.9e-6,-113.5)" />
<linearGradient
inkscape:collect="always"
xlink:href="#Hill"
id="linearGradient4793"
x1="113.38574"
y1="226.77148"
x2="113.38574"
y2="83.378906"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.26458333,0,0,0.26458333,0,236.99999)" />
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter9244">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood9234" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite9236" />
<feGaussianBlur
in="composite1"
stdDeviation="1.5"
result="blur"
id="feGaussianBlur9238" />
<feOffset
dx="1"
dy="1"
result="offset"
id="feOffset9240" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite9242" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter9256">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood9246" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite9248" />
<feGaussianBlur
in="composite1"
stdDeviation="1.5"
result="blur"
id="feGaussianBlur9250" />
<feOffset
dx="1"
dy="1"
result="offset"
id="feOffset9252" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite9254" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter9268">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood9258" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite9260" />
<feGaussianBlur
in="composite1"
stdDeviation="1.5"
result="blur"
id="feGaussianBlur9262" />
<feOffset
dx="1"
dy="1"
result="offset"
id="feOffset9264" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite9266" />
</filter>
<filter
style="color-interpolation-filters:sRGB"
inkscape:label="Drop Shadow"
id="filter9280">
<feFlood
flood-opacity="0.498039"
flood-color="rgb(0,0,0)"
result="flood"
id="feFlood9270" />
<feComposite
in="flood"
in2="SourceGraphic"
operator="in"
result="composite1"
id="feComposite9272" />
<feGaussianBlur
in="composite1"
stdDeviation="1.5"
result="blur"
id="feGaussianBlur9274" />
<feOffset
dx="1"
dy="1"
result="offset"
id="feOffset9276" />
<feComposite
in="SourceGraphic"
in2="offset"
operator="over"
result="composite2"
id="feComposite9278" />
</filter>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.8284271"
inkscape:cx="75.286114"
inkscape:cy="80.626922"
inkscape:document-units="mm"
inkscape:current-layer="layer4"
showgrid="false"
inkscape:window-width="1920"
inkscape:window-height="1025"
inkscape:window-x="0"
inkscape:window-y="32"
inkscape:window-maximized="1"
inkscape:snap-bbox="true"
inkscape:bbox-paths="false"
inkscape:bbox-nodes="false"
inkscape:snap-bbox-edge-midpoints="true"
inkscape:pagecheckerboard="false"
showguides="false" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>RedXen Logo</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>caskd</dc:title>
</cc:Agent>
</dc:creator>
<dc:rights>
<cc:Agent>
<dc:title>caskd</dc:title>
</cc:Agent>
</dc:rights>
<dc:publisher>
<cc:Agent>
<dc:title>caskd</dc:title>
</cc:Agent>
</dc:publisher>
<dc:source>https://redxen.eu</dc:source>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer5"
inkscape:label="Background Bottom" />
<g
inkscape:label="Background"
inkscape:groupmode="layer"
id="layer1"
style="display:inline"
transform="translate(0,-237)">
<flowRoot
xml:space="preserve"
id="flowRoot5815"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="matrix(0.26458333,0,0,0.26458333,-5.9999952,3.7939383)"><flowRegion
id="flowRegion5817"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto"><rect
id="rect5819"
width="215.66757"
height="53.740116"
x="41.719299"
y="1027.0603"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto" /></flowRegion><flowPara
id="flowPara5821" /></flowRoot> <path
style="display:inline;opacity:1;fill:url(#linearGradient4793);fill-opacity:1;stroke:none;stroke-width:0.20192306"
d="m 58.912166,259.06066 c -0.455202,0.0228 -0.923671,0.0264 -1.360125,0.076 -0.785511,0.0891 -1.541621,0.21971 -2.271696,0.38654 -0.730073,0.16684 -1.434195,0.36997 -2.115632,0.60307 -0.681437,0.23309 -1.340644,0.49653 -1.980243,0.78444 -0.639595,0.28792 -1.25993,0.60043 -1.864484,0.93173 -0.604554,0.3313 -1.193091,0.68113 -1.769401,1.04438 -1.15262,0.7265 -2.255798,1.50567 -3.336229,2.29133 -1.080434,0.78567 -2.138209,1.57779 -3.200839,2.33113 -1.06263,0.75333 -2.13005,1.46753 -3.229261,2.09703 -0.549606,0.31475 -1.106919,0.60876 -1.675865,0.8754 -0.56895,0.26663 -1.149509,0.50605 -1.744597,0.71313 -0.59509,0.20708 -1.204936,0.38171 -1.832964,0.5178 -0.628026,0.13609 -1.274236,0.23365 -1.942,0.28732 -0.656587,0.0528 -1.292341,0.068 -1.910995,0.0496 -0.618654,-0.0184 -1.220089,-0.0704 -1.808157,-0.1509 -0.58807,-0.0805 -1.162711,-0.1899 -1.727544,-0.32349 -0.564833,-0.13359 -1.119687,-0.29162 -1.668632,-0.46922 -1.09789,-0.35521 -2.171498,-0.78908 -3.249931,-1.26607 -1.078433,-0.477 -2.161619,-0.99704 -3.279386,-1.52343 -1.117767,-0.52638 -2.270201,-1.05931 -3.486092,-1.56269 -1.215891,-0.50338 -2.495176,-0.97695 -3.8679802,-1.38493 -0.686403,-0.20399 -1.39655,-0.39154 -2.133204,-0.5581 -0.736655,-0.16657 -1.500178,-0.31244 -2.294434,-0.43254 -0.794255,-0.12009 -1.6191968,-0.21448 -2.4784018,-0.27905 -0.811065,-0.0609 -1.658389,-0.0899 -2.533695,-0.0935 C 0.053606,264.99055 0,265.98911 0,267.00029 0,283.62029 13.380236,297 30.000236,297 c 16.62,0 29.999717,-13.37971 29.999717,-29.99971 0,-2.75514 -0.398603,-5.4087 -1.087787,-7.93957 z"
id="path4785"
inkscape:connector-curvature="0" />
<a
id="a4950"
transform="translate(-10,10.000007)">
<path
inkscape:connector-curvature="0"
id="rect10"
d="m 40.000236,226.99999 c -15.608821,0 -28.356056,11.80228 -29.849858,27.00559 0.875306,0.004 1.72263,0.0326 2.533695,0.0935 0.859205,0.0646 1.684147,0.15896 2.478402,0.27905 0.794256,0.1201 1.557779,0.26597 2.294434,0.43254 0.736654,0.16656 1.4468,0.35411 2.133203,0.5581 1.372805,0.40798 2.65209,0.88155 3.867981,1.38493 1.215891,0.50338 2.368325,1.03631 3.486092,1.56269 1.117767,0.52639 2.200953,1.04643 3.279386,1.52343 1.078433,0.47699 2.152041,0.91086 3.249931,1.26607 0.548945,0.1776 1.103799,0.33563 1.668632,0.46922 0.564833,0.13359 1.139474,0.24298 1.727544,0.32349 0.588068,0.0805 1.189503,0.1325 1.808157,0.1509 0.618654,0.0184 1.254408,0.003 1.910995,-0.0496 0.667764,-0.0537 1.313974,-0.15123 1.942,-0.28732 0.628028,-0.13609 1.237874,-0.31072 1.832964,-0.5178 0.595088,-0.20708 1.175647,-0.4465 1.744597,-0.71313 0.568946,-0.26664 1.126259,-0.56065 1.675865,-0.8754 1.099211,-0.6295 2.166631,-1.3437 3.229261,-2.09703 1.06263,-0.75334 2.120405,-1.54546 3.200839,-2.33113 1.080431,-0.78566 2.183609,-1.56483 3.336229,-2.29133 0.57631,-0.36325 1.164847,-0.71308 1.769401,-1.04438 0.604554,-0.3313 1.224889,-0.64381 1.864484,-0.93173 0.639599,-0.28791 1.298806,-0.55135 1.980243,-0.78444 0.681437,-0.2331 1.385559,-0.43623 2.115632,-0.60307 0.730075,-0.16683 1.486185,-0.2974 2.271696,-0.38654 0.436454,-0.0495 0.904923,-0.0532 1.360125,-0.076 -3.468232,-12.73622 -15.047068,-22.06061 -28.91193,-22.06061 z"
style="display:inline;opacity:1;fill:url(#linearGradient5802);fill-opacity:1;stroke:none;stroke-width:0.20192306" />
</a>
</g>
<g
inkscape:groupmode="layer"
id="layer3"
inkscape:label="Background Hill"
style="display:inline"
transform="translate(0,-237)" />
<g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="Foreground Hill"
style="display:inline;opacity:1"
transform="translate(0,-237)">
<flowRoot
xml:space="preserve"
id="flowRoot5823"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:Roboto;-inkscape-font-specification:Roboto;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="scale(0.26458333)"><flowRegion
id="flowRegion5825"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto"><rect
id="rect5827"
width="117.41467"
height="54.695965"
x="37.795269"
y="1009.1339"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Roboto;-inkscape-font-specification:Roboto" /></flowRegion><flowPara
id="flowPara5829">RedXemndss</flowPara></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot5831"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1;font-family:Roboto;-inkscape-font-specification:Roboto;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="scale(0.26458333)"><flowRegion
id="flowRegion5833"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:1;font-family:Roboto;-inkscape-font-specification:Roboto"><rect
id="rect5835"
width="143.18912"
height="14.142109"
x="38.537319"
y="1042.9702"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:1;font-family:Roboto;-inkscape-font-specification:Roboto" /></flowRegion><flowPara
id="flowPara5837">RX</flowPara></flowRoot> </g>
<g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="Text"
style="opacity:0.02999998"
transform="translate(0,-237)">
<text
xml:space="preserve"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:1.25;font-family:Oswald;-inkscape-font-specification:'Oswald, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332;filter:url(#filter9244)"
x="25.172283"
y="289.17783"
id="text5845"><tspan
sodipodi:role="line"
id="tspan5843"
x="25.172283"
y="289.17783"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.52777767px;line-height:1.25;font-family:Oswald;-inkscape-font-specification:'Oswald, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.26458332">RedXen</tspan></text>
</g>
</svg>

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -31,6 +31,10 @@ body,
color: #eee;
}
.box.box-default {
border-top-color: #e22;
}
a:hover,
a:active,
a:focus {
@ -117,7 +121,7 @@ h3,
h4,
h5,
h6 {
color: #F44336;
color: #F44336 !important;
}
.h1 .small,
@ -144,7 +148,15 @@ h5 .small,
h5 small,
h6 .small,
h6 small {
color: #F44336;
color: #F44336 !important;
}
.control-sidebar-dark, .control-sidebar-dark+.control-sidebar-bg {
background-color: #222 !important;
}
.control-sidebar-dark .control-sidebar-menu>li>a.active, .control-sidebar-dark .control-sidebar-menu>li>a:hover {
background-color: #333 !important;
}
@media (max-width: 991px) {
@ -158,6 +170,15 @@ h6 small {
color: #d22;
}
.sa-fix,.sweet-alert, .sa-icon .sa-fix,.sweet-alert .sa-icon.sa-success::before, .sweet-alert .sa-icon.sa-success::after {
background-color: #111 !important;
}
.box-header {
color: #eee;
}
.box-header.with-border {
border-bottom: 1px solid #222;
}

View File

@ -22,7 +22,7 @@
var Whitespace = ace.require('ace/ext/whitespace');
var Modelist = ace.require('ace/ext/modelist');
Editor.setTheme('ace/theme/chrome');
Editor.setTheme('ace/theme/terminal');
Editor.getSession().setUseWrapMode(true);
Editor.setShowPrintMargin(false);

View File

@ -1 +0,0 @@
define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)})

View File

@ -0,0 +1,5 @@
define("ace/theme/terminal", ["require", "exports", "module", "ace/lib/dom"], function (e, t, n) {
t.isDark = !0, t.cssClass = "ace-terminal", t.cssText = '.ace-terminal-theme .ace_gutter{background:#1a0005;color:#4682b4}.ace-terminal-theme .ace_print-margin{width:1px;background:#1a1a1a}.ace-terminal-theme{background-color:#000;color:#DEDEDE}.ace-terminal-theme .ace_cursor{color:#9F9F9F}.ace-terminal-theme .ace_marker-layer .ace_selection{background:#424242}.ace-terminal-theme.ace_multiselect .ace_selection.ace_start{box-shadow:0 0 3px 0 #000}.ace-terminal-theme .ace_marker-layer .ace_step{background:#000}.ace-terminal-theme .ace_marker-layer .ace_bracket,.ace-terminal-theme .ace_marker-layer .ace_bracket-start{background:#090}.ace-terminal-theme .ace_marker-layer .ace_bracket-unmatched{margin:-1px 0 0 -1px;border:1px solid #900}.ace-terminal-theme .ace_marker-layer .ace_active-line{background:#2A2A2A}.ace-terminal-theme .ace_gutter-active-line{background-color:#2A112A}.ace-terminal-theme .ace_marker-layer .ace_selected-word{border:1px solid #424242}.ace-terminal-theme .ace_invisible{color:#343434}.ace-terminal-theme .ace_keyword,.ace-terminal-theme .ace_meta,.ace-terminal-theme .ace_storage,.ace-terminal-theme .ace_storage.ace_type,.ace-terminal-theme .ace_support.ace_type{color:tomato}.ace-terminal-theme .ace_keyword.ace_operator{color:#ff1493}.ace-terminal-theme .ace_constant.ace_character,.ace-terminal-theme .ace_constant.ace_language,.ace-terminal-theme .ace_constant.ace_numeric,.ace-terminal-theme .ace_keyword.ace_other.ace_unit,.ace-terminal-theme .ace_support.ace_constant,.ace-terminal-theme .ace_variable.ace_parameter{color:#E78C45}.ace-terminal-theme .ace_constant.ace_other{color:gold}.ace-terminal-theme .ace_invalid{color:#ff0;background-color:red}.ace-terminal-theme .ace_invalid.ace_deprecated{color:#CED2CF;background-color:#B798BF}.ace-terminal-theme .ace_fold{background-color:#7AA6DA;border-color:#DEDEDE}.ace-terminal-theme .ace_entity.ace_name.ace_function,.ace-terminal-theme .ace_support.ace_function,.ace-terminal-theme .ace_variable{color:#7AA6DA}.ace-terminal-theme .ace_support.ace_class,.ace-terminal-theme .ace_support.ace_type{color:#E7C547}.ace-terminal-theme .ace_heading,.ace-terminal-theme .ace_string{color:#B9CA4A}.ace-terminal-theme .ace_entity.ace_name.ace_tag,.ace-terminal-theme .ace_entity.ace_other.ace_attribute-name,.ace-terminal-theme .ace_meta.ace_tag,.ace-terminal-theme .ace_string.ace_regexp,.ace-terminal-theme .ace_variable{color:#D54E53}.ace-terminal-theme .ace_comment{color:#ff4500}.ace-terminal-theme .ace_indent-guide{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWNgYGBgYLBWV/8PAAK4AYnhiq+xAAAAAElFTkSuQmCC) right repeat-y}';
var r = e("../lib/dom");
r.importCssString(t.cssText, t.cssClass)
})

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -108,7 +108,7 @@
const InstallEditor = ace.edit('editor_install');
const Modelist = ace.require('ace/ext/modelist')
InstallEditor.setTheme('ace/theme/chrome');
InstallEditor.setTheme('ace/theme/terminal');
InstallEditor.getSession().setMode('ace/mode/sh');
InstallEditor.getSession().setUseWrapMode(true);
InstallEditor.setShowPrintMargin(false);

View File

@ -132,7 +132,7 @@
</div>
</div>
<div class="col-sm-12">
<div class="info-box bg-gray">
<div class="info-box bg-blue">
<span class="info-box-icon"><i class="ion ion-social-buffer-outline"></i></span>
<div class="info-box-content" style="padding: 23px 10px 0;">
<span class="info-box-text">Total Servers</span>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

View File

@ -1,475 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="16.000000pt" height="16.000000pt" viewBox="0 0 16.000000 16.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,16.000000) scale(0.001461,-0.001461)"
fill="#000000" stroke="none">
<path d="M6665 8998 c6 -14 -42 -17 -63 -4 -7 4 -12 3 -12 -3 0 -6 -7 -7 -17
-4 -12 5 -14 3 -8 -7 6 -9 4 -11 -5 -5 -18 11 -70 12 -70 1 0 -5 -6 -3 -14 3
-11 9 -15 9 -19 -1 -4 -11 -6 -11 -6 0 -1 9 -6 10 -18 4 -10 -5 -30 -8 -45 -7
-16 1 -28 -2 -28 -7 0 -10 -23 -6 -32 6 -4 6 -12 6 -20 -1 -7 -6 -43 -10 -79
-9 -50 1 -65 -2 -62 -12 6 -15 -28 -5 -39 12 -5 7 -8 3 -8 -9 0 -11 -4 -15 -8
-10 -4 6 -14 10 -22 10 -8 0 -18 -4 -22 -10 -5 -6 -8 -5 -8 3 0 10 -5 10 -21
1 -15 -8 -19 -8 -15 0 5 8 0 8 -20 1 -19 -8 -31 -7 -42 2 -13 11 -15 10 -10
-2 4 -11 -2 -15 -27 -14 -17 1 -37 4 -42 7 -6 4 -16 0 -23 -7 -6 -8 -19 -13
-28 -11 -9 2 -21 4 -27 5 -5 1 -12 1 -15 0 -21 -8 -40 -6 -40 3 0 7 -4 5 -10
-3 -8 -13 -13 -13 -31 -2 -11 8 -18 9 -14 3 4 -7 -3 -11 -17 -12 -13 0 -34 -3
-48 -6 -14 -2 -29 -5 -35 -7 -5 -1 -16 -6 -24 -10 -10 -6 -12 -5 -7 2 4 7 3
12 -3 12 -5 0 -12 -6 -14 -12 -4 -10 -8 -9 -16 2 -7 10 -11 11 -11 2 0 -8 -9
-11 -25 -8 -14 3 -23 1 -20 -5 4 -5 -5 -10 -19 -10 -38 -2 -44 -3 -52 -11 -4
-4 -13 -3 -20 3 -8 7 -14 7 -19 -1 -3 -6 -11 -7 -17 -4 -6 4 -8 2 -5 -3 7 -10
-27 -20 -83 -25 -14 -2 -31 -10 -38 -18 -8 -8 -11 -10 -8 -3 4 7 -1 11 -13 10
-11 0 -17 -5 -15 -9 3 -4 2 -8 -3 -9 -4 0 -19 -3 -33 -5 -14 -3 -33 -5 -42 -6
-10 -1 -18 -6 -18 -11 0 -5 -7 -7 -15 -3 -8 3 -15 1 -15 -4 0 -5 -7 -7 -15 -4
-8 4 -15 2 -15 -3 0 -5 -6 -10 -12 -11 -7 0 -24 -3 -38 -7 -14 -4 -31 -7 -37
-7 -7 -1 -13 -5 -13 -9 0 -8 -49 -23 -67 -20 -7 1 -13 -2 -13 -7 0 -9 -53 -26
-77 -25 -7 0 -13 -3 -13 -7 0 -4 -20 -13 -45 -19 -25 -6 -44 -15 -41 -20 3 -4
-5 -7 -19 -6 -14 2 -26 -3 -30 -12 -3 -9 -8 -13 -12 -10 -3 4 -12 2 -20 -5 -7
-6 -16 -8 -20 -5 -3 4 -11 0 -17 -8 -6 -8 -21 -16 -34 -18 -13 -2 -28 -10 -33
-18 -5 -8 -9 -10 -9 -5 0 4 -11 1 -25 -8 -14 -9 -29 -14 -34 -11 -5 2 -12 -2
-15 -11 -3 -8 -10 -13 -16 -9 -5 3 -18 -3 -30 -15 -12 -12 -20 -15 -20 -7 0 6
-7 3 -16 -8 -8 -11 -16 -19 -17 -17 -5 8 -57 -18 -57 -28 0 -6 -4 -9 -9 -5 -5
3 -12 1 -16 -5 -4 -6 -10 -8 -15 -5 -4 3 -11 -2 -14 -11 -3 -8 -10 -12 -16 -9
-5 3 -10 2 -10 -2 0 -5 -16 -17 -35 -27 -19 -11 -35 -24 -35 -30 0 -6 -4 -5
-9 3 -7 11 -11 9 -20 -8 -7 -11 -18 -21 -25 -21 -7 0 -26 -12 -42 -27 -16 -15
-30 -26 -31 -26 -10 4 -42 -11 -37 -18 3 -5 -2 -9 -10 -9 -9 0 -16 -4 -16 -10
0 -5 -9 -10 -21 -10 -13 0 -19 -5 -16 -13 3 -8 -3 -14 -14 -14 -11 -1 -32 -16
-47 -32 -14 -17 -31 -31 -37 -31 -5 0 -3 5 5 10 11 7 12 10 2 10 -8 0 -16 -9
-19 -20 -3 -11 -9 -17 -15 -14 -5 3 -20 -6 -34 -21 -13 -14 -24 -22 -24 -18 0
4 -7 -1 -15 -11 -8 -11 -15 -16 -15 -12 0 4 -11 -4 -23 -18 -13 -14 -27 -23
-30 -20 -3 3 -10 -4 -17 -15 -6 -12 -15 -21 -21 -21 -16 0 -59 -36 -52 -44 6
-5 -12 -10 -29 -7 -5 0 -8 -6 -8 -14 0 -8 -3 -14 -7 -13 -7 3 -36 -20 -97 -77
-11 -11 -24 -19 -28 -18 -5 2 -8 -5 -8 -14 0 -9 -3 -14 -6 -11 -6 6 -183 -164
-178 -171 5 -5 -37 -41 -48 -41 -5 0 -7 -4 -3 -9 3 -5 -2 -17 -11 -25 -8 -9
-12 -16 -7 -16 4 0 -1 -7 -11 -15 -11 -8 -17 -15 -13 -15 8 0 -2 -14 -35 -51
-10 -10 -13 -19 -8 -19 6 0 5 -6 -2 -14 -7 -8 -17 -11 -22 -8 -5 3 -7 -2 -3
-11 3 -10 3 -17 -1 -17 -5 0 -14 -16 -22 -35 -8 -19 -18 -35 -22 -35 -5 0 -6
-4 -3 -10 3 -5 1 -10 -4 -10 -6 0 -11 -7 -11 -15 0 -8 -5 -15 -11 -15 -5 0 -7
-4 -4 -10 3 -5 1 -10 -5 -10 -6 0 -9 -4 -6 -9 3 -5 -5 -25 -19 -45 -13 -20
-22 -36 -19 -36 3 0 -4 -16 -15 -36 -12 -19 -18 -40 -15 -46 4 -7 2 -8 -4 -4
-11 6 -16 -6 -13 -26 0 -5 -4 -8 -10 -8 -5 0 -7 -4 -4 -10 3 -5 2 -10 -4 -10
-6 0 -7 -7 -4 -17 5 -12 3 -14 -7 -8 -10 6 -12 4 -7 -9 4 -10 1 -19 -8 -22 -8
-4 -15 -10 -15 -16 0 -5 6 -6 13 -2 7 4 6 0 -3 -12 -25 -31 -42 -66 -36 -71 3
-4 -2 -12 -12 -19 -14 -11 -14 -13 -2 -14 10 0 11 -3 3 -8 -6 -4 -13 -14 -15
-22 -2 -8 -9 -21 -16 -28 -7 -8 -11 -17 -9 -20 4 -7 -28 -42 -38 -42 -3 0 -10
0 -16 0 -5 0 -7 -5 -3 -12 5 -8 2 -9 -10 -5 -9 4 -15 3 -13 -1 3 -4 -1 -13 -9
-20 -8 -7 -14 -10 -14 -7 0 3 -6 1 -12 -5 -7 -6 -22 -18 -33 -26 -11 -9 -14
-12 -6 -8 9 5 12 3 7 -5 -4 -6 -11 -9 -16 -6 -5 3 -20 -6 -33 -19 -14 -14 -28
-22 -31 -19 -3 4 -6 1 -6 -5 0 -7 -7 -12 -16 -12 -8 0 -13 -4 -9 -9 3 -5 -4
-12 -15 -16 -11 -3 -20 -11 -20 -17 0 -6 -3 -9 -6 -6 -3 4 -14 -2 -25 -13 -11
-11 -25 -17 -31 -13 -7 4 -8 3 -4 -5 4 -6 0 -14 -11 -18 -10 -4 -25 -15 -34
-25 -9 -10 -19 -15 -23 -11 -3 3 -6 2 -6 -3 0 -5 -16 -18 -35 -28 -19 -10 -32
-23 -29 -27 3 -5 -3 -9 -13 -9 -10 0 -24 -9 -31 -21 -7 -12 -16 -18 -19 -15
-3 3 -17 -6 -30 -20 -12 -14 -23 -21 -23 -17 0 4 -7 -1 -15 -11 -8 -11 -15
-16 -15 -11 0 4 -9 -2 -20 -15 -11 -13 -20 -20 -20 -16 0 4 -11 -4 -23 -18
-13 -14 -27 -23 -30 -19 -4 3 -7 1 -7 -6 0 -7 -4 -10 -9 -7 -5 3 -12 -1 -15
-10 -3 -8 -11 -12 -16 -9 -6 4 -9 3 -8 -2 2 -4 -1 -9 -5 -10 -4 -1 -21 -16
-37 -33 -15 -16 -33 -30 -39 -30 -6 0 -11 -4 -11 -10 0 -5 -6 -9 -12 -7 -7 1
-12 -4 -11 -10 2 -7 -4 -13 -12 -13 -8 0 -15 -5 -15 -11 0 -5 -4 -8 -9 -5 -5
3 -12 -1 -15 -9 -3 -8 -11 -14 -18 -13 -7 2 -12 -3 -11 -9 2 -7 -4 -13 -12
-13 -8 0 -15 -4 -15 -10 0 -5 -7 -10 -16 -10 -9 0 -18 -9 -21 -20 -3 -11 -9
-18 -13 -15 -4 2 -23 -11 -43 -29 -21 -19 -37 -32 -37 -29 0 2 -12 -8 -27 -22
-16 -14 -35 -32 -44 -40 -9 -8 -21 -15 -28 -15 -7 0 -10 -4 -7 -8 3 -5 -6 -15
-19 -22 -13 -7 -22 -17 -19 -22 3 -4 -2 -8 -10 -8 -8 0 -27 -15 -41 -32 -15
-18 -24 -26 -20 -18 3 8 -1 6 -9 -4 -9 -11 -16 -23 -16 -28 0 -4 -6 -7 -12 -5
-7 1 -12 -3 -11 -10 2 -6 -6 -15 -17 -18 -11 -4 -20 -11 -20 -17 0 -15 -53
-68 -62 -62 -4 3 -5 -3 -1 -12 4 -12 3 -15 -5 -10 -7 4 -12 1 -12 -9 0 -9 -4
-13 -10 -10 -5 3 -10 0 -10 -7 0 -8 -9 -20 -20 -28 -11 -8 -20 -20 -20 -27 0
-7 -9 -18 -20 -25 -11 -7 -20 -17 -20 -21 0 -5 -19 -27 -42 -50 -24 -22 -37
-37 -30 -33 20 12 14 -3 -11 -27 -37 -35 -117 -148 -117 -164 0 -8 -5 -11 -10
-8 -6 3 -14 -5 -20 -19 -5 -14 -14 -26 -20 -26 -6 0 -8 -5 -5 -10 3 -6 -1 -13
-9 -16 -9 -3 -14 -10 -11 -14 3 -4 -2 -13 -10 -20 -8 -7 -12 -16 -9 -21 3 -5
-2 -9 -11 -9 -9 0 -14 -4 -11 -8 3 -5 -4 -19 -15 -30 -11 -12 -17 -22 -13 -22
3 0 1 -6 -5 -13 -6 -8 -7 -18 -3 -22 4 -5 2 -5 -4 -2 -6 4 -16 -5 -22 -18 -7
-14 -16 -25 -22 -25 -6 0 -8 -4 -5 -10 3 -5 -5 -25 -19 -43 -14 -19 -23 -37
-19 -40 3 -4 1 -7 -5 -7 -7 0 -12 -7 -12 -15 0 -9 -7 -18 -16 -22 -8 -3 -13
-12 -10 -19 3 -8 1 -14 -5 -14 -6 0 -8 -4 -4 -9 3 -6 -3 -14 -12 -20 -10 -5
-18 -13 -17 -18 2 -18 -9 -43 -16 -38 -5 3 -6 -3 -3 -14 3 -11 -2 -21 -12 -25
-9 -3 -13 -10 -10 -16 3 -5 -1 -10 -9 -10 -9 0 -13 -6 -10 -15 3 -8 -1 -22
-10 -30 -9 -9 -16 -25 -16 -35 0 -10 -7 -20 -15 -24 -8 -3 -15 -10 -15 -16 0
-6 6 -8 13 -4 9 6 9 5 0 -8 -7 -8 -9 -19 -5 -23 4 -5 2 -5 -5 -1 -11 6 -30
-29 -25 -47 1 -4 -2 -7 -8 -7 -5 0 -10 -9 -10 -20 0 -11 -4 -20 -10 -20 -5 0
-7 -7 -4 -15 4 -8 1 -15 -5 -15 -6 0 -11 -9 -11 -20 0 -11 -4 -20 -8 -20 -5 0
-9 -6 -10 -12 -6 -50 -10 -61 -23 -69 -8 -5 -10 -9 -5 -9 5 0 3 -7 -4 -15 -7
-8 -9 -15 -4 -15 5 0 1 -5 -9 -11 -14 -8 -16 -14 -6 -25 9 -11 8 -15 -5 -20
-9 -3 -16 -14 -16 -24 0 -26 -11 -51 -20 -45 -4 2 -6 -7 -4 -21 1 -15 -4 -28
-12 -31 -8 -3 -12 -9 -9 -13 3 -4 -2 -24 -10 -43 -8 -19 -11 -37 -8 -41 4 -3
1 -6 -6 -6 -8 0 -11 -6 -7 -16 3 -8 2 -12 -4 -9 -6 3 -10 -5 -10 -19 0 -14 -6
-26 -12 -26 -9 0 -8 -4 2 -10 8 -5 10 -10 5 -10 -6 0 -16 -9 -23 -21 -8 -12
-9 -18 -4 -15 6 3 8 -2 5 -14 -3 -11 -9 -18 -13 -15 -4 3 -10 -2 -14 -10 -3
-8 0 -15 7 -15 7 0 4 -5 -6 -11 -9 -5 -17 -15 -17 -22 0 -7 4 -6 10 3 5 8 10
11 10 7 0 -5 -9 -22 -20 -38 -12 -16 -20 -36 -18 -46 2 -10 -2 -17 -9 -16 -13
3 -12 -22 2 -34 4 -4 5 -3 1 4 -3 7 2 14 14 18 11 3 19 12 17 18 -1 7 4 11 11
9 8 -1 11 2 7 8 -3 5 1 13 9 16 8 3 18 14 21 25 4 11 11 16 17 13 8 -5 9 -1 5
10 -4 10 -3 15 3 11 6 -3 10 -1 10 5 0 6 4 9 9 6 5 -3 11 4 14 15 4 13 10 18
18 13 7 -4 10 -3 6 3 -4 6 18 35 48 64 30 30 55 60 55 67 0 7 5 10 10 7 6 -3
10 -1 10 5 0 6 5 8 12 4 7 -4 8 -3 4 5 -8 12 18 44 28 34 3 -4 6 1 6 10 0 9 9
22 20 29 11 7 20 19 20 26 0 7 5 10 10 7 6 -3 10 -2 10 3 0 13 182 198 191
195 5 -2 5 5 2 14 -4 11 -3 14 5 9 8 -4 12 -1 12 10 0 10 3 15 6 12 3 -4 38
26 77 65 40 40 73 71 75 69 1 -1 2 1 3 6 0 4 9 10 20 14 13 5 18 13 13 20 -4
7 -3 10 1 5 5 -4 17 1 28 10 15 13 18 14 13 3 -4 -8 2 -4 14 10 12 14 19 18
15 10 -4 -8 3 -4 14 9 12 13 21 20 21 17 0 -6 9 0 49 34 10 8 23 16 30 18 15
3 73 43 83 57 5 7 8 7 8 0 0 -6 3 -6 8 0 4 6 28 23 55 38 26 15 47 32 47 38 0
6 5 7 10 4 6 -3 10 -1 10 5 0 6 5 8 10 5 6 -3 10 -1 10 4 0 6 7 11 15 11 8 0
15 5 15 11 0 6 9 8 23 4 17 -5 19 -4 7 4 -13 10 -8 15 13 12 4 0 7 4 7 10 0 5
4 8 9 5 5 -3 12 1 15 10 3 8 10 12 16 9 5 -3 10 -1 10 5 0 6 5 8 10 5 6 -3 10
-2 10 4 0 5 18 17 40 27 21 10 36 22 33 27 -4 6 3 8 15 5 12 -4 25 -1 29 4 4
7 1 8 -8 3 -11 -6 -11 -5 -3 4 6 7 20 14 30 16 11 1 18 8 17 13 -2 6 4 9 12 6
8 -4 15 -1 15 6 0 6 5 8 10 5 6 -3 13 1 16 9 3 9 10 13 15 10 5 -3 9 0 9 7 0
7 3 10 6 6 3 -3 23 3 45 14 21 12 43 18 49 14 5 -3 10 -1 10 4 0 6 3 10 8 10
24 -4 42 2 36 13 -5 7 -3 8 7 2 22 -14 49 -15 49 -2 0 9 3 9 12 0 7 -7 20 -12
30 -12 10 0 18 -4 18 -10 0 -5 7 -10 16 -10 8 0 12 -4 9 -10 -3 -6 0 -10 7
-10 8 0 9 -3 2 -8 -10 -7 -42 -70 -43 -85 0 -4 -13 -19 -27 -32 -15 -14 -23
-25 -18 -25 5 0 1 -5 -9 -11 -9 -6 -15 -14 -12 -19 3 -5 -4 -12 -16 -15 -11
-4 -18 -9 -15 -12 3 -3 -2 -12 -10 -20 -8 -8 -11 -20 -7 -26 4 -6 0 -8 -10 -4
-10 4 -17 1 -17 -6 -1 -19 -56 -87 -65 -79 -5 4 -5 2 -2 -4 3 -6 -5 -22 -19
-37 -13 -14 -24 -29 -24 -31 0 -6 -26 -39 -52 -68 -10 -10 -19 -21 -20 -25 -3
-11 -19 -31 -46 -56 -12 -11 -20 -27 -18 -34 3 -7 -1 -13 -9 -13 -8 0 -15 -4
-15 -10 0 -5 -8 -19 -17 -29 -34 -37 -42 -49 -37 -54 3 -3 -4 -8 -15 -12 -12
-3 -19 -11 -16 -16 4 -5 1 -9 -6 -9 -7 0 -10 -3 -6 -6 3 -3 -8 -19 -24 -35
-16 -16 -27 -29 -24 -29 3 0 -3 -10 -14 -22 -11 -11 -18 -25 -15 -30 3 -4 -1
-8 -8 -8 -8 0 -21 -12 -30 -27 -9 -16 -25 -38 -35 -50 -45 -53 -52 -63 -48
-63 3 0 -8 -13 -24 -29 -16 -16 -28 -31 -27 -33 1 -1 -6 -11 -16 -20 -10 -10
-18 -15 -18 -12 0 3 -16 -10 -35 -30 -19 -20 -39 -36 -45 -36 -5 0 -7 -6 -4
-14 3 -9 -4 -16 -21 -20 -14 -4 -23 -11 -20 -16 3 -5 -4 -11 -15 -15 -11 -4
-18 -10 -15 -15 3 -4 -5 -10 -16 -13 -12 -3 -18 -10 -15 -15 3 -5 -6 -14 -19
-20 -14 -7 -25 -16 -25 -22 0 -6 -4 -8 -10 -5 -5 3 -10 -1 -10 -10 0 -9 -5
-13 -11 -10 -6 4 -13 -3 -16 -15 -3 -13 -11 -19 -19 -16 -13 5 -19 -6 -15 -27
1 -5 -2 -6 -7 -3 -5 3 -30 -15 -55 -40 -26 -25 -47 -42 -47 -37 -1 4 -7 -3
-15 -17 -8 -14 -14 -21 -15 -17 0 4 -13 -6 -30 -23 -16 -16 -32 -30 -36 -30
-4 0 -17 -10 -29 -22 -42 -42 -90 -83 -96 -81 -3 1 -6 -5 -6 -12 0 -10 4 -12
12 -5 7 5 16 6 20 2 5 -4 4 -1 0 7 -6 11 -4 13 9 8 10 -4 15 -3 11 3 -3 6 3
10 14 10 12 0 21 4 21 10 0 5 7 6 17 3 11 -4 14 -3 9 5 -6 11 5 17 27 13 4 0
7 7 7 16 0 14 2 15 9 5 6 -11 11 -10 24 3 9 8 19 16 22 15 21 -1 25 1 19 12
-4 7 -3 8 5 4 6 -4 18 -2 26 4 8 7 15 9 15 4 0 -4 7 1 16 12 8 10 12 12 8 4
-5 -8 9 -2 31 14 21 16 35 24 31 17 -6 -10 -4 -10 12 0 12 7 18 18 14 24 -3 5
3 3 13 -5 15 -12 17 -12 10 -1 -6 11 -4 13 8 8 11 -4 17 -1 17 8 0 8 3 14 8
13 15 -4 52 14 47 22 -3 5 3 7 14 5 11 -2 25 2 31 10 6 7 22 16 35 19 14 4 25
11 25 16 0 6 5 10 11 10 5 0 7 -4 4 -10 -3 -6 1 -7 9 -4 9 3 14 10 11 14 -3 4
5 11 18 15 12 4 24 9 27 10 3 1 15 6 28 10 12 4 22 12 22 17 0 5 4 7 9 4 5 -3
14 1 21 9 7 8 21 15 31 15 11 0 19 7 20 18 0 11 2 12 6 4 4 -10 10 -9 26 5 14
12 18 13 12 3 -5 -9 0 -8 13 4 12 11 22 15 22 10 0 -5 4 -3 9 4 4 7 17 14 28
15 12 0 19 6 16 13 -3 8 4 11 21 10 15 -2 32 4 42 15 9 10 29 21 46 24 16 4
32 13 35 20 2 8 11 11 19 8 8 -3 14 0 14 7 0 6 4 9 9 6 5 -3 12 1 15 10 3 8
11 12 17 9 5 -4 17 1 25 11 9 11 13 14 10 7 -5 -8 0 -8 19 0 14 7 25 15 25 20
0 4 7 7 15 7 8 0 15 6 15 13 0 9 3 8 9 -2 7 -11 11 -9 21 9 9 18 14 20 21 9 6
-11 9 -10 15 4 4 10 13 16 21 13 8 -3 12 -2 9 2 -2 4 7 12 20 19 18 8 22 8 17
0 -3 -7 2 -4 13 5 10 9 26 18 34 20 8 2 21 10 28 18 8 8 11 9 7 3 -4 -9 -1
-11 9 -7 9 3 14 10 11 14 -3 5 -1 11 5 15 5 3 10 1 10 -6 0 -7 7 -4 16 7 8 10
13 14 10 7 -5 -8 0 -8 18 0 13 7 22 15 20 19 -5 7 18 12 39 9 4 0 7 4 7 11 0
6 3 9 6 5 4 -3 13 1 22 9 8 9 23 13 33 11 10 -3 17 0 16 7 -1 6 6 10 15 10 10
-1 15 2 12 7 -3 5 2 9 11 9 10 0 13 5 9 12 -4 7 -3 8 5 4 6 -4 32 4 56 18 25
14 43 19 39 13 -3 -7 4 -1 15 12 12 13 21 17 21 10 0 -8 5 -6 13 5 7 9 18 16
24 14 6 -2 19 6 28 17 9 11 14 15 11 8 -4 -7 4 -6 24 3 16 9 30 20 30 25 0 5
5 9 11 9 5 0 7 -6 4 -12 -4 -7 0 -5 8 4 8 10 17 15 20 11 4 -3 7 -1 7 6 0 7 5
9 10 6 6 -3 10 -1 10 5 0 6 4 9 9 6 4 -3 19 3 31 14 12 11 27 17 31 14 5 -3 9
0 9 6 0 6 4 8 10 5 5 -3 10 -1 10 5 0 7 6 10 13 7 6 -2 18 3 25 12 11 13 12
13 7 1 -4 -10 -2 -9 8 3 8 9 20 17 26 17 7 0 9 5 5 13 -5 8 -3 8 9 -2 14 -11
18 -11 23 3 4 10 12 15 19 12 8 -3 16 2 19 10 9 24 25 16 43 -21 9 -19 21 -35
25 -35 5 0 7 -4 4 -9 -3 -5 1 -11 9 -15 8 -3 15 -13 15 -21 0 -9 4 -13 10 -10
5 3 7 0 4 -8 -3 -9 4 -21 16 -30 11 -8 20 -19 18 -24 -2 -5 9 -21 24 -35 15
-14 25 -28 22 -31 -3 -3 4 -10 15 -17 12 -6 19 -15 16 -19 -3 -5 2 -12 11 -15
8 -3 12 -10 9 -16 -3 -5 3 -10 14 -10 12 0 21 -5 21 -11 0 -5 -6 -7 -12 -4 -7
4 1 -5 17 -20 17 -14 29 -30 28 -35 -2 -6 4 -10 13 -10 8 0 12 -4 9 -10 -3 -5
1 -10 9 -10 9 0 16 -7 16 -16 0 -8 5 -12 10 -9 6 3 10 1 10 -5 0 -16 55 -70
71 -70 7 0 10 -3 6 -6 -7 -8 17 -34 32 -34 6 0 11 -6 11 -14 0 -8 13 -23 29
-32 17 -10 28 -21 25 -26 -3 -4 0 -8 6 -8 6 0 24 -14 40 -30 16 -17 34 -30 40
-30 6 0 8 -4 5 -10 -3 -5 -2 -10 2 -10 11 0 48 -28 83 -62 15 -16 32 -28 38
-28 5 0 12 -7 16 -15 3 -8 11 -15 18 -15 8 0 20 -9 28 -19 7 -11 17 -18 21
-16 4 3 9 -2 13 -10 3 -8 12 -15 21 -15 8 0 15 -5 15 -11 0 -5 4 -7 10 -4 5 3
10 -2 10 -11 0 -10 3 -14 6 -11 4 4 14 -1 23 -11 9 -9 23 -18 31 -20 8 -2 19
-10 23 -18 4 -8 15 -14 22 -14 8 0 15 -4 15 -10 0 -5 7 -10 15 -10 8 0 15 -4
15 -10 0 -5 7 -10 15 -10 8 0 15 -4 15 -10 0 -5 7 -10 15 -10 8 0 15 -4 15
-10 0 -5 5 -10 11 -10 7 0 18 -8 25 -17 7 -10 16 -18 21 -18 22 -2 53 -18 53
-27 0 -6 3 -8 6 -5 4 4 15 -2 25 -14 12 -14 18 -16 22 -7 3 8 6 6 6 -5 1 -10
5 -16 10 -12 5 3 16 -1 24 -9 8 -8 17 -12 21 -9 3 4 6 1 6 -5 0 -7 7 -12 15
-12 8 0 15 -5 15 -11 0 -5 4 -8 8 -5 5 3 18 -2 28 -12 10 -10 26 -17 34 -17 8
0 21 -6 29 -13 7 -7 20 -11 28 -8 8 3 11 2 8 -3 -3 -5 -1 -12 5 -16 5 -3 10 0
10 7 1 9 5 7 14 -4 7 -10 16 -15 19 -11 4 3 9 -2 13 -11 5 -13 9 -14 20 -5 11
9 14 9 14 0 0 -7 4 -9 10 -6 6 3 10 1 10 -5 0 -6 5 -8 10 -5 6 3 10 2 10 -2 0
-5 10 -9 22 -10 11 -1 24 -6 27 -10 3 -4 13 -9 21 -10 8 -1 26 -4 40 -8 14 -4
31 -7 38 -7 6 -1 12 -6 12 -11 0 -5 7 -7 15 -4 8 4 17 2 20 -3 4 -6 19 -10 36
-10 16 0 29 -5 29 -11 0 -8 4 -8 14 0 10 9 15 8 19 -3 4 -9 15 -13 26 -11 11
2 23 -1 27 -6 4 -6 11 -6 20 2 11 9 14 9 14 -1 0 -7 8 -10 20 -7 11 3 18 1 15
-3 -8 -13 18 -18 39 -8 13 7 16 7 12 -1 -4 -6 6 -9 28 -7 21 1 32 -2 29 -7 -4
-6 3 -8 15 -5 12 4 22 2 22 -2 0 -4 10 -6 22 -2 16 4 19 2 13 -9 -8 -12 -6
-12 8 0 11 9 17 10 17 2 0 -6 5 -11 11 -11 5 0 7 6 3 13 -6 9 -4 9 7 1 8 -6
24 -10 37 -8 12 2 22 -1 22 -6 0 -7 7 -7 21 1 12 6 19 7 15 1 -3 -5 3 -12 14
-15 13 -3 18 -1 13 6 -5 9 -3 9 8 0 8 -6 29 -10 47 -9 17 1 32 0 32 -3 0 -3
24 -7 53 -8 111 -4 117 -5 110 -16 -4 -7 1 -6 10 2 13 10 17 10 17 1 0 -10 3
-10 15 0 11 9 15 9 15 1 0 -8 6 -9 18 -2 11 6 24 6 35 0 9 -6 22 -7 27 -4 6 3
10 1 10 -4 0 -6 -5 -11 -12 -11 -6 0 -8 -3 -4 -7 4 -4 16 3 28 17 11 14 17 20
14 14 -3 -7 1 -17 9 -24 13 -11 14 -10 8 6 -6 16 -4 17 8 7 12 -10 18 -10 29
0 9 8 11 9 6 0 -4 -8 7 -11 41 -11 27 1 59 -2 72 -6 14 -5 21 -4 18 1 -4 5 0
10 8 10 8 0 15 -4 15 -9 0 -5 9 -4 20 2 14 7 20 7 20 0 0 -5 7 -10 15 -10 8 0
15 -4 15 -10 0 -5 7 -10 15 -10 8 0 15 -5 15 -11 0 -5 5 -7 10 -4 6 3 10 -1
10 -10 0 -9 5 -13 10 -10 6 3 10 1 10 -5 0 -6 5 -8 10 -5 6 3 10 3 10 -2 0 -8
61 -47 68 -43 2 1 12 -9 23 -21 10 -12 19 -19 19 -15 0 4 7 0 16 -8 8 -9 20
-14 25 -11 5 4 9 -1 9 -10 0 -9 5 -15 12 -13 7 3 23 -6 36 -19 25 -25 37 -30
26 -10 -4 6 4 2 18 -11 13 -12 28 -19 33 -15 4 5 6 1 2 -9 -4 -12 0 -15 18
-13 17 1 26 -4 30 -17 4 -10 10 -16 15 -13 5 3 11 1 15 -5 4 -6 10 -8 15 -5 5
3 13 -3 19 -12 5 -10 12 -17 15 -15 19 8 38 0 32 -13 -4 -13 -2 -14 14 -5 19
10 25 6 20 -15 -1 -5 2 -7 5 -3 4 4 21 0 37 -8 17 -9 32 -13 35 -10 3 3 12 -1
19 -9 8 -8 21 -12 29 -9 8 4 15 1 15 -5 0 -7 10 -9 26 -5 17 4 25 3 21 -3 -3
-5 0 -10 8 -10 8 0 12 4 9 9 -3 5 6 7 20 4 16 -3 26 0 26 7 0 8 3 8 8 2 11
-15 32 -17 32 -3 0 9 4 8 10 -2 9 -13 11 -13 20 0 5 8 10 11 10 6 0 -5 8 -2
17 5 11 10 14 10 9 2 -4 -7 -2 -13 3 -13 6 0 11 5 11 11 0 6 7 9 15 6 8 -4 17
-2 20 3 3 5 12 7 20 3 8 -3 15 0 15 7 0 10 3 10 15 0 11 -9 15 -9 15 -1 0 7 5
9 10 6 6 -3 10 -2 10 3 0 5 13 8 30 7 17 -1 27 2 24 7 -4 5 2 9 12 8 32 -4 45
0 40 9 -3 5 8 7 24 6 16 -1 27 1 25 5 -7 11 52 6 62 -5 5 -4 1 -5 -7 0 -9 5
-12 5 -7 -1 5 -5 12 -9 15 -9 20 -2 52 -18 52 -26 0 -5 9 -9 20 -9 11 0 20 -4
20 -10 0 -5 9 -10 20 -10 11 0 20 -4 20 -10 0 -5 7 -10 16 -10 8 0 12 -4 9
-10 -3 -5 -1 -10 6 -10 6 0 20 -9 30 -21 9 -11 21 -20 26 -21 4 0 7 -4 5 -9
-1 -5 7 -9 18 -9 11 0 20 -4 20 -8 0 -4 8 -8 18 -9 45 -3 62 -8 62 -18 0 -5 4
-5 8 2 8 13 29 12 51 -1 10 -7 12 -6 6 4 -6 10 -4 12 8 7 10 -3 17 -2 17 3 0
5 15 8 33 7 18 -1 31 3 30 9 -1 6 9 10 22 8 14 -1 25 1 25 5 0 4 9 7 20 8 16
1 20 -2 15 -18 -4 -13 -2 -19 9 -19 10 0 13 -6 10 -15 -4 -8 -2 -15 4 -15 6 0
16 -17 23 -37 16 -50 48 -103 62 -103 7 0 5 -5 -3 -10 -8 -5 -10 -10 -4 -10 6
0 19 -16 30 -35 10 -19 24 -35 31 -35 7 0 12 -5 11 -12 -2 -7 7 -17 20 -23 12
-5 22 -13 22 -18 0 -4 4 -5 10 -2 6 3 10 2 10 -4 0 -6 7 -8 15 -4 9 3 24 -2
33 -10 14 -13 39 -16 110 -15 64 0 90 4 85 12 -4 6 2 4 12 -4 10 -8 16 -10 12
-3 -4 6 -3 14 3 18 5 3 10 0 10 -7 0 -7 10 -2 21 12 11 14 18 18 14 10 -5 -12
-4 -12 7 1 14 18 13 17 45 25 13 4 20 10 17 15 -3 5 3 9 14 9 10 0 31 11 45
24 14 13 28 21 31 18 3 -3 6 0 6 7 0 7 4 10 9 7 5 -3 12 1 15 10 3 8 10 13 15
10 5 -3 11 1 15 9 3 8 2 15 -2 16 -4 0 -15 2 -25 4 -9 2 -15 -1 -11 -6 3 -5 0
-9 -5 -9 -6 0 -11 6 -11 13 0 8 -4 7 -10 -3 -8 -13 -10 -13 -10 -1 0 11 -4 9
-14 -5 -14 -18 -15 -18 -22 -1 -5 15 -9 16 -15 5 -6 -9 -9 -9 -9 -1 0 8 -16
11 -50 9 -27 -1 -50 1 -50 5 0 9 -20 6 -39 -5 -10 -6 -12 -5 -7 2 7 12 -5 16
-31 13 -7 -1 -13 3 -13 9 0 5 -7 10 -15 10 -8 0 -15 5 -15 10 0 6 -5 10 -11
10 -15 0 -39 26 -32 34 4 3 1 6 -6 6 -13 0 -36 19 -39 32 -7 24 -17 45 -28 56
-7 7 -11 22 -8 35 3 12 6 29 8 36 1 8 8 17 14 19 7 2 10 7 7 12 -3 5 6 17 20
28 13 11 21 22 18 26 -3 3 -1 6 6 6 7 0 10 4 6 9 -3 5 4 12 15 16 11 3 20 11
20 16 0 5 5 9 11 9 6 0 20 11 31 25 11 14 28 25 38 25 10 0 22 5 25 10 4 6 11
8 16 5 5 -4 9 -1 9 4 0 6 6 11 14 11 8 0 17 6 19 13 4 8 6 8 6 -2 1 -11 5 -10
17 5 8 10 13 13 9 7 -9 -18 3 -16 22 2 8 9 20 14 27 12 6 -2 17 2 24 9 7 7 20
10 29 7 11 -4 14 -3 9 5 -4 8 -2 10 7 6 8 -3 17 2 21 12 5 13 9 14 21 4 11 -9
15 -9 15 -1 0 7 5 9 10 6 6 -3 10 1 10 9 0 8 -9 18 -20 21 -11 3 -20 11 -20
16 0 6 -4 7 -10 4 -5 -3 -10 -1 -10 5 0 6 -4 9 -9 6 -5 -3 -12 1 -15 9 -3 8
-9 15 -13 14 -20 -3 -34 2 -28 11 4 6 -1 7 -11 3 -13 -5 -15 -3 -9 7 6 10 4
12 -8 7 -8 -3 -21 1 -28 9 -7 9 -21 13 -31 10 -11 -2 -22 2 -25 10 -4 12 -8
12 -21 2 -11 -9 -13 -9 -9 -1 4 6 3 14 -3 18 -5 3 -10 0 -10 -7 0 -9 -3 -9
-10 2 -7 12 -10 12 -10 1 0 -7 -6 -11 -14 -8 -8 3 -17 -1 -20 -10 -5 -12 -9
-13 -21 -3 -14 12 -19 7 -16 -13 1 -5 -3 -6 -8 -3 -14 9 -82 -34 -74 -47 4 -6
1 -7 -6 -3 -7 5 -19 0 -27 -10 -9 -11 -12 -13 -9 -6 6 11 3 12 -14 3 -11 -7
-21 -16 -21 -22 0 -5 -12 -14 -26 -19 -15 -6 -22 -14 -18 -22 4 -6 3 -8 -3 -5
-6 4 -21 -3 -35 -16 -13 -12 -28 -24 -33 -27 -6 -3 -9 -8 -7 -12 1 -5 -7 -8
-18 -8 -11 0 -19 -6 -18 -12 2 -7 -3 -12 -9 -10 -7 1 -13 -2 -13 -7 0 -5 -7
-12 -16 -15 -10 -4 -13 -2 -8 6 5 8 2 9 -9 5 -10 -3 -17 -2 -17 4 0 6 -4 8 -9
4 -5 -3 -13 -1 -16 5 -5 8 -11 8 -20 0 -9 -8 -15 -8 -20 0 -3 5 -17 10 -31 10
-13 0 -24 6 -24 13 0 9 -3 8 -9 -2 -6 -9 -10 -9 -12 -2 -2 6 -16 12 -31 13
-16 1 -28 6 -28 10 0 4 -3 7 -7 7 -22 -4 -33 2 -27 14 6 9 4 9 -8 -1 -13 -10
-17 -10 -22 4 -4 9 -10 14 -13 10 -4 -4 -13 4 -20 16 -7 14 -12 17 -13 9 0
-11 -4 -9 -15 5 -18 24 -19 48 -2 66 6 7 12 19 13 26 2 29 5 33 14 27 6 -3 7
1 4 9 -3 9 -1 16 5 16 6 0 11 9 11 21 0 11 4 18 8 15 5 -3 16 8 26 25 9 16 24
29 33 29 9 0 14 3 11 6 -8 7 36 54 51 54 7 0 9 5 5 12 -5 7 -3 8 6 3 8 -5 18
-1 27 10 7 11 13 16 13 13 0 -3 16 9 37 28 20 18 40 31 45 28 4 -3 8 2 8 11 0
9 5 13 10 10 11 -7 40 18 40 34 0 5 -5 13 -12 17 -7 4 -8 3 -4 -4 5 -8 2 -10
-8 -6 -9 3 -14 9 -11 13 2 4 -2 8 -10 8 -8 0 -11 -5 -8 -11 4 -6 -1 -5 -10 2
-9 8 -21 11 -27 7 -5 -3 -10 -2 -10 3 0 5 -7 9 -15 10 -8 1 -22 3 -30 4 -8 1
-15 6 -15 12 0 6 -5 4 -10 -4 -5 -8 -10 -10 -10 -4 0 7 -13 10 -29 9 -16 -1
-34 1 -41 5 -17 11 -91 -8 -105 -27 -7 -10 -17 -13 -25 -8 -8 5 -11 4 -7 -2 6
-10 -26 -43 -43 -43 -5 0 -6 -7 -3 -17 4 -9 2 -14 -3 -10 -5 3 -19 -6 -29 -19
-11 -14 -33 -39 -50 -57 -16 -18 -29 -35 -27 -39 1 -5 -3 -8 -9 -8 -5 0 -7 -4
-4 -10 3 -5 0 -7 -7 -4 -7 3 -23 21 -35 40 -13 19 -17 32 -10 29 6 -3 2 2 -10
11 -13 9 -23 23 -23 30 0 8 -4 14 -10 14 -5 0 -10 7 -10 16 0 8 5 12 10 9 6
-3 10 -2 10 3 0 5 18 15 40 22 22 7 40 17 40 22 0 4 9 8 21 8 11 0 17 4 14 10
-3 6 1 7 9 4 9 -3 16 -1 16 6 0 6 5 8 10 5 6 -3 10 -2 10 4 0 6 6 8 14 5 8 -3
17 0 22 7 5 8 3 10 -6 4 -9 -5 -11 -4 -6 4 4 6 12 9 17 5 6 -3 19 2 30 12 10
9 22 14 25 11 4 -3 13 1 21 9 8 8 19 12 24 9 5 -4 9 -1 9 5 0 6 5 8 10 5 6 -3
10 -1 10 5 0 7 6 10 14 7 7 -3 21 4 30 14 9 11 21 17 26 14 6 -3 10 -1 10 5 0
6 5 8 10 5 6 -3 10 -1 10 5 0 7 5 10 12 8 6 -2 20 4 30 14 10 10 23 16 28 13
6 -4 10 -1 10 5 0 6 5 8 10 5 6 -3 10 -1 10 6 0 7 3 9 7 6 3 -4 12 1 20 11 9
10 11 11 7 2 -7 -13 -5 -13 9 -1 9 7 17 10 17 5 0 -5 5 -2 10 6 5 8 14 16 20
16 5 1 14 2 18 3 5 0 9 8 9 16 0 15 -9 19 -34 16 -6 -1 -17 7 -25 17 -7 11
-21 18 -31 16 -9 -1 -15 2 -11 7 3 5 -2 9 -10 9 -9 0 -16 5 -16 11 0 5 -4 7
-10 4 -6 -3 -10 -1 -10 5 0 7 -6 10 -12 7 -7 -2 -19 3 -26 12 -11 13 -12 13
-6 1 4 -8 -3 -5 -16 8 -13 14 -28 21 -38 17 -9 -3 -13 -3 -9 1 9 9 -23 33 -45
34 -10 0 -18 5 -18 10 0 6 -8 10 -18 10 -10 0 -28 9 -39 19 -12 11 -24 17 -27
14 -3 -4 -6 -1 -6 6 0 7 -4 9 -10 6 -5 -3 -10 -1 -10 5 0 6 -5 8 -10 5 -6 -3
-10 -1 -10 5 0 6 -4 8 -10 5 -5 -3 -10 -2 -10 3 0 6 -11 13 -25 16 -14 4 -24
10 -21 15 3 4 -1 8 -9 9 -8 1 -21 3 -29 4 -8 1 -14 6 -13 12 1 5 -2 11 -8 11
-20 3 -63 24 -70 35 -3 5 -11 8 -16 5 -5 -4 -9 -1 -9 5 0 6 -4 8 -10 5 -6 -3
-10 -1 -10 5 0 6 -5 8 -10 5 -6 -3 -10 -1 -10 5 0 6 -4 8 -10 5 -6 -3 -10 1
-10 9 0 10 -6 13 -17 9 -10 -4 -14 -2 -9 5 4 7 -1 10 -13 7 -11 -2 -22 3 -25
11 -3 9 -11 12 -16 9 -6 -4 -17 -1 -25 5 -8 6 -19 9 -25 5 -5 -3 -10 -1 -10 6
0 6 -8 9 -19 6 -12 -3 -22 1 -25 10 -5 12 -9 13 -21 3 -12 -10 -15 -9 -15 6 0
14 -2 16 -9 6 -7 -11 -9 -11 -14 2 -4 9 -13 13 -22 10 -8 -3 -15 -1 -15 4 0 6
-9 9 -20 7 -11 -2 -20 0 -20 5 0 5 -9 7 -20 5 -11 -2 -19 1 -17 7 1 6 -7 12
-18 14 -32 5 -49 9 -70 20 -11 6 -27 10 -35 9 -8 0 -17 3 -20 7 -3 4 -17 9
-30 11 -13 2 -26 9 -27 14 -2 6 -13 9 -23 6 -12 -3 -20 0 -20 7 0 7 -6 10 -14
7 -7 -3 -19 0 -25 6 -6 6 -11 7 -11 3 0 -5 -7 -3 -15 4 -8 7 -21 10 -30 7 -8
-4 -19 1 -24 11 -6 9 -11 14 -11 9 0 -4 -13 -1 -29 7 -16 9 -31 12 -35 9 -3
-4 -6 -1 -6 5 0 6 -7 9 -15 6 -8 -4 -15 -2 -15 3 0 5 -8 9 -17 9 -30 1 -47 8
-61 24 -12 13 -13 13 -6 0 7 -13 5 -13 -9 -2 -9 8 -21 11 -27 7 -5 -3 -10 -1
-10 5 0 6 -4 9 -9 5 -5 -3 -12 -1 -16 5 -4 6 -11 8 -16 5 -5 -4 -12 1 -15 10
-6 13 -8 14 -15 3 -7 -11 -9 -11 -9 0 0 9 -7 11 -20 7 -14 -5 -20 -2 -20 10 0
9 -5 13 -11 10 -6 -4 -1 11 10 34 12 23 18 41 14 41 -4 0 2 7 13 16 10 8 12
12 4 8 -13 -7 -13 -5 -1 9 7 9 10 17 7 17 -4 0 0 7 8 16 9 8 14 20 11 25 -4 5
2 9 11 9 14 0 15 3 6 12 -8 8 -6 16 10 30 12 10 16 18 10 18 -7 0 -4 12 6 30
9 16 20 30 24 30 4 0 5 6 2 14 -3 7 1 20 9 27 7 8 12 20 9 27 -2 6 1 12 6 12
11 0 25 38 22 59 -1 7 3 10 9 7 5 -4 12 -2 16 4 3 5 0 10 -7 10 -11 0 -11 2 0
9 7 4 14 16 16 25 1 10 7 21 12 24 9 7 16 27 17 49 0 7 6 14 14 17 7 3 13 12
13 21 0 8 5 15 11 15 8 0 8 5 -1 15 -10 12 -10 15 4 15 9 0 16 8 16 19 0 11 7
26 15 34 8 8 11 17 8 21 -4 3 -1 6 6 6 7 0 10 4 6 9 -3 5 1 15 8 23 8 7 12 19
9 26 -2 6 1 12 8 12 6 0 9 4 6 9 -3 5 1 12 10 15 8 3 12 10 9 16 -3 5 -1 10 5
10 6 0 8 4 5 10 -3 6 -1 10 5 10 6 0 8 5 5 10 -3 6 0 13 9 16 8 3 13 11 10 19
-3 7 1 19 9 27 8 8 18 24 21 36 4 12 12 22 17 22 6 0 8 4 4 9 -3 5 2 17 11 25
8 9 12 16 7 16 -4 0 1 7 11 15 11 8 16 15 12 15 -5 0 -3 7 4 15 7 8 9 15 4 15
-5 0 -1 5 9 11 9 6 15 14 13 18 -3 4 4 18 15 30 12 12 18 28 15 36 -3 10 0 12
11 8 10 -4 14 -2 9 5 -3 6 -2 13 4 17 6 4 8 11 5 16 -4 5 -1 9 5 9 5 0 18 16
27 35 9 19 20 32 25 29 5 -3 8 -2 7 3 -5 21 15 63 33 69 11 3 17 8 14 11 -5 5
21 48 49 80 31 37 35 43 30 43 -3 0 0 6 7 14 7 8 16 12 20 9 4 -2 5 4 1 13 -4
12 -3 15 5 10 7 -4 12 -1 12 9 0 9 5 13 10 10 6 -3 10 1 10 9 0 8 9 17 20 21
11 3 19 9 18 13 -2 4 10 21 26 37 16 17 25 23 21 15 -5 -8 6 0 24 18 18 17 37
29 43 26 6 -4 8 -2 5 3 -8 13 19 37 32 29 5 -4 13 3 16 15 4 11 9 18 12 15 4
-3 12 2 20 12 10 11 12 12 8 2 -4 -8 1 -6 9 4 9 11 16 16 16 10 0 -5 7 -1 14
9 8 10 23 19 34 20 13 1 18 6 14 16 -3 9 -1 12 5 8 6 -4 17 -1 25 6 7 8 19 12
27 9 8 -3 11 0 8 5 -3 5 3 15 15 22 16 10 19 10 13 -1 -3 -7 1 -4 10 7 9 11
19 20 23 20 4 0 6 3 5 7 -2 4 4 5 12 2 8 -4 31 6 50 20 19 14 40 25 47 24 7
-2 12 2 11 7 -1 6 8 12 20 12 12 1 27 9 33 17 6 9 14 13 17 9 4 -3 7 -1 7 6 0
7 5 9 10 6 6 -3 10 -2 10 4 0 6 7 8 15 5 8 -4 17 1 21 10 3 9 10 14 14 11 5
-3 11 -1 15 5 4 6 11 8 16 5 5 -4 9 -1 9 5 0 6 5 8 10 5 6 -3 13 1 16 9 3 9
10 13 15 10 5 -3 9 1 9 8 0 9 3 9 10 -2 7 -11 10 -11 10 -2 0 7 4 11 9 8 5 -3
11 1 15 9 3 9 12 12 22 8 13 -5 15 -3 9 7 -6 10 -4 12 8 7 10 -4 17 -2 17 4 0
7 9 9 21 6 12 -3 18 -3 15 0 -8 8 13 33 28 33 6 0 4 -5 -4 -10 -8 -5 -10 -10
-4 -10 6 0 17 7 24 15 7 8 16 12 21 9 5 -3 9 0 9 6 0 6 4 9 9 6 5 -3 12 1 15
10 5 13 9 14 21 4 12 -10 16 -9 21 4 3 9 10 13 15 10 5 -3 9 -1 9 5 0 6 7 8
15 5 8 -4 17 1 21 10 3 9 10 13 15 10 5 -3 9 0 9 6 0 8 6 8 20 0 16 -9 19 -8
13 7 -5 12 -2 15 10 10 8 -3 21 0 27 8 6 7 20 12 30 10 11 -2 23 1 26 7 5 7 2
8 -6 3 -9 -5 -11 -4 -6 4 4 6 18 9 32 7 14 -3 22 -1 19 5 -4 5 1 9 10 9 10 0
13 5 9 12 -4 6 -3 8 3 5 13 -8 83 11 83 23 0 6 5 10 11 10 5 0 7 -6 4 -12 -4
-7 -1 -6 7 2 13 15 31 22 56 23 6 0 12 4 12 9 0 5 5 6 10 3 6 -3 10 -2 10 4 0
6 7 8 15 5 8 -4 15 -1 15 5 0 6 6 11 14 11 8 0 17 6 19 13 4 9 6 9 6 0 1 -10
7 -10 26 -1 14 6 25 15 25 19 0 4 9 6 20 4 11 -2 20 1 20 7 0 6 3 8 7 5 3 -4
12 1 20 11 12 16 13 15 7 -3 -6 -18 -5 -18 15 3 24 24 36 29 25 10 -6 -10 -4
-10 7 0 7 6 21 12 32 12 10 0 15 4 12 10 -3 6 1 7 9 4 9 -3 16 -1 16 5 0 6 5
11 11 11 5 0 7 -5 3 -11 -3 -6 5 -4 18 5 14 9 28 13 33 9 4 -5 5 -3 1 4 -3 6
-2 14 4 18 5 3 10 1 10 -6 0 -8 3 -9 13 0 8 6 17 8 20 4 4 -3 7 -1 7 6 0 8 7
11 15 7 8 -3 15 -1 15 5 0 6 5 7 10 4 6 -3 10 -1 10 5 0 6 4 9 9 6 5 -4 12 0
14 6 4 9 6 9 6 1 1 -14 51 7 51 22 0 6 5 3 10 -5 6 -10 10 -11 10 -2 0 6 7 12
15 12 8 0 15 5 15 11 0 5 4 8 9 5 5 -4 22 -1 38 6 15 6 31 11 36 10 4 -1 7 3
7 9 0 5 5 7 10 4 6 -4 18 -1 27 7 14 11 16 11 9 -2 -6 -12 -4 -11 6 1 7 9 19
14 27 11 8 -3 11 0 7 7 -4 7 -2 9 8 5 8 -3 28 2 45 11 17 8 31 13 31 11 0 -3
13 0 30 5 16 6 28 15 25 19 -3 4 5 6 17 2 15 -4 19 -2 13 8 -6 10 -4 10 11 2
14 -8 25 -6 44 8 14 9 33 16 43 15 9 -2 14 1 11 7 -3 5 0 9 7 7 29 -3 40 1 33
14 -5 8 -2 8 9 -2 13 -10 17 -10 17 -1 0 7 6 10 14 7 8 -3 20 1 27 9 7 8 18
13 25 10 7 -3 16 -1 19 4 3 5 12 7 20 3 8 -3 15 0 15 7 0 6 4 9 9 5 5 -3 12
-1 16 5 4 6 11 8 16 5 5 -4 9 -1 9 5 0 6 5 8 10 5 6 -4 24 1 41 9 17 9 35 13
40 10 5 -3 9 -1 9 5 0 6 7 7 17 4 12 -5 14 -3 8 8 -7 12 -6 12 7 1 13 -10 17
-10 21 3 4 8 13 12 22 9 9 -4 15 -1 15 7 0 11 3 11 10 -1 5 -8 10 -10 10 -5 0
13 69 40 77 31 3 -3 12 2 20 12 8 9 12 11 8 5 -3 -7 -2 -13 3 -13 6 0 12 6 15
14 3 8 16 12 31 11 14 -2 26 0 26 4 0 4 7 8 15 9 8 1 22 3 30 4 8 1 15 5 15 9
0 4 9 6 20 4 11 -2 20 1 20 6 0 6 9 7 21 4 15 -5 19 -4 15 4 -5 7 2 12 18 13
48 2 51 3 57 11 3 4 16 9 27 10 12 1 22 6 22 11 0 5 3 6 7 3 3 -4 13 -1 21 6
13 9 14 9 8 0 -5 -9 -2 -11 8 -7 9 3 16 9 16 13 0 4 11 8 25 9 46 3 55 5 55
12 0 4 7 7 15 8 8 1 22 3 30 4 8 1 15 5 15 10 0 5 5 6 10 3 6 -3 10 0 10 7 0
11 2 11 9 0 6 -11 11 -10 25 3 11 11 25 15 41 11 16 -4 25 -2 25 5 0 6 9 9 20
6 11 -3 23 0 27 5 4 7 1 8 -7 3 -8 -5 -11 -4 -7 2 3 5 16 9 29 8 13 -1 26 3
30 9 5 8 8 7 8 -1 0 -7 6 -10 14 -7 8 3 13 12 12 19 -3 19 -16 32 -16 16 0 -7
-5 -9 -10 -6 -6 4 -7 11 -4 17 5 7 1 9 -9 5 -10 -3 -17 -3 -17 1 0 4 -12 8
-26 9 -15 0 -30 7 -35 15 -6 10 -9 10 -9 1 0 -7 -5 -13 -11 -13 -5 0 -7 4 -4
10 3 5 -7 13 -22 16 -15 4 -38 14 -50 22 -19 12 -23 12 -23 1 0 -11 -2 -11
-10 1 -5 8 -10 11 -10 5 0 -5 -5 -2 -11 7 -5 10 -16 15 -24 11 -9 -3 -22 0
-30 7 -8 6 -19 9 -25 5 -5 -3 -13 0 -16 9 -4 9 -16 13 -35 11 -17 -3 -27 0
-24 5 4 6 -3 10 -14 10 -12 0 -21 4 -21 8 0 4 -12 9 -26 10 -15 1 -33 7 -40
13 -7 6 -18 8 -24 4 -5 -3 -12 0 -15 7 -3 8 -17 15 -31 16 -14 1 -35 7 -47 14
-12 7 -28 11 -34 10 -7 -2 -13 2 -13 8 0 5 -3 9 -7 9 -22 -4 -33 2 -27 14 5 8
2 8 -9 -2 -13 -11 -17 -11 -17 -1 0 8 -3 10 -6 7 -4 -3 -16 -1 -28 6 -11 6
-25 12 -31 13 -28 1 -83 29 -78 38 4 6 0 5 -9 -2 -12 -10 -18 -10 -27 2 -7 8
-19 12 -27 9 -8 -3 -14 0 -14 7 0 10 -4 9 -16 0 -12 -11 -15 -11 -12 0 2 8 -1
14 -7 15 -5 0 -16 4 -24 9 -10 7 -12 5 -7 -5 4 -8 1 -6 -8 5 -8 10 -22 16 -30
13 -8 -3 -16 -2 -18 3 -2 5 -13 11 -25 13 -12 2 -26 6 -29 10 -4 4 -16 7 -26
7 -10 0 -18 4 -18 8 0 4 -8 8 -18 9 -25 2 -46 7 -52 13 -16 16 -50 29 -50 19
0 -6 -14 0 -32 12 -17 13 -28 18 -24 11 5 -8 2 -10 -8 -6 -9 3 -16 10 -16 14
0 5 -9 6 -20 3 -11 -3 -20 -1 -20 4 0 5 -12 10 -27 11 -16 1 -30 7 -31 13 -3
6 -9 6 -18 -2 -11 -9 -14 -8 -14 1 0 8 -3 10 -7 7 -3 -4 -12 1 -20 11 -8 9
-12 12 -9 5 4 -7 -1 -11 -14 -10 -11 1 -20 5 -20 9 0 4 -11 8 -25 8 -14 0 -25
6 -25 13 0 8 -4 7 -10 -3 -7 -12 -10 -12 -10 -1 0 7 -6 11 -15 7 -8 -3 -15 0
-15 7 0 8 -4 6 -10 -3 -7 -11 -10 -11 -10 -2 0 7 -4 10 -10 7 -5 -3 -10 -1
-10 6 0 7 -3 9 -7 6 -3 -4 -13 -1 -21 6 -13 10 -14 9 -7 -3 7 -12 6 -13 -7 -3
-8 7 -18 10 -21 6 -4 -3 -7 -1 -7 6 0 9 -5 9 -21 0 -15 -8 -19 -8 -15 0 6 9
-17 16 -27 9 -2 -2 -11 3 -20 11 -12 9 -17 10 -17 2 0 -7 -5 -9 -10 -6 -6 4
-7 11 -4 17 4 6 -1 6 -14 -1 -14 -7 -23 -8 -27 -1 -4 6 -11 8 -16 5 -5 -4 -9
-2 -9 4 0 10 -8 11 -62 12 -16 1 -28 4 -28 9 0 4 -16 6 -35 5 -29 -1 -33 1
-22 13 10 13 9 14 -10 3 -16 -8 -23 -8 -23 -1 0 7 -7 7 -21 -1 -17 -9 -20 -8
-14 2 6 9 4 11 -7 6 -9 -3 -26 2 -39 10 -12 9 -19 11 -15 5 4 -7 2 -12 -3 -12
-6 0 -11 6 -11 13 0 8 -4 7 -10 -3 -5 -8 -10 -10 -10 -3 0 6 -16 11 -36 11
-19 0 -38 3 -41 6 -3 3 -12 1 -20 -6 -11 -9 -12 -7 -7 7 6 15 4 16 -14 6 -13
-7 -23 -7 -27 -1 -3 5 -13 6 -22 3 -9 -4 -14 -2 -11 3 4 5 -8 10 -25 11 -18 1
-48 3 -67 4 -20 2 -41 0 -47 -4 -6 -4 -14 -3 -17 2 -3 5 -15 7 -26 4 -13 -3
-20 0 -20 8 0 9 -3 10 -8 4 -4 -5 -17 -10 -28 -11 -16 0 -20 4 -16 15 4 13 3
14 -9 5 -18 -13 -57 -16 -64 -3 -4 5 -14 5 -26 -1 -11 -7 -19 -7 -19 -1 0 10
-19 9 -37 -2 -7 -5 -13 -4 -13 0 0 5 -9 9 -20 9 -11 0 -20 -5 -20 -10 0 -6 -4
-6 -11 1 -7 7 -23 8 -45 3 -19 -4 -36 -4 -39 1 -3 4 -17 4 -30 -1 -17 -6 -25
-6 -25 1 0 6 -5 7 -12 2 -18 -11 -32 -10 -40 2 -5 6 -8 2 -8 -8 0 -17 -1 -17
-16 -2 -12 11 -19 13 -24 5 -4 -6 -19 -9 -33 -6 -15 3 -27 2 -27 -2 0 -4 -21
-7 -47 -6 -27 0 -51 -5 -55 -10 -5 -8 -8 -8 -8 0 0 11 -35 13 -45 2 -3 -3 -19
-4 -36 -2 -16 2 -27 0 -24 -5 3 -5 0 -13 -6 -17 -7 -4 -9 -3 -5 4 3 6 2 13 -4
17 -5 3 -10 1 -10 -5 0 -7 -6 -8 -18 -1 -13 7 -23 6 -30 -1 -7 -7 -12 -8 -12
-4 0 5 -7 3 -15 -4 -8 -7 -15 -9 -15 -5 0 4 -7 2 -15 -5 -13 -11 -14 -10 -8 6
6 17 5 17 -10 5 -9 -7 -24 -11 -32 -7 -8 3 -15 1 -15 -4 0 -6 -5 -10 -11 -10
-5 0 -7 6 -3 13 4 6 -1 4 -12 -5 -13 -11 -24 -14 -34 -8 -9 5 -19 5 -27 -1 -6
-6 -20 -9 -30 -7 -10 1 -24 -1 -30 -5 -7 -5 -13 -5 -13 0 0 4 -5 1 -10 -7 -8
-12 -10 -12 -10 -1 0 11 -3 11 -15 1 -12 -10 -15 -10 -15 1 0 10 -2 11 -8 2
-4 -7 -25 -14 -47 -17 -22 -2 -40 -5 -40 -6 0 -1 -18 -4 -40 -6 -22 -2 -46 -5
-52 -6 -7 -1 -13 -6 -13 -11 0 -5 -8 -3 -17 4 -11 10 -14 10 -9 2 7 -13 -3
-17 -37 -13 -10 1 -25 -4 -33 -10 -8 -7 -14 -8 -14 -3 0 5 -7 10 -15 10 -8 0
-12 -4 -9 -9 4 -7 -26 -13 -48 -9 -5 0 -8 -3 -8 -8 0 -12 -53 -9 -62 4 -4 5
-8 -1 -8 -15 0 -20 -2 -22 -10 -10 -9 13 -10 13 -10 0 0 -13 -1 -13 -10 0 -9
13 -12 13 -24 -3 -11 -14 -15 -15 -19 -5 -4 11 -6 11 -6 0 -1 -7 -6 -10 -11
-7 -6 4 -18 1 -27 -7 -12 -9 -15 -9 -9 -1 5 9 2 11 -8 7 -9 -3 -14 -9 -12 -13
3 -4 -9 -7 -27 -6 -40 1 -59 -4 -51 -16 3 -5 -2 -6 -11 -3 -8 4 -27 -2 -41
-11 -15 -9 -24 -13 -20 -7 3 6 -4 9 -18 8 -16 0 -21 -5 -16 -12 6 -7 -1 -9
-20 -8 -17 1 -30 -2 -30 -7 0 -4 -7 -6 -15 -3 -8 4 -15 1 -15 -4 0 -6 -9 -9
-20 -7 -11 2 -20 0 -20 -4 0 -7 -8 -9 -47 -12 -10 -1 -26 -9 -35 -17 -10 -8
-18 -12 -18 -7 0 4 -12 0 -26 -10 -18 -11 -24 -12 -18 -4 6 11 5 12 -8 2 -8
-7 -18 -10 -21 -6 -4 3 -7 1 -7 -6 0 -8 -7 -11 -15 -7 -8 3 -15 1 -15 -5 0 -6
-7 -8 -16 -5 -8 3 -12 2 -9 -4 3 -6 -3 -10 -14 -10 -12 0 -21 -4 -21 -10 0 -5
-7 -7 -15 -4 -8 4 -17 -1 -21 -10 -3 -9 -10 -16 -16 -16 -5 0 -6 5 -3 11 4 6
-2 5 -14 -3 -12 -7 -21 -17 -21 -21 0 -5 -7 -7 -15 -3 -8 3 -15 1 -15 -5 0 -6
-5 -7 -12 -3 -7 5 -9 2 -6 -7 4 -10 -1 -15 -15 -17 -12 0 -23 -6 -25 -12 -2
-5 -8 -8 -13 -4 -5 3 -9 0 -9 -6 0 -7 -7 -10 -15 -6 -9 3 -15 0 -15 -9 0 -8
-7 -15 -15 -15 -8 0 -15 -5 -15 -11 0 -5 -4 -8 -8 -5 -5 3 -16 -4 -25 -15 -9
-10 -24 -19 -32 -19 -9 0 -13 -4 -10 -10 3 -5 -1 -10 -9 -10 -9 0 -16 -5 -16
-11 0 -5 -4 -8 -9 -5 -5 3 -11 -1 -15 -9 -3 -8 -12 -15 -20 -15 -9 0 -20 -9
-26 -20 -6 -11 -15 -18 -20 -15 -5 3 -14 -4 -20 -15 -6 -11 -15 -18 -20 -15
-6 3 -15 -5 -21 -19 -7 -14 -15 -23 -19 -21 -11 7 -51 -25 -45 -36 4 -5 -1 -9
-9 -9 -8 0 -29 -13 -46 -30 -16 -16 -30 -27 -30 -24 0 4 -13 -8 -29 -25 -15
-16 -31 -28 -34 -25 -3 3 -8 -4 -12 -15 -3 -12 -11 -19 -16 -16 -5 4 -9 1 -9
-5 0 -6 -4 -8 -10 -5 -5 3 -10 -2 -10 -11 0 -10 -3 -15 -6 -11 -3 3 -19 -8
-35 -24 -16 -16 -29 -26 -29 -22 -1 4 -7 -3 -15 -17 -8 -14 -14 -21 -15 -17 0
4 -18 -10 -39 -32 -21 -22 -41 -37 -44 -35 -3 3 -8 -4 -12 -15 -3 -12 -11 -19
-16 -15 -5 3 -6 10 -3 16 4 7 2 8 -5 4 -6 -4 -9 -12 -5 -17 5 -9 -27 -49 -40
-49 -9 0 29 58 60 93 16 17 28 35 26 40 -1 4 5 7 15 7 9 0 13 3 10 6 -4 4 3
15 15 25 11 11 18 19 15 19 -4 0 1 9 10 19 9 11 20 18 25 15 5 -3 8 -2 7 3 -3
20 2 34 11 28 9 -6 14 8 11 28 0 4 6 7 14 7 8 0 15 5 15 11 0 5 5 7 10 4 6 -4
10 -3 9 2 -4 17 14 43 30 43 14 0 14 2 1 10 -11 7 -12 10 -2 10 7 0 20 7 28
15 9 8 13 15 9 15 -3 0 0 6 7 14 7 8 16 12 19 10 4 -2 9 6 12 17 3 12 10 18
17 14 6 -4 9 -1 8 7 -2 7 3 12 10 10 6 -1 11 1 11 5 -3 18 1 33 9 31 4 -2 7
-1 8 2 1 12 57 65 66 62 5 -1 7 2 3 8 -3 5 -1 10 4 10 6 0 11 8 11 17 0 9 2
14 5 11 7 -6 85 71 85 83 0 5 8 9 17 9 9 0 14 3 10 6 -3 4 20 32 51 62 31 31
56 60 55 64 -2 4 4 5 12 2 8 -4 15 -1 15 6 0 19 171 181 184 173 6 -4 4 2 -4
13 -8 10 -11 16 -6 12 5 -4 17 3 27 15 10 12 18 19 19 15 0 -3 24 17 53 45 28
29 55 51 59 49 5 -1 7 1 6 6 -2 4 26 36 62 72 35 36 61 58 56 50 -4 -8 1 -5
12 7 11 12 23 19 26 15 4 -3 4 2 0 12 -5 14 -4 17 4 12 7 -4 12 -1 12 8 0 10
6 13 17 9 13 -5 15 -2 10 11 -4 10 -3 15 3 11 6 -3 10 -1 10 6 0 7 3 10 6 7 3
-4 24 13 47 37 22 24 44 42 49 39 4 -3 8 2 8 10 0 9 7 16 16 16 8 0 13 4 10 8
-3 5 6 15 19 22 14 7 25 20 25 27 0 8 5 11 10 8 6 -3 10 -1 10 5 0 6 5 8 10 5
6 -3 10 1 10 9 0 8 9 18 21 21 11 4 18 9 15 12 -3 4 8 16 24 28 16 12 26 25
22 29 -4 4 -2 7 3 6 22 -5 35 1 35 16 0 8 4 13 9 9 5 -3 12 4 16 15 3 11 11
20 17 20 6 0 21 11 34 26 13 14 24 22 24 17 0 -4 7 3 16 15 8 12 20 19 26 16
7 -4 8 -2 4 5 -4 6 0 14 11 18 10 4 24 15 31 25 7 10 18 15 24 12 7 -4 8 -2 4
5 -4 6 0 14 8 17 9 3 13 11 9 17 -3 5 -1 7 4 4 6 -4 32 14 58 38 26 25 51 45
57 45 5 0 6 5 3 10 -3 6 1 10 9 10 9 0 16 5 16 11 0 6 7 8 16 5 8 -3 12 -2 9
4 -3 6 -1 10 6 10 7 0 9 3 5 7 -4 5 -35 8 -68 9 -35 1 -54 -2 -47 -7 10 -6 7
-8 -8 -6 -12 0 -20 4 -17 8 5 9 -23 5 -32 -4 -4 -3 -15 -2 -25 4 -14 7 -17 6
-14 -3z m-48 -6218 c7 -14 13 -19 13 -12 0 8 6 6 18 -5 10 -10 18 -20 16 -21
-5 -7 -74 30 -74 40 0 5 5 6 12 2 7 -4 8 -3 4 5 -6 9 -11 9 -21 1 -9 -7 -16
-6 -24 3 -9 11 -6 14 16 13 19 -1 32 -9 40 -26z"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 34 KiB

View File

@ -1,6 +0,0 @@
// Hacky fix for browsers ignoring autocomplete="off"
$(document).ready(function() {
$('.form-autocomplete-stop').on('click', function () {
$(this).removeAttr('readonly').blur().focus();
});
});

View File

@ -1,121 +0,0 @@
/* global define, KeyboardEvent, module */
(function () {
var keyboardeventKeyPolyfill = {
polyfill: polyfill,
keys: {
3: 'Cancel',
6: 'Help',
8: 'Backspace',
9: 'Tab',
12: 'Clear',
13: 'Enter',
16: 'Shift',
17: 'Control',
18: 'Alt',
19: 'Pause',
20: 'CapsLock',
27: 'Escape',
28: 'Convert',
29: 'NonConvert',
30: 'Accept',
31: 'ModeChange',
32: ' ',
33: 'PageUp',
34: 'PageDown',
35: 'End',
36: 'Home',
37: 'ArrowLeft',
38: 'ArrowUp',
39: 'ArrowRight',
40: 'ArrowDown',
41: 'Select',
42: 'Print',
43: 'Execute',
44: 'PrintScreen',
45: 'Insert',
46: 'Delete',
48: ['0', ')'],
49: ['1', '!'],
50: ['2', '@'],
51: ['3', '#'],
52: ['4', '$'],
53: ['5', '%'],
54: ['6', '^'],
55: ['7', '&'],
56: ['8', '*'],
57: ['9', '('],
91: 'OS',
93: 'ContextMenu',
144: 'NumLock',
145: 'ScrollLock',
181: 'VolumeMute',
182: 'VolumeDown',
183: 'VolumeUp',
186: [';', ':'],
187: ['=', '+'],
188: [',', '<'],
189: ['-', '_'],
190: ['.', '>'],
191: ['/', '?'],
192: ['`', '~'],
219: ['[', '{'],
220: ['\\', '|'],
221: [']', '}'],
222: ["'", '"'],
224: 'Meta',
225: 'AltGraph',
246: 'Attn',
247: 'CrSel',
248: 'ExSel',
249: 'EraseEof',
250: 'Play',
251: 'ZoomOut'
}
};
// Function keys (F1-24).
var i;
for (i = 1; i < 25; i++) {
keyboardeventKeyPolyfill.keys[111 + i] = 'F' + i;
}
// Printable ASCII characters.
var letter = '';
for (i = 65; i < 91; i++) {
letter = String.fromCharCode(i);
keyboardeventKeyPolyfill.keys[i] = [letter.toLowerCase(), letter.toUpperCase()];
}
function polyfill () {
if (!('KeyboardEvent' in window) ||
'key' in KeyboardEvent.prototype) {
return false;
}
// Polyfill `key` on `KeyboardEvent`.
var proto = {
get: function (x) {
var key = keyboardeventKeyPolyfill.keys[this.which || this.keyCode];
if (Array.isArray(key)) {
key = key[+this.shiftKey];
}
return key;
}
};
Object.defineProperty(KeyboardEvent.prototype, 'key', proto);
return proto;
}
if (typeof define === 'function' && define.amd) {
define('keyboardevent-key-polyfill', keyboardeventKeyPolyfill);
} else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {
module.exports = keyboardeventKeyPolyfill;
} else if (window) {
window.keyboardeventKeyPolyfill = keyboardeventKeyPolyfill;
}
})();

File diff suppressed because one or more lines are too long

View File

@ -1,232 +0,0 @@
/**
* Bootsnip - "Bootstrap Checkboxes/Radios"
* Bootstrap 3.2.0 Snippet by i-heart-php <http://bootsnipp.com/i-heart-php>
*
* Copyright (c) 2013 Bootsnipp.com
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
.checkbox {
padding-left: 20px;
}
.checkbox label {
display: inline-block;
position: relative;
padding-left: 5px;
}
.checkbox label::before {
content: "";
display: inline-block;
position: absolute;
width: 17px;
height: 17px;
left: 0;
top: 2.5px;
margin-left: -20px;
border: 1px solid #cccccc;
border-radius: 3px;
background-color: #fff;
-webkit-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
-o-transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
transition: border 0.15s ease-in-out, color 0.15s ease-in-out;
}
.checkbox label::after {
display: inline-block;
position: absolute;
width: 16px;
height: 16px;
left: 0;
top: 2.5px;
margin-left: -20px;
padding-left: 3px;
padding-top: 1px;
font-size: 11px;
color: #555555;
}
.checkbox input[type="checkbox"] {
opacity: 0;
}
.checkbox input[type="checkbox"]:focus + label::before {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.checkbox input[type="checkbox"]:checked + label::after {
font-family: 'FontAwesome';
content: "\f00c";
}
.checkbox input[type="checkbox"]:disabled + label {
opacity: 0.65;
}
.checkbox input[type="checkbox"]:disabled + label::before {
background-color: #eeeeee;
cursor: not-allowed;
}
.checkbox.checkbox-circle label::before {
border-radius: 50%;
}
.checkbox.checkbox-inline {
margin-top: 0;
}
.checkbox-primary input[type="checkbox"]:checked + label::before {
background-color: #428bca;
border-color: #428bca;
}
.checkbox-primary input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-danger input[type="checkbox"]:checked + label::before {
background-color: #d9534f;
border-color: #d9534f;
}
.checkbox-danger input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-info input[type="checkbox"]:checked + label::before {
background-color: #5bc0de;
border-color: #5bc0de;
}
.checkbox-info input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-warning input[type="checkbox"]:checked + label::before {
background-color: #f0ad4e;
border-color: #f0ad4e;
}
.checkbox-warning input[type="checkbox"]:checked + label::after {
color: #fff;
}
.checkbox-success input[type="checkbox"]:checked + label::before {
background-color: #5cb85c;
border-color: #5cb85c;
}
.checkbox-success input[type="checkbox"]:checked + label::after {
color: #fff;
}
.radio {
padding-left: 20px;
}
.radio label {
display: inline-block;
position: relative;
padding-left: 5px;
}
.radio label::before {
content: "";
display: inline-block;
position: absolute;
width: 17px;
height: 17px;
left: 0;
margin-left: -20px;
border: 1px solid #cccccc;
border-radius: 50%;
background-color: #fff;
-webkit-transition: border 0.15s ease-in-out;
-o-transition: border 0.15s ease-in-out;
transition: border 0.15s ease-in-out;
}
.radio label::after {
display: inline-block;
position: absolute;
content: " ";
width: 11px;
height: 11px;
left: 3px;
top: 3px;
margin-left: -20px;
border-radius: 50%;
background-color: #555555;
-webkit-transform: scale(0, 0);
-ms-transform: scale(0, 0);
-o-transform: scale(0, 0);
transform: scale(0, 0);
-webkit-transition: -webkit-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
-moz-transition: -moz-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
-o-transition: -o-transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
transition: transform 0.1s cubic-bezier(0.8, -0.33, 0.2, 1.33);
}
.radio input[type="radio"] {
opacity: 0;
}
.radio input[type="radio"]:focus + label::before {
outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px;
}
.radio input[type="radio"]:checked + label::after {
-webkit-transform: scale(1, 1);
-ms-transform: scale(1, 1);
-o-transform: scale(1, 1);
transform: scale(1, 1);
}
.radio input[type="radio"]:disabled + label {
opacity: 0.65;
}
.radio input[type="radio"]:disabled + label::before {
cursor: not-allowed;
}
.radio.radio-inline {
margin-top: 0;
}
.radio-primary input[type="radio"] + label::after {
background-color: #428bca;
}
.radio-primary input[type="radio"]:checked + label::before {
border-color: #428bca;
}
.radio-primary input[type="radio"]:checked + label::after {
background-color: #428bca;
}
.radio-danger input[type="radio"] + label::after {
background-color: #d9534f;
}
.radio-danger input[type="radio"]:checked + label::before {
border-color: #d9534f;
}
.radio-danger input[type="radio"]:checked + label::after {
background-color: #d9534f;
}
.radio-info input[type="radio"] + label::after {
background-color: #5bc0de;
}
.radio-info input[type="radio"]:checked + label::before {
border-color: #5bc0de;
}
.radio-info input[type="radio"]:checked + label::after {
background-color: #5bc0de;
}
.radio-warning input[type="radio"] + label::after {
background-color: #f0ad4e;
}
.radio-warning input[type="radio"]:checked + label::before {
border-color: #f0ad4e;
}
.radio-warning input[type="radio"]:checked + label::after {
background-color: #f0ad4e;
}
.radio-success input[type="radio"] + label::after {
background-color: #5cb85c;
}
.radio-success input[type="radio"]:checked + label::before {
border-color: #5cb85c;
}
.radio-success input[type="radio"]:checked + label::after {
background-color: #5cb85c;
}

View File

@ -1,297 +0,0 @@
/**
* Pterodactyl - Panel
* Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
@import 'checkbox.css';
.login-page {
height: auto;
}
.login-box, .register-box {
width: 40%;
max-width: 500px;
margin: 7% auto;
}
@media (max-width:768px) {
.login-box, .register-box {
width: 90%;
margin-top: 20px
}
}
.weight-100 {
font-weight: 100;
}
.weight-300 {
font-weight: 300;
}
.btn-clear {
background: transparent;
}
.user-panel > .info {
position: relative;
left: 0;
}
code {
font-size: 85%;
}
.control-sidebar-dark .control-sidebar-menu > li > a.active {
background: #1e282c;
}
.callout-nomargin {
margin: 0;
}
.table {
font-size: 14px !important;
}
.middle, .align-middle {
vertical-align: middle !important;
}
#fileOptionMenu.dropdown-menu > li > a {
padding:3px 6px;
}
.hasFileHover {
border: 2px dashed #0087F7;
border-top: 0 !important;
border-radius: 5px;
margin: 0;
opacity: 0.5;
}
.hasFileHover * {
pointer-events: none !important;
}
td.has-progress {
padding: 0px !important;
border-top: 0px !important;
}
.progress.progress-table-bottom {
margin: 0 !important;
height:5px !important;
padding:0;
border:0;
}
.muted {
filter: alpha(opacity=20);
opacity: 0.2;
}
.muted-hover:hover {
filter: alpha(opacity=100);
opacity: 1;
}
.use-pointer {
cursor: pointer !important;
}
.input-loader {
display: none;
position:relative;
top: -25px;
float: right;
right: 5px;
color: #cccccc;
height: 0;
}
.box-header > .form-group {
margin-bottom: 0;
}
.box-header > .form-group > div > p.small {
margin: 0;
}
.no-margin {
margin: 0 !important;
}
li.select2-results__option--highlighted[aria-selected="false"] > .user-block > .username > a {
color: #fff;
}
li.select2-results__option--highlighted[aria-selected="false"] > .user-block > .description {
color: #eee;
}
.select2-selection.select2-selection--multiple {
min-height: 36px !important;
}
.select2-search--inline .select2-search__field:focus {
outline: none;
border: 0 !important;
}
.img-bordered-xs {
border: 1px solid #d2d6de;
padding: 1px;
}
span[aria-labelledby="select2-pUserId-container"] {
padding-left: 2px !important;
}
.callout-slim a {
color: #555 !important;
}
.callout.callout-info.callout-slim {
border: 1px solid #0097bc !important;
border-left: 5px solid #0097bc !important;
border-right: 5px solid #0097bc !important;
color: #777 !important;
background: transparent !important;
}
.callout.callout-danger.callout-slim {
border: 1px solid #c23321 !important;
border-left: 5px solid #c23321 !important;
border-right: 5px solid #c23321 !important;
color: #777 !important;
background: transparent !important;
}
.callout.callout-warning.callout-slim {
border: 1px solid #c87f0a !important;
border-left: 5px solid #c87f0a !important;
border-right: 5px solid #c87f0a !important;
color: #777 !important;
background: transparent !important;
}
.callout.callout-success.callout-slim {
border: 1px solid #00733e !important;
border-left: 5px solid #00733e !important;
border-right: 5px solid #00733e !important;
color: #777 !important;
background: transparent !important;
}
.callout.callout-default.callout-slim {
border: 1px solid #eee !important;
border-left: 5px solid #eee !important;
border-right: 5px solid #eee !important;
color: #777 !important;
background: transparent !important;
}
.tab-pane .box-footer {
margin: 0 -10px -10px;
}
.select2-container{ width: 100% !important; }
.nav-tabs-custom > .nav-tabs > li:hover {
border-top-color:#3c8dbc;
}
.nav-tabs-custom > .nav-tabs > li.active.tab-danger, .nav-tabs-custom > .nav-tabs > li.tab-danger:hover {
border-top-color: #c23321;
}
.nav-tabs-custom > .nav-tabs > li.active.tab-success, .nav-tabs-custom > .nav-tabs > li.tab-success:hover {
border-top-color: #00733e;
}
.nav-tabs-custom > .nav-tabs > li.active.tab-info, .nav-tabs-custom > .nav-tabs > li.tab-info:hover {
border-top-color: #0097bc;
}
.nav-tabs-custom > .nav-tabs > li.active.tab-warning, .nav-tabs-custom > .nav-tabs > li.tab-warning:hover {
border-top-color: #c87f0a;
}
.nav-tabs-custom.nav-tabs-floating > .nav-tabs {
border-bottom: 0px !important;
}
.nav-tabs-custom.nav-tabs-floating > .nav-tabs > li {
margin-bottom: 0px !important;
}
.nav-tabs-custom.nav-tabs-floating > .nav-tabs > li:first-child.active,
.nav-tabs-custom.nav-tabs-floating > .nav-tabs > li:first-child:hover {
border-radius: 3px 0 0 0;
}
.nav-tabs-custom.nav-tabs-floating > .nav-tabs > li:first-child.active > a {
border-radius: 0 0 0 3px;
}
.position-relative {
position: relative;
}
.no-margin-bottom {
margin-bottom: 0 !important;
}
.btn-icon > i.fa {
line-height: 1.5;
}
.strong {
font-weight: bold !important;
}
.server-description > td {
padding-top: 0 !important;
border-top: 0 !important;
}
tr:hover + tr.server-description {
background-color: #f5f5f5 !important;
}
.login-corner-info {
position: absolute;
bottom: 5px;
right: 10px;
}
input.form-autocomplete-stop[readonly] {
background: inherit;
cursor: text;
}
/* fix Google Recaptcha badge */
.grecaptcha-badge {
bottom: 54px !important;
background: white;
box-shadow: none !important;
}

View File

@ -1,102 +0,0 @@
/*Design for Terminal*/
@import url('https://fonts.googleapis.com/css?family=Source+Code+Pro');
#terminal-body {
background: rgb(26, 26, 26);
margin: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
#terminal {
font-family: 'Source Code Pro', monospace;
color: rgb(223, 223, 223);
background: rgb(26, 26, 26);
font-size: 12px;
line-height: 14px;
padding: 10px 10px 0;
box-sizing: border-box;
height: 500px;
max-height: 500px;
overflow-y: auto;
overflow-x: hidden;
border-radius: 5px 5px 0 0;
}
#terminal > .cmd {
padding: 1px 0;
}
#terminal_input {
width: 100%;
background: rgb(26, 26, 26);
border-radius: 0 0 5px 5px;
padding: 0 0 0 10px !important;
}
.terminal_input--input, .terminal_input--prompt {
font-family: 'Source Code Pro', monospace;
margin-bottom: 0;
border: 0 !important;
background: transparent !important;
color: rgb(223, 223, 223);
font-size: 12px;
padding: 1px 0 4px !important;
}
.terminal_input--input {
margin-left: 6px;
line-height: 1;
outline: none !important;
}
.terminal-notify {
position: absolute;
right: 30px;
bottom: 30px;
padding: 3.5px 7px;
border-radius: 3px;
background: #fff;
color: #000;
opacity: .5;
font-size: 16px;
cursor: pointer;
}
.terminal-notify:hover {
opacity: .9;
}
.ansi-black-fg { color: rgb(0, 0, 0); }
.ansi-red-fg { color: rgb(166, 0, 44); }
.ansi-green-fg { color: rgb(55, 106, 27); }
.ansi-yellow-fg { color: rgb(241, 133, 24); }
.ansi-blue-fg { color: rgb(17, 56, 163); }
.ansi-magenta-fg { color: rgb(67, 0, 117); }
.ansi-cyan-fg { color: rgb(18, 95, 105); }
.ansi-white-fg { color: rgb(255, 255, 255); }
.ansi-bright-black-fg { color: rgb(51, 51, 51); }
.ansi-bright-red-fg { color: rgb(223, 45, 39); }
.ansi-bright-green-fg { color: rgb(105, 175, 45); }
.ansi-bright-yellow-fg { color: rgb(254, 232, 57); }
.ansi-bright-blue-fg { color: rgb(68, 145, 240); }
.ansi-bright-magenta-fg { color: rgb(151, 50, 174); }
.ansi-bright-cyan-fg{ color: rgb(37, 173, 98); }
.ansi-bright-white-fg { color: rgb(208, 208, 208); }
.ansi-black-bg { background: rgb(0, 0, 0); }
.ansi-red-bg { background: rgb(166, 0, 44); }
.ansi-green-bg { background: rgb(55, 106, 27); }
.ansi-yellow-bg { background: rgb(241, 133, 24); }
.ansi-blue-bg { background: rgb(17, 56, 163); }
.ansi-magenta-bg { background: rgb(67, 0, 117); }
.ansi-cyan-bg { background: rgb(18, 95, 105); }
.ansi-white-bg { background: rgb(255, 255, 255); }
.ansi-bright-black-bg { background: rgb(51, 51, 51); }
.ansi-bright-red-bg { background: rgb(223, 45, 39); }
.ansi-bright-green-bg { background: rgb(105, 175, 45); }
.ansi-bright-yellow-bg { background: rgb(254, 232, 57); }
.ansi-bright-blue-bg { background: rgb(68, 145, 240); }
.ansi-bright-magenta-bg { background: rgb(151, 50, 174); }
.ansi-bright-cyan-bg { background: rgb(37, 173, 98); }
.ansi-bright-white-bg { background: rgb(208, 208, 208); }

View File

@ -1,23 +0,0 @@
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
$.urlParam=function(name){var results=new RegExp("[\\?&]"+name+"=([^&#]*)").exec(decodeURIComponent(window.location.href));if(results==null){return null}else{return results[1]||0}};function getPageName(url){var index=url.lastIndexOf("/")+1;var filenameWithExtension=url.substr(index);var filename=filenameWithExtension.split(".")[0];return filename}
// Remeber Active Tab and Navigate to it on Reload
for(var queryParameters={},queryString=location.search.substring(1),re=/([^&=]+)=([^&]*)/g,m;m=re.exec(queryString);)queryParameters[decodeURIComponent(m[1])]=decodeURIComponent(m[2]);$("a[data-toggle='tab']").click(function(){queryParameters.tab=$(this).attr("href").substring(1),window.history.pushState(null,null,location.pathname+"?"+$.param(queryParameters))});
if($.urlParam('tab') != null){$('.nav.nav-tabs a[href="#' + $.urlParam('tab') + '"]').tab('show');}

View File

@ -1,190 +0,0 @@
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
$(document).ready(function() {
$('#pServiceId').select2({
placeholder: 'Select a Service',
}).change();
$('#pOptionId').select2({
placeholder: 'Select a Service Option',
});
$('#pPackId').select2({
placeholder: 'Select a Service Pack',
});
$('#pLocationId').select2({
placeholder: 'Select a Location',
}).change();
$('#pNodeId').select2({
placeholder: 'Select a Node',
});
$('#pAllocation').select2({
placeholder: 'Select a Default Allocation',
});
$('#pAllocationAdditional').select2({
placeholder: 'Select Additional Allocations',
});
$('#pUserId').select2({
ajax: {
url: Router.route('admin.users.json'),
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term, // search term
page: params.page,
};
},
processResults: function (data, params) {
return { results: data };
},
cache: true,
},
escapeMarkup: function (markup) { return markup; },
minimumInputLength: 2,
templateResult: function (data) {
if (data.loading) return data.text;
return '<div class="user-block"> \
<img class="img-circle img-bordered-xs" src="https://www.gravatar.com/avatar/' + data.md5 + '?s=120" alt="User Image"> \
<span class="username"> \
<a href="#">' + data.name_first + ' ' + data.name_last +'</a> \
</span> \
<span class="description"><strong>' + data.email + '</strong> - ' + data.username + '</span> \
</div>';
},
templateSelection: function (data) {
return '<div> \
<span> \
<img class="img-rounded img-bordered-xs" src="https://www.gravatar.com/avatar/' + data.md5 + '?s=120" style="height:28px;margin-top:-4px;" alt="User Image"> \
</span> \
<span style="padding-left:5px;"> \
' + data.name_first + ' ' + data.name_last + ' (<strong>' + data.email + '</strong>) \
</span> \
</div>';
}
});
});
function hideLoader() {
$('#allocationLoader').hide();
}
function showLoader() {
$('#allocationLoader').show();
}
var lastActiveBox = null;
$(document).on('click', function (event) {
if (lastActiveBox !== null) {
lastActiveBox.removeClass('box-primary');
}
lastActiveBox = $(event.target).closest('.box');
lastActiveBox.addClass('box-primary');
});
var currentLocation = null;
var curentNode = null;
var NodeData = [];
$('#pLocationId').on('change', function (event) {
showLoader();
currentLocation = $(this).val();
currentNode = null;
$.ajax({
method: 'POST',
url: Router.route('admin.servers.new.nodes'),
headers: { 'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content') },
data: { location: currentLocation },
}).done(function (data) {
NodeData = data;
$('#pNodeId').html('').select2({data: data}).change();
}).fail(function (jqXHR) {
cosole.error(jqXHR);
currentLocation = null;
}).always(hideLoader);
});
$('#pNodeId').on('change', function (event) {
currentNode = $(this).val();
$.each(NodeData, function (i, v) {
if (v.id == currentNode) {
$('#pAllocation').html('').select2({
data: v.allocations,
placeholder: 'Select a Default Allocation',
});
$('#pAllocationAdditional').html('').select2({
data: v.allocations,
placeholder: 'Select Additional Allocations',
})
}
});
});
$('#pServiceId').on('change', function (event) {
$('#pOptionId').html('').select2({
data: $.map(_.get(Pterodactyl.services, $(this).val() + '.options', []), function (item) {
return {
id: item.id,
text: item.name,
};
}),
}).change();
});
$('#pOptionId').on('change', function (event) {
var parentChain = _.get(Pterodactyl.services, $('#pServiceId').val(), null);
var objectChain = _.get(parentChain, 'options.' + $(this).val(), null);
$('#pDefaultContainer').val(_.get(objectChain, 'docker_image', 'not defined!'));
if (!_.get(objectChain, 'startup', false)) {
$('#pStartup').val(_.get(parentChain, 'startup', 'ERROR: Startup Not Defined!'));
} else {
$('#pStartup').val(_.get(objectChain, 'startup'));
}
$('#pPackId').html('').select2({
data: [{ id: 0, text: 'No Service Pack' }].concat(
$.map(_.get(objectChain, 'packs', []), function (item, i) {
return {
id: item.id,
text: item.name + ' (' + item.version + ')',
};
})
),
});
$('#appendVariablesTo').html('');
$.each(_.get(objectChain, 'variables', []), function (i, item) {
var isRequired = (item.required === 1) ? '<span class="label label-danger">Required</span> ' : '';
var dataAppend = ' \
<div class="form-group col-sm-6"> \
<label for="var_ref_' + item.id + '" class="control-label">' + isRequired + item.name + '</label> \
<input type="text" id="var_ref_' + item.id + '" autocomplete="off" name="env_' + item.env_variable + '" class="form-control" value="' + item.default_value + '" /> \
<p class="text-muted small">' + item.description + '<br /> \
<strong>Access in Startup:</strong> <code>{{' + item.env_variable + '}}</code><br /> \
<strong>Validation Rules:</strong> <code>' + item.rules + '</code></small></p> \
</div> \
';
$('#appendVariablesTo').append(dataAppend);
});
});

View File

@ -1,111 +0,0 @@
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
(function initSocket() {
if (typeof $.notifyDefaults !== 'function') {
console.error('Notify does not appear to be loaded.');
return;
}
if (typeof io !== 'function') {
console.error('Socket.io is reqired to use this panel.');
return;
}
$.notifyDefaults({
placement: {
from: 'bottom',
align: 'right'
},
newest_on_top: true,
delay: 2000,
animate: {
enter: 'animated zoomInDown',
exit: 'animated zoomOutDown'
}
});
var notifySocketError = false;
// Main Socket Object
window.Socket = io(Pterodactyl.node.scheme + '://' + Pterodactyl.node.fqdn + ':' + Pterodactyl.node.daemonListen + '/stats/', {
'query': 'token=' + Pterodactyl.node.daemonSecret,
});
// Socket Failed to Connect
Socket.io.on('connect_error', function (err) {
if(typeof notifySocketError !== 'object') {
notifySocketError = $.notify({
message: 'There was an error attempting to establish a WebSocket connection to the Daemon. This panel will not work as expected.<br /><br />' + err,
}, {
type: 'danger',
delay: 0
});
}
});
// Connected to Socket Successfully
Socket.on('connect', function () {
if (notifySocketError !== false) {
notifySocketError.close();
notifySocketError = false;
}
});
Socket.on('error', function (err) {
console.error('There was an error while attemping to connect to the websocket: ' + err + '\n\nPlease try loading this page again.');
});
Socket.on('live-stats', function (data) {
$.each(data.servers, function (uuid, info) {
var element = $('tr[data-server="' + uuid + '"]');
switch (info.status) {
case 0:
element.find('[data-action="status"]').html('<span class="label label-danger">Offline</span>');
break;
case 1:
element.find('[data-action="status"]').html('<span class="label label-success">Online</span>');
break;
case 2:
element.find('[data-action="status"]').html('<span class="label label-info">Starting</span>');
break;
case 3:
element.find('[data-action="status"]').html('<span class="label label-info">Stopping</span>');
break;
case 20:
element.find('[data-action="status"]').html('<span class="label label-warning">Installing</span>');
break;
case 30:
element.find('[data-action="status"]').html('<span class="label label-warning">Suspended</span>');
break;
}
if (info.status !== 0) {
var cpuMax = element.find('[data-action="cpu"]').data('cpumax');
var currentCpu = info.proc.cpu.total;
if (cpuMax !== 0) {
currentCpu = parseFloat(((info.proc.cpu.total / cpuMax) * 100).toFixed(2).toString());
}
element.find('[data-action="memory"]').html(parseInt(info.proc.memory.total / (1024 * 1024)));
element.find('[data-action="cpu"]').html(currentCpu);
} else {
element.find('[data-action="memory"]').html('--');
element.find('[data-action="cpu"]').html('--');
}
});
});
})();

View File

@ -1,131 +0,0 @@
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
(function () {
window.Editor = ace.edit('editor');
var Whitespace = ace.require('ace/ext/whitespace');
var Modelist = ace.require('ace/ext/modelist');
Editor.setTheme('ace/theme/chrome');
Editor.getSession().setUseWrapMode(true);
Editor.setShowPrintMargin(false);
if (typeof Pterodactyl !== 'undefined') {
if(typeof Pterodactyl.stat !== 'undefined') {
Editor.getSession().setMode(Modelist.getModeForPath(Pterodactyl.stat.name).mode);
}
}
Editor.commands.addCommand({
name: 'save',
bindKey: {win: 'Ctrl-S', mac: 'Command-S'},
exec: function(editor) {
if ($('#save_file').length) {
save();
} else if ($('#create_file').length) {
create();
}
},
readOnly: false
});
Editor.commands.addCommands(Whitespace.commands);
Whitespace.detectIndentation(Editor.session);
$('#save_file').on('click', function (e) {
e.preventDefault();
save();
});
$('#create_file').on('click', function (e) {
e.preventDefault();
create();
});
$('#aceMode').on('change', event => {
Editor.getSession().setMode('ace/mode/' + $('#aceMode').val());
});
function create() {
if (_.isEmpty($('#file_name').val())) {
$.notify({
message: 'No filename was passed.'
}, {
type: 'danger'
});
return;
}
$('#create_file').html('<i class="fa fa-spinner fa fa-spin"></i> Creating File').addClass('disabled');
$.ajax({
type: 'POST',
url: Router.route('server.files.save', { server: Pterodactyl.server.uuidShort }),
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content'),
},
data: {
file: $('#file_name').val(),
contents: Editor.getValue()
}
}).done(function (data) {
window.location.replace(Router.route('server.files.edit', {
server: Pterodactyl.server.uuidShort,
file: $('#file_name').val(),
}));
}).fail(function (jqXHR) {
$.notify({
message: jqXHR.responseText
}, {
type: 'danger'
});
}).always(function () {
$('#create_file').html('Create File').removeClass('disabled');
});
}
function save() {
var fileName = $('input[name="file"]').val();
$('#save_file').html('<i class="fa fw-fw fa-spinner fa-spin"></i> Saving File').addClass('disabled');
$.ajax({
type: 'POST',
url: Router.route('server.files.save', { server: Pterodactyl.server.uuidShort }),
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content'),
},
data: {
file: fileName,
contents: Editor.getValue()
}
}).done(function (data) {
$.notify({
message: 'File was successfully saved.'
}, {
type: 'success'
});
}).fail(function (jqXHR) {
$.notify({
message: jqXHR.responseText
}, {
type: 'danger'
});
}).always(function () {
$('#save_file').html('<i class="fa fa-fw fa-save"></i> &nbsp;Save File').removeClass('disabled');
});
}
})();

File diff suppressed because one or more lines are too long

View File

@ -1,401 +0,0 @@
"use strict";
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
class ActionsClass {
constructor(element, menu) {
this.element = element;
this.menu = menu;
}
destroy() {
this.element = undefined;
}
folder(path) {
let inputValue
if (path) {
inputValue = path
} else {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const currentName = decodeURIComponent(nameBlock.data('name'));
const currentPath = decodeURIComponent(nameBlock.data('path'));
if ($(this.element).data('type') === 'file') {
inputValue = currentPath;
} else {
inputValue = `${currentPath}${currentName}/`;
}
}
swal({
type: 'input',
title: 'Create Folder',
text: 'Please enter the path and folder name below.',
showCancelButton: true,
showConfirmButton: true,
closeOnConfirm: false,
showLoaderOnConfirm: true,
inputValue: inputValue
}, (val) => {
$.ajax({
type: 'POST',
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
},
contentType: 'application/json; charset=utf-8',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/folder`,
timeout: 10000,
data: JSON.stringify({
path: val,
}),
}).done(data => {
swal.close();
Files.list();
}).fail(jqXHR => {
console.error(jqXHR);
var error = 'An error occured while trying to process this request.';
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
error = jqXHR.responseJSON.error;
}
swal({
type: 'error',
title: '',
text: error,
});
});
});
}
move() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const currentName = decodeURIComponent(nameBlock.attr('data-name'));
const currentPath = decodeURIComponent(nameBlock.data('path'));
swal({
type: 'input',
title: 'Move File',
text: 'Please enter the new path for the file below.',
showCancelButton: true,
showConfirmButton: true,
closeOnConfirm: false,
showLoaderOnConfirm: true,
inputValue: `${currentPath}${currentName}`,
}, (val) => {
$.ajax({
type: 'POST',
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
},
contentType: 'application/json; charset=utf-8',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/move`,
timeout: 10000,
data: JSON.stringify({
from: `${currentPath}${currentName}`,
to: `${val}`,
}),
}).done(data => {
nameBlock.parent().addClass('warning').delay(200).fadeOut();
swal.close();
}).fail(jqXHR => {
console.error(jqXHR);
var error = 'An error occured while trying to process this request.';
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
error = jqXHR.responseJSON.error;
}
swal({
type: 'error',
title: '',
text: error,
});
});
});
}
rename() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const currentLink = nameBlock.find('a');
const currentName = decodeURIComponent(nameBlock.attr('data-name'));
const attachEditor = `
<input class="form-control input-sm" type="text" value="${currentName}" />
<span class="input-loader"><i class="fa fa-refresh fa-spin fa-fw"></i></span>
`;
nameBlock.html(attachEditor);
const inputField = nameBlock.find('input');
const inputLoader = nameBlock.find('.input-loader');
inputField.focus();
inputField.on('blur keydown', e => {
// Save Field
if (
(e.type === 'keydown' && e.which === 27)
|| e.type === 'blur'
|| (e.type === 'keydown' && e.which === 13 && currentName === inputField.val())
) {
if (!_.isEmpty(currentLink)) {
nameBlock.html(currentLink);
} else {
nameBlock.html(currentName);
}
inputField.remove();
ContextMenu.unbind().run();
return;
}
if (e.type === 'keydown' && e.which !== 13) return;
inputLoader.show();
const currentPath = decodeURIComponent(nameBlock.data('path'));
$.ajax({
type: 'POST',
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
},
contentType: 'application/json; charset=utf-8',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/rename`,
timeout: 10000,
data: JSON.stringify({
from: `${currentPath}${currentName}`,
to: `${currentPath}${inputField.val()}`,
}),
}).done(data => {
nameBlock.attr('data-name', inputField.val());
if (!_.isEmpty(currentLink)) {
let newLink = currentLink.attr('href');
if (nameBlock.parent().data('type') !== 'folder') {
newLink = newLink.substr(0, newLink.lastIndexOf('/')) + '/' + inputField.val();
}
currentLink.attr('href', newLink);
nameBlock.html(
currentLink.html(inputField.val())
);
} else {
nameBlock.html(inputField.val());
}
inputField.remove();
}).fail(jqXHR => {
console.error(jqXHR);
var error = 'An error occured while trying to process this request.';
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
error = jqXHR.responseJSON.error;
}
nameBlock.addClass('has-error').delay(2000).queue(() => {
nameBlock.removeClass('has-error').dequeue();
});
inputField.popover({
animation: true,
placement: 'top',
content: error,
title: 'Save Error'
}).popover('show');
}).always(() => {
inputLoader.remove();
ContextMenu.unbind().run();
});
});
}
copy() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const currentName = decodeURIComponent(nameBlock.attr('data-name'));
const currentPath = decodeURIComponent(nameBlock.data('path'));
swal({
type: 'input',
title: 'Copy File',
text: 'Please enter the new path for the copied file below.',
showCancelButton: true,
showConfirmButton: true,
closeOnConfirm: false,
showLoaderOnConfirm: true,
inputValue: `${currentPath}${currentName}`,
}, (val) => {
$.ajax({
type: 'POST',
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
},
contentType: 'application/json; charset=utf-8',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/copy`,
timeout: 10000,
data: JSON.stringify({
from: `${currentPath}${currentName}`,
to: `${val}`,
}),
}).done(data => {
swal({
type: 'success',
title: '',
text: 'File successfully copied.'
});
Files.list();
}).fail(jqXHR => {
console.error(jqXHR);
var error = 'An error occured while trying to process this request.';
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
error = jqXHR.responseJSON.error;
}
swal({
type: 'error',
title: '',
text: error,
});
});
});
}
download() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const fileName = decodeURIComponent(nameBlock.attr('data-name'));
const filePath = decodeURIComponent(nameBlock.data('path'));
window.location = `/server/${Pterodactyl.server.uuidShort}/files/download/${filePath}${fileName}`;
}
delete() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const delPath = decodeURIComponent(nameBlock.data('path'));
const delName = decodeURIComponent(nameBlock.data('name'));
swal({
type: 'warning',
title: '',
text: 'Are you sure you want to delete <code>' + delName + '</code>? There is <strong>no</strong> reversing this action.',
html: true,
showCancelButton: true,
showConfirmButton: true,
closeOnConfirm: false,
showLoaderOnConfirm: true
}, () => {
$.ajax({
type: 'DELETE',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/f/${delPath}${delName}`,
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
}
}).done(data => {
nameBlock.parent().addClass('warning').delay(200).fadeOut();
swal({
type: 'success',
title: 'File Deleted'
});
}).fail(jqXHR => {
console.error(jqXHR);
swal({
type: 'error',
title: 'Whoops!',
html: true,
text: 'An error occured while attempting to delete this file. Please try again.',
});
});
});
}
decompress() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const compPath = decodeURIComponent(nameBlock.data('path'));
const compName = decodeURIComponent(nameBlock.data('name'));
swal({
title: '<i class="fa fa-refresh fa-spin"></i> Decompressing...',
text: 'This might take a few seconds to complete.',
html: true,
allowOutsideClick: false,
allowEscapeKey: false,
showConfirmButton: false,
});
$.ajax({
type: 'POST',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/decompress`,
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
},
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
files: `${compPath}${compName}`
})
}).done(data => {
swal.close();
Files.list(compPath);
}).fail(jqXHR => {
console.error(jqXHR);
var error = 'An error occured while trying to process this request.';
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
error = jqXHR.responseJSON.error;
}
swal({
type: 'error',
title: 'Whoops!',
html: true,
text: error
});
});
}
compress() {
const nameBlock = $(this.element).find('td[data-identifier="name"]');
const compPath = decodeURIComponent(nameBlock.data('path'));
const compName = decodeURIComponent(nameBlock.data('name'));
$.ajax({
type: 'POST',
url: `${Pterodactyl.node.scheme}://${Pterodactyl.node.fqdn}:${Pterodactyl.node.daemonListen}/server/file/compress`,
headers: {
'X-Access-Token': Pterodactyl.server.daemonSecret,
'X-Access-Server': Pterodactyl.server.uuid,
},
contentType: 'application/json; charset=utf-8',
data: JSON.stringify({
files: `${compPath}${compName}`,
to: compPath.toString()
})
}).done(data => {
Files.list(compPath, err => {
if (err) return;
const fileListing = $('#file_listing').find(`[data-name="${data.saved_as}"]`).parent();
fileListing.addClass('success pulsate').delay(3000).queue(() => {
fileListing.removeClass('success pulsate').dequeue();
});
});
}).fail(jqXHR => {
console.error(jqXHR);
var error = 'An error occured while trying to process this request.';
if (typeof jqXHR.responseJSON !== 'undefined' && typeof jqXHR.responseJSON.error !== 'undefined') {
error = jqXHR.responseJSON.error;
}
swal({
type: 'error',
title: 'Whoops!',
html: true,
text: error
});
});
}
}

View File

@ -1,203 +0,0 @@
"use strict";
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
class ContextMenuClass {
constructor() {
this.activeLine = null;
}
run() {
this.directoryClick();
this.rightClick();
}
makeMenu(parent) {
$(document).find('#fileOptionMenu').remove();
if (!_.isNull(this.activeLine)) this.activeLine.removeClass('active');
let newFilePath = $('#file_listing').data('current-dir');
if (parent.data('type') === 'folder') {
const nameBlock = parent.find('td[data-identifier="name"]');
const currentName = decodeURIComponent(nameBlock.attr('data-name'));
const currentPath = decodeURIComponent(nameBlock.data('path'));
newFilePath = `${currentPath}${currentName}`;
}
let buildMenu = '<ul id="fileOptionMenu" class="dropdown-menu" role="menu" style="display:none" >';
if (Pterodactyl.permissions.moveFiles) {
buildMenu += '<li data-action="rename"><a tabindex="-1" href="#"><i class="fa fa-fw fa-pencil-square-o"></i> Rename</a></li> \
<li data-action="move"><a tabindex="-1" href="#"><i class="fa fa-fw fa-arrow-right"></i> Move</a></li>';
}
if (Pterodactyl.permissions.copyFiles) {
buildMenu += '<li data-action="copy"><a tabindex="-1" href="#"><i class="fa fa-fw fa-clone"></i> Copy</a></li>';
}
if (Pterodactyl.permissions.compressFiles) {
buildMenu += '<li data-action="compress" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-fw fa-file-archive-o"></i> Compress</a></li>';
}
if (Pterodactyl.permissions.decompressFiles) {
buildMenu += '<li data-action="decompress" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-fw fa-expand"></i> Decompress</a></li>';
}
if (Pterodactyl.permissions.createFiles) {
buildMenu += '<li class="divider"></li> \
<li data-action="file"><a href="/server/'+ Pterodactyl.server.uuidShort +'/files/add/?dir=' + newFilePath + '" class="text-muted"><i class="fa fa-fw fa-plus"></i> New File</a></li> \
<li data-action="folder"><a tabindex="-1" href="#"><i class="fa fa-fw fa-folder"></i> New Folder</a></li>';
}
if (Pterodactyl.permissions.downloadFiles || Pterodactyl.permissions.deleteFiles) {
buildMenu += '<li class="divider"></li>';
}
if (Pterodactyl.permissions.downloadFiles) {
buildMenu += '<li data-action="download" class="hidden"><a tabindex="-1" href="#"><i class="fa fa-fw fa-download"></i> Download</a></li>';
}
if (Pterodactyl.permissions.deleteFiles) {
buildMenu += '<li data-action="delete" class="bg-danger"><a tabindex="-1" href="#"><i class="fa fa-fw fa-trash-o"></i> Delete</a></li>';
}
buildMenu += '</ul>';
return buildMenu;
}
rightClick() {
$('[data-action="toggleMenu"]').on('mousedown', event => {
event.preventDefault();
if ($(document).find('#fileOptionMenu').is(':visible')) {
$('body').trigger('click');
return;
}
this.showMenu(event);
});
$('#file_listing > tbody td').on('contextmenu', event => {
this.showMenu(event);
});
}
showMenu(event) {
const parent = $(event.target).closest('tr');
const menu = $(this.makeMenu(parent));
if (parent.data('type') === 'disabled') return;
event.preventDefault();
$(menu).appendTo('body');
$(menu).data('invokedOn', $(event.target)).show().css({
position: 'absolute',
left: event.pageX - 150,
top: event.pageY,
});
this.activeLine = parent;
this.activeLine.addClass('active');
// Handle Events
const Actions = new ActionsClass(parent, menu);
if (Pterodactyl.permissions.moveFiles) {
$(menu).find('li[data-action="move"]').unbind().on('click', e => {
e.preventDefault();
Actions.move();
});
$(menu).find('li[data-action="rename"]').unbind().on('click', e => {
e.preventDefault();
Actions.rename();
});
}
if (Pterodactyl.permissions.copyFiles) {
$(menu).find('li[data-action="copy"]').unbind().on('click', e => {
e.preventDefault();
Actions.copy();
});
}
if (Pterodactyl.permissions.compressFiles) {
if (parent.data('type') === 'folder') {
$(menu).find('li[data-action="compress"]').removeClass('hidden');
}
$(menu).find('li[data-action="compress"]').unbind().on('click', e => {
e.preventDefault();
Actions.compress();
});
}
if (Pterodactyl.permissions.decompressFiles) {
if (_.without(['application/zip', 'application/gzip', 'application/x-gzip'], parent.data('mime')).length < 3) {
$(menu).find('li[data-action="decompress"]').removeClass('hidden');
}
$(menu).find('li[data-action="decompress"]').unbind().on('click', e => {
e.preventDefault();
Actions.decompress();
});
}
if (Pterodactyl.permissions.createFiles) {
$(menu).find('li[data-action="folder"]').unbind().on('click', e => {
e.preventDefault();
Actions.folder();
});
}
if (Pterodactyl.permissions.downloadFiles) {
if (parent.data('type') === 'file') {
$(menu).find('li[data-action="download"]').removeClass('hidden');
}
$(menu).find('li[data-action="download"]').unbind().on('click', e => {
e.preventDefault();
Actions.download();
});
}
if (Pterodactyl.permissions.deleteFiles) {
$(menu).find('li[data-action="delete"]').unbind().on('click', e => {
e.preventDefault();
Actions.delete();
});
}
$(window).unbind().on('click', event => {
if($(event.target).is('.disable-menu-hide')) {
event.preventDefault();
return;
}
$(menu).unbind().remove();
if(!_.isNull(this.activeLine)) this.activeLine.removeClass('active');
});
}
directoryClick() {
$('a[data-action="directory-view"]').on('click', function (event) {
event.preventDefault();
const path = $(this).parent().data('path') || '';
const name = $(this).parent().data('name') || '';
window.location.hash = encodeURIComponent(path + name);
Files.list();
});
}
}
window.ContextMenu = new ContextMenuClass;

View File

@ -1,98 +0,0 @@
"use strict";
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
class FileManager {
constructor() {
this.list(this.decodeHash());
}
list(path, next) {
if (_.isUndefined(path)) {
path = this.decodeHash();
}
this.loader(true);
$.ajax({
type: 'POST',
url: Pterodactyl.meta.directoryList,
headers: {
'X-CSRF-Token': Pterodactyl.meta.csrftoken,
},
data: {
directory: path,
},
}).done(data => {
this.loader(false);
$('#load_files').slideUp(10).html(data).slideDown(10, () => {
ContextMenu.run();
this.reloadFilesButton();
this.addFolderButton();
if (_.isFunction(next)) {
return next();
}
});
$('#internal_alert').slideUp();
if (typeof Siofu === 'object') {
Siofu.listenOnInput(document.getElementById("files_touch_target"));
}
}).fail(jqXHR => {
this.loader(false);
if (_.isFunction(next)) {
return next(new Error('Failed to load file listing.'));
}
swal({
type: 'error',
title: 'File Error',
text: jqXHR.responseText || 'An error occured while attempting to process this request. Please try again.',
});
console.error(jqXHR);
});
}
loader(show) {
if (show){
$('.file-overlay').fadeIn(100);
} else {
$('.file-overlay').fadeOut(100);
}
}
reloadFilesButton() {
$('i[data-action="reload-files"]').unbind().on('click', () => {
$('i[data-action="reload-files"]').addClass('fa-spin');
this.list();
});
}
addFolderButton() {
$('[data-action="add-folder"]').unbind().on('click', () => {
new ActionsClass().folder($('#file_listing').data('current-dir') || '/');
})
}
decodeHash() {
return decodeURIComponent(window.location.hash.substring(1));
}
}
window.Files = new FileManager;

View File

@ -1,141 +0,0 @@
// Copyright (c) 2015 - 2017 Dane Everitt <dane@daneeveritt.com>
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
(function initUploader() {
var notifyUploadSocketError = false;
uploadSocket = io(Pterodactyl.node.scheme + '://' + Pterodactyl.node.fqdn + ':' + Pterodactyl.node.daemonListen + '/upload/' + Pterodactyl.server.uuid, {
'query': 'token=' + Pterodactyl.server.daemonSecret,
});
uploadSocket.io.on('connect_error', function (err) {
if(typeof notifyUploadSocketError !== 'object') {
notifyUploadSocketError = $.notify({
message: 'There was an error attempting to establish a connection to the uploader endpoint.<br /><br />' + err,
}, {
type: 'danger',
delay: 0
});
}
});
uploadSocket.on('error', err => {
Siofu.destroy();
console.error(err);
});
uploadSocket.on('connect', function () {
if (notifyUploadSocketError !== false) {
notifyUploadSocketError.close();
notifyUploadSocketError = false;
}
});
window.Siofu = new SocketIOFileUpload(uploadSocket);
Siofu.listenOnDrop(document.getElementById("load_files"));
if (document.getElementById("files_touch_target")) {
Siofu.listenOnInput(document.getElementById("files_touch_target"));
}
window.addEventListener('dragover', function (event) {
event.preventDefault();
}, false);
window.addEventListener('drop', function (event) {
event.preventDefault();
}, false);
var dropCounter = 0;
$('#load_files').bind({
dragenter: function (event) {
event.preventDefault();
dropCounter++;
$(this).addClass('hasFileHover');
},
dragleave: function (event) {
dropCounter--;
if (dropCounter === 0) {
$(this).removeClass('hasFileHover');
}
},
drop: function (event) {
dropCounter = 0;
$(this).removeClass('hasFileHover');
}
});
Siofu.addEventListener('start', function (event) {
window.onbeforeunload = function () {
return 'A file upload in in progress, are you sure you want to continue?';
};
event.file.meta.path = $('#file_listing').data('current-dir');
event.file.meta.identifier = Math.random().toString(36).slice(2);
$('#append_files_to').append('<tr id="file-upload-' + event.file.meta.identifier +'"> \
<td><i class="fa fa-file-text-o" style="margin-left: 2px;"></i></td> \
<td>' + event.file.name + '</td> \
<td colspan=2">&nbsp;</td> \
</tr><tr> \
<td colspan="5" class="has-progress"> \
<div class="progress progress-table-bottom active"> \
<div class="progress-bar progress-bar-info prog-bar-' + event.file.meta.identifier +'" style="width: 0%"></div> \
</div> \
</td> \
</tr>\
');
});
Siofu.addEventListener('progress', function(event) {
window.onbeforeunload = function () {
return 'A file upload in in progress, are you sure you want to continue?';
};
var percent = event.bytesLoaded / event.file.size * 100;
if (percent >= 100) {
$('.prog-bar-' + event.file.meta.identifier).css('width', '100%').removeClass('progress-bar-info').addClass('progress-bar-success').parent().removeClass('active');
} else {
$('.prog-bar-' + event.file.meta.identifier).css('width', percent + '%');
}
});
// Do something when a file is uploaded:
Siofu.addEventListener('complete', function(event) {
window.onbeforeunload = function () {};
if (!event.success) {
$('.prog-bar-' + event.file.meta.identifier).css('width', '100%').removeClass('progress-bar-info').addClass('progress-bar-danger');
$.notify({
message: 'An error was encountered while attempting to upload this file.'
}, {
type: 'danger',
delay: 5000
});
}
});
Siofu.addEventListener('error', function(event) {
window.onbeforeunload = function () {};
console.error(event);
$('.prog-bar-' + event.file.meta.identifier).css('width', '100%').removeClass('progress-bar-info').addClass('progress-bar-danger');
$.notify({
message: 'An error was encountered while attempting to upload this file: <strong>' + event.message + '.</strong>',
}, {
type: 'danger',
delay: 8000
});
});
})();

View File

@ -75,7 +75,7 @@
const Editor = ace.edit('editor_index');
const Modelist = ace.require('ace/ext/modelist')
Editor.setTheme('ace/theme/chrome');
Editor.setTheme('ace/theme/terminal');
Editor.getSession().setMode('ace/mode/javascript');
Editor.getSession().setUseWrapMode(true);
Editor.setShowPrintMargin(false);

View File

@ -122,7 +122,7 @@
const InstallEditor = ace.edit('editor_install');
const Modelist = ace.require('ace/ext/modelist')
InstallEditor.setTheme('ace/theme/chrome');
InstallEditor.setTheme('ace/theme/terminal');
InstallEditor.getSession().setMode('ace/mode/sh');
InstallEditor.getSession().setUseWrapMode(true);
InstallEditor.setShowPrintMargin(false);

View File

@ -43,8 +43,9 @@
<body class="hold-transition skin-red fixed sidebar-collapse sidebar-mini">
<div class="wrapper">
<header class="main-header">
<a href="{{ route('index') }}" class="logo">
<span>{{ config('app.name', 'Pterodactyl') }}</span>
<a href="{{ route('index') }}" class="logo">
<span class="logo-lg">{{ config('app.name', 'Pterodactyl') }}</span>
<span class="logo-mini"><img src="/favicons/android-chrome-192x192.png"></span>
</a>
<nav class="navbar navbar-static-top">
<a href="#" class="sidebar-toggle" data-toggle="push-menu" role="button">

View File

@ -39,8 +39,9 @@
<body class="hold-transition skin-red fixed sidebar-collapse sidebar-mini">
<div class="wrapper">
<header class="main-header">
<a href="{{ route('index') }}" class="logo">
<span>{{ config('app.name', 'Pterodactyl') }}</span>
<a href="{{ route('index') }}" class="logo">
<span class="logo-lg">{{ config('app.name', 'Pterodactyl') }}</span>
<span class="logo-mini"><img src="/favicons/android-chrome-192x192.png"></span>
</a>
<nav class="navbar navbar-static-top"></nav>
</header>