Version Description
- Added the Google Fonts option type. Contributors via github @maimairel, and @valendesigns.
- Added the Border option type. Contributors via github @doitmax, and @valendesigns.
- Added the Box Shadow option type. Contributors via github @doitmax, and @valendesigns.
- Added the Colorpicker Opacity option type. Contributors via github @doitmax, and @valendesigns.
- Added the Dimension option type. Contributors via github @doitmax, and @valendesigns.
- Added the JavaScript option type.
- Added the Link Color option type. Contributors via github @doitmax, and @valendesigns.
- Added the Spacing option type. Contributors via github @doitmax, and @valendesigns.
- Fixed an issue where the Colorpicker was not parsing conditions on
change
orclear
. - Fixed the Colorpicker styles on mobile devices.
- Show the Colorpicker setting ID inside the error message string when the value is invalid.
- Added an 'on change' trigger to the Numeric Slider's hidden input. Contributors via github @cubell.
- Stop Theme Check from complaining about the
register_post_type()
function being used in Theme Mode. - Added styles that clean up the appearance of the included Font Awesome icons in section tabs.
- Fixed jQuery UI style conflicts created by the WP Review plugin.
- Changed the sanitization function from
sanitize_text_field
toesc_url_raw
for the Upload option type. - Added filter
ot_dequeue_jquery_ui_css_screen_ids
to dequeuejquery-ui-css
by screen ID. - Added filter
ot_on_off_switch_on_value
to filter the value of the On button. Contributors via github @BassemN, and @valendesigns. - Added filter
ot_on_off_switch_on_label
to filter the label of the On button. Contributors via github @BassemN, and @valendesigns. - Added filter
ot_on_off_switch_off_value
to filter the value of the Off button. Contributors via github @BassemN, and @valendesigns. - Added filter
ot_on_off_switch_off_label
to filter the label of the Off button. Contributors via github @BassemN, and @valendesigns. - Added filter
ot_on_off_switch_width
to filter the width of the On/Off switch. - Added filter
ot_type_date_picker_readonly
to filter the addition of the readonly attribute. - Added filter
ot_type_date_time_picker_readonly
to filter the addition of the readonly attribute. - Added filter
ot_admin_menu_priority
to filter theadmin_menu
action hook priority. - Added Estonian translation. Contributors via github @tjuris, and @RistoNiinemets.
- Fixed an issue where changes to
theme-options.php
required a second page load. - Fixed the clean up script, it only displays when there's something to clean up. No more menu item!
- Update demo files with the latest option types.
- Changed where
ot_css_file_paths
is saved whenis_multisite
for betterdynamic.css
file support. - Changed the default
dynamic.css
file path in multisite to bedynamic-{current-blog-id}.css
.
Download this release
Release Info
Developer | valendesigns |
Plugin | OptionTree |
Version | 2.5.0 |
Comparing to | |
See all releases |
Code changes from version 2.4.6 to 2.5.0
- assets/css/ot-admin-rtl.css +72 -7
- assets/css/ot-admin.css +219 -9
- assets/js/ot-admin.js +94 -4
- assets/js/vendor/ace/ace.js +0 -10
- assets/js/vendor/ace/mode-css.js +0 -1
- assets/js/vendor/ace/theme-chrome.js +0 -1
- assets/js/vendor/ace/worker-css.js +0 -1
- assets/theme-mode/demo-functions.php +5 -0
- assets/theme-mode/demo-theme-options.php +148 -14
- includes/ot-cleanup-api.php +80 -78
- includes/ot-functions-admin.php +758 -24
- includes/ot-functions-docs-page.php +34 -1
- includes/ot-functions-option-types.php +903 -113
- includes/ot-functions-settings-page.php +1 -1
- includes/ot-functions.php +82 -5
- includes/ot-settings-api.php +18 -2
- languages/option-tree-et.mo +0 -0
- languages/option-tree-et.po +3017 -0
- languages/option-tree.po +1069 -1052
- ot-loader.php +35 -5
- readme.txt +45 -4
assets/css/ot-admin-rtl.css
CHANGED
@@ -1,3 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
/* --------------------------------------------------
|
2 |
:: Messages
|
3 |
---------------------------------------------------*/
|
@@ -275,6 +286,38 @@ div.option-tree-ui-media-wrap {
|
|
275 |
margin: 0 10px 0 0 !important;
|
276 |
}
|
277 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
278 |
/* --------------------------------------------------
|
279 |
:: Select
|
280 |
---------------------------------------------------*/
|
@@ -354,12 +397,6 @@ div.option-tree-ui-media-wrap {
|
|
354 |
-moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
|
355 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
|
356 |
}
|
357 |
-
.ot-numeric-slider.ui-slider .ui-slider-handle {
|
358 |
-
background-image: -webkit-gradient(linear,rightt top,right bottom,from(#2a95c5),to(#21759b));
|
359 |
-
}
|
360 |
-
.ot-numeric-slider.ui-slider .ui-slider-handle:hover {
|
361 |
-
background-image: -webkit-gradient(linear,right top,right bottom,from(#2e9fd2),to(#21759b));
|
362 |
-
}
|
363 |
|
364 |
/* --------------------------------------------------
|
365 |
:: Colorpicker
|
@@ -367,6 +404,14 @@ div.option-tree-ui-media-wrap {
|
|
367 |
.option-tree-ui-colorpicker-input-wrap {
|
368 |
float: right;
|
369 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
370 |
.option-tree-ui-colorpicker-input-wrap .wp-color-result {
|
371 |
margin: 0px 0px 5px 5px;
|
372 |
}
|
@@ -374,6 +419,15 @@ div.option-tree-ui-media-wrap {
|
|
374 |
margin: 0px 0px 5px 5px;
|
375 |
}
|
376 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
377 |
/* --------------------------------------------------
|
378 |
:: OptionTree UI Buttons
|
379 |
---------------------------------------------------*/
|
@@ -440,6 +494,17 @@ ul.ot-gallery-list li {
|
|
440 |
float: right;
|
441 |
}
|
442 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
443 |
/* --------------------------------------------------
|
444 |
:: On/Off Switch
|
445 |
---------------------------------------------------*/
|
@@ -458,7 +523,7 @@ ul.ot-gallery-list li {
|
|
458 |
}
|
459 |
.on-off-switch input:last-of-type:checked ~ .slide-button {
|
460 |
left: auto;
|
461 |
-
right:
|
462 |
}
|
463 |
}
|
464 |
|
1 |
+
/* --------------------------------------------------
|
2 |
+
:: OptionTree Font
|
3 |
+
---------------------------------------------------*/
|
4 |
+
.ui-tabs li > a [class^="ot-icon-"],
|
5 |
+
.ui-tabs li > a [class*=" ot-icon-"] {
|
6 |
+
display: block;
|
7 |
+
height: 14px;
|
8 |
+
float: right;
|
9 |
+
padding: 2px 0px 0 9px;
|
10 |
+
}
|
11 |
+
|
12 |
/* --------------------------------------------------
|
13 |
:: Messages
|
14 |
---------------------------------------------------*/
|
286 |
margin: 0 10px 0 0 !important;
|
287 |
}
|
288 |
|
289 |
+
/* --------------------------------------------------
|
290 |
+
:: Option Group
|
291 |
+
---------------------------------------------------*/
|
292 |
+
.ot-option-group {
|
293 |
+
float: right;
|
294 |
+
padding-right: 0px;
|
295 |
+
padding-left: 5px;
|
296 |
+
}
|
297 |
+
.ot-option-group--is-last {
|
298 |
+
padding-left: 0;
|
299 |
+
}
|
300 |
+
.ot-option-group--icon {
|
301 |
+
border-left: 1px solid #ccc;
|
302 |
+
border-right: 0px;
|
303 |
+
left: auto;
|
304 |
+
right: 1px;
|
305 |
+
}
|
306 |
+
.ot-option-group--icon + input.option-tree-ui-input {
|
307 |
+
padding-left: 5px !important;
|
308 |
+
padding-right: 34px !important;
|
309 |
+
margin-left: 5px;
|
310 |
+
margin-right: 0px;
|
311 |
+
}
|
312 |
+
.ot-option-group--checkbox {
|
313 |
+
float: right;
|
314 |
+
padding-right: 0px;
|
315 |
+
padding-left: 10px;
|
316 |
+
}
|
317 |
+
#post-body .ot-option-group--checkbox p {
|
318 |
+
float: right;
|
319 |
+
}
|
320 |
+
|
321 |
/* --------------------------------------------------
|
322 |
:: Select
|
323 |
---------------------------------------------------*/
|
397 |
-moz-box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
|
398 |
box-shadow: inset -1px 1px 1px rgba(0, 0, 0, 0.05);
|
399 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
400 |
|
401 |
/* --------------------------------------------------
|
402 |
:: Colorpicker
|
404 |
.option-tree-ui-colorpicker-input-wrap {
|
405 |
float: right;
|
406 |
}
|
407 |
+
.option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label {
|
408 |
+
margin-left: 10px;
|
409 |
+
margin-right: 0px;
|
410 |
+
}
|
411 |
+
.type-link-color .option-tree-ui-colorpicker-input-wrap {
|
412 |
+
margin-left: 20px;
|
413 |
+
margin-right: 0px;
|
414 |
+
}
|
415 |
.option-tree-ui-colorpicker-input-wrap .wp-color-result {
|
416 |
margin: 0px 0px 5px 5px;
|
417 |
}
|
419 |
margin: 0px 0px 5px 5px;
|
420 |
}
|
421 |
|
422 |
+
/* --------------------------------------------------
|
423 |
+
:: Google Font
|
424 |
+
---------------------------------------------------*/
|
425 |
+
.js-remove-google-font.option-tree-ui-button.button {
|
426 |
+
margin-left: 5px;
|
427 |
+
margin-right: 0;
|
428 |
+
margin-top: 0;
|
429 |
+
}
|
430 |
+
|
431 |
/* --------------------------------------------------
|
432 |
:: OptionTree UI Buttons
|
433 |
---------------------------------------------------*/
|
494 |
float: right;
|
495 |
}
|
496 |
|
497 |
+
/* --------------------------------------------------
|
498 |
+
:: Google Fonts
|
499 |
+
---------------------------------------------------*/
|
500 |
+
.option-tree-google-font-family,
|
501 |
+
.option-tree-google-font-variants,
|
502 |
+
.option-tree-google-font-subsets,
|
503 |
+
#option-tree-settings-api p.checkbox-wrap,
|
504 |
+
#post-body .ot-metabox-panels p.checkbox-wrap {
|
505 |
+
float: right;
|
506 |
+
}
|
507 |
+
|
508 |
/* --------------------------------------------------
|
509 |
:: On/Off Switch
|
510 |
---------------------------------------------------*/
|
523 |
}
|
524 |
.on-off-switch input:last-of-type:checked ~ .slide-button {
|
525 |
left: auto;
|
526 |
+
right: 50%;
|
527 |
}
|
528 |
}
|
529 |
|
assets/css/ot-admin.css
CHANGED
@@ -25,6 +25,13 @@
|
|
25 |
-moz-osx-font-smoothing: grayscale;
|
26 |
}
|
27 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
.ot-icon-option-tree:before {
|
29 |
content: "\e785";
|
30 |
}
|
@@ -2083,6 +2090,114 @@ li ul .format-setting-label {
|
|
2083 |
padding-left: 1px;
|
2084 |
}
|
2085 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2086 |
/* --------------------------------------------------
|
2087 |
:: Select
|
2088 |
---------------------------------------------------*/
|
@@ -2231,7 +2346,8 @@ select.option-tree-ui-select option {
|
|
2231 |
/* --------------------------------------------------
|
2232 |
:: Numeric Slider
|
2233 |
---------------------------------------------------*/
|
2234 |
-
.type-numeric-slider .format-setting-inner
|
|
|
2235 |
background: #fcfcfc;
|
2236 |
border: 1px solid #ccc;
|
2237 |
min-height: 41px;
|
@@ -2253,6 +2369,12 @@ select.option-tree-ui-select option {
|
|
2253 |
top: 5px;
|
2254 |
width: 90px !important;
|
2255 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
2256 |
.ot-numeric-slider.ui-slider {
|
2257 |
background: #fff;
|
2258 |
border: 1px solid #ccc;
|
@@ -2375,10 +2497,20 @@ select.option-tree-ui-select option {
|
|
2375 |
.hide-color-picker {
|
2376 |
display: none;
|
2377 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2378 |
.option-tree-ui-colorpicker-input-wrap .wp-color-picker,
|
2379 |
.option-tree-ui-colorpicker-input-wrap .wp-picker-default,
|
2380 |
.option-tree-ui-colorpicker-input-wrap .wp-picker-clear {
|
2381 |
border-color: #ccc;
|
|
|
2382 |
height: 29px !important;
|
2383 |
line-height: 27px !important;
|
2384 |
margin-top: 0px;
|
@@ -2389,6 +2521,9 @@ select.option-tree-ui-select option {
|
|
2389 |
-moz-box-shadow: none;
|
2390 |
box-shadow: none;
|
2391 |
}
|
|
|
|
|
|
|
2392 |
.option-tree-ui-colorpicker-input-wrap .wp-color-result {
|
2393 |
height: 27px;
|
2394 |
outline: 0;
|
@@ -2408,6 +2543,44 @@ select.option-tree-ui-select option {
|
|
2408 |
-moz-border-radius: 2px;
|
2409 |
border-radius: 2px;
|
2410 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2411 |
|
2412 |
/* --------------------------------------------------
|
2413 |
:: OptionTree UI Buttons
|
@@ -2660,6 +2833,38 @@ ul.ot-gallery-list li img {
|
|
2660 |
margin-bottom: 0px;
|
2661 |
}
|
2662 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2663 |
/* --------------------------------------------------
|
2664 |
:: On/Off Switch
|
2665 |
---------------------------------------------------*/
|
@@ -2706,7 +2911,7 @@ ul.ot-gallery-list li img {
|
|
2706 |
position: relative;
|
2707 |
text-align: center;
|
2708 |
vertical-align: middle;
|
2709 |
-
width:
|
2710 |
z-index: 2;
|
2711 |
}
|
2712 |
.on-off-switch input:last-of-type + label {
|
@@ -2731,7 +2936,7 @@ ul.ot-gallery-list li img {
|
|
2731 |
position: absolute;
|
2732 |
text-decoration: none;
|
2733 |
top: -1px;
|
2734 |
-
width:
|
2735 |
z-index: 1;
|
2736 |
-webkit-border-radius: 2px;
|
2737 |
-moz-border-radius: 2px;
|
@@ -2747,7 +2952,7 @@ ul.ot-gallery-list li img {
|
|
2747 |
background: #b73b27;
|
2748 |
border-color: #7f291b;
|
2749 |
color: #fff;
|
2750 |
-
left:
|
2751 |
-webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
|
2752 |
-moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
|
2753 |
box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
|
@@ -2852,7 +3057,9 @@ ul.ot-gallery-list li img {
|
|
2852 |
:: CSS Editor
|
2853 |
---------------------------------------------------*/
|
2854 |
#option-tree-settings-api pre.ot-css-editor,
|
2855 |
-
#poststuff .type-css pre.ot-css-editor
|
|
|
|
|
2856 |
bottom: 0;
|
2857 |
height: 280px;
|
2858 |
left: 0;
|
@@ -2861,7 +3068,8 @@ ul.ot-gallery-list li img {
|
|
2861 |
top: 0;
|
2862 |
}
|
2863 |
#option-tree-settings-api pre.ace-chrome,
|
2864 |
-
#poststuff .type-css pre.ace-chrome
|
|
|
2865 |
background-color: #fff !important;
|
2866 |
border: 1px solid #ccc;
|
2867 |
-webkit-border-radius: 2px;
|
@@ -2869,14 +3077,16 @@ ul.ot-gallery-list li img {
|
|
2869 |
border-radius: 2px;
|
2870 |
}
|
2871 |
#option-tree-settings-api pre.ace-chrome:hover,
|
2872 |
-
#poststuff .type-css pre.ace-chrome:hover
|
|
|
2873 |
border-color: #bbb !important;
|
2874 |
-webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
2875 |
-moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
2876 |
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
2877 |
}
|
2878 |
#option-tree-settings-api pre.ace-chrome.ace_focus,
|
2879 |
-
#poststuff .type-css pre.ace-chrome.ace_focus
|
|
|
2880 |
border-color: #999 !important;
|
2881 |
-webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
2882 |
-moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
@@ -3699,4 +3909,4 @@ a.ui-datepicker-next {
|
|
3699 |
.ot-metabox-tabs.ui-tabs .ot-metabox-panel {
|
3700 |
clear: both;
|
3701 |
}
|
3702 |
-
}
|
25 |
-moz-osx-font-smoothing: grayscale;
|
26 |
}
|
27 |
|
28 |
+
.ui-tabs li > a [class^="ot-icon-"],
|
29 |
+
.ui-tabs li > a [class*=" ot-icon-"] {
|
30 |
+
padding-right: 5px;
|
31 |
+
line-height: 18px;
|
32 |
+
vertical-align: middle;
|
33 |
+
}
|
34 |
+
|
35 |
.ot-icon-option-tree:before {
|
36 |
content: "\e785";
|
37 |
}
|
2090 |
padding-left: 1px;
|
2091 |
}
|
2092 |
|
2093 |
+
/* --------------------------------------------------
|
2094 |
+
:: Option Group
|
2095 |
+
---------------------------------------------------*/
|
2096 |
+
.ot-option-group {
|
2097 |
+
float: left;
|
2098 |
+
padding-right: 5px;
|
2099 |
+
position: relative;
|
2100 |
+
width: 20%;
|
2101 |
+
box-sizing: border-box;
|
2102 |
+
}
|
2103 |
+
.ot-option-group--three-fourths {
|
2104 |
+
width: 75%;
|
2105 |
+
}
|
2106 |
+
.ot-option-group--two-thirds {
|
2107 |
+
width: 66.6%;
|
2108 |
+
}
|
2109 |
+
.ot-option-group--one-half {
|
2110 |
+
width: 50%;
|
2111 |
+
}
|
2112 |
+
.ot-option-group--one-third {
|
2113 |
+
width: 33.3%;
|
2114 |
+
}
|
2115 |
+
.ot-option-group--one-fourth {
|
2116 |
+
width: 25%;
|
2117 |
+
}
|
2118 |
+
.ot-option-group--one-fifth {
|
2119 |
+
width: 20%;
|
2120 |
+
}
|
2121 |
+
.ot-option-group--one-sixth {
|
2122 |
+
width: 16.6%;
|
2123 |
+
}
|
2124 |
+
.ot-option-group--one-eighth {
|
2125 |
+
width: 12.5%;
|
2126 |
+
}
|
2127 |
+
.ot-option-group--is-last {
|
2128 |
+
padding-right: 0;
|
2129 |
+
}
|
2130 |
+
.ot-option-group--icon {
|
2131 |
+
background: #fafafa;
|
2132 |
+
border-right: 1px solid #ccc;
|
2133 |
+
display: inline-block;
|
2134 |
+
font-size: 14px;
|
2135 |
+
line-height: 14px;
|
2136 |
+
padding: 6px 6px 7px;
|
2137 |
+
position: absolute;
|
2138 |
+
text-align: center;
|
2139 |
+
top: 1px;
|
2140 |
+
left: 1px;
|
2141 |
+
width: 14px;
|
2142 |
+
z-index: 10;
|
2143 |
+
}
|
2144 |
+
.ot-icon-circle.ot-option-group--icon:before {
|
2145 |
+
left: 1px;
|
2146 |
+
position: relative;
|
2147 |
+
-webkit-filter: blur(1px);
|
2148 |
+
-moz-filter: blur(1px);
|
2149 |
+
-ms-filter: blur(1px);
|
2150 |
+
-o-filter: blur(1px);
|
2151 |
+
filter: blur(1px);
|
2152 |
+
}
|
2153 |
+
.ot-option-group--icon + input.option-tree-ui-input {
|
2154 |
+
padding-left: 34px !important;
|
2155 |
+
margin-right: 5px;
|
2156 |
+
}
|
2157 |
+
.ot-option-group--checkbox {
|
2158 |
+
float: left;
|
2159 |
+
padding-top: 2px;
|
2160 |
+
padding-right: 10px;
|
2161 |
+
width: auto;
|
2162 |
+
}
|
2163 |
+
#post-body .ot-option-group--checkbox p {
|
2164 |
+
color: #a9a9a9;
|
2165 |
+
float: left;
|
2166 |
+
margin: 1px 0 0.3em 0 !important;
|
2167 |
+
}
|
2168 |
+
@media screen and ( min-width: 783px ) {
|
2169 |
+
#post-body .ot-option-group--checkbox p input {
|
2170 |
+
margin-top: 0px !important;
|
2171 |
+
}
|
2172 |
+
}
|
2173 |
+
@media screen and ( max-width: 1020px ) {
|
2174 |
+
.ot-option-group--one-fourth,
|
2175 |
+
.ot-option-group--one-fifth,
|
2176 |
+
.ot-option-group--one-sixth,
|
2177 |
+
.ot-option-group--one-eighth {
|
2178 |
+
width: 33.3%;
|
2179 |
+
}
|
2180 |
+
.ot-option-group--checkbox {
|
2181 |
+
width: 100%;
|
2182 |
+
}
|
2183 |
+
}
|
2184 |
+
@media screen and ( max-width: 782px ) {
|
2185 |
+
.ot-option-group {
|
2186 |
+
width: 50%;
|
2187 |
+
}
|
2188 |
+
.ot-option-group--three-fourths,
|
2189 |
+
.ot-option-group--two-thirds,
|
2190 |
+
.ot-option-group--one-half {
|
2191 |
+
width: 100%;
|
2192 |
+
}
|
2193 |
+
.ot-option-group--checkbox {
|
2194 |
+
padding-top: 0.3em;
|
2195 |
+
}
|
2196 |
+
}
|
2197 |
+
.ot-option-group .select-wrapper {
|
2198 |
+
width: 100%;
|
2199 |
+
}
|
2200 |
+
|
2201 |
/* --------------------------------------------------
|
2202 |
:: Select
|
2203 |
---------------------------------------------------*/
|
2346 |
/* --------------------------------------------------
|
2347 |
:: Numeric Slider
|
2348 |
---------------------------------------------------*/
|
2349 |
+
.type-numeric-slider .format-setting-inner,
|
2350 |
+
.type-colorpicker-opacity .format-setting-inner {
|
2351 |
background: #fcfcfc;
|
2352 |
border: 1px solid #ccc;
|
2353 |
min-height: 41px;
|
2369 |
top: 5px;
|
2370 |
width: 90px !important;
|
2371 |
}
|
2372 |
+
.type-colorpicker-opacity .format-setting-inner {
|
2373 |
+
padding-bottom: 0;
|
2374 |
+
}
|
2375 |
+
.type-colorpicker-opacity .wp-picker-container {
|
2376 |
+
margin-top: 35px;
|
2377 |
+
}
|
2378 |
.ot-numeric-slider.ui-slider {
|
2379 |
background: #fff;
|
2380 |
border: 1px solid #ccc;
|
2497 |
.hide-color-picker {
|
2498 |
display: none;
|
2499 |
}
|
2500 |
+
.option-tree-ui-colorpicker-input-wrap .option-tree-ui-colorpicker-label {
|
2501 |
+
height: 30px;
|
2502 |
+
line-height: 30px;
|
2503 |
+
margin-right: 10px;
|
2504 |
+
display: block;
|
2505 |
+
}
|
2506 |
+
.type-link-color .option-tree-ui-colorpicker-input-wrap {
|
2507 |
+
margin-right: 20px;
|
2508 |
+
}
|
2509 |
.option-tree-ui-colorpicker-input-wrap .wp-color-picker,
|
2510 |
.option-tree-ui-colorpicker-input-wrap .wp-picker-default,
|
2511 |
.option-tree-ui-colorpicker-input-wrap .wp-picker-clear {
|
2512 |
border-color: #ccc;
|
2513 |
+
font-size: 12px !important;
|
2514 |
height: 29px !important;
|
2515 |
line-height: 27px !important;
|
2516 |
margin-top: 0px;
|
2521 |
-moz-box-shadow: none;
|
2522 |
box-shadow: none;
|
2523 |
}
|
2524 |
+
.option-tree-ui-colorpicker-input-wrap .wp-color-picker {
|
2525 |
+
margin: 0 0 5px 0 !important;
|
2526 |
+
}
|
2527 |
.option-tree-ui-colorpicker-input-wrap .wp-color-result {
|
2528 |
height: 27px;
|
2529 |
outline: 0;
|
2543 |
-moz-border-radius: 2px;
|
2544 |
border-radius: 2px;
|
2545 |
}
|
2546 |
+
@media screen and ( max-width: 782px ) {
|
2547 |
+
.option-tree-ui-colorpicker-input-wrap .wp-color-picker {
|
2548 |
+
padding: 3px 5px !important;
|
2549 |
+
}
|
2550 |
+
.option-tree-ui-colorpicker-input-wrap .wp-picker-clear,
|
2551 |
+
.option-tree-ui-colorpicker-input-wrap .wp-picker-default {
|
2552 |
+
margin-top: 4px;
|
2553 |
+
padding: 0 8px 1px !important;
|
2554 |
+
}
|
2555 |
+
.type-colorpicker-opacity .wp-color-result,
|
2556 |
+
.type-colorpicker-opacity .wp-picker-input-wrap input {
|
2557 |
+
margin-top: 0px !important;
|
2558 |
+
}
|
2559 |
+
.type-colorpicker-opacity .wp-picker-open,
|
2560 |
+
.type-colorpicker-opacity .wp-picker-input-wrap input[type="text"] {
|
2561 |
+
position: relative;
|
2562 |
+
top: -2px !important;
|
2563 |
+
}
|
2564 |
+
}
|
2565 |
+
|
2566 |
+
/* --------------------------------------------------
|
2567 |
+
:: Google Font
|
2568 |
+
---------------------------------------------------*/
|
2569 |
+
.type-google-font {
|
2570 |
+
|
2571 |
+
}
|
2572 |
+
.type-google-font-group-clone {
|
2573 |
+
display: none;
|
2574 |
+
}
|
2575 |
+
.type-google-font-group {
|
2576 |
+
float: left;
|
2577 |
+
margin-bottom: 20px;
|
2578 |
+
width: 100%;
|
2579 |
+
}
|
2580 |
+
.js-remove-google-font.option-tree-ui-button.button {
|
2581 |
+
margin-left: 0;
|
2582 |
+
margin-top: 0;
|
2583 |
+
}
|
2584 |
|
2585 |
/* --------------------------------------------------
|
2586 |
:: OptionTree UI Buttons
|
2833 |
margin-bottom: 0px;
|
2834 |
}
|
2835 |
|
2836 |
+
/* --------------------------------------------------
|
2837 |
+
:: Google Fonts
|
2838 |
+
---------------------------------------------------*/
|
2839 |
+
.option-tree-google-font-family,
|
2840 |
+
.option-tree-google-font-variants,
|
2841 |
+
.option-tree-google-font-subsets {
|
2842 |
+
float: left;
|
2843 |
+
width: 20%;
|
2844 |
+
}
|
2845 |
+
.option-tree-google-font-family {
|
2846 |
+
width: 100%;
|
2847 |
+
}
|
2848 |
+
#option-tree-settings-api p.checkbox-wrap,
|
2849 |
+
#post-body .ot-metabox-panels p.checkbox-wrap {
|
2850 |
+
display: block;
|
2851 |
+
float: left;
|
2852 |
+
margin: 0.3em 0 !important;
|
2853 |
+
width: 100%;
|
2854 |
+
}
|
2855 |
+
@media screen and ( max-width: 1020px ) {
|
2856 |
+
.option-tree-google-font-variants,
|
2857 |
+
.option-tree-google-font-subsets {
|
2858 |
+
width: 33%;
|
2859 |
+
}
|
2860 |
+
}
|
2861 |
+
@media screen and ( max-width: 782px ) {
|
2862 |
+
.option-tree-google-font-variants,
|
2863 |
+
.option-tree-google-font-subsets {
|
2864 |
+
width: 50%;
|
2865 |
+
}
|
2866 |
+
}
|
2867 |
+
|
2868 |
/* --------------------------------------------------
|
2869 |
:: On/Off Switch
|
2870 |
---------------------------------------------------*/
|
2911 |
position: relative;
|
2912 |
text-align: center;
|
2913 |
vertical-align: middle;
|
2914 |
+
width: 50%;
|
2915 |
z-index: 2;
|
2916 |
}
|
2917 |
.on-off-switch input:last-of-type + label {
|
2936 |
position: absolute;
|
2937 |
text-decoration: none;
|
2938 |
top: -1px;
|
2939 |
+
width: 51%;
|
2940 |
z-index: 1;
|
2941 |
-webkit-border-radius: 2px;
|
2942 |
-moz-border-radius: 2px;
|
2952 |
background: #b73b27;
|
2953 |
border-color: #7f291b;
|
2954 |
color: #fff;
|
2955 |
+
left: 50%;
|
2956 |
-webkit-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
|
2957 |
-moz-box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
|
2958 |
box-shadow: inset 0 1px 0 rgba(229,134,119,0.6), 0 1px 0 rgba(0,0,0,.15);
|
3057 |
:: CSS Editor
|
3058 |
---------------------------------------------------*/
|
3059 |
#option-tree-settings-api pre.ot-css-editor,
|
3060 |
+
#poststuff .type-css pre.ot-css-editor,
|
3061 |
+
#option-tree-settings-api pre.ot-javascript-editor,
|
3062 |
+
#poststuff .type-javascript pre.ot-javascript-editor {
|
3063 |
bottom: 0;
|
3064 |
height: 280px;
|
3065 |
left: 0;
|
3068 |
top: 0;
|
3069 |
}
|
3070 |
#option-tree-settings-api pre.ace-chrome,
|
3071 |
+
#poststuff .type-css pre.ace-chrome,
|
3072 |
+
#poststuff .type-javascript pre.ace-chrome {
|
3073 |
background-color: #fff !important;
|
3074 |
border: 1px solid #ccc;
|
3075 |
-webkit-border-radius: 2px;
|
3077 |
border-radius: 2px;
|
3078 |
}
|
3079 |
#option-tree-settings-api pre.ace-chrome:hover,
|
3080 |
+
#poststuff .type-css pre.ace-chrome:hover,
|
3081 |
+
#poststuff .type-javascript pre.ace-chrome:hover {
|
3082 |
border-color: #bbb !important;
|
3083 |
-webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
3084 |
-moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
3085 |
box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
3086 |
}
|
3087 |
#option-tree-settings-api pre.ace-chrome.ace_focus,
|
3088 |
+
#poststuff .type-css pre.ace-chrome.ace_focus,
|
3089 |
+
#poststuff .type-javascript pre.ace-chrome.ace_focus {
|
3090 |
border-color: #999 !important;
|
3091 |
-webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
3092 |
-moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.0980392);
|
3909 |
.ot-metabox-tabs.ui-tabs .ot-metabox-panel {
|
3910 |
clear: both;
|
3911 |
}
|
3912 |
+
}
|
assets/js/ot-admin.js
CHANGED
@@ -25,11 +25,13 @@
|
|
25 |
this.init_radio_image_select();
|
26 |
this.init_select_wrapper();
|
27 |
this.bind_select_wrapper();
|
|
|
28 |
this.fix_upload_parent();
|
29 |
this.fix_textarea();
|
30 |
this.replicate_ajax();
|
31 |
this.reset_settings();
|
32 |
-
this.css_editor_mode();
|
|
|
33 |
},
|
34 |
init_hide_body: function(elm,type) {
|
35 |
var css = '.option-tree-setting-body';
|
@@ -533,7 +535,7 @@
|
|
533 |
step: hidden.data("step"),
|
534 |
value: value,
|
535 |
slide: function(event, ui) {
|
536 |
-
hidden.add(helper).val(ui.value);
|
537 |
},
|
538 |
create: function() {
|
539 |
hidden.val($(this).slider('value'));
|
@@ -591,8 +593,78 @@
|
|
591 |
$(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
|
592 |
});
|
593 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
594 |
bind_colorpicker: function(field_id) {
|
595 |
-
$('#'+field_id).wpColorPicker(
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
596 |
},
|
597 |
bind_date_picker: function(field_id, date_format) {
|
598 |
$('#'+field_id).datepicker({
|
@@ -666,6 +738,23 @@
|
|
666 |
});
|
667 |
});
|
668 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
669 |
url_exists: function(url) {
|
670 |
var link = document.createElement('a')
|
671 |
link.href = url
|
@@ -879,6 +968,7 @@
|
|
879 |
$(this).find('.ot-metabox-panels').css({ minHeight: minHeight })
|
880 |
}
|
881 |
OT_UI.css_editor_mode();
|
|
|
882 |
}
|
883 |
})
|
884 |
|
@@ -1132,4 +1222,4 @@
|
|
1132 |
})
|
1133 |
})
|
1134 |
|
1135 |
-
}(window.jQuery);
|
25 |
this.init_radio_image_select();
|
26 |
this.init_select_wrapper();
|
27 |
this.bind_select_wrapper();
|
28 |
+
this.init_google_fonts();
|
29 |
this.fix_upload_parent();
|
30 |
this.fix_textarea();
|
31 |
this.replicate_ajax();
|
32 |
this.reset_settings();
|
33 |
+
this.css_editor_mode();
|
34 |
+
this.javascript_editor_mode();
|
35 |
},
|
36 |
init_hide_body: function(elm,type) {
|
37 |
var css = '.option-tree-setting-body';
|
535 |
step: hidden.data("step"),
|
536 |
value: value,
|
537 |
slide: function(event, ui) {
|
538 |
+
hidden.add(helper).val(ui.value).trigger('change');
|
539 |
},
|
540 |
create: function() {
|
541 |
hidden.val($(this).slider('value'));
|
593 |
$(this).prev('span').replaceWith('<span>' + $(this).find('option:selected').text() + '</span>');
|
594 |
});
|
595 |
},
|
596 |
+
init_google_fonts: function() {
|
597 |
+
var update_items = function(input, items, element) {
|
598 |
+
var itemsUI = input.closest('.type-google-font-group').find(element);
|
599 |
+
if ( itemsUI.length ) {
|
600 |
+
itemsUI.empty();
|
601 |
+
itemsUI.append($.map(items, function(item) {
|
602 |
+
var input = document.createElement('input'),
|
603 |
+
label = document.createElement('label');
|
604 |
+
input.type = 'checkbox';
|
605 |
+
input.id = ( itemsUI.data('field-id-prefix') || '' ) + item;
|
606 |
+
input.name = ( itemsUI.data('field-name') || '' ) + '[]';
|
607 |
+
input.value = item;
|
608 |
+
label.innerHTML = item;
|
609 |
+
$( label ).attr( 'for', input.id );
|
610 |
+
return $( document.createElement('p') ).addClass('checkbox-wrap').append([input, label]);
|
611 |
+
}));
|
612 |
+
}
|
613 |
+
};
|
614 |
+
$(document).on('change', '.option-tree-google-font-family select', function() {
|
615 |
+
var input = $(this);
|
616 |
+
$.ajax({
|
617 |
+
url: option_tree.ajax,
|
618 |
+
type: 'POST',
|
619 |
+
dataType: 'json',
|
620 |
+
data: {
|
621 |
+
action: 'ot_google_font',
|
622 |
+
family: input.val(),
|
623 |
+
field_id: input.attr('id')
|
624 |
+
}
|
625 |
+
}).done(function(response) {
|
626 |
+
if ( response.hasOwnProperty('variants') ) {
|
627 |
+
update_items( input, response.variants, '.option-tree-google-font-variants' );
|
628 |
+
}
|
629 |
+
if ( response.hasOwnProperty('subsets') ) {
|
630 |
+
update_items( input, response.subsets, '.option-tree-google-font-subsets' );
|
631 |
+
}
|
632 |
+
});
|
633 |
+
});
|
634 |
+
$('.js-add-google-font').on('click', function (event) {
|
635 |
+
var $group = $(this).parent('.format-setting-inner').find('.type-google-font-group'),
|
636 |
+
$clone = $('.type-google-font-group-clone').clone(true),
|
637 |
+
$count = $group.length ? $group.length : 0;
|
638 |
+
$clone.attr('class', 'type-google-font-group');
|
639 |
+
var replacer = function(index, elm) {
|
640 |
+
return elm.replace('%key%', $count);
|
641 |
+
}
|
642 |
+
$('select', $clone).each( function() {
|
643 |
+
$(this).attr('id', replacer ).attr('name', replacer );
|
644 |
+
});
|
645 |
+
$('.option-tree-google-font-variants', $clone).each( function() {
|
646 |
+
$(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer );
|
647 |
+
});
|
648 |
+
$('.option-tree-google-font-subsets', $clone).each( function() {
|
649 |
+
$(this).attr('data-field-id-prefix', replacer ).attr('data-field-name', replacer );
|
650 |
+
});
|
651 |
+
$('.type-google-font-group-clone').before($clone)
|
652 |
+
event.preventDefault()
|
653 |
+
});
|
654 |
+
$('.js-remove-google-font').on('click', function (event) {
|
655 |
+
$(this).parents('.type-google-font-group').remove();
|
656 |
+
event.preventDefault();
|
657 |
+
});
|
658 |
+
},
|
659 |
bind_colorpicker: function(field_id) {
|
660 |
+
$('#'+field_id).wpColorPicker({
|
661 |
+
change: function() {
|
662 |
+
OT_UI.parse_condition();
|
663 |
+
},
|
664 |
+
clear: function() {
|
665 |
+
OT_UI.parse_condition();
|
666 |
+
}
|
667 |
+
});
|
668 |
},
|
669 |
bind_date_picker: function(field_id, date_format) {
|
670 |
$('#'+field_id).datepicker({
|
738 |
});
|
739 |
});
|
740 |
},
|
741 |
+
javascript_editor_mode: function() {
|
742 |
+
$('.ot-javascript-editor').each(function() {
|
743 |
+
var editor = ace.edit($(this).attr('id'));
|
744 |
+
var this_textarea = $('#textarea_' + $(this).attr('id'));
|
745 |
+
editor.setTheme("ace/theme/chrome");
|
746 |
+
editor.getSession().setMode("ace/mode/javascript");
|
747 |
+
editor.setShowPrintMargin( false );
|
748 |
+
|
749 |
+
editor.getSession().setValue(this_textarea.val());
|
750 |
+
editor.getSession().on('change', function(){
|
751 |
+
this_textarea.val(editor.getSession().getValue());
|
752 |
+
});
|
753 |
+
this_textarea.on('change', function(){
|
754 |
+
editor.getSession().setValue(this_textarea.val());
|
755 |
+
});
|
756 |
+
});
|
757 |
+
},
|
758 |
url_exists: function(url) {
|
759 |
var link = document.createElement('a')
|
760 |
link.href = url
|
968 |
$(this).find('.ot-metabox-panels').css({ minHeight: minHeight })
|
969 |
}
|
970 |
OT_UI.css_editor_mode();
|
971 |
+
OT_UI.javascript_editor_mode();
|
972 |
}
|
973 |
})
|
974 |
|
1222 |
})
|
1223 |
})
|
1224 |
|
1225 |
+
}(window.jQuery);
|
assets/js/vendor/ace/ace.js
DELETED
@@ -1,10 +0,0 @@
|
|
1 |
-
(function(){function o(e){var i=function(e,t){return r("",e,t)},s=t;e&&(t[e]||(t[e]={}),s=t[e]);if(!s.define||!s.define.packaged)n.original=s.define,s.define=n,s.define.packaged=!0;if(!s.require||!s.require.packaged)r.original=s.require,s.require=i,s.require.packaged=!0}var e="ace",t=function(){return this}();if(!e&&typeof requirejs!="undefined")return;var n=function(e,t,r){if(typeof e!="string"){n.original?n.original.apply(window,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=t),n.modules||(n.modules={},n.payloads={}),n.payloads[e]=r,n.modules[e]=null},r=function(e,t,n){if(Object.prototype.toString.call(t)==="[object Array]"){var i=[];for(var o=0,u=t.length;o<u;++o){var a=s(e,t[o]);if(!a&&r.original)return r.original.apply(window,arguments);i.push(a)}n&&n.apply(null,i)}else{if(typeof t=="string"){var f=s(e,t);return!f&&r.original?r.original.apply(window,arguments):(n&&n(),f)}if(r.original)return r.original.apply(window,arguments)}},i=function(e,t){if(t.indexOf("!")!==-1){var n=t.split("!");return i(e,n[0])+"!"+i(e,n[1])}if(t.charAt(0)=="."){var r=e.split("/").slice(0,-1).join("/");t=r+"/"+t;while(t.indexOf(".")!==-1&&s!=t){var s=t;t=t.replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return t},s=function(e,t){t=i(e,t);var s=n.modules[t];if(!s){s=n.payloads[t];if(typeof s=="function"){var o={},u={id:t,uri:"",exports:o,packaged:!0},a=function(e,n){return r(t,e,n)},f=s(a,o,u);o=f||u.exports,n.modules[t]=o,delete n.payloads[t]}s=n.modules[t]=o||s}return s};o(e)})(),ace.define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/multi_select","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer,f=e("./multi_select").MultiSelect;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,t.edit=function(e){if(typeof e=="string"){var n=e,e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e.env&&e.env.editor instanceof s)return e.env.editor;var o=t.createEditSession(r.getInnerText(e));e.innerHTML="";var u=new s(new a(e));new f(u),u.setSession(o);var l={document:o,editor:u,onResize:u.resize.bind(u,null)};return i.addListener(window,"resize",l.onResize),u.on("destroy",function(){i.removeListener(window,"resize",l.onResize)}),e.env=u.env=l,u},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}),ace.define("ace/lib/fixoldbrowsers",["require","exports","module","ace/lib/regexp","ace/lib/es5-shim"],function(e,t,n){e("./regexp"),e("./es5-shim")}),ace.define("ace/lib/regexp",["require","exports","module"],function(e,t,n){function o(e){return(e.global?"g":"")+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.extended?"x":"")+(e.sticky?"y":"")}function u(e,t,n){if(Array.prototype.indexOf)return e.indexOf(t,n);for(var r=n||0;r<e.length;r++)if(e[r]===t)return r;return-1}var r={exec:RegExp.prototype.exec,test:RegExp.prototype.test,match:String.prototype.match,replace:String.prototype.replace,split:String.prototype.split},i=r.exec.call(/()??/,"")[1]===undefined,s=function(){var e=/^/g;return r.test.call(e,""),!e.lastIndex}();if(s&&i)return;RegExp.prototype.exec=function(e){var t=r.exec.apply(this,arguments),n,a;if(typeof e=="string"&&t){!i&&t.length>1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;e<arguments.length-2;e++)arguments[e]===undefined&&(t[e]=undefined)}));if(this._xregexp&&this._xregexp.captureNames)for(var f=1;f<t.length;f++)n=this._xregexp.captureNames[f-1],n&&(t[n]=t[f]);!s&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=u.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),a=e+o,f=a+s-o,l=n-a,c=n-o;if(f<a)for(var h=0;h<l;++h)this[f+h]=this[a+h];else if(f>a)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var v=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?v.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(u.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(t){return a(t)=="[object Array]"});var m=Object("a"),g=m[0]!="a"||!(0 in m);Array.prototype.forEach||(Array.prototype.forEach=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=arguments[1],s=-1,o=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s<o)s in r&&t.call(i,r[s],s,n)}),Array.prototype.map||(Array.prototype.map=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u<i;u++)u in r&&(s[u]=t.call(o,r[u],u,n));return s}),Array.prototype.filter||(Array.prototype.filter=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f<i;f++)f in r&&(o=r[f],t.call(u,o,f,n)&&s.push(o));return s}),Array.prototype.every||(Array.prototype.every=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&!t.call(s,r[o],o,n))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o<i;o++)if(o in r&&t.call(s,r[o],o,n))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s<i;s++)s in r&&(o=t.call(void 0,o,r[s],s,n));return o}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(t){var n=F(this),r=g&&a(this)=="[object String]"?this.split(""):n,i=r.length>>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i<r;i++)if(i in n&&n[i]===t)return i;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n<r;n++){var i=A[n];f(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var _=" \n\f\r \u2028\u2029";if(!String.prototype.trim||_.trim()){_="["+_+"]";var D=new RegExp("^"+_+_+"*"),P=new RegExp(_+_+"*$");String.prototype.trim=function(){return String(this).replace(D,"").replace(P,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/lib/dom",["require","exports","module"],function(e,t,n){if(typeof document=="undefined")return;var r="http://www.w3.org/1999/xhtml";t.getDocumentHead=function(e){return e||(e=document),e.head||e.getElementsByTagName("head")[0]||e.documentElement},t.createElement=function(e,t){return document.createElementNS?document.createElementNS(t||r,e):document.createElement(e)},t.hasCssClass=function(e,t){var n=e.className.split(/\s+/g);return n.indexOf(t)!==-1},t.addCssClass=function(e,n){t.hasCssClass(e,n)||(e.className+=" "+n)},t.removeCssClass=function(e,t){var n=e.className.split(/\s+/g);for(;;){var r=n.indexOf(t);if(r==-1)break;n.splice(r,1)}e.className=n.join(" ")},t.toggleCssClass=function(e,t){var n=e.className.split(/\s+/g),r=!0;for(;;){var i=n.indexOf(t);if(i==-1)break;r=!1,n.splice(i,1)}return r&&n.push(t),e.className=n.join(" "),r},t.setCssClass=function(e,n,r){r?t.addCssClass(e,n):t.removeCssClass(e,n)},t.hasCssString=function(e,t){var n=0,r;t=t||document;if(t.createStyleSheet&&(r=t.styleSheets)){while(n<r.length)if(r[n++].owningElement.id===e)return!0}else if(r=t.getElementsByTagName("style"))while(n<r.length)if(r[n++].id===e)return!0;return!1},t.importCssString=function(n,i,s){s=s||document;if(i&&t.hasCssString(i,s))return null;var o;s.createStyleSheet?(o=s.createStyleSheet(),o.cssText=n,i&&(o.owningElement.id=i)):(o=s.createElementNS?s.createElementNS(r,"style"):s.createElement("style"),o.appendChild(s.createTextNode(n)),i&&(o.id=i),t.getDocumentHead(s).appendChild(o))},t.importCssStylsheet=function(e,n){if(n.createStyleSheet)n.createStyleSheet(e);else{var r=t.createElement("link");r.rel="stylesheet",r.href=e,t.getDocumentHead(n).appendChild(r)}},t.getInnerWidth=function(e){return parseInt(t.computedStyle(e,"paddingLeft"),10)+parseInt(t.computedStyle(e,"paddingRight"),10)+e.clientWidth},t.getInnerHeight=function(e){return parseInt(t.computedStyle(e,"paddingTop"),10)+parseInt(t.computedStyle(e,"paddingBottom"),10)+e.clientHeight},window.pageYOffset!==undefined?(t.getPageScrollTop=function(){return window.pageYOffset},t.getPageScrollLeft=function(){return window.pageXOffset}):(t.getPageScrollTop=function(){return document.body.scrollTop},t.getPageScrollLeft=function(){return document.body.scrollLeft}),window.getComputedStyle?t.computedStyle=function(e,t){return t?(window.getComputedStyle(e,"")||{})[t]||"":window.getComputedStyle(e,"")||{}}:t.computedStyle=function(e,t){return t?e.currentStyle[t]:e.currentStyle},t.scrollbarWidth=function(e){var n=t.createElement("ace_inner");n.style.width="100%",n.style.minWidth="0px",n.style.height="200px",n.style.display="block";var r=t.createElement("ace_outer"),i=r.style;i.position="absolute",i.left="-10000px",i.overflow="hidden",i.width="200px",i.minWidth="0px",i.height="150px",i.display="block",r.appendChild(n);var s=e.documentElement;s.appendChild(r);var o=n.offsetWidth;i.overflow="scroll";var u=n.offsetWidth;return o==u&&(u=r.clientWidth),s.removeChild(r),o-u},t.setInnerHtml=function(e,t){var n=e.cloneNode(!1);return n.innerHTML=t,e.parentNode.replaceChild(n,e),n},"textContent"in document.documentElement?(t.setInnerText=function(e,t){e.textContent=t},t.getInnerText=function(e){return e.textContent}):(t.setInnerText=function(e,t){e.innerText=t},t.getInnerText=function(e){return e.innerText}),t.getParentWindow=function(e){return e.defaultView||e.parentWindow}}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent","ace/lib/dom"],function(e,t,n){function o(e,t,n){var s=0;!i.isOpera||"KeyboardEvent"in window||!i.isMac?s=0|(t.ctrlKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.metaKey?8:0):s=0|(t.metaKey?1:0)|(t.altKey?2:0)|(t.shiftKey?4:0)|(t.ctrlKey?8:0);if(!i.isMac&&u){if(u[91]||u[92])s|=8;if(u.altGr){if((3&s)==3)return;u.altGr=0}if(n===18||n===17){var o=t.location||t.keyLocation;if(n===17&&o===1)a=t.timeStamp;else if(n===18&&s===3&&o===2){var f=-a;a=t.timeStamp,f+=a,f<3&&(u.altGr=!0)}}}if(n in r.MODIFIER_KEYS){switch(r.MODIFIER_KEYS[n]){case"Alt":s=2;break;case"Shift":s=4;break;case"Ctrl":s=1;break;default:s=8}n=0}s&8&&(n===91||n===93)&&(n=0);if(!s&&n===13)if(t.location||t.keyLocation===3){e(t,s,-n);if(t.defaultPrevented)return}return!!s||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,s,n):!1}var r=e("./keys"),i=e("./useragent"),s=e("./dom");t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||e.ctrlKey&&i.isMac?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};t.addListener(e,"mousedown",function(e){t.getButton(e)!=0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var n=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;n&&(o=1),o==1&&(u=e.clientX,a=e.clientY)}r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}),i.isOldIE&&t.addListener(e,"dblclick",function(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)})};var u=null,a=0;t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var s=null;r(e,"keydown",function(e){s=e.keyCode}),r(e,"keypress",function(e){return o(n,e,s)})}else{var a=null;r(e,"keydown",function(e){u[e.keyCode]=!0;var t=o(n,e,e.keyCode);return a=e.defaultPrevented,t}),r(e,"keypress",function(e){a&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),a=null)}),r(e,"keyup",function(e){u[e.keyCode]=null}),u||(u=Object.create(null),r(window,"focus",function(e){u=Object.create(null)}))}};if(window.postMessage&&!i.isOldIE){var f=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+f;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame,t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),ace.define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",188:",",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"}};for(var t in e.FUNCTION_KEYS){var n=e.FUNCTION_KEYS[t].toLowerCase();e[n]=parseInt(t,10)}return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",e}();r.mixin(t,i),t.keyCodeToString=function(e){return(i[e]||String.fromCharCode(e)).toLowerCase()}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,t,n){t.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},t.getOS=function(){return t.isMac?t.OS.MAC:t.isLinux?t.OS.LINUX:t.OS.WINDOWS};if(typeof navigator!="object")return;var r=(navigator.platform.match(/mac|win|linux/i)||["other"])[0].toLowerCase(),i=navigator.userAgent;t.isWin=r=="win",t.isMac=r=="mac",t.isLinux=r=="linux",t.isIE=(navigator.appName=="Microsoft Internet Explorer"||navigator.appName.indexOf("MSAppHost")>=0)&&parseFloat(navigator.userAgent.match(/MSIE ([0-9]+[\.0-9]+)/)[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=window.controllers&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((navigator.userAgent.match(/rv\:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0}),ace.define("ace/editor",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/keyboard/textinput","ace/mouse/mouse_handler","ace/mouse/fold_handler","ace/keyboard/keybinding","ace/edit_session","ace/search","ace/range","ace/lib/event_emitter","ace/commands/command_manager","ace/commands/default_commands","ace/config"],function(e,t,n){e("./lib/fixoldbrowsers");var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/lang"),o=e("./lib/useragent"),u=e("./keyboard/textinput").TextInput,a=e("./mouse/mouse_handler").MouseHandler,f=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,c=e("./edit_session").EditSession,h=e("./search").Search,p=e("./range").Range,d=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,m=e("./commands/default_commands").commands,g=e("./config"),y=function(e,t){var n=e.getContainerElement();this.container=n,this.renderer=e,this.commands=new v(o.isMac?"mac":"win",m),this.textInput=new u(e.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.keyBinding=new l(this),this.$mouseHandler=new a(this),new f(this),this.$blockScrolling=0,this.$search=(new h).set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=s.delayedCall(function(){this._signal("input",{}),this.session.bgTokenizer&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(e,t){t._$emitInputEvent.schedule(31)}),this.setSession(t||new c("")),g.resetOptions(this),g._emit("editor",this)};(function(){r.implement(this,d),this.$initOperationListeners=function(){function e(e){return e[e.length-1]}this.selections=[],this.commands.on("exec",function(t){this.startOperation(t);var n=t.command;if(n.aceCommandGroup=="fileJump"){var r=this.prevOp;if(!r||r.command.aceCommandGroup!="fileJump")this.lastFileJumpPos=e(this.selections)}else this.lastFileJumpPos=null}.bind(this),!0),this.commands.on("afterExec",function(e){var t=e.command;t.aceCommandGroup=="fileJump"&&this.lastFileJumpPos&&!this.curOp.selectionChanged&&this.selection.fromJSON(this.lastFileJumpPos),this.endOperation(e)}.bind(this),!0),this.$opResetTimer=s.delayedCall(this.endOperation.bind(this)),this.on("change",function(){this.curOp||this.startOperation(),this.curOp.docChanged=!0}.bind(this),!0),this.on("changeSelection",function(){this.curOp||this.startOperation(),this.curOp.selectionChanged=!0}.bind(this),!0)},this.curOp=null,this.prevOp={},this.startOperation=function(e){if(this.curOp){if(!e||this.curOp.command)return;this.prevOp=this.curOp}e||(this.previousCommand=null,e={}),this.$opResetTimer.schedule(),this.curOp={command:e.command||{},args:e.args,scrollTop:this.renderer.scrollTop};var t=this.curOp.command;t&&t.scrollIntoView&&this.$blockScrolling++,this.selections.push(this.selection.toJSON())},this.endOperation=function(){if(this.curOp){var e=this.curOp.command;if(e&&e.scrollIntoView){this.$blockScrolling--;switch(e.scrollIntoView){case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var t=this.selection.getRange(),n=this.renderer.layerConfig;(t.start.row>=n.lastRow||t.end.row<=n.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}e.scrollIntoView=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=["backspace","del","insertstring"],r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e){if(!e)this.keyBinding.setKeyboardHandler(null);else if(typeof e=="string"){this.$keybindingId=e;var t=this;g.loadModule(["keybinding",e],function(n){t.$keybindingId==e&&t.keyBinding.setKeyboardHandler(n&&n.handler)})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e)},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;if(this.session){var t=this.session;this.session.removeEventListener("change",this.$onDocumentChange),this.session.removeEventListener("changeMode",this.$onChangeMode),this.session.removeEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.session.removeEventListener("changeTabSize",this.$onChangeTabSize),this.session.removeEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.session.removeEventListener("changeWrapMode",this.$onChangeWrapMode),this.session.removeEventListener("onChangeFold",this.$onChangeFold),this.session.removeEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.session.removeEventListener("changeBackMarker",this.$onChangeBackMarker),this.session.removeEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.session.removeEventListener("changeAnnotation",this.$onChangeAnnotation),this.session.removeEventListener("changeOverwrite",this.$onCursorChange),this.session.removeEventListener("changeScrollTop",this.$onScrollTopChange),this.session.removeEventListener("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.removeEventListener("changeCursor",this.$onCursorChange),n.removeEventListener("changeSelection",this.$onSelectionChange)}this.session=e,this.$onDocumentChange=this.onDocumentChange.bind(this),e.addEventListener("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.addEventListener("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.addEventListener("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.addEventListener("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.addEventListener("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.addEventListener("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.addEventListener("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.addEventListener("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.addEventListener("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.addEventListener("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.addEventListener("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.addEventListener("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.addEventListener("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.addEventListener("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.addEventListener("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.addEventListener("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull(),this._emit("changeSession",{session:e,oldSession:t})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e){this.renderer.setTheme(e)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session.findMatchingBracket(e.getCursorPosition());if(t)var n=new p(t.row,t.column,t.row,t.column+1);else if(e.session.$mode.getMatching)var n=e.session.$mode.getMatching(e.session);n&&(e.session.$bracketHighlight=e.session.addMarker(n,"ace_bracket","text"))},50)},this.focus=function(){var e=this;setTimeout(function(){e.textInput.focus()}),this.textInput.focus()},this.isFocused=function(){return this.textInput.isFocused()},this.blur=function(){this.textInput.blur()},this.onFocus=function(){if(this.$isFocused)return;this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus")},this.onBlur=function(){if(!this.$isFocused)return;this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur")},this.$cursorChange=function(){this.renderer.updateCursor()},this.onDocumentChange=function(e){var t=e.data,n=t.range,r;n.start.row==n.end.row&&t.action!="insertLines"&&t.action!="removeLines"?r=n.end.row:r=Infinity,this.renderer.updateLines(n.start.row,r),this._emit("change",e),this.$cursorChange()},this.onTokenizerUpdate=function(e){var t=e.data;this.renderer.updateLines(t.first,t.last)},this.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},this.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},this.onCursorChange=function(){this.$cursorChange(),this.$blockScrolling||this.renderer.scrollCursorIntoView(),this.$highlightBrackets(),this.$updateHighlightActiveLine(),this._emit("changeSelection")},this.$updateHighlightActiveLine=function(){var e=this.getSession(),t;if(this.$highlightActiveLine){if(this.$selectionStyle!="line"||!this.selection.isMultiLine())t=this.getCursorPosition();this.renderer.$maxLines&&this.session.getLength()===1&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._emit("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._emit("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e){if(this.$readOnly)return;this._emit("paste",e),this.insert(e)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e){var t=this.session,n=t.getMode(),r=this.getCursorPosition();if(this.getBehavioursEnabled()){var i=n.transformAction(t.getState(r.row),"insertion",this,t,e);i&&(e!==i.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=i.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var s=this.getSelectionRange();r=this.session.remove(s),this.clearSelection()}else if(this.session.getOverwrite()){var s=new p.fromPoints(r,r);s.end.column+=e.length,this.session.remove(s)}if(e=="\n"||e=="\r\n"){var o=t.getLine(r.row);if(r.column>o.search(/\S|$/)){var u=o.substr(r.column).search(/\S|$/);t.doc.removeInLine(r.row,r.column,r.column+u)}}this.clearSelection();var a=r.column,f=t.getState(r.row),o=t.getLine(r.row),l=n.checkOutdent(f,o,e),c=t.insert(r,e);i&&i.selection&&(i.selection.length==2?this.selection.setSelectionRange(new p(r.row,a+i.selection[0],r.row,a+i.selection[1])):this.selection.setSelectionRange(new p(r.row+i.selection[0],i.selection[1],r.row+i.selection[2],i.selection[3])));if(t.getDocument().isNewLine(e)){var h=n.getNextLineIndent(f,o.slice(0,r.column),t.getTabString());t.insert({row:r.row+1,column:0},h)}l&&n.autoOutdent(f,t,r.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;t<n.length?(r=n.charAt(t)+n.charAt(t-1),i=new p(e.row,t-1,e.row,t+1)):(r=n.charAt(t-1)+n.charAt(t-2),i=new p(e.row,t-2,e.row,t)),this.session.replace(i,r)},this.toLowerCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toLowerCase()),this.selection.setSelectionRange(e)},this.toUpperCase=function(){var e=this.getSelectionRange();this.selection.isEmpty()&&this.selection.selectWord();var t=this.getSelectionRange(),n=this.session.getTextRange(t);this.session.replace(t,n.toUpperCase()),this.selection.setSelectionRange(e)},this.indent=function(){var e=this.session,t=this.getSelectionRange();if(t.start.row<t.end.row){var n=this.$getSelectedRows();e.indentRows(n.first,n.last," ");return}if(t.start.column<t.end.column){var r=e.getTextRange(t);if(!/^\s+$/.test(r)){var n=this.$getSelectedRows();e.indentRows(n.first,n.last," ");return}}var i=e.getLine(t.start.row),o=t.start,u=e.getTabSize(),a=e.documentToScreenColumn(o.row,o.column);if(this.session.getUseSoftTabs())var f=u-a%u,l=s.stringRepeat(" ",f);else{var f=a%u;while(i[t.start.column]==" "&&f)t.start.column--,f--;this.selection.setSelectionRange(t),l=" "}return this.insert(l)},this.blockIndent=function(){var e=this.$getSelectedRows();this.session.indentRows(e.first,e.last," ")},this.blockOutdent=function(){var e=this.session.getSelection();this.session.outdentRows(e.getRange())},this.sortLines=function(){var e=this.$getSelectedRows(),t=this.session,n=[];for(i=e.first;i<=e.last;i++)n.push(t.getLine(i));n.sort(function(e,t){return e.toLowerCase()<t.toLowerCase()?-1:e.toLowerCase()>t.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex<t){var i=n.exec(r);if(i.index<=t&&i.index+i[0].length>=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n<o?e*=Math.pow(10,s.end-n-1):e*=Math.pow(10,s.end-n),a+=e,a/=Math.pow(10,u);var f=a.toFixed(u),l=new p(t,s.start,t,s.end);this.session.replace(l,f),this.moveCursorTo(t,Math.max(s.start+1,n+f.length-s.value.length))}}},this.removeLines=function(){var e=this.$getSelectedRows(),t;e.first===0||e.last+1<this.session.getLength()?t=new p(e.first,0,e.last+1,0):t=new p(e.first-1,this.session.getLine(e.first-1).length,e.last,this.session.getLine(e.last).length),this.session.remove(t),this.clearSelection()},this.duplicateSelection=function(){var e=this.selection,t=this.session,n=e.getRange(),r=e.isBackwards();if(n.isEmpty()){var i=n.start.row;t.duplicateLines(i,i)}else{var s=r?n.start:n.end,o=t.insert(s,t.getTextRange(n),!1);n.start=s,n.end=o,e.setSelectionRange(n,r)}},this.moveLinesDown=function(){this.$moveLines(function(e,t){return this.session.moveLinesDown(e,t)})},this.moveLinesUp=function(){this.$moveLines(function(e,t){return this.session.moveLinesUp(e,t)})},this.moveText=function(e,t,n){return this.session.moveText(e,t,n)},this.copyLinesUp=function(){this.$moveLines(function(e,t){return this.session.duplicateLines(e,t),0})},this.copyLinesDown=function(){this.$moveLines(function(e,t){return this.session.duplicateLines(e,t)})},this.$moveLines=function(e){var t=this.selection;if(!t.inMultiSelectMode||this.inVirtualSelectionMode){var n=t.toOrientedRange(),r=this.$getSelectedRows(n),i=e.call(this,r.first,r.last);n.moveBy(i,0),t.fromOrientedRange(n)}else{var s=t.rangeList.ranges;t.rangeList.detach(this.session);for(var o=s.length;o--;){var u=o,r=s[o].collapseRows(),a=r.end.row,f=r.start.row;while(o--){r=s[o].collapseRows();if(!(f-r.end.row<=1))break;f=r.end.row}o++;var i=e.call(this,f,a);while(u>=o)s[u].moveBy(i,0),u--}t.fromOrientedRange(t.ranges[0]),t.rangeList.attach(this.session)}},this.$getSelectedRows=function(){var e=this.getSelectionRange().collapseRows();return{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e){var t=this.getCursorPosition(),n=this.session.getBracketRange(t);if(!n){n=this.find({needle:/[{}()\[\]]/g,preventScroll:!0,start:{row:t.row,column:t.column-1}});if(!n)return;var r=n.start;r.row==t.row&&Math.abs(r.column-t.column)<2&&(n=this.session.getBracketRange(r))}r=n&&n.cursor||r,r&&(e?n&&n.isEqual(this.getSelectionRange())?this.clearSelection():this.selection.selectTo(r.row,r.column):(this.clearSelection(),this.moveCursorTo(r.row,r.column)))},this.gotoLine=function(e,t,n){this.selection.clearSelection(),this.session.unfold({row:e-1,column:t||0}),this.$blockScrolling+=1,this.exitMultiSelectMode&&this.exitMultiSelectMode(),this.moveCursorTo(e-1,t||0),this.$blockScrolling-=1,this.isRowFullyVisible(e-1)||this.scrollToLine(e-1,!0,n)},this.navigateTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.navigateUp=function(e){if(this.selection.isMultiLine()&&!this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(-e,0)},this.navigateDown=function(e){if(this.selection.isMultiLine()&&this.selection.isBackwards()){var t=this.selection.anchor.getPosition();return this.moveCursorToPosition(t)}this.selection.clearSelection(),e=e||1,this.selection.moveCursorBy(e,0)},this.navigateLeft=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().start;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorLeft()}this.clearSelection()},this.navigateRight=function(e){if(!this.selection.isEmpty()){var t=this.getSelectionRange().end;this.moveCursorToPosition(t)}else{e=e||1;while(e--)this.selection.moveCursorRight()}this.clearSelection()},this.navigateLineStart=function(){this.selection.moveCursorLineStart(),this.clearSelection()},this.navigateLineEnd=function(){this.selection.moveCursorLineEnd(),this.clearSelection()},this.navigateFileEnd=function(){this.selection.moveCursorFileEnd(),this.clearSelection()},this.navigateFileStart=function(){this.selection.moveCursorFileStart(),this.clearSelection()},this.navigateWordRight=function(){this.selection.moveCursorWordRight(),this.clearSelection()},this.navigateWordLeft=function(){this.selection.moveCursorWordLeft(),this.clearSelection()},this.replace=function(e,t){t&&this.$search.set(t);var n=this.$search.find(this.session),r=0;return n?(this.$tryReplace(n,e)&&(r=1),n!==null&&(this.selection.setSelectionRange(n),this.renderer.scrollSelectionIntoView(n.start,n.end)),r):r},this.replaceAll=function(e,t){t&&this.$search.set(t);var n=this.$search.findAll(this.session),r=0;if(!n.length)return r;this.$blockScrolling+=1;var i=this.getSelectionRange();this.clearSelection(),this.selection.moveCursorTo(0,0);for(var s=n.length-1;s>=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._emit("destroy",this)},this.setAutoScrollEditorIntoView=function(e){if(e===!1)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&n.isFocused()){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.top<o.height&&s.top+t.top+o.lineHeight>window.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e===!0)return;delete this.setAutoScrollEditorIntoView,this.removeEventListener("changeSelection",s),this.renderer.removeEventListener("afterRender",u),this.renderer.removeEventListener("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(e=="smooth"),t.isBlinking=!this.$readOnly&&e!="wide"}}).call(y.prototype),g.defineOptions(y.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._emit("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=y}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=i.isChrome<18,a=function(e,t){function b(e){if(h)return;if(k)t=0,r=e?0:n.value.length-1;else var t=e?2:1,r=2;try{n.setSelectionRange(t,r)}catch(i){}}function w(){if(h)return;n.value=a,i.isWebKit&&y.schedule()}function F(){setTimeout(function(){p&&(n.style.cssText=p,p=""),t.renderer.$keepTextAreaAtCursor==null&&(t.renderer.$keepTextAreaAtCursor=!0,t.renderer.$moveTextAreaToCursor())},0)}var n=s.createElement("textarea");n.className="ace_text-input",i.isTouchPad&&n.setAttribute("x-palm-disable-auto-cap",!0),n.wrap="off",n.autocorrect="off",n.autocapitalize="off",n.spellcheck=!1,n.style.opacity="0",e.insertBefore(n,e.firstChild);var a="",f=!1,l=!1,c=!1,h=!1,p="",d=!0;try{var v=document.activeElement===n}catch(m){}r.addListener(n,"blur",function(){t.onBlur(),v=!1}),r.addListener(n,"focus",function(){v=!0,t.onFocus(),b()}),this.focus=function(){n.focus()},this.blur=function(){n.blur()},this.isFocused=function(){return v};var g=o.delayedCall(function(){v&&b(d)}),y=o.delayedCall(function(){h||(n.value=a,v&&b())});i.isWebKit||t.addEventListener("changeSelection",function(){t.selection.isEmpty()!=d&&(d=!d,g.schedule())}),w(),v&&t.onFocus();var E=function(e){return e.selectionStart===0&&e.selectionEnd===e.value.length};!n.setSelectionRange&&n.createTextRange&&(n.setSelectionRange=function(e,t){var n=this.createTextRange();n.collapse(!0),n.moveStart("character",e),n.moveEnd("character",t),n.select()},E=function(e){try{var t=e.ownerDocument.selection.createRange()}catch(n){}return!t||t.parentElement()!=e?!1:t.text==e.value});if(i.isOldIE){var S=!1,x=function(e){if(S)return;var t=n.value;if(h||!t||t==a)return;if(e&&t==a[0])return T.schedule();A(t),S=!0,w(),S=!1},T=o.delayedCall(x);r.addListener(n,"propertychange",x);var N={13:1,27:1};r.addListener(n,"keyup",function(e){h&&(!n.value||N[e.keyCode])&&setTimeout(B,0);if((n.value.charCodeAt(0)||0)<129)return T.call();h?H():P()}),r.addListener(n,"keydown",function(e){T.schedule(50)})}var C=function(e){f?f=!1:l?l=!1:E(n)?(t.selectAll(),b()):k&&b(t.selection.isEmpty())},k=null;this.setInputHandler=function(e){k=e},this.getInputHandler=function(){return k};var L=!1,A=function(e){k&&(e=k(e),k=null),c?(b(),e&&t.onPaste(e),c=!1):e==a.charAt(0)?L?t.execCommand("del",{source:"ace"}):t.execCommand("backspace",{source:"ace"}):(e.substring(0,2)==a?e=e.substr(2):e.charAt(0)==a.charAt(0)?e=e.substr(1):e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e.charAt(e.length-1)==a.charAt(0)&&(e=e.slice(0,-1)),e&&t.onTextInput(e)),L&&(L=!1)},O=function(e){if(h)return;var t=n.value;A(t),w()},M=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCut(),r.preventDefault(e))}o||(f=!0,n.value=i,n.select(),setTimeout(function(){f=!1,w(),b(),t.onCut()}))},_=function(e){var i=t.getCopyText();if(!i){r.preventDefault(e);return}var s=e.clipboardData||window.clipboardData;if(s&&!u){var o=s.setData("Text",i);o&&(t.onCopy(),r.preventDefault(e))}o||(l=!0,n.value=i,n.select(),setTimeout(function(){l=!1,w(),b(),t.onCopy()}))},D=function(e){var s=e.clipboardData||window.clipboardData;if(s){var o=s.getData("Text");o&&t.onPaste(o),i.isIE&&setTimeout(b),r.preventDefault(e)}else n.value="",c=!0};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",C),r.addListener(n,"input",O),r.addListener(n,"cut",M),r.addListener(n,"copy",_),r.addListener(n,"paste",D),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:_(e);break;case 86:D(e);break;case 88:M(e)}});var P=function(e){if(h)return;h={},t.onCompositionStart(),setTimeout(H,0),t.on("mousedown",B),t.selection.isEmpty()||(t.insert(""),t.session.markUndoGroup(),t.selection.clearSelection()),t.session.markUndoGroup()},H=function(){if(!h)return;var e=n.value.replace(/\x01/g,"");if(h.lastValue===e)return;t.onCompositionUpdate(e),h.lastValue&&t.undo(),h.lastValue=e;if(h.lastValue){var r=t.selection.getRange();t.insert(h.lastValue),t.session.markUndoGroup(),h.range=t.selection.getRange(),t.selection.setRange(r),t.selection.clearSelection()}},B=function(e){var r=h;h=!1;var i=setTimeout(function(){i=null;var e=n.value.replace(/\x01/g,"");if(h)return;e==r.lastValue?w():!r.lastValue&&e&&(w(),A(e))});k=function(n){return i&&clearTimeout(i),n=n.replace(/\x01/g,""),n==r.lastValue?"":(r.lastValue&&i&&t.undo(),n)},t.onCompositionEnd(),t.removeListener("mousedown",B),e.type=="compositionend"&&r.range&&t.selection.setRange(r.range)},j=o.delayedCall(H,50);r.addListener(n,"compositionstart",P),i.isGecko?r.addListener(n,"text",function(){j.schedule()}):(r.addListener(n,"keyup",function(){j.schedule()}),r.addListener(n,"keydown",function(){j.schedule()})),r.addListener(n,"compositionend",B),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,p||(p=n.style.cssText),n.style.cssText="z-index:100000;"+(i.isIE?"opacity:0.1;":""),b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e});var o=t.container.getBoundingClientRect(),u=s.computedStyle(t.container),a=o.top+(parseInt(u.borderTopWidth)||0),f=o.left+(parseInt(o.borderLeftWidth)||0),l=o.bottom-a-n.clientHeight,c=function(e){n.style.left=e.clientX-f-2+"px",n.style.top=Math.min(e.clientY-a-2,l)+"px"};c(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),i.isWin&&r.capture(t.container,c,F)},this.onContextMenuClose=F;if(!i.isGecko||i.isMac){var I=function(e){t.textInput.onContextMenu(e),F()};r.addListener(t.renderer.scroller,"contextmenu",I),r.addListener(n,"contextmenu",I)}};t.TextInput=a}),ace.define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){this.editor=e,new s(this),new o(this),new a(this);var t=e.renderer.getMouseEventTarget();r.addListener(t,"click",this.onMouseEvent.bind(this,"click")),r.addListener(t,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(t,[300,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[300,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[300,300,250],this,"onMouseEvent")),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var n=e.renderer.$gutter;r.addListener(n,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(n,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(n,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(n,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(t,"mousedown",function(t){e.focus()}),r.addListener(n,"mousedown",function(t){return e.focus(),r.preventDefault(t)})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.$clickSelection=null,n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:150},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0}}),t.MouseHandler=l}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();o&&(r.moveCursorToPosition(n),r.selection.clearSelection()),r.textInput.onContextMenu(e.domEvent);return}if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.mousedownEvent.time=Date.now(),this.setState("focusWait"),this.captureMouse(e);return}}return!t||this.$clickSelection||e.getShiftKey()||r.inMultiSelectMode?this.startSelect(n):t&&(this.mousedownEvent.time=Date.now(),this.startSelect(n)),this.captureMouse(e),e.preventDefault()},this.startSelect=function(e){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var t=this.editor,n=this.mousedownEvent.getShiftKey();n?t.selection.selectToPosition(e):this.$clickSelection||(t.moveCursorToPosition(e),t.selection.clearSelection()),t.renderer.scroller.setCapture&&t.renderer.scroller.setCapture(),t.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this[this.state]&&this[this.state](e)},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines"),this.$clickSelection=n.selection.getLineRange(t.row),this[this.state]&&this[this.state](e)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getShiftKey()||e.getAccelKey())return;var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/event"],function(e,t,n){function s(e){function f(){u=r.createElement("div"),u.className="ace_gutter-tooltip",u.style.display="none",t.container.appendChild(u)}function l(){u||f();var e=o.getDocumentPosition().row,r=n.$annotations[e];if(!r)return c();var i=t.session.getLength();if(e==i){var s=t.renderer.pixelToScreenCoordinates(0,o.y).row,l=o.$pos;if(s>t.session.documentToScreenRow(l.row,l.column))return c()}if(a==r)return;a=r.text.join("<br/>"),u.style.display="block",u.innerHTML=a,t.on("mousewheel",c),h(o)}function c(){s&&(s=clearTimeout(s)),a&&(u.style.display="none",a=null,t.removeEventListener("mousewheel",c))}function h(e){var n=t.renderer.$gutter.getBoundingClientRect();u.style.left=e.x+15+"px";if(e.y+3*t.renderer.lineHeight+15<n.bottom)u.style.bottom="",u.style.top=e.y+15+"px";else{u.style.top="";var r=window.innerHeight||document.documentElement.clientHeight;u.style.bottom=r-e.y+5+"px"}}var t=e.editor,n=t.renderer.$gutterLayer;e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var s,o,u,a;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();a&&h(t),o=t;if(s)return;s=setTimeout(function(){s=null,o&&!e.isMousePressed?l():c()},50)}),i.addListener(t.renderer.$gutter,"mouseout",function(e){o=null;if(!a||s)return;s=setTimeout(function(){s=null,c()},50)}),t.on("changeSession",c)}var r=e("../lib/dom"),i=e("../lib/event");t.GutterHandler=s}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),ace.define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left<a.x.right?-3:2),l/i<=1&&(c.row+=a.y.top<a.y.bottom?-1:1);var h=e.row!=c.row,v=e.column!=c.column,m=!n||e.row!=n.row;h||v&&!m?E?r-E>=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n._top=n.offsetTop),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return h||(k(),y++),A!==null&&(A=null),p=e.clientX,d=e.clientY,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!h)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor.container;e.draggable=!0,this.editor.renderer.$cursorLayer.setBlinking(!1),this.editor.setStyle("ace_dragging"),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),ace.define("ace/config",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/lib/net","ace/lib/event_emitter"],function(e,t,n){"no use strict";function f(e){return e.replace(/-(.)/g,function(e,t){return t.toUpperCase()})}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./lib/net"),o=e("./lib/event_emitter").EventEmitter,u=function(){return this}(),a={packaged:!1,workerPath:null,modePath:null,themePath:null,basePath:"",suffix:".js",$moduleUrls:{}};t.get=function(e){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);return a[e]},t.set=function(e,t){if(!a.hasOwnProperty(e))throw new Error("Unknown config key: "+e);a[e]=t},t.all=function(){return r.copyObject(a)},i.implement(t,o),t.moduleUrl=function(e,t){if(a.$moduleUrls[e])return a.$moduleUrls[e];var n=e.split("/");t=t||n[n.length-2]||"";var r=t=="snippets"?"/":"-",i=n[n.length-1];if(r=="-"){var s=new RegExp("^"+t+"[\\-_]|[\\-_]"+t+"$","g");i=i.replace(s,"")}(!i||i==t)&&n.length>1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=function(){a.packaged=e.packaged||n.packaged||u.define&&define.packaged;if(!u.document)return"";var r={},i="",s=document.getElementsByTagName("script");for(var o=0;o<s.length;o++){var l=s[o],c=l.src||l.getAttribute("src");if(!c)continue;var h=l.attributes;for(var p=0,d=h.length;p<d;p++){var v=h[p];v.name.indexOf("data-ace-")===0&&(r[f(v.name.replace(/^data-ace-/,""))]=v.value)}var m=c.match(/^(.*)\/ace(\-\w+)?\.js(\?|$)/);m&&(i=m[1])}i&&(r.base=r.base||i,r.packaged=!0),r.basePath=r.base,r.workerPath=r.workerPath||r.base,r.modePath=r.modePath||r.base,r.themePath=r.themePath||r.base,delete r.base;for(var g in r)typeof r[g]!="undefined"&&t.set(g,r[g])};var l={setOptions:function(e){Object.keys(e).forEach(function(t){this.setOption(t,e[t])},this)},getOptions:function(e){var t={};return e?Array.isArray(e)||(t=e,e=Object.keys(t)):e=Object.keys(this.$options),e.forEach(function(e){t[e]=this.getOption(e)},this),t},setOption:function(e,t){if(this["$"+e]===t)return;var n=this.$options[e];if(!n)return typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined;if(n.forwardTo)return this[n.forwardTo]&&this[n.forwardTo].setOption(e,t);n.handlesSet||(this["$"+e]=t),n&&n.set&&n.set.call(this,t)},getOption:function(e){var t=this.$options[e];return t?t.forwardTo?this[t.forwardTo]&&this[t.forwardTo].getOption(e):t&&t.get?t.get.call(this):this["$"+e]:(typeof console!="undefined"&&console.warn&&console.warn('misspelled option "'+e+'"'),undefined)}},c={};t.defineOptions=function(e,t,n){return e.$options||(c[t]=e.$options={}),Object.keys(n).forEach(function(t){var r=n[t];typeof r=="string"&&(r={forwardTo:r}),r.name||(r.name=t),e.$options[r.name]=r,"initialValue"in r&&(e["$"+r.name]=r.initialValue)}),i.implement(e,l),this},t.resetOptions=function(e){Object.keys(e.$options).forEach(function(t){var n=e.$options[t];"value"in n&&e.setOption(t,n.value)})},t.setDefaultValue=function(e,n,r){var i=c[e]||(c[e]={});i[n]&&(i.forwardTo?t.setDefaultValue(i.forwardTo,n,r):i[n].value=r)},t.setDefaultValues=function(e,n){Object.keys(n).forEach(function(r){t.setDefaultValue(e,r,n[r])})}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),ace.define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0),this.$data={editor:this.$editor}},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){var t=this.$callKeyboardHandlers(-1,e);t||this.$editor.commands.exec("insertstring",this.$editor,e)}}).call(s.prototype),t.KeyBinding=s}),ace.define("ace/edit_session",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/config","ace/lib/event_emitter","ace/selection","ace/mode/text","ace/range","ace/document","ace/background_tokenizer","ace/search_highlight","ace/edit_session/folding","ace/edit_session/bracket_match"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./config"),o=e("./lib/event_emitter").EventEmitter,u=e("./selection").Selection,a=e("./mode/text").Mode,f=e("./range").Range,l=e("./document").Document,c=e("./background_tokenizer").BackgroundTokenizer,h=e("./search_highlight").SearchHighlight,p=function(e,t){this.$breakpoints=[],this.$decorations=[],this.$frontMarkers={},this.$backMarkers={},this.$markerId=1,this.$undoSelect=!0,this.$foldData=[],this.$foldData.toString=function(){return this.join("\n")},this.on("changeFold",this.onChangeFold.bind(this)),this.$onChange=this.onChange.bind(this);if(typeof e!="object"||!e.getLine)e=new l(e);this.setDocument(e),this.selection=new u(this),s.resetOptions(this),this.setMode(t),s._emit("session",this)};(function(){function g(e){return e<4352?!1:e>=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t<s))return i;r=i-1}}return n-1},this.resetCaches=function(){this.$modified=!0,this.$wrapData=[],this.$rowLengthCache=[],this.$resetRowCache(0),this.bgTokenizer&&this.bgTokenizer.start(0)},this.onChangeFold=function(e){var t=e.data;this.$resetRowCache(t.start.row)},this.onChange=function(e){var t=e.data;this.$modified=!0,this.$resetRowCache(t.range.start.row);var n=this.$updateInternalDataOnChange(e);!this.$fromUndo&&this.$undoManager&&!t.ignore&&(this.$deltasDoc.push(t),n&&n.length!=0&&this.$deltasFold.push({action:"removeFolds",folds:n}),this.$informUndoManager.schedule()),this.bgTokenizer.$updateOnChange(t),this._emit("change",e)},this.setValue=function(e){this.doc.setValue(e),this.selection.moveCursorTo(0,0),this.selection.clearSelection(),this.$resetRowCache(0),this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.getUndoManager().reset()},this.getValue=this.toString=function(){return this.doc.getValue()},this.getSelection=function(){return this.selection},this.getState=function(e){return this.bgTokenizer.getState(e)},this.getTokens=function(e){return this.bgTokenizer.getTokens(e)},this.getTokenAt=function(e,t){var n=this.bgTokenizer.getTokens(e),r,i=0;if(t==null)s=n.length-1,i=this.getLine(e).length;else for(var s=0;s<n.length;s++){i+=n[s].value.length;if(i>=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize==0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._emit("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._emit("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t<e.length;t++)this.$breakpoints[e[t]]="ace_breakpoint";this._emit("changeBreakpoint",{})},this.clearBreakpoints=function(){this.$breakpoints=[],this._emit("changeBreakpoint",{})},this.setBreakpoint=function(e,t){t===undefined&&(t="ace_breakpoint"),t?this.$breakpoints[e]=t:delete this.$breakpoints[e],this._emit("changeBreakpoint",{})},this.clearBreakpoint=function(e){delete this.$breakpoints[e],this._emit("changeBreakpoint",{})},this.addMarker=function(e,t,n,r){var i=this.$markerId++,s={range:e,type:n||"line",renderer:typeof n=="function"?n:null,clazz:t,inFront:!!r,id:i};return r?(this.$frontMarkers[i]=s,this._emit("changeFrontMarker")):(this.$backMarkers[i]=s,this._emit("changeBackMarker")),i},this.addDynamicMarker=function(e,t){if(!e.update)return;var n=this.$markerId++;return e.id=n,e.inFront=!!t,t?(this.$frontMarkers[n]=e,this._emit("changeFrontMarker")):(this.$backMarkers[n]=e,this._emit("changeBackMarker")),e},this.removeMarker=function(e){var t=this.$frontMarkers[e]||this.$backMarkers[e];if(!t)return;var n=t.inFront?this.$frontMarkers:this.$backMarkers;t&&(delete n[e],this._emit(t.inFront?"changeFrontMarker":"changeBackMarker"))},this.getMarkers=function(e){return e?this.$frontMarkers:this.$backMarkers},this.highlight=function(e){if(!this.$searchHighlight){var t=new h(null,"ace_selected-word","text");this.$searchHighlight=this.addDynamicMarker(t)}this.$searchHighlight.setRegexp(e)},this.highlightLines=function(e,t,n,r){typeof t!="number"&&(n=t,t=e),n||(n="ace_step");var i=new f(e,0,t,Infinity);return i.id=this.addMarker(i,n,"fullLine",r),i},this.setAnnotations=function(e){this.$annotations=e,this._emit("changeAnnotation",{})},this.getAnnotations=function(){return this.$annotations||[]},this.clearAnnotations=function(){this.setAnnotations([])},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r?\n)/m);t?this.$autoNewLine=t[1]:this.$autoNewLine="\n"},this.getWordRange=function(e,t){var n=this.getLine(e),r=!1;t>0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(o<n.length&&n.charAt(o).match(i))o++;return new f(e,s,e,o)},this.getAWordRange=function(e,t){var n=this.getWordRange(e,t),r=this.getLine(n.end.row);while(r.charAt(n.end.column).match(/[ \t]/))n.end.column+=1;return n},this.setNewLineMode=function(e){this.doc.setNewLineMode(e)},this.getNewLineMode=function(){return this.doc.getNewLineMode()},this.setUseWorker=function(e){this.setOption("useWorker",e)},this.getUseWorker=function(){return this.$useWorker},this.onReloadTokenizer=function(e){var t=e.data;this.bgTokenizer.start(t.first),this._emit("tokenizerUpdate",e)},this.$modes={},this.$mode=null,this.$modeId=null,this.setMode=function(e,t){if(e&&typeof e=="object"){if(e.getTokenizer)return this.$onChangeMode(e);var n=e,r=n.path}else r=e||"ace/mode/text";this.$modes["ace/mode/text"]||(this.$modes["ace/mode/text"]=new a);if(this.$modes[r]&&!n){this.$onChangeMode(this.$modes[r]),t&&t();return}this.$modeId=r,s.loadModule(["mode",r],function(e){if(this.$modeId!==r)return t&&t();if(this.$modes[r]&&!n)return this.$onChangeMode(this.$modes[r]);e&&e.Mode&&(e=new e.Mode(n),n||(this.$modes[r]=e,e.$id=r),this.$onChangeMode(e),t&&t())}.bind(this)),this.$mode||this.$onChangeMode(this.$modes["ace/mode/text"],!0)},this.$onChangeMode=function(e,t){t||(this.$modeId=e.$id);if(this.$mode===e)return;this.$mode=e,this.$stopWorker(),this.$useWorker&&this.$startWorker();var n=e.getTokenizer();if(n.addEventListener!==undefined){var r=this.onReloadTokenizer.bind(this);n.addEventListener("update",r)}if(!this.bgTokenizer){this.bgTokenizer=new c(n);var i=this;this.bgTokenizer.addEventListener("update",function(e){i._emit("tokenizerUpdate",e)})}else this.bgTokenizer.setTokenizer(n);this.bgTokenizer.setDocument(this.getDocument()),this.tokenRe=e.tokenRe,this.nonTokenRe=e.nonTokenRe,t||(this.$options.wrapMethod.set.call(this,this.$wrapMethod),this.$setFolding(e.foldingRules),this.bgTokenizer.start(0),this._emit("changeMode"))},this.$stopWorker=function(){this.$worker&&this.$worker.terminate(),this.$worker=null},this.$startWorker=function(){if(typeof Worker!="undefined"&&!e.noWorker)try{this.$worker=this.$mode.createWorker(this)}catch(t){console.log("Could not load worker"),console.log(t),this.$worker=null}else this.$worker=null},this.getMode=function(){return this.$mode},this.$scrollTop=0,this.setScrollTop=function(e){if(this.$scrollTop===e||isNaN(e))return;this.$scrollTop=e,this._signal("changeScrollTop",e)},this.getScrollTop=function(){return this.$scrollTop},this.$scrollLeft=0,this.setScrollLeft=function(e){if(this.$scrollLeft===e||isNaN(e))return;this.$scrollLeft=e,this._signal("changeScrollLeft",e)},this.getScrollLeft=function(){return this.$scrollLeft},this.getScreenWidth=function(){return this.$computeWidth(),this.lineWidgets?Math.max(this.getLineWidgetMaxWidth(),this.screenWidth):this.screenWidth},this.getLineWidgetMaxWidth=function(){if(this.lineWidgetsWidth!=null)return this.lineWidgetsWidth;var e=0;return this.lineWidgets.forEach(function(t){t&&t.screenWidth>e&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;a<u;a++){if(a>o){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;r<e.length;r++){var i=e[r];i.group=="doc"&&(this.doc.applyDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!1,n))}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.setUndoSelect=function(e){this.$undoSelect=e},this.$getUndoSelection=function(e,t,n){function r(e){var n=e.action==="insertText"||e.action==="insertLines";return t?!n:n}var i=e[0],s,o,u=!1;r(i)?(s=f.fromPoints(i.range.start,i.range.end),u=!0):(s=f.fromPoints(i.range.start,i.range.start),u=!1);for(var a=1;a<e.length;a++)i=e[a],r(i)?(o=i.range.start,s.compare(o.row,o.column)==-1&&s.setStart(i.range.start),o=i.range.end,s.compare(o.row,o.column)==1&&s.setEnd(i.range.end),u=!0):(o=i.range.start,s.compare(o.row,o.column)==-1&&(s=f.fromPoints(i.range.start,i.range.start)),u=!1);if(n!=null){f.comparePoints(n.start,s.start)==0&&(n.start.column+=s.end.column-s.start.column,n.end.column+=s.end.column-s.start.column);var l=n.compareRange(s);l==1?s.setStart(n.start):l==-1&&s.setEnd(n.end)}return s},this.replace=function(e,t){return this.doc.replace(e,t)},this.moveText=function(e,t,n){var r=this.getTextRange(e),i=this.getFoldsInRange(e),s=f.fromPoints(t,t);if(!n){this.remove(e);var o=e.start.row-e.end.row,u=o?-e.end.column:e.start.column-e.end.column;u&&(s.start.row==e.end.row&&s.start.column>e.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.insert({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o<r;++o)if(s.charAt(o)!=" ")break;o<r&&s.charAt(o)==" "?(n.start.column=o,n.end.column=o+1):(n.start.column=0,n.end.column=o),this.remove(n)}},this.$moveLines=function(e,t,n){e=this.getRowFoldStart(e),t=this.getRowFoldEnd(t);if(n<0){var r=this.getRowFoldStart(e+n);if(r<0)return 0;var i=r-e}else if(n>0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeLines(e,t);return this.doc.insertLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=[];for(var n=0;n<t;n++)this.$wrapData.push([]);this.$updateWrapData(0,t-1)}this._emit("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this._emit("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._emit("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n,r=e.data.action,i=e.data.range.start.row,s=e.data.range.end.row,o=e.data.range.start,u=e.data.range.end,a=null;r.indexOf("Lines")!=-1?(r=="insertLines"?s=i+e.data.lines.length:s=i,n=e.data.lines?e.data.lines.length:s-i):n=s-i,this.$updating=!0;if(n!=0)if(r.indexOf("remove")!=-1){this[t?"$wrapData":"$rowLengthCache"].splice(i,n);var f=this.$foldData;a=this.getFoldsInRange(e.data.range),this.removeFolds(a);var l=this.getFoldLine(u.row),c=0;if(l){l.addRemoveChars(u.row,u.column,o.column-u.column),l.shiftRow(-n);var h=this.getFoldLine(i);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=u.row&&l.shiftRow(-n)}s=i}else{var p;if(t){p=[i,0];for(var d=0;d<n;d++)p.push([]);this.$wrapData.splice.apply(this.$wrapData,p)}else p=Array(n),p.unshift(i,0),this.$rowLengthCache.splice.apply(this.$rowLengthCache,p);var f=this.$foldData,l=this.getFoldLine(i),c=0;if(l){var v=l.range.compareInside(o.row,o.column);v==0?(l=l.split(o.row,o.column),l.shiftRow(n),l.addRemoveChars(s,0,u.column-o.column)):v==-1&&(l.addRemoveChars(i,0,u.column-o.column),l.shiftRow(n)),c=f.indexOf(l)+1}for(c;c<f.length;c++){var l=f[c];l.start.row>=i&&l.shiftRow(n)}}else{n=Math.abs(e.data.range.start.column-e.data.range.end.column),r.indexOf("remove")!=-1&&(a=this.getFoldsInRange(e.data.range),this.removeFolds(a),n=-n);var l=this.getFoldLine(i);l&&l.addRemoveChars(i,o.column,n)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(i,s):this.$updateRowLengthCache(i,s),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var n=this.doc.getAllLines(),r=this.getTabSize(),i=this.$wrapData,s=this.$wrapLimit,o,a,f=e;t=Math.min(t,n.length-1);while(f<=t)a=this.getFoldLine(f,a),a?(o=[],a.walk(function(e,t,r,i){var s;if(e!=null){s=this.$getDisplayTokens(e,o.length),s[0]=u;for(var a=1;a<s.length;a++)s[a]=l}else s=this.$getDisplayTokens(n[t].substring(i,r),o.length);o=o.concat(s)}.bind(this),a.end.row,n[a.end.row].length+1),i[a.start.row]=this.$computeWrapSplits(o,s,r),f=a.end.row+1):(o=this.$getDisplayTokens(n[f]),i[f]=this.$computeWrapSplits(o,s,r),f++)};var t=1,n=2,u=3,l=4,p=9,d=10,v=11,m=12;this.$computeWrapSplits=function(e,t){function a(t){var r=e.slice(i,t),o=r.length;r.join("").replace(/12/g,function(){o-=1}).replace(/2/g,function(){o-=1}),s+=o,n.push(s),i=t}if(e.length==0)return[];var n=[],r=e.length,i=0,s=0,o=this.$wrapAsCode;while(r-i>t){var f=i+t;if(e[f-1]>=d&&e[f]>=d){a(f);continue}if(e[f]==u||e[f]==l){for(f;f!=i-1;f--)if(e[f]==u)break;if(f>i){a(f);continue}f=i+t;for(f;f<e.length;f++)if(e[f]!=l)break;if(f==e.length)break;a(f);continue}var c=Math.max(f-(o?10:t-(t>>2)),i-1);while(f>c&&e[f]<u)f--;if(o){while(f>c&&e[f]<u)f--;while(f>c&&e[f]==p)f--}else while(f>c&&e[f]<d)f--;if(f>c){a(++f);continue}f=i+t,a(f)}return n},this.$getDisplayTokens=function(e,r){var i=[],s;r=r||0;for(var o=0;o<e.length;o++){var u=e.charCodeAt(o);if(u==9){s=this.getScreenTabSize(i.length+r),i.push(v);for(var a=1;a<s;a++)i.push(m)}else u==32?i.push(d):u>39&&u<48||u>57&&u<64?i.push(p):u>=4352&&g(u)?i.push(t,n):i.push(t)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i<e.length;i++){r=e.charCodeAt(i),r==9?n+=this.getScreenTabSize(n):r>=4352&&g(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getScreenLastRowColumn=function(e){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE);return this.documentToScreenColumn(t.row,t.column)},this.getDocumentLastRowColumn=function(e,t){var n=this.documentToScreenRow(e,t);return this.getScreenLastRowColumn(n)},this.getDocumentLastRowColumnPosition=function(e,t){var n=this.documentToScreenRow(e,t);return this.screenToDocumentPosition(n,Number.MAX_VALUE/10)},this.getRowSplitData=function(e){return this.$useWrapMode?this.$wrapData[e]:undefined},this.getScreenTabSize=function(e){return this.$tabSize-e%this.$tabSize},this.screenToDocumentRow=function(e,t){return this.screenToDocumentPosition(e,t).row},this.screenToDocumentColumn=function(e,t){return this.screenToDocumentPosition(e,t).column},this.screenToDocumentPosition=function(e,t){if(e<0)return{row:0,column:0};var n,r=0,i=0,s,o=0,u=0,a=this.$screenRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}if(this.$useWrapMode){var v=this.$wrapData[r];if(v){var m=Math.floor(e-o);s=v[m],m>0&&v.length&&(i=v[m-1]||v[v.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u<e){if(u>=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);if(this.$useWrapMode){var v=this.$wrapData[i],m=0;while(d.length>=v[m])r++,m++;d=d.substring(v[m-1]||0,d.length)}return{row:r,column:this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;r<n.length;r++)t=n[r],e-=t.end.row-t.start.row}else{var i=this.$wrapData.length,s=0,r=0,t=this.$foldData[r++],o=t?t.start.row:Infinity;while(s<i)e+=this.$wrapData[s].length+1,s++,s>o&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}this.$wrap=e},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},firstLineNumber:{set:function(){this._emit("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._emit("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._emit("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.lead=this.selectionLead=this.doc.createAnchor(0,0),this.anchor=this.selectionAnchor=this.doc.createAnchor(0,0);var t=this;this.lead.on("change",function(e){t._emit("changeCursor"),t.$isEmpty||t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.selectionAnchor.on("change",function(){t.$isEmpty||t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return this.isEmpty()?!1:this.getRange().isMultiLine()},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.anchor.setPosition(e,t),this.$isEmpty&&(this.$isEmpty=!1,this._emit("changeSelection"))},this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.shiftSelection=function(e){if(this.$isEmpty){this.moveCursorTo(this.lead.row,this.lead.column+e);return}var t=this.getSelectionAnchor(),n=this.getSelectionLead(),r=this.isBackwards();(!r||t.column!==0)&&this.setSelectionAnchor(t.row,t.column+e),(r||n.column!==0)&&this.$moveSelection(function(){this.moveCursorTo(n.row,n.column+e)})},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column==0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row<this.doc.getLength()-1&&this.moveCursorTo(this.lead.row+1,0);else{var n=this.session.getTabSize(),e=this.lead;this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column,e.column+n).split(" ").length-1==n?this.moveCursorBy(0,n):this.moveCursorBy(0,1)}},this.moveCursorLineStart=function(){var e=this.lead.row,t=this.lead.column,n=this.session.documentToScreenRow(e,t),r=this.session.screenToDocumentPosition(n,0),i=this.session.getDisplayLine(e,null,r.row,r.column),s=i.match(/^\s*/);s[0].length!=t&&!this.session.$useEmacsStyleLineStart&&(r.column+=s[0].length),this.moveCursorToPosition(r)},this.moveCursorLineEnd=function(){var e=this.lead,t=this.session.getDocumentLastRowColumnPosition(e.row,e.column);if(this.lead.column==t.column){var n=this.session.getLine(t.row);if(t.column==n.length){var r=n.search(/\s+$/);r>0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e<this.doc.getLength()-1&&this.moveCursorWordRight();return}if(i=this.session.tokenRe.exec(r))t+=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.moveCursorLongWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1)){this.moveCursorTo(n.start.row,n.start.column);return}var r=this.session.getFoldStringAt(e,t,-1);r==null&&(r=this.doc.getLine(e).substring(0,t));var s=i.stringReverse(r),o;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;if(o=this.session.nonTokenRe.exec(s))t-=this.session.nonTokenRe.lastIndex,s=s.slice(this.session.nonTokenRe.lastIndex),this.session.nonTokenRe.lastIndex=0;if(t<=0){this.moveCursorTo(e,0),this.moveCursorLeft(),e>0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e<s&&/^\s*$/.test(r));/^\s+/.test(r)||(r=""),t=0}var o=this.$shortWordEndIndex(r);this.moveCursorTo(e,t+o)},this.moveCursorShortWordLeft=function(){var e=this.lead.row,t=this.lead.column,n;if(n=this.session.getFoldAt(e,t,-1))return this.moveCursorTo(n.start.row,n.start.column);var r=this.session.getLine(e).substring(0,t);if(t==0){do e--,r=this.doc.getLine(e);while(e>0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e.isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour").Behaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i,this.$behaviour=new s};(function(){this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=new this.HighlightRules,this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i<r.length;i++)if(r[i].type==="comment")return!0}}else{if(Array.isArray(this.lineCommentStart))var p=this.lineCommentStart.map(u.escapeRegExp).join("|"),c=this.lineCommentStart[0];else var p=u.escapeRegExp(this.lineCommentStart),c=this.lineCommentStart;p=new RegExp("^(\\s*)(?:"+p+") ?"),l=t.getUseSoftTabs();var m=function(e,t){var n=e.match(p);if(!n)return;var r=n[1].length,s=n[0].length;!b(e,r,s)&&n[0][s-1]==" "&&s--,i.removeInLine(t,r,s)},y=c+" ",v=function(e,t){if(!s||/\S/.test(e))b(e,a,a)?i.insertInLine({row:t,column:a},y):i.insertInLine({row:t,column:a},c)},g=function(e,t){return p.test(e)},b=function(e,t,n){var r=0;while(t--&&e.charAt(t)==" ")r++;if(r%f!=0)return!1;var r=0;while(e.charAt(n++)==" ")r++;return f>2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(n<a&&(a=n),o&&!g(e,t)&&(o=!1)):E>e.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t<n.length;t++)(function(e){var r=n[t],i=e[r];e[n[t]]=function(){return this.$delegator(r,arguments,i)}})(this)},this.$delegator=function(e,t,n){var r=t[0];typeof r!="string"&&(r=r[0]);for(var i=0;i<this.$embeds.length;i++){if(!this.$modes[this.$embeds[i]])continue;var s=r.split(this.$embeds[i]);if(!s[0]&&s[1]){t[0]=s[1];var o=this.$modes[this.$embeds[i]];return o[e].apply(o,t)}}var u=n.apply(this,t);return n?u:undefined},this.transformAction=function(e,t,n,r,i){if(this.$behaviour){var s=this.$behaviour.getBehaviours();for(var o in s)if(s[o][t]){var u=s[o][t].apply(this,arguments);if(u)return u}}},this.getKeywords=function(e){if(!this.completionKeywords){var t=this.$tokenizer.rules,n=[];for(var r in t){var i=t[r];for(var s=0,o=i.length;s<o;s++)if(typeof i[s].token=="string")/keyword|support|storage/.test(i[s].token)&&n.push(i[s].regex);else if(typeof i[s].token=="object")for(var u=0,a=i[s].token.length;u<a;u++)if(/keyword|support|storage/.test(i[s].token[u])){var r=i[s].regex.match(/\(.+?\)/g)[u];n.push(r.substr(1,r.length-2))}}this.completionKeywords=n}return e?n.concat(this.$keywordList||[]):this.$keywordList},this.$createKeywordList=function(){return this.$highlightRules||this.getTokenizer(),this.$keywordList=this.$highlightRules.$keywordList||[]},this.getCompletions=function(e,t,n,r){var i=this.$keywordList||this.$createKeywordList();return i.map(function(e){return{name:e,value:e,score:0,meta:"keyword"}})},this.$id="ace/mode/text"}).call(l.prototype),t.Mode=l}),ace.define("ace/tokenizer",["require","exports","module"],function(e,t,n){var r=1e3,i=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a<n.length;a++){var f=n[a];f.defaultToken&&(s.defaultToken=f.defaultToken),f.caseInsensitive&&(o="gi");if(f.regex==null)continue;f.regex instanceof RegExp&&(f.regex=f.regex.toString().slice(1,-1));var l=f.regex,c=(new RegExp("(?:("+l+")|(.))")).exec("a").length-2;if(Array.isArray(f.token))if(f.token.length==1||c==1)f.token=f.token[0];else{if(c-1!=f.token.length)throw new Error("number of classes and regexp groups in '"+f.token+"'\n'"+f.regex+"' doesn't match\n"+(c-1)+"!="+f.token.length);f.tokenArray=f.token,f.token=null,f.onMatch=this.$arrayTokens}else typeof f.token=="function"&&!f.onMatch&&(c>1?f.onMatch=this.$applyToken:f.onMatch=f.token);c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null),f.__proto__=null}u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){r=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;i<s;i++)t[i]&&(r[r.length]={type:n[i],value:t[i]});return r},this.$arrayTokens=function(e){if(!e)return[];var t=this.splitRegex.exec(e);if(!t)return"text";var n=[],r=this.tokenArray;for(var i=0,s=r.length;i<s;i++)t[i+1]&&(n[n.length]={type:r[i],value:t[i+1]});return n},this.removeCapturingGroups=function(e){var t=e.replace(/\[(?:\\.|[^\]])*?\]|\\.|\(\?[:=!]|(\()/g,function(e,t){return t?"(?:":e});return t},this.createSplitterRegexp=function(e,t){if(e.indexOf("(?=")!=-1){var n=0,r=!1,i={};e.replace(/(\\.)|(\((?:\?[=!])?)|(\))|([\[\]])/g,function(e,t,s,o,u,a){return r?r=u!="]":u?r=!0:o?(n==i.stack&&(i.end=a+1,i.stack=-1),n--):s&&(n++,s.length!=1&&(i.stack=n,i.start=a)),e}),i.end!=null&&/^\)*$/.test(e.substr(i.end))&&(e=e.substring(0,i.start)+e.substr(i.end))}return new RegExp(e,(t||"").replace("g",""))},this.getLineTokens=function(e,t){if(t&&typeof t!="string"){var n=t.slice(0);t=n[0]}else var n=[];var i=t||"start",s=this.states[i];s||(i="start",s=this.states[i]);var o=this.matchMappings[i],u=this.regExps[i];u.lastIndex=0;var a,f=[],l=0,c={type:null,value:""};while(a=u.exec(e)){var h=o.defaultToken,p=null,d=a[0],v=u.lastIndex;if(v-d.length>l){var m=e.substring(l,v-d.length);c.type==h?c.value+=m:(c.type&&f.push(c),c={type:h,value:m})}for(var g=0;g<a.length-2;g++){if(a[g+1]===undefined)continue;p=s[o[g]],p.onMatch?h=p.onMatch(d,i,n):h=p.token,p.next&&(typeof p.next=="string"?i=p.next:i=p.next(i,n),s=this.states[i],s||(window.console&&console.error&&console.error(i,"doesn't exist"),i="start",s=this.states[i]),o=this.matchMappings[i],l=v,u=this.regExps[i],u.lastIndex=v);break}if(d)if(typeof h=="string")!!p&&p.merge===!1||c.type!==h?(c.type&&f.push(c),c={type:h,value:d}):c.value+=d;else if(h){c.type&&f.push(c),c={type:null,value:""};for(var g=0;g<h.length;g++)f.push(h[g])}if(l==e.length)break;l=v;if(f.length>r){while(l<e.length)c.type&&f.push(c),c={value:e.substring(l,l+=2e3),type:"overflow"};i="start",n=[];break}}return c.type&&f.push(c),n.length>1&&n[0]!==i&&n.unshift(i),{tokens:f,state:n.length?n:i}}}).call(i.prototype),t.Tokenizer=i}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i<r.length;i++){var s=r[i];s.next&&(typeof s.next!="string"?s.nextState&&s.nextState.indexOf(t)!==0&&(s.nextState=t+s.nextState):s.next.indexOf(t)!==0&&(s.next=t+s.next))}this.$rules[t+n]=r}},this.getRules=function(){return this.$rules},this.embedRules=function(e,t,n,i,s){var o=(new e).getRules();if(i)for(var u=0;u<i.length;u++)i[u]=t+i[u];else{i=[];for(var a in o)i.push(t+a)}this.addRules(o,t);if(n){var f=Array.prototype[s?"push":"unshift"];for(var u=0;u<i.length;u++)f.apply(this.$rules[i[u]],r.deepCopy(n))}this.$embeds||(this.$embeds=[]),this.$embeds.push(t)},this.getEmbeds=function(){return this.$embeds};var e=function(e,t){return e!="start"&&t.unshift(this.nextState,e),this.nextState},t=function(e,t){return t[0]!==e?"start":(t.shift(),t.shift())};this.normalizeRules=function(){function i(s){var o=r[s];o.processed=!0;for(var u=0;u<o.length;u++){var a=o[u];!a.regex&&a.start&&(a.regex=a.start,a.next||(a.next=[]),a.next.push({defaultToken:a.token},{token:a.token+".end",regex:a.end||a.start,next:"pop"}),a.token=a.token+".start",a.push=!0);var f=a.next||a.push;if(f&&Array.isArray(f)){var l=a.stateName;l||(l=a.token,typeof l!="string"&&(l=l[0]||""),r[l]&&(l+=n++)),r[l]=f,a.next=l,i(l)}else f=="pop"&&(a.next=t);a.push&&(a.nextState=a.next||a.push,a.next=e,delete a.push);if(a.rules)for(var c in a.rules)r[c]?r[c].push&&r[c].push.apply(r[c],a.rules[c]):r[c]=a.rules[c];if(a.include||typeof a=="string")var h=a.include||a,p=r[h];else Array.isArray(a)&&(p=a);if(p){var d=[u,1].concat(p);a.noEscape&&(d=d.filter(function(e){return!e.next})),o.splice.apply(o,d),u--,p=null}a.keywordMap&&(a.token=this.createKeywordMapper(a.keywordMap,a.defaultToken||"text",a.caseInsensitive),delete a.defaultToken)}}var n=0,r=this.$rules;Object.keys(r).forEach(i,this)},this.createKeywordMapper=function(e,t,n,r){var i=Object.create(null);return Object.keys(e).forEach(function(t){var s=e[t];n&&(s=s.toLowerCase());var o=s.split(r||"|");for(var u=o.length;u--;)i[o[u]]=t}),Object.getPrototypeOf(i)&&(i.__proto__=null),this.$keywordList=Object.keys(i),e=null,n?function(e){return i[e.toLowerCase()]||t}:function(e){return i[e]||t}},this.getKeywords=function(){return this.$keywords}}).call(i.prototype),t.TextHighlightRules=i}),ace.define("ace/mode/behaviour",["require","exports","module"],function(e,t,n){var r=function(){this.$behaviours={}};(function(){this.add=function(e,t,n){switch(undefined){case this.$behaviours:this.$behaviours={};case this.$behaviours[e]:this.$behaviours[e]={}}this.$behaviours[e][t]=n},this.addBehaviours=function(e){for(var t in e)for(var n in e[t])this.add(t,n,e[t][n])},this.remove=function(e){this.$behaviours&&this.$behaviours[e]&&delete this.$behaviours[e]},this.inherit=function(e,t){if(typeof e=="function")var n=(new e).getBehaviours(t);else var n=e.getBehaviours(t);this.addBehaviours(n)},this.getBehaviours=function(e){if(!e)return this.$behaviours;var t={};for(var n=0;n<e.length;n++)this.$behaviours[e[n]]&&(t[e[n]]=this.$behaviours[e[n]]);return t}}).call(r.prototype),t.Behaviour=r}),ace.define("ace/unicode",["require","exports","module"],function(e,t,n){function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),ace.define("ace/token_iterator",["require","exports","module"],function(e,t,n){var r=function(e,t,n){this.$session=e,this.$row=t,this.$rowTokens=e.getTokens(t);var r=e.getTokenAt(t,n);this.$tokenIndex=r?r.index:-1};(function(){this.stepBackward=function(){this.$tokenIndex-=1;while(this.$tokenIndex<0){this.$row-=1;if(this.$row<0)return this.$row=0,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=this.$rowTokens.length-1}return this.$rowTokens[this.$tokenIndex]},this.stepForward=function(){this.$tokenIndex+=1;var e;while(this.$tokenIndex>=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n}}).call(r.prototype),t.TokenIterator=r}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length==0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this._insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){!e instanceof s&&(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){!e instanceof s&&(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/background_tokenizer",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=function(e,t){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.tokenizer=e;var n=this;this.$worker=function(){if(!n.running)return;var e=new Date,t=n.currentLine,r=-1,i=n.doc;while(n.lines[t])t++;var s=t,o=i.getLength(),u=0;n.running=!1;while(t<o){n.$tokenizeRow(t),r=t;do t++;while(n.lines[t]);u++;if(u%5==0&&new Date-e>20){n.running=setTimeout(n.$worker,20),n.currentLine=t;return}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._emit("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.range,n=t.start.row,r=t.end.row-n;if(r===0)this.lines[n]=null;else if(e.action=="removeText"||e.action=="removeLines")this.lines.splice(n,r+1,null),this.states.splice(n,r+1,null);else{var i=Array(r+1);i.unshift(n,1),this.lines.splice.apply(this.lines,i),this.states.splice.apply(this.states,i)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),ace.define("ace/edit_session/folding",["require","exports","module","ace/range","ace/edit_session/fold_line","ace/edit_session/fold","ace/token_iterator"],function(e,t,n){function u(){this.getFoldAt=function(e,t,n){var r=this.getFoldLine(e);if(!r)return null;var i=r.folds;for(var s=0;s<i.length;s++){var o=i[s];if(o.range.contains(e,t)){if(n==1&&o.range.isEnd(e,t))continue;if(n==-1&&o.range.isStart(e,t))continue;return o}}},this.getFoldsInRange=function(e){var t=e.start,n=e.end,r=this.$foldData,i=[];t.column+=1,n.column-=1;for(var s=0;s<r.length;s++){var o=r[s].range.compareRange(e);if(o==2)continue;if(o==-2)break;var u=r[s].folds;for(var a=0;a<u.length;a++){var f=u[a];o=f.range.compareRange(e);if(o==-2)break;if(o==2)continue;if(o==42)break;i.push(f)}}return t.column-=1,n.column+=1,i},this.getFoldsInRangeList=function(e){if(Array.isArray(e)){var t=[];e.forEach(function(e){t=t.concat(this.getFoldsInRange(e))},this)}else var t=this.getFoldsInRange(e);return t},this.getAllFolds=function(){var e=[],t=this.$foldData;for(var n=0;n<t.length;n++)for(var r=0;r<t[n].folds.length;r++)e.push(t[n].folds[r]);return e},this.getFoldStringAt=function(e,t,n,r){r=r||this.getFoldLine(e);if(!r)return null;var i={end:{column:0}},s,o;for(var u=0;u<r.folds.length;u++){o=r.folds[u];var a=o.range.compareEnd(e,t);if(a==-1){s=this.getLine(o.start.row).substring(i.end.column,o.start.column);break}if(a===0)return null;i=o}return s||(s=this.getLine(o.start.row).substring(i.end.column)),n==-1?s.substring(0,t-i.end.column):n==1?s.substring(t-i.end.column):s},this.getFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.start.row<=e&&i.end.row>=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r<n.length;r++){var i=n[r];if(i.end.row>=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i<n.length;i++){var s=n[i],o=s.end.row,u=s.start.row;if(o>=t){u<t&&(u>=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u<f||u==f&&a<=l-2){var c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);if(c&&!c.range.isStart(u,a)||h&&!h.range.isEnd(f,l))throw new Error("A fold can't intersect already existing fold"+o.range+c.range);var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d<n.length;d++){var v=n[d];if(f==v.start.row){v.addFold(o),r=!0;break}if(u==v.end.row){v.addFold(o),r=!0;if(!o.sameRow){var m=n[d+1];if(m&&m.start.row==f){v.merge(m);break}}break}if(f<=v.start.row)break}return r||(v=this.$addFoldLine(new i(this.$foldData,o))),this.$useWrapMode?this.$updateWrapData(v.start.row,v.start.row):this.$updateRowLengthCache(v.start.row,v.start.row),this.$modified=!0,this._emit("changeFold",{data:o,action:"add"}),o}throw new Error("The range has to be at least 2 characters width")},this.addFolds=function(e){e.forEach(function(e){this.addFold(e)},this)},this.removeFold=function(e){var t=e.foldLine,n=t.start.row,r=t.end.row,i=this.$foldData,s=t.folds;if(s.length==1)i.splice(i.indexOf(t),1);else if(t.range.isEnd(e.end.row,e.end.column))s.pop(),t.end.row=s[s.length-1].end.row,t.end.column=s[s.length-1].end.column;else if(t.range.isStart(e.start.row,e.start.column))s.shift(),t.start.row=s[0].start.row,t.start.column=s[0].start.column;else if(e.sameRow)s.splice(s.indexOf(e),1);else{var o=t.split(e.start.row,e.start.column);s=o.folds,s.shift(),o.start.row=s[0].start.row,o.start.column=s[0].start.column}this.$updating||(this.$useWrapMode?this.$updateWrapData(n,r):this.$updateRowLengthCache(n,r)),this.$modified=!0,this._emit("changeFold",{data:e,action:"remove"})},this.removeFolds=function(e){var t=[];for(var n=0;n<e.length;n++)t.push(e[n]);t.forEach(function(e){this.removeFold(e)},this),this.$modified=!0},this.expandFold=function(e){this.removeFold(e),e.subFolds.forEach(function(t){e.restoreRange(t),this.addFold(t)},this),e.collapseChildren>0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row,i=0),t==null&&(t=e.end.row,n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t<r)return;if(t==r){if(n<i)return;u=Math.max(i,u)}e!=null?o+=e:o+=s.getLine(t).substring(u,n)},t,n),o},this.getDisplayLine=function(e,t,n,r){var i=this.getFoldLine(e);if(!i){var s;return s=this.doc.getLine(e),s.substring(r||0,t||s.length)}return this.getFoldDisplayLine(i,e,t,n,r)},this.$cloneFoldData=function(){var e=[];return e=this.$foldData.map(function(t){var n=t.folds.map(function(e){return e.clone()});return new i(e,n)}),e},this.toggleFold=function(e){var t=this.selection,n=t.getRange(),r,i;if(n.isEmpty()){var s=n.start;r=this.getFoldAt(s.row,s.column);if(r){this.expandFold(r);return}(i=this.findMatchingBracket(s))?n.comparePoint(i)==1?n.end=i:(n.start=i,n.start.column++,n.end.column--):(i=this.findMatchingBracket({row:s.row,column:s.column+1}))?(n.comparePoint(i)==1?n.end=i:n.start=i,n.start.column++):n=this.getCommentFoldRange(s.row,s.column)||n}else{var o=this.getFoldsInRange(n);if(e&&o.length){this.expandFolds(o);return}o.length==1&&(r=o[0])}r||(r=this.getFoldAt(n.start.row,n.start.column));if(r&&r.range.toString()==n.toString()){this.expandFold(r);return}var u="...";if(!n.isMultiLine()){u=this.getTextRange(n);if(u.length<4)return;u=u.trim().substring(0,2)+".."}this.addFold(u,n)},this.getCommentFoldRange=function(e,t,n){var i=new o(this,e,t),s=i.getCurrentToken();if(s&&/^comment|string/.test(s.type)){var u=new r,a=new RegExp(s.type.replace(/\..*/,"\\."));if(n!=1){do s=i.stepBackward();while(s&&a.test(s.type));i.stepForward()}u.start.row=i.getCurrentTokenRow(),u.start.column=i.getCurrentTokenColumn()+2,i=new o(this,e,t);if(n!=-1){do s=i.stepForward();while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return u.end.row=i.getCurrentTokenRow(),u.end.column=i.getCurrentTokenColumn()+s.value.length-2,u}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i<t;i++){r[i]==null&&(r[i]=this.getFoldWidget(i));if(r[i]!="start")continue;var s=this.getFoldWidgetRange(i);if(s&&s.isMultiLine()&&s.end.row<=t&&s.start.row>=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.removeListener("change",this.$updateFoldWidgets),this._emit("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s){t.children||t.all?this.removeFold(s):this.expandFold(s);return}var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range)){this.removeFold(s);return}}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,o.end.row,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i===0)this.foldWidgets[r]=null;else if(t.action=="removeText"||t.action=="removeLines")this.foldWidgets.splice(r,i+1,null);else{var s=Array(i+1);s.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,s)}}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),ace.define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.row<this.startRow||e.endRow>this.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f<i.length;f++){s=i[f],o=s.range.compareStart(t,n);if(o==-1){e(null,t,n,r,a);return}u=e(null,s.start.row,s.start.column,r,a),u=!u&&e(s.placeholder,s.start.row,s.start.column,r);if(u||o==0)return;a=!s.sameRow,r=s.end.column}e(null,t,n,r,a)},this.getNextFoldTo=function(e,t){var n,r;for(var i=0;i<this.folds.length;i++){n=this.folds[i],r=n.range.compareEnd(e,t);if(r==-1)return{fold:n,kind:"after"};if(r==0)return{fold:n,kind:"inside"}}return null},this.addRemoveChars=function(e,t,n){var r=this.getNextFoldTo(e,t),i,s;if(r){i=r.fold;if(r.kind=="inside"&&i.start.column!=t&&i.start.row!=e)window.console&&window.console.log(e,t,i);else if(i.start.row==e){s=this.folds;var o=s.indexOf(i);o==0&&(this.start.column+=n);for(o;o<s.length;o++){i=s[o],i.start.column+=n;if(!i.sameRow)return;i.end.column+=n}this.end.column+=n}}},this.split=function(e,t){var n=this.getNextFoldTo(e,t).fold,r=this.folds,s=this.foldData;if(!n)return null;var o=r.indexOf(n),u=r[o-1];this.end.row=u.end.row,this.end.column=u.end.column,r=r.splice(o,r.length-o);var a=new i(s,r);return s.splice(s.indexOf(this)+1,0,a),a},this.merge=function(e){var t=e.folds;for(var n=0;n<t.length;n++)this.addFold(t[n]);var r=this.foldData;r.splice(r.indexOf(e),1)},this.toString=function(){var e=[this.range.toString()+": ["];return this.folds.forEach(function(t){e.push(" "+t.toString())}),e.push("]"),e.join("\n")},this.idxToPosition=function(e){var t=0,n;for(var r=0;r<this.folds.length;r++){var n=this.folds[r];e-=n.start.column-t;if(e<0)return{row:n.start.row,column:n.start.column+e};e-=n.placeholder.length;if(e<0)return n.start;t=n.end.column}return{row:this.end.row,column:this.end.column+e}}}).call(i.prototype),t.FoldLine=i}),ace.define("ace/edit_session/fold",["require","exports","module","ace/range","ace/range_list","ace/lib/oop"],function(e,t,n){function u(e,t){e.row-=t.row,e.row==0&&(e.column-=t.column)}function a(e,t){u(e.start,t),u(e.end,t)}function f(e,t){e.row==0&&(e.column+=t.column),e.row+=t.row}function l(e,t){f(e.start,t),f(e.end,t)}var r=e("../range").Range,i=e("../range_list").RangeList,s=e("../lib/oop"),o=t.Fold=function(e,t){this.foldLine=null,this.placeholder=t,this.range=e,this.start=e.start,this.end=e.end,this.sameRow=e.start.row==e.end.row,this.subFolds=this.ranges=[]};s.inherits(o,i),function(){this.toString=function(){return'"'+this.placeholder+'" '+this.range.toString()},this.setFoldLine=function(e){this.foldLine=e,this.subFolds.forEach(function(t){t.setFoldLine(e)})},this.clone=function(){var e=this.range.clone(),t=new o(e,this.placeholder);return this.subFolds.forEach(function(e){t.subFolds.push(e.clone())}),t.collapseChildren=this.collapseChildren,t},this.addSubFold=function(e){if(this.range.isEqual(e))return;if(!this.range.containsRange(e))throw new Error("A fold can't intersect already existing fold"+e.range+this.range);a(e,this.start);var t=e.start.row,n=e.start.column;for(var r=0,i=-1;r<this.subFolds.length;r++){i=this.subFolds[r].range.compare(t,n);if(i!=1)break}var s=this.subFolds[r];if(i==0)return s.addSubFold(e);var t=e.range.end.row,n=e.range.end.column;for(var o=r,i=-1;o<this.subFolds.length;o++){i=this.subFolds[o].range.compare(t,n);if(i!=1)break}var u=this.subFolds[o];if(i==0)throw new Error("A fold can't intersect already existing fold"+e.range+this.range);var f=this.subFolds.splice(r,o-r,e);return e.setFoldLine(this.foldLine),e},this.restoreRange=function(e){return l(e,this.start)}}.call(o.prototype)}),ace.define("ace/range_list",["require","exports","module","ace/range"],function(e,t,n){var r=e("./range").Range,i=r.comparePoints,s=function(){this.ranges=[]};(function(){this.comparePoints=i,this.pointIndex=function(e,t,n){var r=this.ranges;for(var s=n||0;s<r.length;s++){var o=r[s],u=i(e,o.end);if(u>0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.call(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s<t.length;s++){r=n,n=t[s];var o=i(r.end,n.start);if(o<0)continue;if(o==0&&!r.isEmpty()&&!n.isEmpty())continue;i(r.end,n.end)<0&&(r.end.row=n.end.row,r.end.column=n.end.column),t.splice(s,1),e.push(n),n=r,s--}return this.ranges=t,e},this.contains=function(e,t){return this.pointIndex({row:e,column:t})>=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row<e)return[];var r=this.pointIndex({row:e,column:0});r<0&&(r=-r-1);var i=this.pointIndex({row:t,column:0},r);i<0&&(i=-i-1);var s=[];for(var o=r;o<i;o++)s.push(n[o]);return s},this.removeAll=function(){return this.ranges.splice(0,this.ranges.length)},this.attach=function(e){this.session&&this.detach(),this.session=e,this.onChange=this.$onChange.bind(this),this.session.on("change",this.onChange)},this.detach=function(){if(!this.session)return;this.session.removeListener("change",this.onChange),this.session=null},this.$onChange=function(e){var t=e.data.range;if(e.data.action[0]=="i")var n=t.start,r=t.end;else var r=t.start,n=t.end;var i=n.row,s=r.row,o=s-i,u=-n.column+r.column,a=this.ranges;for(var f=0,l=a.length;f<l;f++){var c=a[f];if(c.end.row<i)continue;if(c.start.row>i)break;c.start.row==i&&c.start.column>=n.column&&(c.start.column!=n.column||!this.$insertRight)&&(c.start.column+=u,c.start.row+=o);if(c.end.row==i&&c.end.column>=n.column){if(c.end.column==n.column&&this.$insertRight)continue;c.end.column==n.column&&u>0&&f<l-1&&c.end.column>c.start.column&&c.end.column==a[f+1].start.column&&(c.end.column-=u),c.end.column+=u,c.end.row+=o}}if(o!=0&&f<l)for(;f<l;f++){var c=a[f];c.start.row+=o,c.end.row+=o}}}).call(s.prototype),t.RangeList=s}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a<l){var c=f.charAt(a);if(c==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else c==e&&(s+=1);a+=1}do u=o.stepForward();while(u&&!n.test(u.type));if(u==null)break;a=0}return null}}var r=e("../token_iterator").TokenIterator,i=e("../range").Range;t.BracketMatch=s}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$matchIterator(e,this.$options);if(!t)return!1;var n=null;return t.forEach(function(e,t,r){if(!e.start){var i=e.offset+(r||0);n=new s(t,i,t,i+e.length)}else n=e;return!0}),n},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a;for(var l=u.offset||0;l<=f;l++){for(var c=0;c<a;c++)if(i[l+c].search(u[c])==-1)break;var h=i[l],p=i[l+a-1],d=h.match(u[0])[0].length,v=p.match(u[a-1])[0].length;o.push(new s(l,h.length-d,l+a-1,v))}}else for(var m=0;m<i.length;m++){var g=r.getMatchOffsets(i[m],u);for(var c=0;c<g.length;c++){var y=g[c];o.push(new s(m,y.offset,m,y.offset+y.length))}}if(n){var b=n.start.column,w=n.start.column,m=0,c=o.length-1;while(m<c&&o[m].start.column<b&&o[m].start.row==n.start.row)m++;while(m<c&&o[c].end.column>w&&o[c].end.row==n.end.row)c--;o=o.slice(m,c+1);for(m=0,c=o.length;m<c;m++)o[m].start.row+=n.start.row,o[m].end.row+=n.start.row}return o},this.replace=function(e,t){var n=this.$options,r=this.$assembleRegExp(n);if(n.$isMultiLine)return t;if(!r)return;var i=r.exec(e);if(!i||i[0].length!=e.length)return null;t=e.replace(r,t);if(n.preserveCase){t=t.split("");for(var s=Math.min(e.length,e.length);s--;){var o=e[s];o&&o.toLowerCase()!=o?t[s]=t[s].toUpperCase():t[s]=t[s].toLowerCase()}t=t.join("")}return t},this.$matchIterator=function(e,t){var n=this.$assembleRegExp(t);if(!n)return!1;var i=this,o,u=t.backwards;if(t.$isMultiLine)var a=n.length,f=function(t,r,i){var u=t.search(n[0]);if(u==-1)return;for(var f=1;f<a;f++){t=e.getLine(r+f);if(t.search(n[f])==-1)return}var l=t.match(n[a-1])[0].length,c=new s(r,u,r+a-1,l);n.offset==1?(c.start.row--,c.start.column=Number.MAX_VALUE):i&&(c.start.column+=i);if(o(c))return!0};else if(u)var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=s.length-1;u>=0;u--)if(o(s[u],t,i))return!0};else var f=function(e,t,i){var s=r.getMatchOffsets(e,n);for(var u=0;u<s.length;u++)if(o(s[u],t,i))return!0};return{forEach:function(n){o=n,i.$lineIterator(e,t).forEach(f)}}},this.$assembleRegExp=function(e,t){if(e.needle instanceof RegExp)return e.re=e.needle;var n=e.needle;if(!e.needle)return e.re=!1;e.regExp||(n=r.escapeRegExp(n)),e.wholeWord&&(n="\\b"+n+"\\b");var i=e.caseSensitive?"g":"gi";e.$isMultiLine=!t&&/[\n\r]/.test(n);if(e.$isMultiLine)return e.re=this.$assembleMultilineRegExp(n,i);try{var s=new RegExp(n,i)}catch(o){s=!1}return e.re=s},this.$assembleMultilineRegExp=function(e,t){var n=e.replace(/\r\n|\r|\n/g,"$\n^").split("\n"),r=[];for(var i=0;i<n.length;i++)try{r.push(new RegExp(n[i],t))}catch(s){return!1}return n[0]==""?(r.shift(),r.offset=1):r.offset=0,r},this.$lineIterator=function(e,t){var n=t.backwards==1,r=t.skipCurrent!=0,i=t.range,s=t.start;s||(s=i?i[n?"end":"start"]:e.selection.getRange()),s.start&&(s=s[r!=n?"end":"start"]);var o=i?i.start.row:0,u=i?i.end.row:e.getLength()-1,a=n?function(n){var r=s.row,i=e.getLine(r).substring(0,s.column);if(n(i,r))return;for(r--;r>=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../keyboard/hash_handler").HashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var r={editor:t,command:e,args:n},i=this._emit("exec",r);return this._signal("afterExec",r),i===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){function s(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={};if(this.__defineGetter__&&this.__defineSetter__&&typeof console!="undefined"&&console.error){var n=!1,r=function(){n||(n=!0,console.error("commmandKeyBinding has too many m's. use commandKeyBinding"))};this.__defineGetter__("commmandKeyBinding",function(){return r(),this.commandKeyBinding}),this.__defineSetter__("commmandKeyBinding",function(e){return r(),this.commandKeyBinding=e})}else this.commmandKeyBinding=this.commandKeyBinding;this.addCommands(e)}var r=e("../lib/keys"),i=e("../lib/useragent");(function(){this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e){var t=typeof e=="string"?e:e.name;e=this.commands[t],delete this.commands[t];var n=this.commandKeyBinding;for(var r in n)for(var i in n[r])n[r][i]==e&&delete n[r][i]},this.bindKey=function(e,t){if(!e)return;if(typeof t=="function"){this.addCommand({exec:t,bindKey:e,name:t.name||e});return}var n=this.commandKeyBinding;e.split("|").forEach(function(e){var r=this.parseKeys(e,t),i=r.hashId;(n[i]||(n[i]={}))[r.key]=t},this)},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){var t=e.bindKey;if(!t)return;var n=typeof t=="string"?t:t[this.platform];this.bindKey(n,e)},this.parseKeys=function(e){e.indexOf(" ")!=-1&&(e=e.split(/\s+/).pop());var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=this.commandKeyBinding;return r[t]&&r[t][n]},this.handleKeyboard=function(e,t,n,r){return{command:this.findKeyCommand(t,n)}}}).call(s.prototype),t.HashHandler=s}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config"],function(e,t,n){function s(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config");t.commands=[{name:"showSettingsMenu",bindKey:s("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:s("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"center",readOnly:!0},{name:"goToPreviousError",bindKey:s("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"center",readOnly:!0},{name:"selectall",bindKey:s("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:s(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:s("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:s("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:s("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:s("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:s("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:s("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:s("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:s("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:s("Ctrl-K","Command-G"),exec:function(e){e.findNext()},readOnly:!0},{name:"findprevious",bindKey:s("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},readOnly:!0},{name:"selectOrFindNext",bindKey:s("ALt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:s("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:s("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:s("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:s("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:s("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:s("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:s("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:s("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:s("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:s("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:s("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:s("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:s("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:s("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:s("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:s("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:s("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:s("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:s("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:s("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:s("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:s("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:s(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:s("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:s(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:s("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:s("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",readOnly:!0},{name:"togglerecording",bindKey:s("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:s("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:s("Ctrl-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:s("Ctrl-Shift-P",null),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},multiSelectAction:"forEach"},{name:"removeline",bindKey:s("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:s("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},multiSelectAction:"forEach"},{name:"sortlines",bindKey:s("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:s("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:s("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach"},{name:"modifyNumberUp",bindKey:s("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:s("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:s("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:s("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:s("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:s("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()}},{name:"movelinesup",bindKey:s("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()}},{name:"copylinesdown",bindKey:s("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()}},{name:"movelinesdown",bindKey:s("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()}},{name:"del",bindKey:s("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach"},{name:"backspace",bindKey:s("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach"},{name:"cut_or_delete",bindKey:s("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach"},{name:"removetolinestart",bindKey:s("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach"},{name:"removetolineend",bindKey:s("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach"},{name:"removewordleft",bindKey:s("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach"},{name:"removewordright",bindKey:s("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach"},{name:"outdent",bindKey:s("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:s("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:s("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:s("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach"},{name:"splitline",bindKey:s(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach"},{name:"transposeletters",bindKey:s("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)}},{name:"touppercase",bindKey:s("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach"},{name:"tolowercase",bindKey:s("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach"}]}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(t=this.$undoStack.pop().concat(t)),this.$undoStack.push(t),this.$redoStack=[],this.dirtyCounter<0&&(this.dirtyCounter=NaN),this.dirtyCounter++},this.undo=function(e){var t=this.$undoStack.pop(),n=null;return t&&(n=this.$doc.undoChanges(t,e),this.$redoStack.push(t),this.dirtyCounter--),n},this.redo=function(e){var t=this.$redoStack.pop(),n=null;return t&&(n=this.$doc.redoChanges(t,e),this.$undoStack.push(t),this.dirtyCounter++),n},this.reset=function(){this.$undoStack=[],this.$redoStack=[],this.dirtyCounter=0},this.hasUndo=function(){return this.$undoStack.length>0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0}}).call(r.prototype),t.UndoManager=r}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/useragent","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/renderloop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/useragent"),o=e("./config"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./lib/event_emitter").EventEmitter,v=".ace_editor {position: relative;overflow: hidden;font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'source-code-pro', monospace;font-size: 12px;line-height: normal;color: black;}.ace_editor .ace_line {direction: ltr;unicode-bidi: bidi-override;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: text;min-width: 100%;}.ace_dragging, .ace_dragging * {cursor: move !important;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: '';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTQ4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTU4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBMjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBMzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkgXxbAAAAJbSURBVHjapFNNaBNBFH4zs5vdZLP5sQmNpT82QY209heh1ioWisaDRcSKF0WKJ0GQnrzrxasHsR6EnlrwD0TagxJabaVEpFYxLWlLSS822tr87m66ccfd2GKyVhA6MMybgfe97/vmPUQphd0sZjto9XIn9OOsvlu2nkqRzVU+6vvlzPf8W6bk8dxQ0NPbxAALgCgg2JkaQuhzQau/El0zbmUA7U0Es8v2CiYmKQJHGO1QICCLoqilMhkmurDAyapKgqItezi/USRdJqEYY4D5jCy03ht2yMkkvL91jTTX10qzyyu2hruPRN7jgbH+EOsXcMLgYiThEgAMhABW85oqy1DXdRIdvP1AHJ2acQXvDIrVHcdQNrEKNYSVMSZGMjEzIIAwDXIo+6G/FxcGnzkC3T2oMhLjre49sBB+RRcHLqdafK6sYdE/GGBwU1VpFNj0aN8pJbe+BkZyevUrvLl6Xmm0W9IuTc0DxrDNAJd5oEvI/KRsNC3bQyNjPO9yQ1YHcfj2QvfQc/5TUhJTBc2iM0U7AWDQtc1nJHvD/cfO2s7jaGkiTEfa/Ep8coLu7zmNmh8+dc5lZDuUeFAGUNA/OY6JVaypQ0vjr7XYjUvJM37vt+j1vuTK5DgVfVUoTjVe+y3/LxMxY2GgU+CSLy4cpfsYorRXuXIOi0Vt40h67uZFTdIo6nLaZcwUJWAzwNS0tBnqqKzQDnjdG/iPyZxo46HaKUpbvYkj8qYRTZsBhge+JHhZyh0x9b95JqjVJkT084kZIPwu/mPWqPgfQ5jXh2+92Ay7HedfAgwA6KDWafb4w3cAAAAASUVORK5CYII=\");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QUM2OEZDQTg4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QUM2OEZDQTk4RTU0MTFFMUEzM0VFRTM2RUY1M0RBMjYiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpBQzY4RkNBNjhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpBQzY4RkNBNzhFNTQxMUUxQTMzRUVFMzZFRjUzREEyNiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pgd7PfIAAAGmSURBVHjaYvr//z8DJZiJgUIANoCRkREb9gLiSVAaQx4OQM7AAkwd7XU2/v++/rOttdYGEB9dASEvOMydGKfH8Gv/p4XTkvRBfLxeQAP+1cUhXopyvzhP7P/IoSj7g7Mw09cNKO6J1QQ0L4gICPIv/veg/8W+JdFvQNLHVsW9/nmn9zk7B+cCkDwhL7gt6knSZnx9/LuCEOcvkIAMP+cvto9nfqyZmmUAksfnBUtbM60gX/3/kgyv3/xSFOL5DZT+L8vP+Yfh5cvfPvp/xUHyQHXGyAYwgpwBjZYFT3Y1OEl/OfCH4ffv3wzc4iwMvNIsDJ+f/mH4+vIPAxsb631WW0Yln6ZpQLXdMK/DXGDflh+sIv37EivD5x//Gb7+YWT4y86sl7BCCkSD+Z++/1dkvsFRl+HnD1Rvje4F8whjMXmGj58YGf5zsDMwcnAwfPvKcml62DsQDeaDxN+/Y0qwlpEHqrdB94IRNIDUgfgfKJChGK4OikEW3gTiXUB950ASLFAF54AC94A0G9QAfOnmF9DCDzABFqS08IHYDIScdijOjQABBgC+/9awBH96jwAAAABJRU5ErkJggg==\");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url(\"data:image/gif;base64,R0lGODlhEAAQAMQAAAAAAEFBQVJSUl5eXmRkZGtra39/f4WFhYmJiZGRkaampry8vMPDw8zMzNXV1dzc3OTk5Orq6vDw8P///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABQALAAAAAAQABAAAAUuICWOZGmeaBml5XGwFCQSBGyXRSAwtqQIiRuiwIM5BoYVbEFIyGCQoeJGrVptIQA7\");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGRTk5MTVGREIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGRTk5MTVGRUIxNDkxMUUxOTc5Q0FFREQyMTNGMjBFQyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkZFOTkxNUZCQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkZFOTkxNUZDQjE0OTExRTE5NzlDQUVERDIxM0YyMEVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SIDkjAAAAJ1JREFUeNpi/P//PwMlgImBQkB7A6qrq/+DMC55FkIGKCoq4pVnpFkgTp069f/+/fv/r1u37r+tre1/kg0A+ptn9uzZYLaRkRHpLvjw4cNXWVlZhufPnzOcO3eOdAO0tbVPAjHDmzdvGA4fPsxIsgGSkpJmv379Ynj37h2DjIyMCMkG3LhxQ/T27dsMampqDHZ2dq/pH41DxwCAAAMAFdc68dUsFZgAAAAASUVORK5CYII=\");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;}.ace_text-input.ace_composition {background: #f8f8f8;color: #111;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;/* setting pointer-events: auto; on node under the mouse, which changesduring scroll, will break mouse wheel scrolling in Safari */pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0px;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-moz-transition: opacity 0.18s;-webkit-transition: opacity 0.18s;-o-transition: opacity 0.18s;-ms-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_cursor[style*=\"opacity: 0\"]{-ms-filter: \"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)\";}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%3AIDAT8%11c%FC%FF%FF%7F%18%03%1A%60%01%F2%3F%A0%891%80%04%FF%11-%F8%17%9BJ%E2%05%B1ZD%81v%26t%E7%80%F8%A3%82h%A12%1A%20%A3%01%02%0F%01%BA%25%06%00%19%C0%0D%AEF%D5%3ES%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;-moz-border-radius: 2px;-webkit-border-radius: 2px;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%11%00%00%00%09%08%06%00%00%00%D4%E8%C7%0C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%00%B5IDAT(%15%A5%91%3D%0E%02!%10%85ac%E1%05%D6%CE%D6%C6%CE%D2%E8%ED%CD%DE%C0%C6%D6N.%E0V%F8%3D%9Ca%891XH%C2%BE%D9y%3F%90!%E6%9C%C3%BFk%E5%011%C6-%F5%C8N%04%DF%BD%FF%89%DFt%83DN%60%3E%F3%AB%A0%DE%1A%5Dg%BE%10Q%97%1B%40%9C%A8o%10%8F%5E%828%B4%1B%60%87%F6%02%26%85%1Ch%1E%C1%2B%5Bk%FF%86%EE%B7j%09%9A%DA%9B%ACe%A3%F9%EC%DA!9%B4%D5%A6%81%86%86%98%CC%3C%5B%40%FA%81%B3%E9%CB%23%94%C16Azo%05%D4%E1%C1%95a%3B%8A'%A0%E8%CC%17%22%85%1D%BA%00%A2%FA%DC%0A%94%D1%D1%8D%8B%3A%84%17B%C7%60%1A%25Z%FC%8D%00%00%00%00IEND%AEB%60%82\"),url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%007%08%06%00%00%00%C4%DD%80C%00%00%03%1EiCCPICC%20Profile%00%00x%01%85T%DFk%D3P%14%FE%DAe%9D%B0%E1%8B%3Ag%11%09%3Eh%91ndStC%9C%B6kW%BA%CDZ%EA6%B7!H%9B%A6m%5C%9A%C6%24%ED~%B0%07%D9%8Bo%3A%C5w%F1%07%3E%F9%07%0C%D9%83o%7B%92%0D%C6%14a%F8%AC%88%22L%F6%22%B3%9E%9B4M'S%03%B9%F7%BB%DF%F9%EE9'%E7%E4%5E%A0%F9qZ%D3%14%2F%0F%14USO%C5%C2%FC%C4%E4%14%DF%F2%01%5E%1CC%2B%FChM%8B%86%16J%26G%40%0F%D3%B2y%EF%B3%F3%0E%1E%C6lt%EEo%DF%AB%FEc%D5%9A%95%0C%11%F0%1C%20%BE%945%C4%22%E1Y%A0i%5C%D4t%13%E0%D6%89%EF%9D15%C2%CDLsX%A7%04%09%1Fg8oc%81%E1%8C%8D%23%96f45%40%9A%09%C2%07%C5B%3AK%B8%408%98i%E0%F3%0D%D8%CE%81%14%E4'%26%A9%92.%8B%3C%ABER%2F%E5dE%B2%0C%F6%F0%1Fs%83%F2_%B0%A8%94%E9%9B%AD%E7%10%8Dm%9A%19N%D1%7C%8A%DE%1F9%7Dp%8C%E6%00%D5%C1%3F_%18%BDA%B8%9DpX6%E3%A35~B%CD%24%AE%11%26%BD%E7%EEti%98%EDe%9A%97Y)%12%25%1C%24%BCbT%AE3li%E6%0B%03%89%9A%E6%D3%ED%F4P%92%B0%9F4%BF43Y%F3%E3%EDP%95%04%EB1%C5%F5%F6KF%F4%BA%BD%D7%DB%91%93%07%E35%3E%A7)%D6%7F%40%FE%BD%F7%F5r%8A%E5y%92%F0%EB%B4%1E%8D%D5%F4%5B%92%3AV%DB%DB%E4%CD%A6%23%C3%C4wQ%3F%03HB%82%8E%1Cd(%E0%91B%0Ca%9Ac%C4%AA%F8L%16%19%22J%A4%D2itTy%B28%D6%3B(%93%96%ED%1CGx%C9_%0E%B8%5E%16%F5%5B%B2%B8%F6%E0%FB%9E%DD%25%D7%8E%BC%15%85%C5%B7%A3%D8Q%ED%B5%81%E9%BA%B2%13%9A%1B%7Fua%A5%A3n%E17%B9%E5%9B%1Bm%AB%0B%08Q%FE%8A%E5%B1H%5Ee%CAO%82Q%D7u6%E6%90S%97%FCu%0B%CF2%94%EE%25v%12X%0C%BA%AC%F0%5E%F8*l%0AO%85%17%C2%97%BF%D4%C8%CE%DE%AD%11%CB%80q%2C%3E%AB%9ES%CD%C6%EC%25%D2L%D2%EBd%B8%BF%8A%F5B%C6%18%F9%901CZ%9D%BE%24M%9C%8A9%F2%DAP%0B'%06w%82%EB%E6%E2%5C%2F%D7%07%9E%BB%CC%5D%E1%FA%B9%08%AD.r%23%8E%C2%17%F5E%7C!%F0%BE3%BE%3E_%B7o%88a%A7%DB%BE%D3d%EB%A31Z%EB%BB%D3%91%BA%A2%B1z%94%8F%DB'%F6%3D%8E%AA%13%19%B2%B1%BE%B1~V%08%2B%B4%A2cjJ%B3tO%00%03%25mN%97%F3%05%93%EF%11%84%0B%7C%88%AE-%89%8F%ABbW%90O%2B%0Ao%99%0C%5E%97%0CI%AFH%D9.%B0%3B%8F%ED%03%B6S%D6%5D%E6i_s9%F3*p%E9%1B%FD%C3%EB.7U%06%5E%19%C0%D1s.%17%A03u%E4%09%B0%7C%5E%2C%EB%15%DB%1F%3C%9E%B7%80%91%3B%DBc%AD%3Dma%BA%8B%3EV%AB%DBt.%5B%1E%01%BB%0F%AB%D5%9F%CF%AA%D5%DD%E7%E4%7F%0Bx%A3%FC%06%A9%23%0A%D6%C2%A1_2%00%00%00%09pHYs%00%00%0B%13%00%00%0B%13%01%00%9A%9C%18%00%00%003IDAT8%11c%FC%FF%FF%7F%3E%03%1A%60%01%F2%3F%A3%891%80%04%FFQ%26%F8w%C0%B43%A1%DB%0C%E2%8F%0A%A2%85%CAh%80%8C%06%08%3C%04%E8%96%18%00%A3S%0D%CD%CF%D8%C1%9D%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat, repeat-x;background-position: center center, top left;}.ace_gutter-tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;display: inline-block;max-width: 500px;padding: 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre-line;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAe%8A%B1%0D%000%0C%C2%F2%2CK%96%BC%D0%8F9%81%88H%E9%D0%0E%96%C0%10%92%3E%02%80%5E%82%E4%A9*-%EEsw%C8%CC%11%EE%96w%D8%DC%E9*Eh%0C%151(%00%00%00%00IEND%AEB%60%82\");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%05%00%00%00%05%08%06%00%00%00%8Do%26%E5%00%00%004IDATx%DAm%C7%C1%09%000%08C%D1%8C%ECE%C8E(%8E%EC%02)%1EZJ%F1%C1'%04%07I%E1%E5%EE%CAL%F5%A2%99%99%22%E2%D6%1FU%B5%FE0%D9x%A7%26Wz5%0E%D5%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget.ace_closed {background-image: url(\"data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%03%00%00%00%06%08%06%00%00%00%06%E5%24%0C%00%00%009IDATx%DA5%CA%C1%09%000%08%03%C0%AC*(%3E%04%C1%0D%BA%B1%23%A4Uh%E0%20%81%C0%CC%F8%82%81%AA%A2%AArGfr%88%08%11%11%1C%DD%7D%E0%EE%5B%F6%F6%CB%B8%05Q%2F%E9tai%D9%00%00%00%00IEND%AEB%60%82\");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}/*** Dark version for fold widgets*/.ace_dark .ace_fold-widget {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC\");}.ace_dark .ace_fold-widget.ace_end {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget.ace_closed {background-image: url(\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==\");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {-moz-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);-webkit-box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-moz-transition: opacity 0.4s ease 0.05s;-webkit-transition: opacity 0.4s ease 0.05s;-o-transition: opacity 0.4s ease 0.05s;-ms-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-moz-transition: opacity 0.05s ease 0.05s;-webkit-transition: opacity 0.05s ease 0.05s;-o-transition: opacity 0.05s ease 0.05s;-ms-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}";i.importCssString(v,"ace_editor");var m=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$textLayer.addEventListener("changeCharacterSize",function(){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize")}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),o.resetOptions(this),o._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session=e,this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e),this.$loop.schedule(this.CHANGE_FULL)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRow<t&&(this.$changedLines.lastRow=t)):this.$changedLines={firstRow:e,lastRow:t};if(this.$changedLines.firstRow>this.layerConfig.lastRow||this.$changedLines.lastRow<this.layerConfig.firstRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0)},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",this.session&&(i|=this.CHANGE_SCROLL));if(n&&(e||s.width!=n)){i=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.content},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.lineHeight;if(t<0||t>e.height-r)return;var i=this.characterWidth;if(this.$composition){var s=this.textarea.value.replace(/^\x01+/,"");i*=this.session.$getStringScreenWidth(s)[0]+2,r+=2,t-=1}n-=this.scrollLeft,n>this.$size.scrollerWidth-i&&(n=this.$size.scrollerWidth-i),n-=this.scrollBar.width,this.textarea.style.height=r+"px",this.textarea.style.width=i+"px",this.textarea.style.right=Math.max(0,this.$size.scrollerWidth-n-i)+"px",this.textarea.style.bottom=Math.max(0,this.$size.height-t-r)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=Math.floor((this.layerConfig.height+this.layerConfig.offset)/this.layerConfig.lineHeight);return this.layerConfig.firstRow-1+e},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){this.scrollBarV.setScrollHeight(this.layerConfig.maxHeight+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL)e|=this.$computeLayerConfig(),n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px";e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.max((this.$minLines||1)*this.lineHeight,Math.min(t,e))+this.scrollMargin.v+(this.$extraHeight||0),r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n}},this.$computeLayerConfig=function(){this.$maxLines&&this.lineHeight>1&&this.$autosize();var e=this.session,t=this.$size.height<=2*this.lineHeight,n=this.session.getScreenLength(),r=n*this.lineHeight,i=this.scrollTop%this.lineHeight,s=this.$size.scrollerHeight+this.lineHeight,o=this.$getLongestLine(),u=!t&&(this.$hScrollBarAlwaysVisible||this.$size.scrollerWidth-o-2*this.$padding<0),a=this.$horizScroll!==u;a&&(this.$horizScroll=u,this.scrollBarH.setVisible(u)),!this.$maxLines&&this.$scrollPastEnd&&this.scrollTop>r-this.$size.scrollerHeight&&(r+=Math.min((this.$size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd,this.scrollTop-r+this.$size.scrollerHeight));var f=!t&&(this.$vScrollBarAlwaysVisible||this.$size.scrollerHeight-r<0),l=this.$vScroll!==f;l&&(this.$vScroll=f,this.scrollBarV.setVisible(f)),this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,r-this.$size.scrollerHeight+this.scrollMargin.v))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,o+2*this.$padding-this.$size.scrollerWidth+this.scrollMargin.h)));var c=Math.ceil(s/this.lineHeight)-1,h=Math.max(0,Math.round((this.scrollTop-i)/this.lineHeight)),p=h+c,d,v,m=this.lineHeight;h=e.screenToDocumentRow(h,0);var g=e.getFoldLine(h);g&&(h=g.start.row),d=e.documentToScreenRow(h,0),v=e.getRowLength(h)*m,p=Math.min(e.screenToDocumentRow(p,0),e.getLength()-1),s=this.$size.scrollerHeight+e.getRowLength(p)*m+v,i=this.scrollTop-d*m;var y=0;if(a||l)y=this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this._signal("scrollbarVisibilityChanged"),l&&(o=this.$getLongestLine());return this.layerConfig={width:o,padding:this.$padding,firstRow:h,firstRowScreen:d,lastRow:p,lineHeight:m,characterWidth:this.characterWidth,minHeight:s,maxHeight:r,offset:i,height:this.$size.scrollerHeight},y},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(t<n.firstRow)return;if(t===Infinity){this.$showGutter&&this.$gutterLayer.update(n),this.$textLayer.update(n);return}return this.$textLayer.updateLines(n,e,t),!0},this.$getLongestLine=function(){var e=this.session.getScreenWidth();return this.showInvisibles&&!this.session.$useWrapMode&&(e+=1),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t){if(this.$size.scrollerHeight===0)return;var n=this.$cursorLayer.getPixelPosition(e),r=n.left,i=n.top,s=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;s>i?(t&&(i-=t*this.$size.scrollerHeight),i==0?i=-this.scrollMargin.top:i==0&&(i=+this.scrollMargin.bottom),this.session.setScrollTop(i)):s+this.$size.scrollerHeight<i+this.lineHeight&&(t&&(i+=t*this.$size.scrollerHeight),this.session.setScrollTop(i+this.lineHeight-this.$size.scrollerHeight));var o=this.scrollLeft;o>r?(r<this.$padding+2*this.layerConfig.characterWidth&&(r=-this.scrollMargin.left),this.session.setScrollLeft(r)):o+this.$size.scrollerWidth<r+this.characterWidth?this.session.setScrollLeft(Math.round(r+this.characterWidth-this.$size.scrollerWidth)):o<=this.$padding&&r-o<this.characterWidth&&this.session.setScrollLeft(0)},this.getScrollTop=function(){return this.session.getScrollTop()},this.getScrollLeft=function(){return this.session.getScrollLeft()},this.getScrollTopRow=function(){return this.scrollTop/this.lineHeight},this.getScrollBottomRow=function(){return Math.max(0,Math.floor((this.scrollTop+this.$size.scrollerHeight)/this.lineHeight)-1)},this.scrollToRow=function(e){this.session.setScrollTop(e*this.lineHeight)},this.alignCursor=function(e,t){typeof e=="number"&&(e={row:e,column:0});var n=this.$cursorLayer.getPixelPosition(e),r=this.$size.scrollerHeight-this.lineHeight,i=n.top-r*(t||0);return this.session.setScrollTop(i),i},this.STEPS=8,this.$calcSteps=function(e,t){var n=0,r=this.STEPS,i=[],s=function(e,t,n){return n*(Math.pow(e-1,3)+1)+t};for(n=0;n<r;++n)i.push(s(n/this.STEPS,e,t-e));return i},this.scrollToLine=function(e,t,n,r){var i=this.$cursorLayer.getPixelPosition({row:e,column:0}),s=i.top;t&&(s-=this.$size.scrollerHeight/2);var o=this.scrollTop;this.session.setScrollTop(s),n!==!1&&this.animateScrolling(o,r)},this.animateScrolling=function(e,t){var n=this.scrollTop;if(!this.$animatedScroll)return;var r=this;if(e==n)return;if(this.$scrollAnimation){var i=this.$scrollAnimation.steps;if(i.length){e=i[0];if(e==n)return}}var s=r.$calcSteps(e,n);this.$scrollAnimation={from:e,to:n,steps:s},clearInterval(this.$timer),r.session.setScrollTop(s.shift()),r.session.$scrollTop=n,this.$timer=setInterval(function(){s.length?(r.session.setScrollTop(s.shift()),r.session.$scrollTop=n):n!=null?(r.session.$scrollTop=-1,r.session.setScrollTop(n),n=null):(r.$timer=clearInterval(r.$timer),r.$scrollAnimation=null,t&&t())},10)},this.scrollToY=function(e){this.scrollTop!==e&&(this.$loop.schedule(this.CHANGE_SCROLL),this.scrollTop=e)},this.scrollToX=function(e){this.scrollLeft!==e&&(this.scrollLeft=e),this.$loop.schedule(this.CHANGE_H_SCROLL)},this.scrollTo=function(e,t){this.session.setScrollTop(t),this.session.setScrollLeft(t)},this.scrollBy=function(e,t){t&&this.session.setScrollTop(this.session.getScrollTop()+t),e&&this.session.setScrollLeft(this.session.getScrollLeft()+e)},this.isScrollableBy=function(e,t){if(t<0&&this.session.getScrollTop()>=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight-(this.$size.scrollerHeight-this.lineHeight)*this.$scrollPastEnd<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function s(r){if(n.$themeId!=e)return t&&t();if(!r.cssClass)return;i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;o.loadModule(["theme",r],s)}else s(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.content.style.cursor!=e&&(this.content.style.cursor=e)},this.setMouseCursor=function(e){this.content.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(m.prototype),o.defineOptions(m.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=m}),ace.define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;t<e.length;t++){var n=e[t],r=n.row,i=this.$annotations[r];i||(i=this.$annotations[r]={text:[]});var o=n.text;o=o?s.escapeHTML(o):n.html||"",i.text.indexOf(o)===-1&&i.text.push(o);var u=n.type;u=="error"?i.className=" ace_error":u=="warning"&&i.className!=" ace_error"?i.className=" ace_warning":u=="info"&&!i.className&&(i.className=" ace_info")}},this.$updateAnnotations=function(e){if(!this.$annotations.length)return;var t=e.data,n=t.range,r=n.start.row,i=n.end.row-r;if(i!==0)if(t.action=="removeText"||t.action=="removeLines")this.$annotations.splice(r,i+1,null);else{var s=new Array(i+1);s.unshift(r,1),this.$annotations.splice.apply(this.$annotations,s)}},this.update=function(e){var t=e.firstRow,n=e.lastRow,i=this.session,s=i.getNextFoldLine(t),o=s?s.start.row:Infinity,u=this.$showFoldWidgets&&i.foldWidgets,a=i.$breakpoints,f=i.$decorations,l=i.$firstLineNumber,c=0,h=i.gutterRenderer,p=null,d=-1,v=t;for(;;){v>o&&(v=s.end.row+1,s=i.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>n){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=i.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=i.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&v<s.end.row?m+=" ace_closed":m+=" ace_open",p.foldWidget.className!=m&&(p.foldWidget.className=m);var g=e.lineHeight+"px";p.foldWidget.style.height!=g&&(p.foldWidget.style.height=g)}else p.foldWidget&&(p.element.removeChild(p.foldWidget),p.foldWidget=null);var b=c=h?h.getText(i,v):v+l;b!=p.textNode.data&&(p.textNode.data=b),v++}this.element.style.height=e.minHeight+"px";if(this.$fixedWidth||i.$useWrapMode)c=i.getLength()+l;var w=h?h.getWidth(i,c,e):c.toString().length*e.characterWidth,E=this.$padding||this.$computePadding();w+=E.left+E.right,w!==this.gutterWidth&&!isNaN(w)&&(this.gutterWidth=w,this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._emit("changeGutterWidth",w))},this.$fixedWidth=!1,this.$showFoldWidgets=!0,this.setShowFoldWidgets=function(e){e?r.addCssClass(this.element,"ace_folding-enabled"):r.removeCssClass(this.element,"ace_folding-enabled"),this.$showFoldWidgets=e,this.$padding=null},this.getShowFoldWidgets=function(){return this.$showFoldWidgets},this.$computePadding=function(){if(!this.element.firstChild)return{left:0,right:0};var e=r.computedStyle(this.element.firstChild);return this.$padding={},this.$padding.left=parseInt(e.paddingLeft)+1||0,this.$padding.right=parseInt(e.paddingRight)||0,this.$padding},this.getRegion=function(e){var t=this.$padding||this.$computePadding(),n=this.element.getBoundingClientRect();if(e.x<t.left+n.left)return"markers";if(this.$showFoldWidgets&&e.x>n.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var s=r.range.clipRows(e.firstRow,e.lastRow);if(s.isEmpty())continue;s=s.toScreenRange(this.session);if(r.renderer){var o=this.$getTop(s.start.row,e),u=this.$padding+s.start.column*e.characterWidth;r.renderer(t,s,u,o,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,s,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,s,r.clazz,e):s.isMultiLine()?r.type=="text"?this.drawTextMarker(t,s,r.clazz,e):this.drawMultiLineMarker(t,s,r.clazz,e):this.drawSingleLineMarker(t,s,r.clazz+" ace_start",e)}this.element=i.setInnerHtml(this.element,t.join(""))},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(e,t,n,i,s){var o=t.start.row,u=new r(o,t.start.column,o,this.session.getScreenLastRowColumn(o));this.drawSingleLineMarker(e,u,n+" ace_start",i,1,s),o=t.end.row,u=new r(o,0,o,t.end.column),this.drawSingleLineMarker(e,u,n,i,0,s);for(o=t.start.row+1;o<t.end.row;o++)u.start.row=o,u.end.row=o,u.end.column=this.session.getScreenLastRowColumn(o),this.drawSingleLineMarker(e,u,n,i,1,s)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("<div class='",n," ace_start' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",a,"px;",i,"'></div>"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",f,"px;","top:",u,"px;","left:",s,"px;",i,"'></div>"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("<div class='",n,"' style='","height:",o,"px;","right:0;","top:",u,"px;","left:",s,"px;",i,"'></div>")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("<div class='",n,"' style='","height:",o,"px;","width:",u,"px;","top:",a,"px;","left:",f,"px;",s||"","'></div>")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("<div class='",n,"' style='","height:",o,"px;","top:",s,"px;","left:0;right:0;",i||"","'></div>")}}).call(s.prototype),t.Marker=s}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$characterSize={width:0,height:0},this.checkForSizeChanges(),this.$pollSizeChanges()};(function(){r.implement(this,u),this.EOF_CHAR="¶",this.EOL_CHAR="¬",this.TAB_CHAR="→",this.SPACE_CHAR="·",this.$padding=0,this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$characterSize.height||0},this.getCharacterWidth=function(){return this.$characterSize.width||0},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){var e=this;this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.$fontStyles={fontFamily:1,fontSize:1,fontWeight:1,fontStyle:1,lineHeight:1},this.$measureSizes=o.isIE||o.isOldGecko?function(){var e=1e3;if(!this.$measureNode){var t=this.$measureNode=i.createElement("div"),n=t.style;n.width=n.height="auto",n.left=n.top=-e*40+"px",n.visibility="hidden",n.position="fixed",n.overflow="visible",n.whiteSpace="nowrap",t.innerHTML=s.stringRepeat("Xy",e);if(this.element.ownerDocument.body)this.element.ownerDocument.body.appendChild(t);else{var r=this.element.parentNode;while(!i.hasCssClass(r,"ace_editor"))r=r.parentNode;r.appendChild(t)}}if(!this.element.offsetWidth)return null;var n=this.$measureNode.style,o=i.computedStyle(this.element);for(var u in this.$fontStyles)n[u]=o[u];var a={height:this.$measureNode.offsetHeight,width:this.$measureNode.offsetWidth/(e*2)};return a.width==0||a.height==0?null:a}:function(){if(!this.$measureNode){var e=this.$measureNode=i.createElement("div"),t=e.style;t.width=t.height="auto",t.left=t.top="-100px",t.visibility="hidden",t.position="fixed",t.overflow="visible",t.whiteSpace="nowrap",e.innerHTML=s.stringRepeat("X",100);var n=this.element.parentNode;while(n&&!i.hasCssClass(n,"ace_editor"))n=n.parentNode;if(!n)return this.$measureNode=null;n.appendChild(e)}var r=this.$measureNode.getBoundingClientRect(),o={height:r.height,width:r.width/100};return o.width==0||o.height==0?null:o},this.setSession=function(e){this.session=e,this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n<e+1;n++)this.showInvisibles?t.push("<span class='ace_invisible'>"+this.TAB_CHAR+s.stringRepeat(" ",n-1)+"</span>"):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide";if(this.showInvisibles){r+=" ace_invisible";var i=s.stringRepeat(this.SPACE_CHAR,this.tabSize),o=this.TAB_CHAR+s.stringRepeat(" ",this.tabSize-1)}else var i=s.stringRepeat(" ",this.tabSize),o=i;this.$tabStrings[" "]="<span class='"+r+"'>"+i+"</span>",this.$tabStrings[" "]="<span class='"+r+"'>"+o+"</span>"}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),s=Math.min(n,e.lastRow),o=this.element.childNodes,u=0;for(var a=e.firstRow;a<r;a++){var f=this.session.getFoldLine(a);if(f){if(f.containsRow(r)){r=f.start.row;break}a=f.end.row}u++}var a=r,f=this.session.getNextFoldLine(a),l=f?f.start.row:Infinity;for(;;){a>l&&(a=f.end.row+1,f=this.session.getNextFoldLine(a,f),l=f?f.start.row:Infinity);if(a>s)break;var c=o[u++];if(c){var h=[];this.$renderLine(h,a,!this.$useLineGroups(),a==l?f:!1),c.style.height=e.lineHeight*this.session.getRowLength(a)+"px",i.setInnerHtml(c,h.join(""))}a++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow<e.firstRow)return this.update(e);if(e.lastRow<t.firstRow)return this.update(e);var n=this.element;if(t.firstRow<e.firstRow)for(var r=this.session.getFoldedRowCount(t.firstRow,e.firstRow-1);r>0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRow<t.firstRow){var i=this.$renderLinesFragment(e,e.firstRow,t.firstRow-1);n.firstChild?n.insertBefore(i,n.firstChild):n.appendChild(i)}if(e.lastRow>t.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else{var l=a.childNodes;while(l.length)r.appendChild(l[0])}s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,s=n,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>r)break;this.$useLineGroups()&&t.push("<div class='ace_line_group' style='height:",e.lineHeight*this.session.getRowLength(s),"px'>"),this.$renderLine(t,s,!1,s==u?o:!1),this.$useLineGroups()&&t.push("</div>"),s++}this.element=i.setInnerHtml(this.element,t.join(""))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|( +)|([\x00-\x1f\x80-\xa0\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?"<span class='ace_invisible'>"+s.stringRepeat(i.SPACE_CHAR,e.length)+"</span>":s.stringRepeat(" ",e.length);if(e=="&")return"&";if(e=="<")return"<";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e==" "){var f=i.showInvisibles?"ace_cjk ace_invisible":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,"<span class='"+f+"' style='width:"+i.config.characterWidth*2+"px'>"+l+"</span>"}return r?"<span class='ace_invisible ace_invalid'>"+i.SPACE_CHAR+"</span>":(t+=1,"<span class='ace_cjk' style='width:"+i.config.characterWidth*2+"px'>"+e+"</span>")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("<span class='",f,"'",l,">",a,"</span>")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,s=0,o=n[0],u=0;for(var a=0;a<t.length;a++){var f=t[a],l=f.value;if(a==0&&this.displayIndentGuides){i=l.length,l=this.renderIndentGuide(e,l,o);if(!l)continue;i-=l.length}if(i+l.length<o)u=this.$renderToken(e,u,f,l),i+=l.length;else{while(i+l.length>=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("</div>","<div class='ace_line' style='height:",this.config.lineHeight,"px'>"),s++,u=0,o=n[s]||Number.MAX_VALUE;l.length!=0&&(i+=l.length,u=this.$renderToken(e,u,f,l))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s<t.length;s++)r=t[s],i=r.value,n=this.$renderToken(e,n,r,i)},this.$renderLine=function(e,t,n,r){!r&&r!=0&&(r=this.session.getFoldLine(t));if(r)var i=this.$getFoldLineTokens(t,r);else var i=this.session.getTokens(t);n||e.push("<div class='ace_line' style='height:",this.config.lineHeight*(this.$useLineGroups()?1:this.session.getRowLength(t)),"px'>");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("<span class='ace_invisible'>",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"</span>")),n||e.push("</div>")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.length<t){s+=e[i].value.length,i++;if(i==e.length)return}if(s!=t){var o=e[i].value.substring(t-s);o.length>n-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(s<n&&i<e.length){var o=e[i].value;o.length+s>n?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors")};(function(){this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,e?r.addCssClass(this.element,"ace_smooth-blinking"):r.removeCssClass(this.element,"ace_smooth-blinking"),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking");for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity=0}.bind(this),.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){for(var e=this.cursors.length;e--;)this.cursors[e].style.opacity="";t()}.bind(this),this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;n<i;n++){var s=this.getPixelPosition(t[n].cursor,!0);if((s.top>e.height+e.offset||s.top<-e.offset)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px"}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e}}).call(u.prototype);var a=function(e,t){u.call(this,e),this.scrollTop=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(a,u),function(){this.classSuffix="-v",this.onScroll=function(){this.skipEvent||(this.scrollTop=this.element.scrollTop,this._emit("scroll",{data:this.scrollTop})),this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=function(e){this.inner.style.height=e+"px"},this.setScrollHeight=function(e){this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=this.element.scrollTop=e)}}.call(a.prototype);var f=function(e,t){u.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(f,u),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(f.prototype),t.ScrollBar=a,t.ScrollBarV=a,t.ScrollBarH=f,t.VScrollBar=a,t.HScrollBar=f}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey)?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()}),u.addListener(t,"keyup",r),u.addListener(t,"blur",r)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount==0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._emit("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._emit("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._emit("removeRange",{ranges:e}),this.rangeCount==0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._emit("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c<o;c++)f.push(this.getLineRange(c,!0));l=this.getLineRange(o,!0),l.end.column=n.end.column,f.push(l),f.forEach(this.addRange,this)}},this.toggleBlockSelection=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column<t.column;if(s)var o=e.column,u=t.column;else var o=t.column,u=e.column;var a=e.row<t.row;if(a)var f=e.row,l=t.row;else var f=t.row,l=e.row;o<0&&(o=0),f<0&&(f=0),f==l&&(n=!0);for(var c=f;c<=l;c++){var h=i.fromPoints(this.session.screenToDocumentPosition(c,o),this.session.screenToDocumentPosition(c,u));if(h.isEmpty()){if(p&&v(h.end,p))break;var p=h.end}h.cursor=s?h.start:h.end,r.push(h)}a&&r.reverse();if(!n){var d=r.length-1;while(r[d].isEmpty()&&d>0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=this.session,i=this.selection,o=i.rangeList,u,a=i._eventRegistry;i._eventRegistry={};var f=new s(r);this.inVirtualSelectionMode=!0;for(var l=o.ranges.length;l--;){if(n)while(l>0&&o.ranges[l].start.row==o.ranges[l-1].end.row)l--;f.fromOrientedRange(o.ranges[l]),this.selection=r.selection=f;var c=e.exec(this,t||{});!u==undefined&&(u=c),f.toOrientedRange(o.ranges[l])}f.detach(),this.selection=r.selection=i,this.inVirtualSelectionMode=!1,i._eventRegistry=a,i.mergeOverlappingRanges();var h=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),h&&h.from==h.to&&this.renderer.animateScrolling(h.from),u},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r<t.length;r++)n.push(this.session.getTextRange(t[r]));var i=this.session.getDocument().getNewLineCharacter();e=n.join(i),e.length==(n.length-1)*i.length&&(e="")}else this.selection.isEmpty()||(e=this.session.getTextRange(this.getSelectionRange()));return e},this.onPaste=function(e){if(this.$readOnly)return;this._signal("paste",e);if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return this.insert(e);var t=e.split(/\r\n|\r|\n/),n=this.selection.rangeList.ranges;if(t.length>n.length||t.length<2||!t[1])return this.commands.exec("insertstring",this,e);for(var r=n.length;r--;){var i=n[r];i.isEmpty()||this.session.remove(i),this.session.insert(i.start,t[r])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle,this.$search.set(t);var r=this.$search.findAll(this.session);if(!r.length)return 0;this.$blockScrolling+=1;var i=this.multiSelect;n||i.toSingleRange(r[0]);for(var s=r.length;s--;)i.addRange(r[s],!0);return this.$blockScrolling-=1,r.length},this.selectMoreLines=function(e,t){var n=this.selection.toOrientedRange(),r=n.cursor==n.end,s=this.session.documentToScreenPosition(n.cursor);this.selection.$desiredColumn&&(s.column=this.selection.$desiredColumn);var o=this.session.screenToDocumentPosition(s.row+e,s.column);if(!n.isEmpty())var u=this.session.documentToScreenPosition(r?n.end:n.start),a=this.session.screenToDocumentPosition(u.row+e,u.column);else var a=o;if(r){var f=i.fromPoints(o,a);f.cursor=f.start}else{var f=i.fromPoints(a,o);f.cursor=f.end}f.desiredColumn=s.column;if(!this.selection.inMultiSelectMode)this.selection.addRange(n);else if(t)var l=n.cursor;this.selection.addRange(f),l&&this.selection.substractPoint(l)},this.transposeSelections=function(e){var t=this.session,n=t.multiSelect,r=n.ranges;for(var i=r.length;i--;){var s=r[i];if(s.isEmpty()){var o=t.getWordRange(s.start.row,s.start.column);s.start.row=o.start.row,s.start.column=o.start.column,s.end.row=o.end.row,s.end.column=o.end.column}}n.mergeOverlappingRanges();var u=[];for(var i=r.length;i--;){var s=r[i];u.unshift(t.getTextRange(s))}e<0?u.unshift(u.pop()):u.push(u.shift());for(var i=r.length;i--;){var s=r[i],o=s.clone();t.replace(s,u[i]),s.start.row=o.start.row,s.start.column=o.start.column}},this.selectMore=function(e,t){var n=this.session,r=n.multiSelect,i=r.toOrientedRange();i.isEmpty()&&(i=n.getWordRange(i.start.row,i.start.column),i.cursor=e==-1?i.start:i.end,this.multiSelect.addRange(i));var s=n.getTextRange(i),o=h(n,s,e);o&&(o.cursor=e==-1?o.start:o.end,this.$blockScrolling+=1,this.session.unfold(o),this.multiSelect.addRange(o),this.$blockScrolling-=1,this.renderer.scrollCursorIntoView(null,.5)),t&&this.multiSelect.substractPoint(i.cursor)},this.alignCursors=function(){var e=this.session,t=e.multiSelect,n=t.ranges;if(!n.length){var r=this.selection.getRange(),s=r.start.row,o=r.end.row,u=s==o;if(u){var f=this.session.getLength(),l;do l=this.session.getLine(o);while(/[=:]/.test(l)&&++o<f);do l=this.session.getLine(s);while(/[=:]/.test(l)&&--s>0);s<0&&(s=0),o>=f&&(o=f-1)}var c=this.session.doc.removeLines(s,o);c=this.$reAlignText(c,u),this.session.doc.insert({row:s,column:0},c.join("\n")+"\n"),u||(r.start.column=0,r.end.column=c[c.length-1].length),this.selection.setRange(r)}else{var h=-1,p=n.filter(function(e){if(e.cursor.row==h)return!0;h=e.cursor.row});t.$onRemoveRange(p);var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),i<v&&(v=i),i});n.forEach(function(t,n){var r=t.cursor,s=d-r.column,o=m[n]-v;s>o?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),s<t[2].length&&(s=t[2].length),o>t[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t.multiSelect||(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.removeEventListener("addRange",this.$onAddRange),n.multiSelect.removeEventListener("removeRange",this.$onRemoveRange),n.multiSelect.removeEventListener("multiSelect",this.$onMultiSelect),n.multiSelect.removeEventListener("singleSelect",this.$onSingleSelect)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0}})}),ace.define("ace/mouse/multi_select_handler",["require","exports","module","ace/lib/event"],function(e,t,n){function i(e,t){return e.row==t.row&&e.column==t.column}function s(e){var t=e.domEvent,n=t.altKey,s=t.shiftKey,o=e.getAccelKey(),u=e.getButton();if(e.editor.inMultiSelectMode&&u==2){e.editor.textInput.onContextMenu(e.domEvent);return}if(!o&&!n){u==0&&e.editor.inMultiSelectMode&&e.editor.exitMultiSelectMode();return}var a=e.editor,f=a.selection,l=a.inMultiSelectMode,c=e.getDocumentPosition(),h=f.getCursor(),p=e.inSelection()||f.isEmpty()&&i(c,h),d=e.x,v=e.y,m=function(e){d=e.clientX,v=e.clientY},g=function(){var e=a.renderer.pixelToScreenCoordinates(d,v),t=y.screenToDocumentPosition(e.row,e.column);if(i(w,e)&&i(t,f.selectionLead))return;w=e,a.selection.moveCursorToPosition(t),a.selection.clearSelection(),a.renderer.scrollCursorIntoView(),a.removeSelectionMarkers(x),x=f.rectangularRangeBlock(w,b),x.forEach(a.addSelectionMarker,a),a.updateSelectionMarkers()},y=a.session,b=a.renderer.pixelToScreenCoordinates(d,v),w=b;if(o&&!s&&!n&&u==0){if(!l&&p)return;if(!l){var E=f.toOrientedRange();a.addSelectionMarker(E)}var S=f.rangeList.rangeAtPoint(c);a.$blockScrolling++,a.once("mouseup",function(){var e=f.toOrientedRange();S&&e.isEmpty()&&i(S.cursor,e.cursor)?f.substractPoint(e.cursor):(E&&(a.removeSelectionMarker(E),f.addRange(E)),f.addRange(e)),a.$blockScrolling--})}else if(n&&u==0){e.stop(),l&&!o?f.toSingleRange():!l&&o&&f.addRange();var x=[];s?(b=y.documentToScreenPosition(f.lead),g()):(f.moveCursorToPosition(c),f.clearSelection());var T=function(e){clearInterval(C),a.removeSelectionMarkers(x);for(var t=0;t<x.length;t++)f.addRange(x[t])},N=g;r.capture(a.container,m,T);var C=setInterval(function(){N()},20);return e.preventDefault()}}var r=e("../lib/event");t.onMouseDown=s}),ace.define("ace/commands/multi_select_commands",["require","exports","module","ace/keyboard/hash_handler"],function(e,t,n){t.defaultCommands=[{name:"addCursorAbove",exec:function(e){e.selectMoreLines(-1)},bindKey:{win:"Ctrl-Alt-Up",mac:"Ctrl-Alt-Up"},readonly:!0},{name:"addCursorBelow",exec:function(e){e.selectMoreLines(1)},bindKey:{win:"Ctrl-Alt-Down",mac:"Ctrl-Alt-Down"},readonly:!0},{name:"addCursorAboveSkipCurrent",exec:function(e){e.selectMoreLines(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Up",mac:"Ctrl-Alt-Shift-Up"},readonly:!0},{name:"addCursorBelowSkipCurrent",exec:function(e){e.selectMoreLines(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Down",mac:"Ctrl-Alt-Shift-Down"},readonly:!0},{name:"selectMoreBefore",exec:function(e){e.selectMore(-1)},bindKey:{win:"Ctrl-Alt-Left",mac:"Ctrl-Alt-Left"},readonly:!0},{name:"selectMoreAfter",exec:function(e){e.selectMore(1)},bindKey:{win:"Ctrl-Alt-Right",mac:"Ctrl-Alt-Right"},readonly:!0},{name:"selectNextBefore",exec:function(e){e.selectMore(-1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Left",mac:"Ctrl-Alt-Shift-Left"},readonly:!0},{name:"selectNextAfter",exec:function(e){e.selectMore(1,!0)},bindKey:{win:"Ctrl-Alt-Shift-Right",mac:"Ctrl-Alt-Shift-Right"},readonly:!0},{name:"splitIntoLines",exec:function(e){e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readonly:!0},{name:"alignCursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"}}],t.multiSelectCommands=[{name:"singleSelection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},readonly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/config"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/event_emitter").EventEmitter,s=e("../config"),o=function(t,n,r){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);var i;if(s.get("packaged")||!e.toUrl)i=s.moduleUrl(n,"worker");else{var o=this.$normalizePath;i=o(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=o(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}this.$worker=new Worker(i),this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,i),this.onMessage=function(e){var t=e.data;switch(t.type){case"log":window.console&&console.log&&console.log.apply(console,t.data);break;case"event":this._emit(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id])}},this.$normalizePath=function(e){return location.host?(e=e.replace(/^[a-z]+:\/\/[^\/]+/,""),e=location.protocol+"//"+location.host+(e.charAt(0)=="/"?"":location.pathname.replace(/\/[^\/]*$/,""))+"/"+e.replace(/^[\/]+/,""),e):e},this.terminate=function(){this._emit("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc.removeEventListener("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue?this.deltaQueue.push(e.data):(this.deltaQueue=[e.data],setTimeout(this.$sendDeltaQueue,0))},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>20&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(o.prototype);var u=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,o=Object.create(i),u=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){u.messageBuffer.push(e),r&&setTimeout(a)};var a=function(){var e=u.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&o._emit(e.event,e.data)};o.postMessage=function(e){u.onMessage({data:e})},o.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},o.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},s.loadModule(["worker",t],function(e){r=new e[n](o);while(u.messageBuffer.length)a()})};u.prototype=o.prototype,t.UIWorkerClient=u,t.WorkerClient=o}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session,i=this.$pos;this.pos=t.createAnchor(i.row,i.column),this.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.pos.on("change",function(t){n.removeMarker(e.markerId),e.markerId=n.addMarker(new r(t.value.row,t.value.column,t.value.row,t.value.column+e.length),e.mainClass,null,!1)}),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1),n.on("change",function(i){e.removeMarker(n.markerId),n.markerId=e.addMarker(new r(i.value.row,i.value.column,i.value.row,i.value.column+t.length),t.othersClass,null,!1)})})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e<this.others.length;e++)this.session.removeMarker(this.others[e].markerId)},this.onUpdate=function(e){var t=e.data,n=t.range;if(n.start.row!==n.end.row)return;if(n.start.row!==this.pos.row)return;if(this.$updating)return;this.$updating=!0;var i=t.action==="insertText"?n.end.column-n.start.column:n.start.column-n.end.column;if(n.start.column>=this.pos.column&&n.start.column<=this.pos.column+this.length+1){var s=n.start.column-this.pos.column;this.length+=i;if(!this.session.$fromUndo){if(t.action==="insertText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.insert(a,t.text)}else if(t.action==="removeText")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.column<u.column&&(a.column+=i),this.doc.remove(new r(a.row,a.column,a.row,a.column-i))}n.start.column===this.pos.column&&t.action==="insertText"?setTimeout(function(){this.pos.setPosition(this.pos.row,this.pos.column-i);for(var e=0;e<this.others.length;e++){var t=this.others[e],r={row:t.row,column:t.column-i};t.row===n.start.row&&n.start.column<t.column&&(r.column+=i),t.setPosition(r.row,r.column)}}.bind(this),0):n.start.column===this.pos.column&&t.action==="removeText"&&setTimeout(function(){for(var e=0;e<this.others.length;e++){var t=this.others[e];t.row===n.start.row&&n.start.column<t.column&&t.setPosition(t.row,t.column-i)}}.bind(this),0)}this.pos._emit("change",{value:this.pos});for(var o=0;o<this.others.length;o++)this.others[o]._emit("change",{value:this.others[o]})}this.$updating=!1},this.onCursorChange=function(e){if(this.$updating)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.pos.detach();for(var e=0;e<this.others.length;e++)this.others[e].detach();this.session.setUndoSelect(!0)},this.cancel=function(){if(this.$undoStackDepth===-1)throw Error("Canceling placeholders only supported with undo manager attached to session.");var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n<t;n++)e.undo(!0)}}).call(o.prototype),t.PlaceHolder=o}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++t<a){var c=e.getLine(t).search(i);if(c==-1)continue;if(c<=o)break;l=t}if(l>f){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),ace.define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;border-radius: 2px;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .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)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length-1?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("ace/line_widgets").LineWidgets,i=e("ace/lib/dom"),s=e("ace/range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.lineWidgets&&n.lineWidgets[o];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];c.pos&&c.column==null&&(s.column=c.pos.sc),s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveCursorToPosition(s),e.selection.clearSelection();var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div")},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("<br>");var m={handleKeyboard:function(e,t,n){if(t===0&&n==="esc")return h.destroy(),!0}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e)},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),ace.define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.detach=this.detach.bind(this),this.session.on("change",this.updateOnChange)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&(e+=t.rowCount)}),e},this.attach=function(e){e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,this.editor.on("changeSession",this.detach),e.widgetManager=this,e.setOption("enableLineWidgets",!0),e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets)},this.detach=function(e){if(e&&e.session==this.session)return;var t=this.editor;if(!t)return;t.off("changeSession",this.detach),this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnChange=function(e){var t=this.session.lineWidgets;if(!t)return;var n=e.data,r=n.range,i=r.start.row,s=r.end.row-i;if(s!==0)if(n.action=="removeText"||n.action=="removeLines"){var o=t.splice(i+1,s);o.forEach(function(e){e&&this.removeLineWidget(e)},this),this.$updateRows()}else{var u=new Array(s);u.unshift(i,0),t.splice.apply(t,u),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){e&&(t=!1,e.row=n)}),t&&(this.session.lineWidgets=null)},this.addLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength())),this.session.lineWidgets[e.row]=e;var t=this.editor.renderer;return e.html&&!e.el&&(e.el=i.createElement("div"),e.el.innerHTML=e.html),e.el&&(i.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0),e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight||(e.pixelHeight=e.el.offsetHeight),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),e},this.removeLineWidget=function(e){e._inDocument=!1,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}this.session.lineWidgets&&(this.session.lineWidgets[e.row]=undefined),this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s<n.length;s++){var o=n[s];o._inDocument||(o._inDocument=!0,t.container.appendChild(o.el)),o.h=o.el.offsetHeight,o.fixedWidth||(o.w=o.el.offsetWidth,o.screenWidth=Math.ceil(o.w/r.characterWidth));var u=o.h/r.lineHeight;o.coverLine&&(u-=this.session.getRowLineCount(o.row),u<0&&(u=0)),o.rowCount!=u&&(o.rowCount=u,o.row<i&&(i=o.row))}i!=Infinity&&(this.session._emit("changeFold",{data:{start:{row:i}}}),this.session.lineWidgetWidth=null),this.session._changedWidgets=[]},this.renderWidgets=function(e,t){var n=t.layerConfig,r=this.session.lineWidgets;if(!r)return;var i=Math.min(this.firstRow,n.firstRow),s=Math.max(this.lastRow,n.lastRow,r.length);while(i>0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o});
|
2 |
-
(function() {
|
3 |
-
ace.require(["ace/ace"], function(a) {
|
4 |
-
a && a.config.init();
|
5 |
-
if (!window.ace)
|
6 |
-
window.ace = {};
|
7 |
-
for (var key in a) if (a.hasOwnProperty(key))
|
8 |
-
ace[key] = a[key];
|
9 |
-
});
|
10 |
-
})();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
assets/js/vendor/ace/mode-css.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/tokenizer","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){var r=e("../lib/oop"),i=e("./text").Mode,s=e("../tokenizer").Tokenizer,o=e("./css_highlight_rules").CssHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=o,this.$outdent=new u,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new a(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("csslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="animation-fill-mode|alignment-adjust|alignment-baseline|animation-delay|animation-direction|animation-duration|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|animation|appearance|azimuth|backface-visibility|background-attachment|background-break|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|background|baseline-shift|binding|bleed|bookmark-label|bookmark-level|bookmark-state|bookmark-target|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|border|bottom|box-align|box-decoration-break|box-direction|box-flex-group|box-flex|box-lines|box-ordinal-group|box-orient|box-pack|box-shadow|box-sizing|break-after|break-before|break-inside|caption-side|clear|clip|color-profile|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|crop|cue-after|cue-before|cue|cursor|direction|display|dominant-baseline|drop-initial-after-adjust|drop-initial-after-align|drop-initial-before-adjust|drop-initial-before-align|drop-initial-size|drop-initial-value|elevation|empty-cells|fit|fit-position|float-offset|float|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|font|grid-columns|grid-rows|hanging-punctuation|height|hyphenate-after|hyphenate-before|hyphenate-character|hyphenate-lines|hyphenate-resource|hyphens|icon|image-orientation|image-rendering|image-resolution|inline-box-align|left|letter-spacing|line-height|line-stacking-ruby|line-stacking-shift|line-stacking-strategy|line-stacking|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|margin|mark-after|mark-before|mark|marks|marquee-direction|marquee-play-count|marquee-speed|marquee-style|max-height|max-width|min-height|min-width|move-to|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|orphans|outline-color|outline-offset|outline-style|outline-width|outline|overflow-style|overflow-x|overflow-y|overflow|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page-policy|page|pause-after|pause-before|pause|perspective-origin|perspective|phonemes|pitch-range|pitch|play-during|pointer-events|position|presentation-level|punctuation-trim|quotes|rendering-intent|resize|rest-after|rest-before|rest|richness|right|rotation-point|rotation|ruby-align|ruby-overhang|ruby-position|ruby-span|size|speak-header|speak-numeral|speak-punctuation|speak|speech-rate|stress|string-set|table-layout|target-name|target-new|target-position|target|text-align-last|text-align|text-decoration|text-emphasis|text-height|text-indent|text-justify|text-outline|text-shadow|text-transform|text-wrap|top|transform-origin|transform-style|transform|transition-delay|transition-duration|transition-property|transition-timing-function|transition|unicode-bidi|vertical-align|visibility|voice-balance|voice-duration|voice-family|voice-pitch-range|voice-pitch|voice-rate|voice-stress|voice-volume|volume|white-space-collapse|white-space|widows|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f=0,l=-1,c="",h=0,p=-1,d="",v="",m=function(){m.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},m.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},m.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,c[0])||(f=0),l=r.row,c=n+i.substr(r.column),f++},m.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(h=0),p=r.row,d=i.substr(0,r.column)+n,v=i.substr(r.column),h++},m.isAutoInsertedClosing=function(e,t,n){return f>0&&e.row===l&&n===c[0]&&t.substr(e.column)===c},m.isMaybeInsertedClosing=function(e,t){return h>0&&e.row===p&&t.substr(e.column)===v&&t.substr(0,e.column)==d},m.popAutoInsertedClosing=function(){c=c.substr(1),f--},m.clearMaybeInsertedClosing=function(){h=0,p=-1},this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){var a=n.getSelectionRange(),f=r.doc.getTextRange(a);if(f!==""&&f!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+f+"}",selection:!1};if(m.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(m.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(m.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){var l=u.substring(s.column,s.column+1);if(l=="}"){var c=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(c!==null&&m.isAutoInsertedClosing(s,u,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){var p="";m.isMaybeInsertedClosing(s,u)&&(p=o.stringRepeat("}",h),m.clearMaybeInsertedClosing());var l=u.substring(s.column,s.column+1);if(l==="}"){var d=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!d)return null;var v=this.$getIndent(r.getLine(d.row))}else{if(!p)return;var v=this.$getIndent(u)}var g=v+r.getTabString();return{text:"\n"+g+"\n"+v+p,selection:[1,g.length,1,g.length]}}m.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;h--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(m.isSaneInsertion(n,r))return m.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&m.isAutoInsertedClosing(u,a,i))return m.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return{text:s+u+s,selection:!1};var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column);if(l=="\\")return null;var c=r.getTokens(o.start.row),h=0,p,d=-1;for(var v=0;v<c.length;v++){p=c[v],p.type=="string"?d=-1:d<0&&(d=p.value.indexOf(s));if(p.value.length+h>o.start.column)break;h+=c[v].value.length}if(!p||d<0&&p.type!=="comment"&&(p.type!=="string"||o.start.column!==p.value.length+h-1&&p.value.lastIndexOf(s)===p.value.length-1)){if(!m.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(p&&p.type==="string"){var g=f.substring(a.column,a.column+1);if(g==s)return{text:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};r.inherits(m,i),t.CstyleBehaviour=m}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n),s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++t<a){n=e.getLine(t);var f=n.search(/\S/);if(f===-1)continue;if(r>f)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)}}.call(o.prototype)})
|
|
assets/js/vendor/ace/theme-chrome.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
ace.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;}.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)})
|
|
assets/js/vendor/ace/worker-css.js
DELETED
@@ -1 +0,0 @@
|
|
1 |
-
"no use strict";(function(e){if(typeof e.window!="undefined"&&e.document)return;e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console,e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){console.error("Worker "+i.stack)},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(t,n){n||(n=t,t=null);if(!n.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");n=e.normalizeModule(t,n);var r=e.require.modules[n];if(r)return r.initialized||(r.initialized=!0,r.exports=r.factory().exports),r.exports;var i=n.split("/");if(!e.require.tlns)return console.log("unable to load "+n);i[0]=e.require.tlns[i[0]]||i[0];var s=i.join("/")+".js";return e.require.id=n,importScripts(s),e.require(t,n)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id),n.length||(n=["require","exports","module"]);if(t.indexOf("text!")===0)return;var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},e.initBaseUrls=function(e){require.tlns=e},e.initSender=function(){var t=e.require("ace/lib/event_emitter").EventEmitter,n=e.require("ace/lib/oop"),r=function(){};return function(){n.implement(this,t),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(r.prototype),new r},e.main=null,e.sender=null,e.onmessage=function(e){var t=e.data;if(t.command){if(!main[t.command])throw new Error("Unknown command:"+t.command);main[t.command].apply(main,t.args)}else if(t.init){initBaseUrls(t.tlns),require("ace/lib/es5-shim"),sender=initSender();var n=require(t.module)[t.classname];main=new n(sender)}else t.event&&sender&&sender._emit(t.event,t.data)}})(this),ace.define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function i(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function s(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function o(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function u(e){var t,n,r;if(o(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(o(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(o(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(e){var t=this;if(typeof t!="function")throw new TypeError("Function.prototype.bind called on incompatible "+t);var n=c.call(arguments,1),i=function(){if(this instanceof i){var r=t.apply(this,n.concat(c.call(arguments)));return Object(r)===r?r:this}return t.apply(e,n.concat(c.call(arguments)))};return t.prototype&&(r.prototype=t.prototype,i.prototype=new r,r.prototype=null),i});var a=Function.prototype.call,f=Array.prototype,l=Object.prototype,c=f.slice,h=a.bind(l.toString),p=a.bind(l.hasOwnProperty),d,v,m,g,y;if(y=p(l,"__defineGetter__"))d=a.bind(l.__defineGetter__),v=a.bind(l.__defineSetter__),m=a.bind(l.__lookupGetter__),g=a.bind(l.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+t<n||(t=n-e);var r=this.slice(e,e+t),i=c.call(arguments,2),s=i.length;if(e===n)s&&this.push.apply(this,i);else{var o=Math.min(t,n-e),u=e+o,a=u+s-o,f=n-u,l=n-o;if(a<u)for(var h=0;h<f;++h)this[a+h]=this[u+h];else if(a>u)for(h=f;h--;)this[a+h]=this[u+h];if(s&&e===l)this.length=l,this.push.apply(this,i);else{this.length=l+s;for(h=0;h<s;++h)this[e+h]=i[h]}}return r};else{var b=Array.prototype.splice;Array.prototype.splice=function(e,t){return arguments.length?b.apply(this,[e===void 0?0:e,t===void 0?this.length-e:t].concat(c.call(arguments,2))):[]}}Array.isArray||(Array.isArray=function(e){return h(e)=="[object Array]"});var w=Object("a"),E=w[0]!="a"||!(0 in w);Array.prototype.forEach||(Array.prototype.forEach=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=arguments[1],i=-1,s=n.length>>>0;if(h(e)!="[object Function]")throw new TypeError;while(++i<s)i in n&&e.call(r,n[i],i,t)}),Array.prototype.map||(Array.prototype.map=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=Array(r),s=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var o=0;o<r;o++)o in n&&(i[o]=e.call(s,n[o],o,t));return i}),Array.prototype.filter||(Array.prototype.filter=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=[],s,o=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var u=0;u<r;u++)u in n&&(s=n[u],e.call(o,s,u,t)&&i.push(s));return i}),Array.prototype.every||(Array.prototype.every=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s<r;s++)if(s in n&&!e.call(i,n[s],s,t))return!1;return!0}),Array.prototype.some||(Array.prototype.some=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0,i=arguments[1];if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");for(var s=0;s<r;s++)if(s in n&&e.call(i,n[s],s,t))return!0;return!1}),Array.prototype.reduce||(Array.prototype.reduce=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var i=0,s;if(arguments.length>=2)s=arguments[1];else do{if(i in n){s=n[i++];break}if(++i>=r)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;i<r;i++)i in n&&(s=e.call(void 0,s,n[i],i,t));return s}),Array.prototype.reduceRight||(Array.prototype.reduceRight=function(e){var t=F(this),n=E&&h(this)=="[object String]"?this.split(""):t,r=n.length>>>0;if(h(e)!="[object Function]")throw new TypeError(e+" is not a function");if(!r&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var i,s=r-1;if(arguments.length>=2)i=arguments[1];else do{if(s in n){i=n[s--];break}if(--s<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do s in this&&(i=e.call(void 0,i,n[s],s,t));while(s--);return i});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=0;arguments.length>1&&(r=s(arguments[1])),r=r>=0?r:Math.max(0,n+r);for(;r<n;r++)if(r in t&&t[r]===e)return r;return-1};if(!Array.prototype.lastIndexOf||[0,1].lastIndexOf(0,-3)!=-1)Array.prototype.lastIndexOf=function(e){var t=E&&h(this)=="[object String]"?this.split(""):F(this),n=t.length>>>0;if(!n)return-1;var r=n-1;arguments.length>1&&(r=Math.min(r,s(arguments[1]))),r=r>=0?r:n-Math.abs(r);for(;r>=0;r--)if(r in t&&e===t[r])return r;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(e){return e.__proto__||(e.constructor?e.constructor.prototype:l)});if(!Object.getOwnPropertyDescriptor){var S="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(e,t){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(S+e);if(!p(e,t))return;var n,r,i;n={enumerable:!0,configurable:!0};if(y){var s=e.__proto__;e.__proto__=l;var r=m(e,t),i=g(e,t);e.__proto__=s;if(r||i)return r&&(n.get=r),i&&(n.set=i),n}return n.value=e[t],n}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(e){return Object.keys(e)});if(!Object.create){var x;Object.prototype.__proto__===null?x=function(){return{__proto__:null}}:x=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(e,t){var n;if(e===null)n=x();else{if(typeof e!="object")throw new TypeError("typeof prototype["+typeof e+"] != 'object'");var r=function(){};r.prototype=e,n=new r,n.__proto__=e}return t!==void 0&&Object.defineProperties(n,t),n}}if(Object.defineProperty){var T=i({}),N=typeof document=="undefined"||i(document.createElement("div"));if(!T||!N)var C=Object.defineProperty}if(!Object.defineProperty||C){var k="Property description must be an object: ",L="Object.defineProperty called on non-object: ",A="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(e,t,n){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError(L+e);if(typeof n!="object"&&typeof n!="function"||n===null)throw new TypeError(k+n);if(C)try{return C.call(Object,e,t,n)}catch(r){}if(p(n,"value"))if(y&&(m(e,t)||g(e,t))){var i=e.__proto__;e.__proto__=l,delete e[t],e[t]=n.value,e.__proto__=i}else e[t]=n.value;else{if(!y)throw new TypeError(A);p(n,"get")&&d(e,t,n.get),p(n,"set")&&v(e,t,n.set)}return e}}Object.defineProperties||(Object.defineProperties=function(e,t){for(var n in t)p(t,n)&&Object.defineProperty(e,n,t[n]);return e}),Object.seal||(Object.seal=function(e){return e}),Object.freeze||(Object.freeze=function(e){return e});try{Object.freeze(function(){})}catch(O){Object.freeze=function(e){return function(t){return typeof t=="function"?t:e(t)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(e){return e}),Object.isSealed||(Object.isSealed=function(e){return!1}),Object.isFrozen||(Object.isFrozen=function(e){return!1}),Object.isExtensible||(Object.isExtensible=function(e){if(Object(e)===e)throw new TypeError;var t="";while(p(e,t))t+="?";e[t]=!0;var n=p(e,t);return delete e[t],n});if(!Object.keys){var M=!0,_=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],D=_.length;for(var P in{toString:null})M=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)p(e,t)&&I.push(t);if(M)for(var n=0,r=D;n<r;n++){var i=_[n];p(e,i)&&I.push(i)}return I}}Date.now||(Date.now=function(){return(new Date).getTime()});var H=" \n\f\r \u2028\u2029";if(!String.prototype.trim||H.trim()){H="["+H+"]";var B=new RegExp("^"+H+H+"*"),j=new RegExp(H+H+"*$");String.prototype.trim=function(){return String(this).replace(B,"").replace(j,"")}}var F=function(e){if(e==null)throw new TypeError("can't convert "+e+" to object");return Object(e)}}),ace.define("ace/mode/css_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/css/csslint"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./css/csslint").CSSLint,u=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.ruleset=null,this.setDisabledRules("ids"),this.setInfoRules("adjoining-classes|qualified-headings|zero-units|gradients|import|outline-none")};r.inherits(u,s),function(){this.setInfoRules=function(e){typeof e=="string"&&(e=e.split("|")),this.infoRules=i.arrayToMap(e),this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.setDisabledRules=function(e){if(!e)this.ruleset=null;else{typeof e=="string"&&(e=e.split("|"));var t={};o.getRules().forEach(function(e){t[e.id]=!0}),e.forEach(function(e){delete t[e]}),this.ruleset=t}this.doc.getValue()&&this.deferredUpdate.schedule(100)},this.onUpdate=function(){var e=this.doc.getValue(),t=this.infoRules,n=o.verify(e,this.ruleset);this.sender.emit("csslint",n.messages.map(function(e){return{row:e.line-1,column:e.col-1,text:e.message,type:t[e.rule.id]?"info":e.type,rule:e.rule.name}}))}}.call(u.prototype)}),ace.define("ace/lib/oop",["require","exports","module"],function(e,t,n){t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),ace.define("ace/lib/lang",["require","exports","module"],function(e,t,n){t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n<r;n++)e[n]&&typeof e[n]=="object"?t[n]=this.copyObject(e[n]):t[n]=e[n];return t},t.deepCopy=function(e){if(typeof e!="object"||!e)return e;var n=e.constructor;if(n===RegExp)return e;var r=n();for(var i in e)typeof e[i]=="object"?r[i]=t.deepCopy(e[i]):r[i]=e[i];return r},t.arrayToMap=function(e){var t={};for(var n=0;n<e.length;n++)t[e[n]]=1;return t},t.createMap=function(e){var t=Object.create(null);for(var n in e)t[n]=e[n];return t},t.arrayRemove=function(e,t){for(var n=0;n<=e.length;n++)t===e[n]&&e.splice(n,1)},t.escapeRegExp=function(e){return e.replace(/([.*+?^${}()|[\]\/\\])/g,"\\$1")},t.escapeHTML=function(e){return e.replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(/</g,"<")},t.getMatchOffsets=function(e,t){var n=[];return e.replace(t,function(e){n.push({offset:arguments[arguments.length-2],length:e.length})}),n},t.deferredCall=function(e){var t=null,n=function(){t=null,e()},r=function(e){return r.cancel(),t=setTimeout(n,e||0),r};return r.schedule=r,r.call=function(){return this.cancel(),e(),r},r.cancel=function(){return clearTimeout(t),t=null,r},r.isPending=function(){return t},r},t.delayedCall=function(e,t){var n=null,r=function(){n=null,e()},i=function(e){n==null&&(n=setTimeout(r,e||t))};return i.delay=function(e){n&&clearTimeout(n),n=setTimeout(r,e||t)},i.schedule=i,i.call=function(){this.cancel(),e()},i.cancel=function(){n&&clearTimeout(n),n=null},i.isPending=function(){return n},i}}),ace.define("ace/worker/mirror",["require","exports","module","ace/document","ace/lib/lang"],function(e,t,n){var r=e("../document").Document,i=e("../lib/lang"),s=t.Mirror=function(e){this.sender=e;var t=this.doc=new r(""),n=this.deferredUpdate=i.delayedCall(this.onUpdate.bind(this)),s=this;e.on("change",function(e){t.applyDeltas(e.data);if(s.$timeout)return n.schedule(s.$timeout);s.onUpdate()})};(function(){this.$timeout=500,this.setTimeout=function(e){this.$timeout=e},this.setValue=function(e){this.doc.setValue(e),this.deferredUpdate.schedule(this.$timeout)},this.getValue=function(e){this.sender.callback(this.doc.getValue(),e)},this.onUpdate=function(){},this.isPending=function(){return this.deferredUpdate.isPending()}}).call(s.prototype)}),ace.define("ace/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=e("./range").Range,o=e("./anchor").Anchor,u=function(e){this.$lines=[],e.length==0?this.$lines=[""]:Array.isArray(e)?this._insertLines(0,e):this.insert({row:0,column:0},e)};(function(){r.implement(this,i),this.setValue=function(e){var t=this.getLength();this.remove(new s(0,0,t,this.getLine(t-1).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new o(this,e,t)},"aaa".split(/a/).length==0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n"},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine}},this.$autoNewLine="\n",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){if(e.start.row==e.end.row)return this.getLine(e.start.row).substring(e.start.column,e.end.column);var t=this.getLines(e.start.row,e.end.row);t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;return e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column)),t.join(this.getNewLineCharacter())},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):e.row<0&&(e.row=0),e},this.insert=function(e,t){if(!t||t.length===0)return e;e=this.$clipPosition(e),this.getLength()<=1&&this.$detectNewLine(t);var n=this.$split(t),r=n.splice(0,1)[0],i=n.length==0?null:n.splice(n.length-1,1)[0];return e=this.insertInLine(e,r),i!==null&&(e=this.insertNewLine(e),e=this._insertLines(e.row,n),e=this.insertInLine(e,i||"")),e},this.insertLines=function(e,t){return e>=this.getLength()?this.insert({row:e,column:0},"\n"+t.join("\n")):this._insertLines(Math.max(e,0),t)},this._insertLines=function(e,t){if(t.length==0)return{row:e,column:0};if(t.length>65535){var n=this._insertLines(e,t.slice(65535));t=t.slice(0,65535)}var r=[e,0];r.push.apply(r,t),this.$lines.splice.apply(this.$lines,r);var i=new s(e,0,e+t.length,0),o={action:"insertLines",range:i,lines:t};return this._emit("change",{data:o}),n||i.end},this.insertNewLine=function(e){e=this.$clipPosition(e);var t=this.$lines[e.row]||"";this.$lines[e.row]=t.substring(0,e.column),this.$lines.splice(e.row+1,0,t.substring(e.column,t.length));var n={row:e.row+1,column:0},r={action:"insertText",range:s.fromPoints(e,n),text:this.getNewLineCharacter()};return this._emit("change",{data:r}),n},this.insertInLine=function(e,t){if(t.length==0)return e;var n=this.$lines[e.row]||"";this.$lines[e.row]=n.substring(0,e.column)+t+n.substring(e.column);var r={row:e.row,column:e.column+t.length},i={action:"insertText",range:s.fromPoints(e,r),text:t};return this._emit("change",{data:i}),r},this.remove=function(e){!e instanceof s&&(e=s.fromPoints(e.start,e.end)),e.start=this.$clipPosition(e.start),e.end=this.$clipPosition(e.end);if(e.isEmpty())return e.start;var t=e.start.row,n=e.end.row;if(e.isMultiLine()){var r=e.start.column==0?t:t+1,i=n-1;e.end.column>0&&this.removeInLine(n,0,e.end.column),i>=r&&this._removeLines(r,i),r!=t&&(this.removeInLine(t,e.start.column,this.getLine(t).length),this.removeNewLine(e.start.row))}else this.removeInLine(t,e.start.column,e.end.column);return e.start},this.removeInLine=function(e,t,n){if(t==n)return;var r=new s(e,t,e,n),i=this.getLine(e),o=i.substring(t,n),u=i.substring(0,t)+i.substring(n,i.length);this.$lines.splice(e,1,u);var a={action:"removeText",range:r,text:o};return this._emit("change",{data:a}),r.start},this.removeLines=function(e,t){return e<0||t>=this.getLength()?this.remove(new s(e,0,t+1,0)):this._removeLines(e,t)},this._removeLines=function(e,t){var n=new s(e,0,t+1,0),r=this.$lines.splice(e,t-e+1),i={action:"removeLines",range:n,nl:this.getNewLineCharacter(),lines:r};return this._emit("change",{data:i}),r},this.removeNewLine=function(e){var t=this.getLine(e),n=this.getLine(e+1),r=new s(e,t.length,e+1,0),i=t+n;this.$lines.splice(e,2,i);var o={action:"removeText",range:r,text:this.getNewLineCharacter()};this._emit("change",{data:o})},this.replace=function(e,t){!e instanceof s&&(e=s.fromPoints(e.start,e.end));if(t.length==0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);if(t)var n=this.insert(e.start,t);else n=e.start;return n},this.applyDeltas=function(e){for(var t=0;t<e.length;t++){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this.insertLines(r.start.row,n.lines):n.action=="insertText"?this.insert(r.start,n.text):n.action=="removeLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="removeText"&&this.remove(r)}},this.revertDeltas=function(e){for(var t=e.length-1;t>=0;t--){var n=e[t],r=s.fromPoints(n.range.start,n.range.end);n.action=="insertLines"?this._removeLines(r.start.row,r.end.row-1):n.action=="insertText"?this.remove(r):n.action=="removeLines"?this._insertLines(r.start.row,n.lines):n.action=="removeText"&&this.insert(r.start,n.text)}},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i<s;i++){e-=n[i].length+r;if(e<0)return{row:i,column:e+n[i].length+r}}return{row:s-1,column:n[s-1].length}},this.positionToIndex=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length,i=0,s=Math.min(e.row,n.length);for(var o=t||0;o<s;++o)i+=n[o].length+r;return i+e.column}}).call(u.prototype),t.Document=u}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o<n.length;o++){n[o](t,this);if(t.propagationStopped)break}if(r&&!t.defaultPrevented)return r(t,this)},r._signal=function(e,t){var n=(this._eventRegistry||{})[e];if(!n)return;n=n.slice();for(var r=0;r<n.length;r++)n[r](t,this)},r.once=function(e,t){var n=this;t&&this.addEventListener(e,function r(){n.removeEventListener(e,r),t.apply(null,arguments)})},r.setDefaultHandler=function(e,t){var n=this._defaultHandlers;n||(n=this._defaultHandlers={_disabled_:{}});if(n[e]){var r=n[e],i=n._disabled_[e];i||(n._disabled_[e]=i=[]),i.push(r);var s=i.indexOf(t);s!=-1&&i.splice(s,1)}n[e]=t},r.removeDefaultHandler=function(e,t){var n=this._defaultHandlers;if(!n)return;var r=n._disabled_[e];if(n[e]==t){var i=n[e];r&&this.setDefaultHandler(e,r.pop())}else if(r){var s=r.indexOf(t);s!=-1&&r.splice(s,1)}},r.on=r.addEventListener=function(e,t,n){this._eventRegistry=this._eventRegistry||{};var r=this._eventRegistry[e];return r||(r=this._eventRegistry[e]=[]),r.indexOf(t)==-1&&r[n?"unshift":"push"](t),t},r.off=r.removeListener=r.removeEventListener=function(e,t){this._eventRegistry=this._eventRegistry||{};var n=this._eventRegistry[e];if(!n)return;var r=n.indexOf(t);r!==-1&&n.splice(r,1)},r.removeAllListeners=function(e){this._eventRegistry&&(this._eventRegistry[e]=[])},t.EventEmitter=r}),ace.define("ace/range",["require","exports","module"],function(e,t,n){var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?t<this.start.column?-1:t>this.end.column?1:0:e<this.start.row?-1:e>this.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.row<e)var n={row:e,column:0};if(this.start.row>t)var r={row:t+1,column:0};else if(this.start.row<e)var r={row:e,column:0};return i.fromPoints(r||this.start,n||this.end)},this.extend=function(e,t){var n=this.compare(e,t);if(n==0)return this;if(n==-1)var r={row:e,column:t};else var s={row:e,column:t};return i.fromPoints(r||this.start,s||this.end)},this.isEmpty=function(){return this.start.row===this.end.row&&this.start.column===this.end.column},this.isMultiLine=function(){return this.start.row!==this.end.row},this.clone=function(){return i.fromPoints(this.start,this.end)},this.collapseRows=function(){return this.end.column==0?new i(this.start.row,0,Math.max(this.start.row,this.end.row-1),0):new i(this.start.row,0,this.end.row,0)},this.toScreenRange=function(e){var t=e.documentToScreenPosition(this.start),n=e.documentToScreenPosition(this.end);return new i(t.row,t.column,n.row,n.column)},this.moveBy=function(e,t){this.start.row+=e,this.start.column+=t,this.end.row+=e,this.end.column+=t}}).call(i.prototype),i.fromPoints=function(e,t){return new i(e.row,e.column,t.row,t.column)},i.comparePoints=r,i.comparePoints=function(e,t){return e.row-t.row||e.column-t.column},t.Range=i}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){r.implement(this,i),this.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},this.getDocument=function(){return this.document},this.$insertRight=!1,this.onChange=function(e){var t=e.data,n=t.range;if(n.start.row==n.end.row&&n.start.row!=this.row)return;if(n.start.row>this.row)return;if(n.start.row==this.row&&n.start.column>this.column)return;var r=this.row,i=this.column,s=n.start,o=n.end;if(t.action==="insertText")if(s.row===r&&s.column<=i){if(s.column!==i||!this.$insertRight)s.row===o.row?i+=o.column-s.column:(i-=s.column,r+=o.row-s.row)}else s.row!==o.row&&s.row<r&&(r+=o.row-s.row);else t.action==="insertLines"?s.row<=r&&(r+=o.row-s.row):t.action==="removeText"?s.row===r&&s.column<i?o.column>=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row<r?(o.row===r&&(i=Math.max(0,i-o.column)+s.column),r-=o.row-s.row):o.row===r&&(r-=o.row-s.row,i=Math.max(0,i-o.column)+s.column):t.action=="removeLines"&&s.row<=r&&(o.row<=r?r-=o.row-s.row:(r=s.row,i=0));this.setPosition(r,i,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._emit("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),ace.define("ace/mode/css/csslint",["require","exports","module"],function(require,exports,module){function Reporter(e,t){this.messages=[],this.stats=[],this.lines=e,this.ruleset=t}var parserlib={};(function(){function e(){this._listeners={}}function t(e){this._input=e.replace(/\n\r?/g,"\n"),this._line=1,this._col=1,this._cursor=0}function n(e,t,n){this.col=n,this.line=t,this.message=e}function r(e,t,n,r){this.col=n,this.line=t,this.text=e,this.type=r}function i(e,n){this._reader=e?new t(e.toString()):null,this._token=null,this._tokenData=n,this._lt=[],this._ltIndex=0,this._ltIndexCache=[]}e.prototype={constructor:e,addListener:function(e,t){this._listeners[e]||(this._listeners[e]=[]),this._listeners[e].push(t)},fire:function(e){typeof e=="string"&&(e={type:e}),typeof e.target!="undefined"&&(e.target=this);if(typeof e.type=="undefined")throw new Error("Event object missing 'type' property.");if(this._listeners[e.type]){var t=this._listeners[e.type].concat();for(var n=0,r=t.length;n<r;n++)t[n].call(this,e)}},removeListener:function(e,t){if(this._listeners[e]){var n=this._listeners[e];for(var r=0,i=n.length;r<i;r++)if(n[r]===t){n.splice(r,1);break}}}},t.prototype={constructor:t,getCol:function(){return this._col},getLine:function(){return this._line},eof:function(){return this._cursor==this._input.length},peek:function(e){var t=null;return e=typeof e=="undefined"?1:e,this._cursor<this._input.length&&(t=this._input.charAt(this._cursor+e-1)),t},read:function(){var e=null;return this._cursor<this._input.length&&(this._input.charAt(this._cursor)=="\n"?(this._line++,this._col=1):this._col++,e=this._input.charAt(this._cursor++)),e},mark:function(){this._bookmark={cursor:this._cursor,line:this._line,col:this._col}},reset:function(){this._bookmark&&(this._cursor=this._bookmark.cursor,this._line=this._bookmark.line,this._col=this._bookmark.col,delete this._bookmark)},readTo:function(e){var t="",n;while(t.length<e.length||t.lastIndexOf(e)!=t.length-e.length){n=this.read();if(!n)throw new Error('Expected "'+e+'" at line '+this._line+", col "+this._col+".");t+=n}return t},readWhile:function(e){var t="",n=this.read();while(n!==null&&e(n))t+=n,n=this.read();return t},readMatch:function(e){var t=this._input.substring(this._cursor),n=null;return typeof e=="string"?t.indexOf(e)===0&&(n=this.readCount(e.length)):e instanceof RegExp&&e.test(t)&&(n=this.readCount(RegExp.lastMatch.length)),n},readCount:function(e){var t="";while(e--)t+=this.read();return t}},n.prototype=new Error,r.fromToken=function(e){return new r(e.value,e.startLine,e.startCol)},r.prototype={constructor:r,valueOf:function(){return this.toString()},toString:function(){return this.text}},i.createTokenData=function(e){var t=[],n={},r=e.concat([]),i=0,s=r.length+1;r.UNKNOWN=-1,r.unshift({name:"EOF"});for(;i<s;i++)t.push(r[i].name),r[r[i].name]=i,r[i].text&&(n[r[i].text]=i);return r.name=function(e){return t[e]},r.type=function(e){return n[e]},r},i.prototype={constructor:i,match:function(e,t){e instanceof Array||(e=[e]);var n=this.get(t),r=0,i=e.length;while(r<i)if(n==e[r++])return!0;return this.unget(),!1},mustMatch:function(e,t){var r;e instanceof Array||(e=[e]);if(!this.match.apply(this,arguments))throw r=this.LT(1),new n("Expected "+this._tokenData[e[0]].name+" at line "+r.startLine+", col "+r.startCol+".",r.startLine,r.startCol)},advance:function(e,t){while(this.LA(0)!==0&&!this.match(e,t))this.get();return this.LA(0)},get:function(e){var t=this._tokenData,n=this._reader,r,i=0,s=t.length,o=!1,u,a;if(this._lt.length&&this._ltIndex>=0&&this._ltIndex<this._lt.length){i++,this._token=this._lt[this._ltIndex++],a=t[this._token.type];while(a.channel!==undefined&&e!==a.channel&&this._ltIndex<this._lt.length)this._token=this._lt[this._ltIndex++],a=t[this._token.type],i++;if((a.channel===undefined||e===a.channel)&&this._ltIndex<=this._lt.length)return this._ltIndexCache.push(i),this._token.type}return u=this._getToken(),u.type>-1&&!t[u.type].hide&&(u.channel=t[u.type].channel,this._token=u,this._lt.push(u),this._ltIndexCache.push(this._lt.length-this._ltIndex+i),this._lt.length>5&&this._lt.shift(),this._ltIndexCache.length>5&&this._ltIndexCache.shift(),this._ltIndex=this._lt.length),a=t[u.type],a&&(a.hide||a.channel!==undefined&&e!==a.channel)?this.get(e):u.type},LA:function(e){var t=e,n;if(e>0){if(e>5)throw new Error("Too much lookahead.");while(t)n=this.get(),t--;while(t<e)this.unget(),t++}else if(e<0){if(!this._lt[this._ltIndex+e])throw new Error("Too much lookbehind.");n=this._lt[this._ltIndex+e].type}else n=this._token.type;return n},LT:function(e){return this.LA(e),this._lt[this._ltIndex+e-1]},peek:function(){return this.LA(1)},token:function(){return this._token},tokenName:function(e){return e<0||e>this._tokenData.length?"UNKNOWN_TOKEN":this._tokenData[e].name},tokenType:function(e){return this._tokenData[e]||-1},unget:function(){if(!this._ltIndexCache.length)throw new Error("Too much lookahead.");this._ltIndex-=this._ltIndexCache.pop(),this._token=this._lt[this._ltIndex-1]}},parserlib.util={StringReader:t,SyntaxError:n,SyntaxUnit:r,EventTarget:e,TokenStreamBase:i}})(),function(){function Combinator(e,t,n){SyntaxUnit.call(this,e,t,n,Parser.COMBINATOR_TYPE),this.type="unknown",/^\s+$/.test(e)?this.type="descendant":e==">"?this.type="child":e=="+"?this.type="adjacent-sibling":e=="~"&&(this.type="sibling")}function MediaFeature(e,t){SyntaxUnit.call(this,"("+e+(t!==null?":"+t:"")+")",e.startLine,e.startCol,Parser.MEDIA_FEATURE_TYPE),this.name=e,this.value=t}function MediaQuery(e,t,n,r,i){SyntaxUnit.call(this,(e?e+" ":"")+(t?t:"")+(t&&n.length>0?" and ":"")+n.join(" and "),r,i,Parser.MEDIA_QUERY_TYPE),this.modifier=e,this.mediaType=t,this.features=n}function Parser(e){EventTarget.call(this),this.options=e||{},this._tokenStream=null}function PropertyName(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.PROPERTY_NAME_TYPE),this.hack=t}function PropertyValue(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.PROPERTY_VALUE_TYPE),this.parts=e}function PropertyValueIterator(e){this._i=0,this._parts=e.parts,this._marks=[],this.value=e}function PropertyValuePart(text,line,col){SyntaxUnit.call(this,text,line,col,Parser.PROPERTY_VALUE_PART_TYPE),this.type="unknown";var temp;if(/^([+\-]?[\d\.]+)([a-z]+)$/i.test(text)){this.type="dimension",this.value=+RegExp.$1,this.units=RegExp.$2;switch(this.units.toLowerCase()){case"em":case"rem":case"ex":case"px":case"cm":case"mm":case"in":case"pt":case"pc":case"ch":case"vh":case"vw":case"vm":this.type="length";break;case"deg":case"rad":case"grad":this.type="angle";break;case"ms":case"s":this.type="time";break;case"hz":case"khz":this.type="frequency";break;case"dpi":case"dpcm":this.type="resolution"}}else/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)%$/i.test(text)?(this.type="percentage",this.value=+RegExp.$1):/^([+\-]?\d+)$/i.test(text)?(this.type="integer",this.value=+RegExp.$1):/^([+\-]?[\d\.]+)$/i.test(text)?(this.type="number",this.value=+RegExp.$1):/^#([a-f0-9]{3,6})/i.test(text)?(this.type="color",temp=RegExp.$1,temp.length==3?(this.red=parseInt(temp.charAt(0)+temp.charAt(0),16),this.green=parseInt(temp.charAt(1)+temp.charAt(1),16),this.blue=parseInt(temp.charAt(2)+temp.charAt(2),16)):(this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16))):/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3):/^rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100):/^rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1,this.green=+RegExp.$2,this.blue=+RegExp.$3,this.alpha=+RegExp.$4):/^rgba\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.red=+RegExp.$1*255/100,this.green=+RegExp.$2*255/100,this.blue=+RegExp.$3*255/100,this.alpha=+RegExp.$4):/^hsl\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100):/^hsla\(\s*(\d+)\s*,\s*(\d+)%\s*,\s*(\d+)%\s*,\s*([\d\.]+)\s*\)/i.test(text)?(this.type="color",this.hue=+RegExp.$1,this.saturation=+RegExp.$2/100,this.lightness=+RegExp.$3/100,this.alpha=+RegExp.$4):/^url\(["']?([^\)"']+)["']?\)/i.test(text)?(this.type="uri",this.uri=RegExp.$1):/^([^\(]+)\(/i.test(text)?(this.type="function",this.name=RegExp.$1,this.value=text):/^["'][^"']*["']/.test(text)?(this.type="string",this.value=eval(text)):Colors[text.toLowerCase()]?(this.type="color",temp=Colors[text.toLowerCase()].substring(1),this.red=parseInt(temp.substring(0,2),16),this.green=parseInt(temp.substring(2,4),16),this.blue=parseInt(temp.substring(4,6),16)):/^[\,\/]$/.test(text)?(this.type="operator",this.value=text):/^[a-z\-\u0080-\uFFFF][a-z0-9\-\u0080-\uFFFF]*$/i.test(text)&&(this.type="identifier",this.value=text)}function Selector(e,t,n){SyntaxUnit.call(this,e.join(" "),t,n,Parser.SELECTOR_TYPE),this.parts=e,this.specificity=Specificity.calculate(this)}function SelectorPart(e,t,n,r,i){SyntaxUnit.call(this,n,r,i,Parser.SELECTOR_PART_TYPE),this.elementName=e,this.modifiers=t}function SelectorSubPart(e,t,n,r){SyntaxUnit.call(this,e,n,r,Parser.SELECTOR_SUB_PART_TYPE),this.type=t,this.args=[]}function Specificity(e,t,n,r){this.a=e,this.b=t,this.c=n,this.d=r}function isHexDigit(e){return e!==null&&h.test(e)}function isDigit(e){return e!==null&&/\d/.test(e)}function isWhitespace(e){return e!==null&&/\s/.test(e)}function isNewLine(e){return e!==null&&nl.test(e)}function isNameStart(e){return e!==null&&/[a-z_\u0080-\uFFFF\\]/i.test(e)}function isNameChar(e){return e!==null&&(isNameStart(e)||/[0-9\-\\]/.test(e))}function isIdentStart(e){return e!==null&&(isNameStart(e)||/\-\\/.test(e))}function mix(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return e}function TokenStream(e){TokenStreamBase.call(this,e,Tokens)}function ValidationError(e,t,n){this.col=n,this.line=t,this.message=e}var EventTarget=parserlib.util.EventTarget,TokenStreamBase=parserlib.util.TokenStreamBase,StringReader=parserlib.util.StringReader,SyntaxError=parserlib.util.SyntaxError,SyntaxUnit=parserlib.util.SyntaxUnit,Colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32",activeBorder:"Active window border.",activecaption:"Active window caption.",appworkspace:"Background color of multiple document interface.",background:"Desktop background.",buttonface:"The face background color for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonhighlight:"The color of the border facing the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttonshadow:"The color of the border away from the light source for 3-D elements that appear 3-D due to one layer of surrounding border.",buttontext:"Text on push buttons.",captiontext:"Text in caption, size box, and scrollbar arrow box.",graytext:"Grayed (disabled) text. This color is set to #000 if the current display driver does not support a solid gray color.",highlight:"Item(s) selected in a control.",highlighttext:"Text of item(s) selected in a control.",inactiveborder:"Inactive window border.",inactivecaption:"Inactive window caption.",inactivecaptiontext:"Color of text in an inactive caption.",infobackground:"Background color for tooltip controls.",infotext:"Text color for tooltip controls.",menu:"Menu background.",menutext:"Text in menus.",scrollbar:"Scroll bar gray area.",threeddarkshadow:"The color of the darker (generally outer) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedface:"The face background color for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedhighlight:"The color of the lighter (generally outer) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedlightshadow:"The color of the darker (generally inner) of the two borders facing the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",threedshadow:"The color of the lighter (generally inner) of the two borders away from the light source for 3-D elements that appear 3-D due to two concentric layers of surrounding border.",window:"Window background.",windowframe:"Window frame.",windowtext:"Text in windows."};Combinator.prototype=new SyntaxUnit,Combinator.prototype.constructor=Combinator,MediaFeature.prototype=new SyntaxUnit,MediaFeature.prototype.constructor=MediaFeature,MediaQuery.prototype=new SyntaxUnit,MediaQuery.prototype.constructor=MediaQuery,Parser.DEFAULT_TYPE=0,Parser.COMBINATOR_TYPE=1,Parser.MEDIA_FEATURE_TYPE=2,Parser.MEDIA_QUERY_TYPE=3,Parser.PROPERTY_NAME_TYPE=4,Parser.PROPERTY_VALUE_TYPE=5,Parser.PROPERTY_VALUE_PART_TYPE=6,Parser.SELECTOR_TYPE=7,Parser.SELECTOR_PART_TYPE=8,Parser.SELECTOR_SUB_PART_TYPE=9,Parser.prototype=function(){var e=new EventTarget,t,n={constructor:Parser,DEFAULT_TYPE:0,COMBINATOR_TYPE:1,MEDIA_FEATURE_TYPE:2,MEDIA_QUERY_TYPE:3,PROPERTY_NAME_TYPE:4,PROPERTY_VALUE_TYPE:5,PROPERTY_VALUE_PART_TYPE:6,SELECTOR_TYPE:7,SELECTOR_PART_TYPE:8,SELECTOR_SUB_PART_TYPE:9,_stylesheet:function(){var e=this._tokenStream,t=null,n,r,i;this.fire("startstylesheet"),this._charset(),this._skipCruft();while(e.peek()==Tokens.IMPORT_SYM)this._import(),this._skipCruft();while(e.peek()==Tokens.NAMESPACE_SYM)this._namespace(),this._skipCruft();i=e.peek();while(i>Tokens.EOF){try{switch(i){case Tokens.MEDIA_SYM:this._media(),this._skipCruft();break;case Tokens.PAGE_SYM:this._page(),this._skipCruft();break;case Tokens.FONT_FACE_SYM:this._font_face(),this._skipCruft();break;case Tokens.KEYFRAMES_SYM:this._keyframes(),this._skipCruft();break;case Tokens.VIEWPORT_SYM:this._viewport(),this._skipCruft();break;case Tokens.UNKNOWN_SYM:e.get();if(!!this.options.strict)throw new SyntaxError("Unknown @ rule.",e.LT(0).startLine,e.LT(0).startCol);this.fire({type:"error",error:null,message:"Unknown @ rule: "+e.LT(0).value+".",line:e.LT(0).startLine,col:e.LT(0).startCol}),n=0;while(e.advance([Tokens.LBRACE,Tokens.RBRACE])==Tokens.LBRACE)n++;while(n)e.advance([Tokens.RBRACE]),n--;break;case Tokens.S:this._readWhitespace();break;default:if(!this._ruleset())switch(i){case Tokens.CHARSET_SYM:throw r=e.LT(1),this._charset(!1),new SyntaxError("@charset not allowed here.",r.startLine,r.startCol);case Tokens.IMPORT_SYM:throw r=e.LT(1),this._import(!1),new SyntaxError("@import not allowed here.",r.startLine,r.startCol);case Tokens.NAMESPACE_SYM:throw r=e.LT(1),this._namespace(!1),new SyntaxError("@namespace not allowed here.",r.startLine,r.startCol);default:e.get(),this._unexpectedToken(e.token())}}}catch(s){if(!(s instanceof SyntaxError&&!this.options.strict))throw s;this.fire({type:"error",error:s,message:s.message,line:s.line,col:s.col})}i=e.peek()}i!=Tokens.EOF&&this._unexpectedToken(e.token()),this.fire("endstylesheet")},_charset:function(e){var t=this._tokenStream,n,r,i,s;t.match(Tokens.CHARSET_SYM)&&(i=t.token().startLine,s=t.token().startCol,this._readWhitespace(),t.mustMatch(Tokens.STRING),r=t.token(),n=r.value,this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),e!==!1&&this.fire({type:"charset",charset:n,line:i,col:s}))},_import:function(e){var t=this._tokenStream,n,r,i,s=[];t.mustMatch(Tokens.IMPORT_SYM),i=t.token(),this._readWhitespace(),t.mustMatch([Tokens.STRING,Tokens.URI]),r=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),s=this._media_query_list(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"import",uri:r,media:s,line:i.startLine,col:i.startCol})},_namespace:function(e){var t=this._tokenStream,n,r,i,s;t.mustMatch(Tokens.NAMESPACE_SYM),n=t.token().startLine,r=t.token().startCol,this._readWhitespace(),t.match(Tokens.IDENT)&&(i=t.token().value,this._readWhitespace()),t.mustMatch([Tokens.STRING,Tokens.URI]),s=t.token().value.replace(/(?:url\()?["']([^"']+)["']\)?/,"$1"),this._readWhitespace(),t.mustMatch(Tokens.SEMICOLON),this._readWhitespace(),e!==!1&&this.fire({type:"namespace",prefix:i,uri:s,line:n,col:r})},_media:function(){var e=this._tokenStream,t,n,r;e.mustMatch(Tokens.MEDIA_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),r=this._media_query_list(),e.mustMatch(Tokens.LBRACE),this._readWhitespace(),this.fire({type:"startmedia",media:r,line:t,col:n});for(;;)if(e.peek()==Tokens.PAGE_SYM)this._page();else if(e.peek()==Tokens.FONT_FACE_SYM)this._font_face();else if(!this._ruleset())break;e.mustMatch(Tokens.RBRACE),this._readWhitespace(),this.fire({type:"endmedia",media:r,line:t,col:n})},_media_query_list:function(){var e=this._tokenStream,t=[];this._readWhitespace(),(e.peek()==Tokens.IDENT||e.peek()==Tokens.LPAREN)&&t.push(this._media_query());while(e.match(Tokens.COMMA))this._readWhitespace(),t.push(this._media_query());return t},_media_query:function(){var e=this._tokenStream,t=null,n=null,r=null,i=[];e.match(Tokens.IDENT)&&(n=e.token().value.toLowerCase(),n!="only"&&n!="not"?(e.unget(),n=null):r=e.token()),this._readWhitespace(),e.peek()==Tokens.IDENT?(t=this._media_type(),r===null&&(r=e.token())):e.peek()==Tokens.LPAREN&&(r===null&&(r=e.LT(1)),i.push(this._media_expression()));if(t===null&&i.length===0)return null;this._readWhitespace();while(e.match(Tokens.IDENT))e.token().value.toLowerCase()!="and"&&this._unexpectedToken(e.token()),this._readWhitespace(),i.push(this._media_expression());return new MediaQuery(n,t,i,r.startLine,r.startCol)},_media_type:function(){return this._media_feature()},_media_expression:function(){var e=this._tokenStream,t=null,n,r=null;return e.mustMatch(Tokens.LPAREN),t=this._media_feature(),this._readWhitespace(),e.match(Tokens.COLON)&&(this._readWhitespace(),n=e.LT(1),r=this._expression()),e.mustMatch(Tokens.RPAREN),this._readWhitespace(),new MediaFeature(t,r?new SyntaxUnit(r,n.startLine,n.startCol):null)},_media_feature:function(){var e=this._tokenStream;return e.mustMatch(Tokens.IDENT),SyntaxUnit.fromToken(e.token())},_page:function(){var e=this._tokenStream,t,n,r=null,i=null;e.mustMatch(Tokens.PAGE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),e.match(Tokens.IDENT)&&(r=e.token().value,r.toLowerCase()==="auto"&&this._unexpectedToken(e.token())),e.peek()==Tokens.COLON&&(i=this._pseudo_page()),this._readWhitespace(),this.fire({type:"startpage",id:r,pseudo:i,line:t,col:n}),this._readDeclarations(!0,!0),this.fire({type:"endpage",id:r,pseudo:i,line:t,col:n})},_margin:function(){var e=this._tokenStream,t,n,r=this._margin_sym();return r?(t=e.token().startLine,n=e.token().startCol,this.fire({type:"startpagemargin",margin:r,line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endpagemargin",margin:r,line:t,col:n}),!0):!1},_margin_sym:function(){var e=this._tokenStream;return e.match([Tokens.TOPLEFTCORNER_SYM,Tokens.TOPLEFT_SYM,Tokens.TOPCENTER_SYM,Tokens.TOPRIGHT_SYM,Tokens.TOPRIGHTCORNER_SYM,Tokens.BOTTOMLEFTCORNER_SYM,Tokens.BOTTOMLEFT_SYM,Tokens.BOTTOMCENTER_SYM,Tokens.BOTTOMRIGHT_SYM,Tokens.BOTTOMRIGHTCORNER_SYM,Tokens.LEFTTOP_SYM,Tokens.LEFTMIDDLE_SYM,Tokens.LEFTBOTTOM_SYM,Tokens.RIGHTTOP_SYM,Tokens.RIGHTMIDDLE_SYM,Tokens.RIGHTBOTTOM_SYM])?SyntaxUnit.fromToken(e.token()):null},_pseudo_page:function(){var e=this._tokenStream;return e.mustMatch(Tokens.COLON),e.mustMatch(Tokens.IDENT),e.token().value},_font_face:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.FONT_FACE_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startfontface",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endfontface",line:t,col:n})},_viewport:function(){var e=this._tokenStream,t,n;e.mustMatch(Tokens.VIEWPORT_SYM),t=e.token().startLine,n=e.token().startCol,this._readWhitespace(),this.fire({type:"startviewport",line:t,col:n}),this._readDeclarations(!0),this.fire({type:"endviewport",line:t,col:n})},_operator:function(e){var t=this._tokenStream,n=null;if(t.match([Tokens.SLASH,Tokens.COMMA])||e&&t.match([Tokens.PLUS,Tokens.STAR,Tokens.MINUS]))n=t.token(),this._readWhitespace();return n?PropertyValuePart.fromToken(n):null},_combinator:function(){var e=this._tokenStream,t=null,n;return e.match([Tokens.PLUS,Tokens.GREATER,Tokens.TILDE])&&(n=e.token(),t=new Combinator(n.value,n.startLine,n.startCol),this._readWhitespace()),t},_unary_operator:function(){var e=this._tokenStream;return e.match([Tokens.MINUS,Tokens.PLUS])?e.token().value:null},_property:function(){var e=this._tokenStream,t=null,n=null,r,i,s,o;return e.peek()==Tokens.STAR&&this.options.starHack&&(e.get(),i=e.token(),n=i.value,s=i.startLine,o=i.startCol),e.match(Tokens.IDENT)&&(i=e.token(),r=i.value,r.charAt(0)=="_"&&this.options.underscoreHack&&(n="_",r=r.substring(1)),t=new PropertyName(r,n,s||i.startLine,o||i.startCol),this._readWhitespace()),t},_ruleset:function(){var e=this._tokenStream,t,n;try{n=this._selectors_group()}catch(r){if(r instanceof SyntaxError&&!this.options.strict){this.fire({type:"error",error:r,message:r.message,line:r.line,col:r.col}),t=e.advance([Tokens.RBRACE]);if(t!=Tokens.RBRACE)throw r;return!0}throw r}return n&&(this.fire({type:"startrule",selectors:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endrule",selectors:n,line:n[0].line,col:n[0].col})),n},_selectors_group:function(){var e=this._tokenStream,t=[],n;n=this._selector();if(n!==null){t.push(n);while(e.match(Tokens.COMMA))this._readWhitespace(),n=this._selector(),n!==null?t.push(n):this._unexpectedToken(e.LT(1))}return t.length?t:null},_selector:function(){var e=this._tokenStream,t=[],n=null,r=null,i=null;n=this._simple_selector_sequence();if(n===null)return null;t.push(n);do{r=this._combinator();if(r!==null)t.push(r),n=this._simple_selector_sequence(),n===null?this._unexpectedToken(e.LT(1)):t.push(n);else{if(!this._readWhitespace())break;i=new Combinator(e.token().value,e.token().startLine,e.token().startCol),r=this._combinator(),n=this._simple_selector_sequence(),n===null?r!==null&&this._unexpectedToken(e.LT(1)):(r!==null?t.push(r):t.push(i),t.push(n))}}while(!0);return new Selector(t,t[0].line,t[0].col)},_simple_selector_sequence:function(){var e=this._tokenStream,t=null,n=[],r="",i=[function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo,this._negation],s=0,o=i.length,u=null,a=!1,f,l;f=e.LT(1).startLine,l=e.LT(1).startCol,t=this._type_selector(),t||(t=this._universal()),t!==null&&(r+=t);for(;;){if(e.peek()===Tokens.S)break;while(s<o&&u===null)u=i[s++].call(this);if(u===null){if(r==="")return null;break}s=0,n.push(u),r+=u.toString(),u=null}return r!==""?new SelectorPart(t,n,r,f,l):null},_type_selector:function(){var e=this._tokenStream,t=this._namespace_prefix(),n=this._element_name();return n?(t&&(n.text=t+n.text,n.col-=t.length),n):(t&&(e.unget(),t.length>1&&e.unget()),null)},_class:function(){var e=this._tokenStream,t;return e.match(Tokens.DOT)?(e.mustMatch(Tokens.IDENT),t=e.token(),new SelectorSubPart("."+t.value,"class",t.startLine,t.startCol-1)):null},_element_name:function(){var e=this._tokenStream,t;return e.match(Tokens.IDENT)?(t=e.token(),new SelectorSubPart(t.value,"elementName",t.startLine,t.startCol)):null},_namespace_prefix:function(){var e=this._tokenStream,t="";if(e.LA(1)===Tokens.PIPE||e.LA(2)===Tokens.PIPE)e.match([Tokens.IDENT,Tokens.STAR])&&(t+=e.token().value),e.mustMatch(Tokens.PIPE),t+="|";return t.length?t:null},_universal:function(){var e=this._tokenStream,t="",n;return n=this._namespace_prefix(),n&&(t+=n),e.match(Tokens.STAR)&&(t+="*"),t.length?t:null},_attrib:function(){var e=this._tokenStream,t=null,n,r;return e.match(Tokens.LBRACKET)?(r=e.token(),t=r.value,t+=this._readWhitespace(),n=this._namespace_prefix(),n&&(t+=n),e.mustMatch(Tokens.IDENT),t+=e.token().value,t+=this._readWhitespace(),e.match([Tokens.PREFIXMATCH,Tokens.SUFFIXMATCH,Tokens.SUBSTRINGMATCH,Tokens.EQUALS,Tokens.INCLUDES,Tokens.DASHMATCH])&&(t+=e.token().value,t+=this._readWhitespace(),e.mustMatch([Tokens.IDENT,Tokens.STRING]),t+=e.token().value,t+=this._readWhitespace()),e.mustMatch(Tokens.RBRACKET),new SelectorSubPart(t+"]","attribute",r.startLine,r.startCol)):null},_pseudo:function(){var e=this._tokenStream,t=null,n=":",r,i;return e.match(Tokens.COLON)&&(e.match(Tokens.COLON)&&(n+=":"),e.match(Tokens.IDENT)?(t=e.token().value,r=e.token().startLine,i=e.token().startCol-n.length):e.peek()==Tokens.FUNCTION&&(r=e.LT(1).startLine,i=e.LT(1).startCol-n.length,t=this._functional_pseudo()),t&&(t=new SelectorSubPart(n+t,"pseudo",r,i))),t},_functional_pseudo:function(){var e=this._tokenStream,t=null;return e.match(Tokens.FUNCTION)&&(t=e.token().value,t+=this._readWhitespace(),t+=this._expression(),e.mustMatch(Tokens.RPAREN),t+=")"),t},_expression:function(){var e=this._tokenStream,t="";while(e.match([Tokens.PLUS,Tokens.MINUS,Tokens.DIMENSION,Tokens.NUMBER,Tokens.STRING,Tokens.IDENT,Tokens.LENGTH,Tokens.FREQ,Tokens.ANGLE,Tokens.TIME,Tokens.RESOLUTION,Tokens.SLASH]))t+=e.token().value,t+=this._readWhitespace();return t.length?t:null},_negation:function(){var e=this._tokenStream,t,n,r="",i,s=null;return e.match(Tokens.NOT)&&(r=e.token().value,t=e.token().startLine,n=e.token().startCol,r+=this._readWhitespace(),i=this._negation_arg(),r+=i,r+=this._readWhitespace(),e.match(Tokens.RPAREN),r+=e.token().value,s=new SelectorSubPart(r,"not",t,n),s.args.push(i)),s},_negation_arg:function(){var e=this._tokenStream,t=[this._type_selector,this._universal,function(){return e.match(Tokens.HASH)?new SelectorSubPart(e.token().value,"id",e.token().startLine,e.token().startCol):null},this._class,this._attrib,this._pseudo],n=null,r=0,i=t.length,s,o,u,a;o=e.LT(1).startLine,u=e.LT(1).startCol;while(r<i&&n===null)n=t[r].call(this),r++;return n===null&&this._unexpectedToken(e.LT(1)),n.type=="elementName"?a=new SelectorPart(n,[],n.toString(),o,u):a=new SelectorPart(null,[n],n.toString(),o,u),a},_declaration:function(){var e=this._tokenStream,t=null,n=null,r=null,i=null,s=null,o="";t=this._property();if(t!==null){e.mustMatch(Tokens.COLON),this._readWhitespace(),n=this._expr(),(!n||n.length===0)&&this._unexpectedToken(e.LT(1)),r=this._prio(),o=t.toString();if(this.options.starHack&&t.hack=="*"||this.options.underscoreHack&&t.hack=="_")o=t.text;try{this._validateProperty(o,n)}catch(u){s=u}return this.fire({type:"property",property:t,value:n,important:r,line:t.line,col:t.col,invalid:s}),!0}return!1},_prio:function(){var e=this._tokenStream,t=e.match(Tokens.IMPORTANT_SYM);return this._readWhitespace(),t},_expr:function(e){var t=this._tokenStream,n=[],r=null,i=null;r=this._term();if(r!==null){n.push(r);do{i=this._operator(e),i&&n.push(i),r=this._term();if(r===null)break;n.push(r)}while(!0)}return n.length>0?new PropertyValue(n,n[0].line,n[0].col):null},_term:function(){var e=this._tokenStream,t=null,n=null,r,i,s;return t=this._unary_operator(),t!==null&&(i=e.token().startLine,s=e.token().startCol),e.peek()==Tokens.IE_FUNCTION&&this.options.ieFilters?(n=this._ie_function(),t===null&&(i=e.token().startLine,s=e.token().startCol)):e.match([Tokens.NUMBER,Tokens.PERCENTAGE,Tokens.LENGTH,Tokens.ANGLE,Tokens.TIME,Tokens.FREQ,Tokens.STRING,Tokens.IDENT,Tokens.URI,Tokens.UNICODE_RANGE])?(n=e.token().value,t===null&&(i=e.token().startLine,s=e.token().startCol),this._readWhitespace()):(r=this._hexcolor(),r===null?(t===null&&(i=e.LT(1).startLine,s=e.LT(1).startCol),n===null&&(e.LA(3)==Tokens.EQUALS&&this.options.ieFilters?n=this._ie_function():n=this._function())):(n=r.value,t===null&&(i=r.startLine,s=r.startCol))),n!==null?new PropertyValuePart(t!==null?t+n:n,i,s):null},_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match(Tokens.FUNCTION)){t=e.token().value,this._readWhitespace(),n=this._expr(!0),t+=n;if(this.options.ieFilters&&e.peek()==Tokens.EQUALS)do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_ie_function:function(){var e=this._tokenStream,t=null,n=null,r;if(e.match([Tokens.IE_FUNCTION,Tokens.FUNCTION])){t=e.token().value;do{this._readWhitespace()&&(t+=e.token().value),e.LA(0)==Tokens.COMMA&&(t+=e.token().value),e.match(Tokens.IDENT),t+=e.token().value,e.match(Tokens.EQUALS),t+=e.token().value,r=e.peek();while(r!=Tokens.COMMA&&r!=Tokens.S&&r!=Tokens.RPAREN)e.get(),t+=e.token().value,r=e.peek()}while(e.match([Tokens.COMMA,Tokens.S]));e.match(Tokens.RPAREN),t+=")",this._readWhitespace()}return t},_hexcolor:function(){var e=this._tokenStream,t=null,n;if(e.match(Tokens.HASH)){t=e.token(),n=t.value;if(!/#[a-f0-9]{3,6}/i.test(n))throw new SyntaxError("Expected a hex color but found '"+n+"' at line "+t.startLine+", col "+t.startCol+".",t.startLine,t.startCol);this._readWhitespace()}return t},_keyframes:function(){var e=this._tokenStream,t,n,r,i="";e.mustMatch(Tokens.KEYFRAMES_SYM),t=e.token(),/^@\-([^\-]+)\-/.test(t.value)&&(i=RegExp.$1),this._readWhitespace(),r=this._keyframe_name(),this._readWhitespace(),e.mustMatch(Tokens.LBRACE),this.fire({type:"startkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),n=e.peek();while(n==Tokens.IDENT||n==Tokens.PERCENTAGE)this._keyframe_rule(),this._readWhitespace(),n=e.peek();this.fire({type:"endkeyframes",name:r,prefix:i,line:t.startLine,col:t.startCol}),this._readWhitespace(),e.mustMatch(Tokens.RBRACE)},_keyframe_name:function(){var e=this._tokenStream,t;return e.mustMatch([Tokens.IDENT,Tokens.STRING]),SyntaxUnit.fromToken(e.token())},_keyframe_rule:function(){var e=this._tokenStream,t,n=this._key_list();this.fire({type:"startkeyframerule",keys:n,line:n[0].line,col:n[0].col}),this._readDeclarations(!0),this.fire({type:"endkeyframerule",keys:n,line:n[0].line,col:n[0].col})},_key_list:function(){var e=this._tokenStream,t,n,r=[];r.push(this._key()),this._readWhitespace();while(e.match(Tokens.COMMA))this._readWhitespace(),r.push(this._key()),this._readWhitespace();return r},_key:function(){var e=this._tokenStream,t;if(e.match(Tokens.PERCENTAGE))return SyntaxUnit.fromToken(e.token());if(e.match(Tokens.IDENT)){t=e.token();if(/from|to/i.test(t.value))return SyntaxUnit.fromToken(t);e.unget()}this._unexpectedToken(e.LT(1))},_skipCruft:function(){while(this._tokenStream.match([Tokens.S,Tokens.CDO,Tokens.CDC]));},_readDeclarations:function(e,t){var n=this._tokenStream,r;this._readWhitespace(),e&&n.mustMatch(Tokens.LBRACE),this._readWhitespace();try{for(;;){if(!(n.match(Tokens.SEMICOLON)||t&&this._margin())){if(!this._declaration())break;if(!n.match(Tokens.SEMICOLON))break}this._readWhitespace()}n.mustMatch(Tokens.RBRACE),this._readWhitespace()}catch(i){if(!(i instanceof SyntaxError&&!this.options.strict))throw i;this.fire({type:"error",error:i,message:i.message,line:i.line,col:i.col}),r=n.advance([Tokens.SEMICOLON,Tokens.RBRACE]);if(r==Tokens.SEMICOLON)this._readDeclarations(!1,t);else if(r!=Tokens.RBRACE)throw i}},_readWhitespace:function(){var e=this._tokenStream,t="";while(e.match(Tokens.S))t+=e.token().value;return t},_unexpectedToken:function(e){throw new SyntaxError("Unexpected token '"+e.value+"' at line "+e.startLine+", col "+e.startCol+".",e.startLine,e.startCol)},_verifyEnd:function(){this._tokenStream.LA(1)!=Tokens.EOF&&this._unexpectedToken(this._tokenStream.LT(1))},_validateProperty:function(e,t){Validation.validate(e,t)},parse:function(e){this._tokenStream=new TokenStream(e,Tokens),this._stylesheet()},parseStyleSheet:function(e){return this.parse(e)},parseMediaQuery:function(e){this._tokenStream=new TokenStream(e,Tokens);var t=this._media_query();return this._verifyEnd(),t},parsePropertyValue:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._expr();return this._readWhitespace(),this._verifyEnd(),t},parseRule:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._ruleset();return this._readWhitespace(),this._verifyEnd(),t},parseSelector:function(e){this._tokenStream=new TokenStream(e,Tokens),this._readWhitespace();var t=this._selector();return this._readWhitespace(),this._verifyEnd(),t},parseStyleAttribute:function(e){e+="}",this._tokenStream=new TokenStream(e,Tokens),this._readDeclarations()}};for(t in n)n.hasOwnProperty(t)&&(e[t]=n[t]);return e}();var Properties={"alignment-adjust":"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | <percentage> | <length>","alignment-baseline":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical",animation:1,"animation-delay":{multi:"<time>",comma:!0},"animation-direction":{multi:"normal | alternate",comma:!0},"animation-duration":{multi:"<time>",comma:!0},"animation-iteration-count":{multi:"<number> | infinite",comma:!0},"animation-name":{multi:"none | <ident>",comma:!0},"animation-play-state":{multi:"running | paused",comma:!0},"animation-timing-function":1,"-moz-animation-delay":{multi:"<time>",comma:!0},"-moz-animation-direction":{multi:"normal | alternate",comma:!0},"-moz-animation-duration":{multi:"<time>",comma:!0},"-moz-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-moz-animation-name":{multi:"none | <ident>",comma:!0},"-moz-animation-play-state":{multi:"running | paused",comma:!0},"-ms-animation-delay":{multi:"<time>",comma:!0},"-ms-animation-direction":{multi:"normal | alternate",comma:!0},"-ms-animation-duration":{multi:"<time>",comma:!0},"-ms-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-ms-animation-name":{multi:"none | <ident>",comma:!0},"-ms-animation-play-state":{multi:"running | paused",comma:!0},"-webkit-animation-delay":{multi:"<time>",comma:!0},"-webkit-animation-direction":{multi:"normal | alternate",comma:!0},"-webkit-animation-duration":{multi:"<time>",comma:!0},"-webkit-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-webkit-animation-name":{multi:"none | <ident>",comma:!0},"-webkit-animation-play-state":{multi:"running | paused",comma:!0},"-o-animation-delay":{multi:"<time>",comma:!0},"-o-animation-direction":{multi:"normal | alternate",comma:!0},"-o-animation-duration":{multi:"<time>",comma:!0},"-o-animation-iteration-count":{multi:"<number> | infinite",comma:!0},"-o-animation-name":{multi:"none | <ident>",comma:!0},"-o-animation-play-state":{multi:"running | paused",comma:!0},appearance:"icon | window | desktop | workspace | document | tooltip | dialog | button | push-button | hyperlink | radio-button | checkbox | menu-item | tab | menu | menubar | pull-down-menu | pop-up-menu | list-menu | radio-group | checkbox-group | outline-tree | range | field | combo-box | signature | password | normal | none | inherit",azimuth:function(e){var t="<angle> | leftwards | rightwards | inherit",n="left-side | far-left | left | center-left | center | center-right | right | far-right | right-side",r=!1,i=!1,s;ValidationTypes.isAny(e,t)||(ValidationTypes.isAny(e,"behind")&&(r=!0,i=!0),ValidationTypes.isAny(e,n)&&(i=!0,r||ValidationTypes.isAny(e,"behind")));if(e.hasNext())throw s=e.next(),i?new ValidationError("Expected end of value but found '"+s+"'.",s.line,s.col):new ValidationError("Expected (<'azimuth'>) but found '"+s+"'.",s.line,s.col)},"backface-visibility":"visible | hidden",background:1,"background-attachment":{multi:"<attachment>",comma:!0},"background-clip":{multi:"<box>",comma:!0},"background-color":"<color> | inherit","background-image":{multi:"<bg-image>",comma:!0},"background-origin":{multi:"<box>",comma:!0},"background-position":{multi:"<bg-position>",comma:!0},"background-repeat":{multi:"<repeat-style>"},"background-size":{multi:"<bg-size>",comma:!0},"baseline-shift":"baseline | sub | super | <percentage> | <length>",behavior:1,binding:1,bleed:"<length>","bookmark-label":"<content> | <attr> | <string>","bookmark-level":"none | <integer>","bookmark-state":"open | closed","bookmark-target":"none | <uri> | <attr>",border:"<border-width> || <border-style> || <color>","border-bottom":"<border-width> || <border-style> || <color>","border-bottom-color":"<color> | inherit","border-bottom-left-radius":"<x-one-radius>","border-bottom-right-radius":"<x-one-radius>","border-bottom-style":"<border-style>","border-bottom-width":"<border-width>","border-collapse":"collapse | separate | inherit","border-color":{multi:"<color> | inherit",max:4},"border-image":1,"border-image-outset":{multi:"<length> | <number>",max:4},"border-image-repeat":{multi:"stretch | repeat | round",max:2},"border-image-slice":function(e){var t=!1,n="<number> | <percentage>",r=!1,i=0,s=4,o;ValidationTypes.isAny(e,"fill")&&(r=!0,t=!0);while(e.hasNext()&&i<s){t=ValidationTypes.isAny(e,n);if(!t)break;i++}r?t=!0:ValidationTypes.isAny(e,"fill");if(e.hasNext())throw o=e.next(),t?new ValidationError("Expected end of value but found '"+o+"'.",o.line,o.col):new ValidationError("Expected ([<number> | <percentage>]{1,4} && fill?) but found '"+o+"'.",o.line,o.col)},"border-image-source":"<image> | none","border-image-width":{multi:"<length> | <percentage> | <number> | auto",max:4},"border-left":"<border-width> || <border-style> || <color>","border-left-color":"<color> | inherit","border-left-style":"<border-style>","border-left-width":"<border-width>","border-radius":function(e){var t=!1,n="<length> | <percentage> | inherit",r=!1,i=!1,s=0,o=8,u;while(e.hasNext()&&s<o){t=ValidationTypes.isAny(e,n);if(!t){if(!(e.peek()=="/"&&s>0&&!r))break;r=!0,o=s+5,e.next()}s++}if(e.hasNext())throw u=e.next(),t?new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col):new ValidationError("Expected (<'border-radius'>) but found '"+u+"'.",u.line,u.col)},"border-right":"<border-width> || <border-style> || <color>","border-right-color":"<color> | inherit","border-right-style":"<border-style>","border-right-width":"<border-width>","border-spacing":{multi:"<length> | inherit",max:2},"border-style":{multi:"<border-style>",max:4},"border-top":"<border-width> || <border-style> || <color>","border-top-color":"<color> | inherit","border-top-left-radius":"<x-one-radius>","border-top-right-radius":"<x-one-radius>","border-top-style":"<border-style>","border-top-width":"<border-width>","border-width":{multi:"<border-width>",max:4},bottom:"<margin-width> | inherit","box-align":"start | end | center | baseline | stretch","box-decoration-break":"slice |clone","box-direction":"normal | reverse | inherit","box-flex":"<number>","box-flex-group":"<integer>","box-lines":"single | multiple","box-ordinal-group":"<integer>","box-orient":"horizontal | vertical | inline-axis | block-axis | inherit","box-pack":"start | end | center | justify","box-shadow":function(e){var t=!1,n;if(!ValidationTypes.isAny(e,"none"))Validation.multiProperty("<shadow>",e,!0,Infinity);else if(e.hasNext())throw n=e.next(),new ValidationError("Expected end of value but found '"+n+"'.",n.line,n.col)},"box-sizing":"content-box | border-box | inherit","break-after":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-before":"auto | always | avoid | left | right | page | column | avoid-page | avoid-column","break-inside":"auto | avoid | avoid-page | avoid-column","caption-side":"top | bottom | inherit",clear:"none | right | left | both | inherit",clip:1,color:"<color> | inherit","color-profile":1,"column-count":"<integer> | auto","column-fill":"auto | balance","column-gap":"<length> | normal","column-rule":"<border-width> || <border-style> || <color>","column-rule-color":"<color>","column-rule-style":"<border-style>","column-rule-width":"<border-width>","column-span":"none | all","column-width":"<length> | auto",columns:1,content:1,"counter-increment":1,"counter-reset":1,crop:"<shape> | auto",cue:"cue-after | cue-before | inherit","cue-after":1,"cue-before":1,cursor:1,direction:"ltr | rtl | inherit",display:"inline | block | list-item | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | box | inline-box | grid | inline-grid | none | inherit | -moz-box | -moz-inline-block | -moz-inline-box | -moz-inline-grid | -moz-inline-stack | -moz-inline-table | -moz-grid | -moz-grid-group | -moz-grid-line | -moz-groupbox | -moz-deck | -moz-popup | -moz-stack | -moz-marker | -webkit-box | -webkit-inline-box","dominant-baseline":1,"drop-initial-after-adjust":"central | middle | after-edge | text-after-edge | ideographic | alphabetic | mathematical | <percentage> | <length>","drop-initial-after-align":"baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-before-adjust":"before-edge | text-before-edge | central | middle | hanging | mathematical | <percentage> | <length>","drop-initial-before-align":"caps-height | baseline | use-script | before-edge | text-before-edge | after-edge | text-after-edge | central | middle | ideographic | alphabetic | hanging | mathematical","drop-initial-size":"auto | line | <length> | <percentage>","drop-initial-value":"initial | <integer>",elevation:"<angle> | below | level | above | higher | lower | inherit","empty-cells":"show | hide | inherit",filter:1,fit:"fill | hidden | meet | slice","fit-position":1,"float":"left | right | none | inherit","float-offset":1,font:1,"font-family":1,"font-size":"<absolute-size> | <relative-size> | <length> | <percentage> | inherit","font-size-adjust":"<number> | none | inherit","font-stretch":"normal | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit","font-style":"normal | italic | oblique | inherit","font-variant":"normal | small-caps | inherit","font-weight":"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit","grid-cell-stacking":"columns | rows | layer","grid-column":1,"grid-columns":1,"grid-column-align":"start | end | center | stretch","grid-column-sizing":1,"grid-column-span":"<integer>","grid-flow":"none | rows | columns","grid-layer":"<integer>","grid-row":1,"grid-rows":1,"grid-row-align":"start | end | center | stretch","grid-row-span":"<integer>","grid-row-sizing":1,"hanging-punctuation":1,height:"<margin-width> | inherit","hyphenate-after":"<integer> | auto","hyphenate-before":"<integer> | auto","hyphenate-character":"<string> | auto","hyphenate-lines":"no-limit | <integer>","hyphenate-resource":1,hyphens:"none | manual | auto",icon:1,"image-orientation":"angle | auto","image-rendering":1,"image-resolution":1,"inline-box-align":"initial | last | <integer>",left:"<margin-width> | inherit","letter-spacing":"<length> | normal | inherit","line-height":"<number> | <length> | <percentage> | normal | inherit","line-break":"auto | loose | normal | strict","line-stacking":1,"line-stacking-ruby":"exclude-ruby | include-ruby","line-stacking-shift":"consider-shifts | disregard-shifts","line-stacking-strategy":"inline-line-height | block-line-height | max-height | grid-height","list-style":1,"list-style-image":"<uri> | none | inherit","list-style-position":"inside | outside | inherit","list-style-type":"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | lower-alpha | upper-alpha | none | inherit",margin:{multi:"<margin-width> | inherit",max:4},"margin-bottom":"<margin-width> | inherit","margin-left":"<margin-width> | inherit","margin-right":"<margin-width> | inherit","margin-top":"<margin-width> | inherit",mark:1,"mark-after":1,"mark-before":1,marks:1,"marquee-direction":1,"marquee-play-count":1,"marquee-speed":1,"marquee-style":1,"max-height":"<length> | <percentage> | none | inherit","max-width":"<length> | <percentage> | none | inherit","min-height":"<length> | <percentage> | inherit","min-width":"<length> | <percentage> | inherit","move-to":1,"nav-down":1,"nav-index":1,"nav-left":1,"nav-right":1,"nav-up":1,opacity:"<number> | inherit",orphans:"<integer> | inherit",outline:1,"outline-color":"<color> | invert | inherit","outline-offset":1,"outline-style":"<border-style> | inherit","outline-width":"<border-width> | inherit",overflow:"visible | hidden | scroll | auto | inherit","overflow-style":1,"overflow-x":1,"overflow-y":1,padding:{multi:"<padding-width> | inherit",max:4},"padding-bottom":"<padding-width> | inherit","padding-left":"<padding-width> | inherit","padding-right":"<padding-width> | inherit","padding-top":"<padding-width> | inherit",page:1,"page-break-after":"auto | always | avoid | left | right | inherit","page-break-before":"auto | always | avoid | left | right | inherit","page-break-inside":"auto | avoid | inherit","page-policy":1,pause:1,"pause-after":1,"pause-before":1,perspective:1,"perspective-origin":1,phonemes:1,pitch:1,"pitch-range":1,"play-during":1,"pointer-events":"auto | none | visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | inherit",position:"static | relative | absolute | fixed | inherit","presentation-level":1,"punctuation-trim":1,quotes:1,"rendering-intent":1,resize:1,rest:1,"rest-after":1,"rest-before":1,richness:1,right:"<margin-width> | inherit",rotation:1,"rotation-point":1,"ruby-align":1,"ruby-overhang":1,"ruby-position":1,"ruby-span":1,size:1,speak:"normal | none | spell-out | inherit","speak-header":"once | always | inherit","speak-numeral":"digits | continuous | inherit","speak-punctuation":"code | none | inherit","speech-rate":1,src:1,stress:1,"string-set":1,"table-layout":"auto | fixed | inherit","tab-size":"<integer> | <length>",target:1,"target-name":1,"target-new":1,"target-position":1,"text-align":"left | right | center | justify | inherit","text-align-last":1,"text-decoration":1,"text-emphasis":1,"text-height":1,"text-indent":"<length> | <percentage> | inherit","text-justify":"auto | none | inter-word | inter-ideograph | inter-cluster | distribute | kashida","text-outline":1,"text-overflow":1,"text-rendering":"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit","text-shadow":1,"text-transform":"capitalize | uppercase | lowercase | none | inherit","text-wrap":"normal | none | avoid",top:"<margin-width> | inherit",transform:1,"transform-origin":1,"transform-style":1,transition:1,"transition-delay":1,"transition-duration":1,"transition-property":1,"transition-timing-function":1,"unicode-bidi":"normal | embed | bidi-override | inherit","user-modify":"read-only | read-write | write-only | inherit","user-select":"none | text | toggle | element | elements | all | inherit","vertical-align":"auto | use-script | baseline | sub | super | top | text-top | central | middle | bottom | text-bottom | <percentage> | <length>",visibility:"visible | hidden | collapse | inherit","voice-balance":1,"voice-duration":1,"voice-family":1,"voice-pitch":1,"voice-pitch-range":1,"voice-rate":1,"voice-stress":1,"voice-volume":1,volume:1,"white-space":"normal | pre | nowrap | pre-wrap | pre-line | inherit | -pre-wrap | -o-pre-wrap | -moz-pre-wrap | -hp-pre-wrap","white-space-collapse":1,widows:"<integer> | inherit",width:"<length> | <percentage> | auto | inherit","word-break":"normal | keep-all | break-all","word-spacing":"<length> | normal | inherit","word-wrap":1,"z-index":"<integer> | auto | inherit",zoom:"<number> | <percentage> | normal"};PropertyName.prototype=new SyntaxUnit,PropertyName.prototype.constructor=PropertyName,PropertyName.prototype.toString=function(){return(this.hack?this.hack:"")+this.text},PropertyValue.prototype=new SyntaxUnit,PropertyValue.prototype.constructor=PropertyValue,PropertyValueIterator.prototype.count=function(){return this._parts.length},PropertyValueIterator.prototype.isFirst=function(){return this._i===0},PropertyValueIterator.prototype.hasNext=function(){return this._i<this._parts.length},PropertyValueIterator.prototype.mark=function(){this._marks.push(this._i)},PropertyValueIterator.prototype.peek=function(e){return this.hasNext()?this._parts[this._i+(e||0)]:null},PropertyValueIterator.prototype.next=function(){return this.hasNext()?this._parts[this._i++]:null},PropertyValueIterator.prototype.previous=function(){return this._i>0?this._parts[--this._i]:null},PropertyValueIterator.prototype.restore=function(){this._marks.length&&(this._i=this._marks.pop())},PropertyValuePart.prototype=new SyntaxUnit,PropertyValuePart.prototype.constructor=PropertyValuePart,PropertyValuePart.fromToken=function(e){return new PropertyValuePart(e.value,e.startLine,e.startCol)};var Pseudos={":first-letter":1,":first-line":1,":before":1,":after":1};Pseudos.ELEMENT=1,Pseudos.CLASS=2,Pseudos.isElement=function(e){return e.indexOf("::")===0||Pseudos[e.toLowerCase()]==Pseudos.ELEMENT},Selector.prototype=new SyntaxUnit,Selector.prototype.constructor=Selector,SelectorPart.prototype=new SyntaxUnit,SelectorPart.prototype.constructor=SelectorPart,SelectorSubPart.prototype=new SyntaxUnit,SelectorSubPart.prototype.constructor=SelectorSubPart,Specificity.prototype={constructor:Specificity,compare:function(e){var t=["a","b","c","d"],n,r;for(n=0,r=t.length;n<r;n++){if(this[t[n]]<e[t[n]])return-1;if(this[t[n]]>e[t[n]])return 1}return 0},valueOf:function(){return this.a*1e3+this.b*100+this.c*10+this.d},toString:function(){return this.a+","+this.b+","+this.c+","+this.d}},Specificity.calculate=function(e){function t(e){var n,r,i,a,f=e.elementName?e.elementName.text:"",l;f&&f.charAt(f.length-1)!="*"&&u++;for(n=0,i=e.modifiers.length;n<i;n++){l=e.modifiers[n];switch(l.type){case"class":case"attribute":o++;break;case"id":s++;break;case"pseudo":Pseudos.isElement(l.text)?u++:o++;break;case"not":for(r=0,a=l.args.length;r<a;r++)t(l.args[r])}}}var n,r,i,s=0,o=0,u=0;for(n=0,r=e.parts.length;n<r;n++)i=e.parts[n],i instanceof SelectorPart&&t(i);return new Specificity(0,s,o,u)};var h=/^[0-9a-fA-F]$/,nonascii=/^[\u0080-\uFFFF]$/,nl=/\n|\r\n|\r|\f/;TokenStream.prototype=mix(new TokenStreamBase,{_getToken:function(e){var t,n=this._reader,r=null,i=n.getLine(),s=n.getCol();t=n.read();while(t){switch(t){case"/":n.peek()=="*"?r=this.commentToken(t,i,s):r=this.charToken(t,i,s);break;case"|":case"~":case"^":case"$":case"*":n.peek()=="="?r=this.comparisonToken(t,i,s):r=this.charToken(t,i,s);break;case'"':case"'":r=this.stringToken(t,i,s);break;case"#":isNameChar(n.peek())?r=this.hashToken(t,i,s):r=this.charToken(t,i,s);break;case".":isDigit(n.peek())?r=this.numberToken(t,i,s):r=this.charToken(t,i,s);break;case"-":n.peek()=="-"?r=this.htmlCommentEndToken(t,i,s):isNameStart(n.peek())?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s);break;case"!":r=this.importantToken(t,i,s);break;case"@":r=this.atRuleToken(t,i,s);break;case":":r=this.notToken(t,i,s);break;case"<":r=this.htmlCommentStartToken(t,i,s);break;case"U":case"u":if(n.peek()=="+"){r=this.unicodeRangeToken(t,i,s);break};default:isDigit(t)?r=this.numberToken(t,i,s):isWhitespace(t)?r=this.whitespaceToken(t,i,s):isIdentStart(t)?r=this.identOrFunctionToken(t,i,s):r=this.charToken(t,i,s)}break}return!r&&t===null&&(r=this.createToken(Tokens.EOF,null,i,s)),r},createToken:function(e,t,n,r,i){var s=this._reader;return i=i||{},{value:t,type:e,channel:i.channel,hide:i.hide||!1,startLine:n,startCol:r,endLine:s.getLine(),endCol:s.getCol()}},atRuleToken:function(e,t,n){var r=e,i=this._reader,s=Tokens.CHAR,o=!1,u,a;i.mark(),u=this.readName(),r=e+u,s=Tokens.type(r.toLowerCase());if(s==Tokens.CHAR||s==Tokens.UNKNOWN)r.length>1?s=Tokens.UNKNOWN_SYM:(s=Tokens.CHAR,r=e,i.reset());return this.createToken(s,r,t,n)},charToken:function(e,t,n){var r=Tokens.type(e);return r==-1&&(r=Tokens.CHAR),this.createToken(r,e,t,n)},commentToken:function(e,t,n){var r=this._reader,i=this.readComment(e);return this.createToken(Tokens.COMMENT,i,t,n)},comparisonToken:function(e,t,n){var r=this._reader,i=e+r.read(),s=Tokens.type(i)||Tokens.CHAR;return this.createToken(s,i,t,n)},hashToken:function(e,t,n){var r=this._reader,i=this.readName(e);return this.createToken(Tokens.HASH,i,t,n)},htmlCommentStartToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(3),i=="<!--"?this.createToken(Tokens.CDO,i,t,n):(r.reset(),this.charToken(e,t,n))},htmlCommentEndToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(2),i=="-->"?this.createToken(Tokens.CDC,i,t,n):(r.reset(),this.charToken(e,t,n))},identOrFunctionToken:function(e,t,n){var r=this._reader,i=this.readName(e),s=Tokens.IDENT;return r.peek()=="("?(i+=r.read(),i.toLowerCase()=="url("?(s=Tokens.URI,i=this.readURI(i),i.toLowerCase()=="url("&&(s=Tokens.FUNCTION)):s=Tokens.FUNCTION):r.peek()==":"&&i.toLowerCase()=="progid"&&(i+=r.readTo("("),s=Tokens.IE_FUNCTION),this.createToken(s,i,t,n)},importantToken:function(e,t,n){var r=this._reader,i=e,s=Tokens.CHAR,o,u;r.mark(),u=r.read();while(u){if(u=="/"){if(r.peek()!="*")break;o=this.readComment(u);if(o==="")break}else{if(!isWhitespace(u)){if(/i/i.test(u)){o=r.readCount(8),/mportant/i.test(o)&&(i+=u+o,s=Tokens.IMPORTANT_SYM);break}break}i+=u+this.readWhitespace()}u=r.read()}return s==Tokens.CHAR?(r.reset(),this.charToken(e,t,n)):this.createToken(s,i,t,n)},notToken:function(e,t,n){var r=this._reader,i=e;return r.mark(),i+=r.readCount(4),i.toLowerCase()==":not("?this.createToken(Tokens.NOT,i,t,n):(r.reset(),this.charToken(e,t,n))},numberToken:function(e,t,n){var r=this._reader,i=this.readNumber(e),s,o=Tokens.NUMBER,u=r.peek();return isIdentStart(u)?(s=this.readName(r.read()),i+=s,/^em$|^ex$|^px$|^gd$|^rem$|^vw$|^vh$|^vm$|^ch$|^cm$|^mm$|^in$|^pt$|^pc$/i.test(s)?o=Tokens.LENGTH:/^deg|^rad$|^grad$/i.test(s)?o=Tokens.ANGLE:/^ms$|^s$/i.test(s)?o=Tokens.TIME:/^hz$|^khz$/i.test(s)?o=Tokens.FREQ:/^dpi$|^dpcm$/i.test(s)?o=Tokens.RESOLUTION:o=Tokens.DIMENSION):u=="%"&&(i+=r.read(),o=Tokens.PERCENTAGE),this.createToken(o,i,t,n)},stringToken:function(e,t,n){var r=e,i=e,s=this._reader,o=e,u=Tokens.STRING,a=s.read();while(a){i+=a;if(a==r&&o!="\\")break;if(isNewLine(s.peek())&&a!="\\"){u=Tokens.INVALID;break}o=a,a=s.read()}return a===null&&(u=Tokens.INVALID),this.createToken(u,i,t,n)},unicodeRangeToken:function(e,t,n){var r=this._reader,i=e,s,o=Tokens.CHAR;return r.peek()=="+"&&(r.mark(),i+=r.read(),i+=this.readUnicodeRangePart(!0),i.length==2?r.reset():(o=Tokens.UNICODE_RANGE,i.indexOf("?")==-1&&r.peek()=="-"&&(r.mark(),s=r.read(),s+=this.readUnicodeRangePart(!1),s.length==1?r.reset():i+=s))),this.createToken(o,i,t,n)},whitespaceToken:function(e,t,n){var r=this._reader,i=e+this.readWhitespace();return this.createToken(Tokens.S,i,t,n)},readUnicodeRangePart:function(e){var t=this._reader,n="",r=t.peek();while(isHexDigit(r)&&n.length<6)t.read(),n+=r,r=t.peek();if(e)while(r=="?"&&n.length<6)t.read(),n+=r,r=t.peek();return n},readWhitespace:function(){var e=this._reader,t="",n=e.peek();while(isWhitespace(n))e.read(),t+=n,n=e.peek();return t},readNumber:function(e){var t=this._reader,n=e,r=e==".",i=t.peek();while(i){if(isDigit(i))n+=t.read();else{if(i!=".")break;if(r)break;r=!0,n+=t.read()}i=t.peek()}return n},readString:function(){var e=this._reader,t=e.read(),n=t,r=t,i=e.peek();while(i){i=e.read(),n+=i;if(i==t&&r!="\\")break;if(isNewLine(e.peek())&&i!="\\"){n="";break}r=i,i=e.peek()}return i===null&&(n=""),n},readURI:function(e){var t=this._reader,n=e,r="",i=t.peek();t.mark();while(i&&isWhitespace(i))t.read(),i=t.peek();i=="'"||i=='"'?r=this.readString():r=this.readURL(),i=t.peek();while(i&&isWhitespace(i))t.read(),i=t.peek();return r===""||i!=")"?(n=e,t.reset()):n+=r+t.read(),n},readURL:function(){var e=this._reader,t="",n=e.peek();while(/^[!#$%&\\*-~]$/.test(n))t+=e.read(),n=e.peek();return t},readName:function(e){var t=this._reader,n=e||"",r=t.peek();for(;;)if(r=="\\")n+=this.readEscape(t.read()),r=t.peek();else{if(!r||!isNameChar(r))break;n+=t.read(),r=t.peek()}return n},readEscape:function(e){var t=this._reader,n=e||"",r=0,i=t.peek();if(isHexDigit(i))do n+=t.read(),i=t.peek();while(i&&isHexDigit(i)&&++r<6);return n.length==3&&/\s/.test(i)||n.length==7||n.length==1?t.read():i="",n+i},readComment:function(e){var t=this._reader,n=e||"",r=t.read();if(r=="*"){while(r){n+=r;if(n.length>2&&r=="*"&&t.peek()=="/"){n+=t.read();break}r=t.read()}return n}return""}});var Tokens=[{name:"CDO"},{name:"CDC"},{name:"S",whitespace:!0},{name:"COMMENT",comment:!0,hide:!0,channel:"comment"},{name:"INCLUDES",text:"~="},{name:"DASHMATCH",text:"|="},{name:"PREFIXMATCH",text:"^="},{name:"SUFFIXMATCH",text:"$="},{name:"SUBSTRINGMATCH",text:"*="},{name:"STRING"},{name:"IDENT"},{name:"HASH"},{name:"IMPORT_SYM",text:"@import"},{name:"PAGE_SYM",text:"@page"},{name:"MEDIA_SYM",text:"@media"},{name:"FONT_FACE_SYM",text:"@font-face"},{name:"CHARSET_SYM",text:"@charset"},{name:"NAMESPACE_SYM",text:"@namespace"},{name:"VIEWPORT_SYM",text:"@viewport"},{name:"UNKNOWN_SYM"},{name:"KEYFRAMES_SYM",text:["@keyframes","@-webkit-keyframes","@-moz-keyframes","@-o-keyframes"]},{name:"IMPORTANT_SYM"},{name:"LENGTH"},{name:"ANGLE"},{name:"TIME"},{name:"FREQ"},{name:"DIMENSION"},{name:"PERCENTAGE"},{name:"NUMBER"},{name:"URI"},{name:"FUNCTION"},{name:"UNICODE_RANGE"},{name:"INVALID"},{name:"PLUS",text:"+"},{name:"GREATER",text:">"},{name:"COMMA",text:","},{name:"TILDE",text:"~"},{name:"NOT"},{name:"TOPLEFTCORNER_SYM",text:"@top-left-corner"},{name:"TOPLEFT_SYM",text:"@top-left"},{name:"TOPCENTER_SYM",text:"@top-center"},{name:"TOPRIGHT_SYM",text:"@top-right"},{name:"TOPRIGHTCORNER_SYM",text:"@top-right-corner"},{name:"BOTTOMLEFTCORNER_SYM",text:"@bottom-left-corner"},{name:"BOTTOMLEFT_SYM",text:"@bottom-left"},{name:"BOTTOMCENTER_SYM",text:"@bottom-center"},{name:"BOTTOMRIGHT_SYM",text:"@bottom-right"},{name:"BOTTOMRIGHTCORNER_SYM",text:"@bottom-right-corner"},{name:"LEFTTOP_SYM",text:"@left-top"},{name:"LEFTMIDDLE_SYM",text:"@left-middle"},{name:"LEFTBOTTOM_SYM",text:"@left-bottom"},{name:"RIGHTTOP_SYM",text:"@right-top"},{name:"RIGHTMIDDLE_SYM",text:"@right-middle"},{name:"RIGHTBOTTOM_SYM",text:"@right-bottom"},{name:"RESOLUTION",state:"media"},{name:"IE_FUNCTION"},{name:"CHAR"},{name:"PIPE",text:"|"},{name:"SLASH",text:"/"},{name:"MINUS",text:"-"},{name:"STAR",text:"*"},{name:"LBRACE",text:"{"},{name:"RBRACE",text:"}"},{name:"LBRACKET",text:"["},{name:"RBRACKET",text:"]"},{name:"EQUALS",text:"="},{name:"COLON",text:":"},{name:"SEMICOLON",text:";"},{name:"LPAREN",text:"("},{name:"RPAREN",text:")"},{name:"DOT",text:"."}];(function(){var e=[],t={};Tokens.UNKNOWN=-1,Tokens.unshift({name:"EOF"});for(var n=0,r=Tokens.length;n<r;n++){e.push(Tokens[n].name),Tokens[Tokens[n].name]=n;if(Tokens[n].text)if(Tokens[n].text instanceof Array)for(var i=0;i<Tokens[n].text.length;i++)t[Tokens[n].text[i]]=n;else t[Tokens[n].text]=n}Tokens.name=function(t){return e[t]},Tokens.type=function(e){return t[e]||-1}})();var Validation={validate:function(e,t){var n=e.toString().toLowerCase(),r=t.parts,i=new PropertyValueIterator(t),s=Properties[n],o,u,a,f,l,c,h,p,d,v,m;if(!s){if(n.indexOf("-")!==0)throw new ValidationError("Unknown property '"+e+"'.",e.line,e.col)}else typeof s!="number"&&(typeof s=="string"?s.indexOf("||")>-1?this.groupProperty(s,i):this.singleProperty(s,i,1):s.multi?this.multiProperty(s.multi,i,s.comma,s.max||Infinity):typeof s=="function"&&s(i))},singleProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u;while(t.hasNext()&&o<n){i=ValidationTypes.isAny(t,e);if(!i)break;o++}if(!i)throw t.hasNext()&&!t.isFirst()?(u=t.peek(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col);if(t.hasNext())throw u=t.next(),new ValidationError("Expected end of value but found '"+u+"'.",u.line,u.col)},multiProperty:function(e,t,n,r){var i=!1,s=t.value,o=0,u=!1,a;while(t.hasNext()&&!i&&o<r){if(!ValidationTypes.isAny(t,e))break;o++;if(!t.hasNext())i=!0;else if(n){if(t.peek()!=",")break;a=t.next()}}if(!i)throw t.hasNext()&&!t.isFirst()?(a=t.peek(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)):(a=t.previous(),n&&a==","?new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col):new ValidationError("Expected ("+e+") but found '"+s+"'.",s.line,s.col));if(t.hasNext())throw a=t.next(),new ValidationError("Expected end of value but found '"+a+"'.",a.line,a.col)},groupProperty:function(e,t,n){var r=!1,i=t.value,s=e.split("||").length,o={count:0},u=!1,a,f;while(t.hasNext()&&!r){a=ValidationTypes.isAnyOfGroup(t,e);if(!a)break;if(o[a])break;o[a]=1,o.count++,u=!0;if(o.count==s||!t.hasNext())r=!0}if(!r)throw u&&t.hasNext()?(f=t.peek(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)):new ValidationError("Expected ("+e+") but found '"+i+"'.",i.line,i.col);if(t.hasNext())throw f=t.next(),new ValidationError("Expected end of value but found '"+f+"'.",f.line,f.col)}};ValidationError.prototype=new Error;var ValidationTypes={isLiteral:function(e,t){var n=e.text.toString().toLowerCase(),r=t.split(" | "),i,s,o=!1;for(i=0,s=r.length;i<s&&!o;i++)n==r[i].toLowerCase()&&(o=!0);return o},isSimple:function(e){return!!this.simple[e]},isComplex:function(e){return!!this.complex[e]},isAny:function(e,t){var n=t.split(" | "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s&&e.hasNext();r++)s=this.isType(e,n[r]);return s},isAnyOfGroup:function(e,t){var n=t.split(" || "),r,i,s=!1;for(r=0,i=n.length;r<i&&!s;r++)s=this.isType(e,n[r]);return s?n[r-1]:!1},isType:function(e,t){var n=e.peek(),r=!1;return t.charAt(0)!="<"?(r=this.isLiteral(n,t),r&&e.next()):this.simple[t]?(r=this.simple[t](n),r&&e.next()):r=this.complex[t](e),r},simple:{"<absolute-size>":function(e){return ValidationTypes.isLiteral(e,"xx-small | x-small | small | medium | large | x-large | xx-large")},"<attachment>":function(e){return ValidationTypes.isLiteral(e,"scroll | fixed | local")},"<attr>":function(e){return e.type=="function"&&e.name=="attr"},"<bg-image>":function(e){return this["<image>"](e)||this["<gradient>"](e)||e=="none"},"<gradient>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?(?:repeating\-)?(?:radial\-|linear\-)?gradient/i.test(e)},"<box>":function(e){return ValidationTypes.isLiteral(e,"padding-box | border-box | content-box")},"<content>":function(e){return e.type=="function"&&e.name=="content"},"<relative-size>":function(e){return ValidationTypes.isLiteral(e,"smaller | larger")},"<ident>":function(e){return e.type=="identifier"},"<length>":function(e){return e.type=="function"&&/^(?:\-(?:ms|moz|o|webkit)\-)?calc/i.test(e)?!0:e.type=="length"||e.type=="number"||e.type=="integer"||e=="0"},"<color>":function(e){return e.type=="color"||e=="transparent"},"<number>":function(e){return e.type=="number"||this["<integer>"](e)},"<integer>":function(e){return e.type=="integer"},"<line>":function(e){return e.type=="integer"},"<angle>":function(e){return e.type=="angle"},"<uri>":function(e){return e.type=="uri"},"<image>":function(e){return this["<uri>"](e)},"<percentage>":function(e){return e.type=="percentage"||e=="0"},"<border-width>":function(e){return this["<length>"](e)||ValidationTypes.isLiteral(e,"thin | medium | thick")},"<border-style>":function(e){return ValidationTypes.isLiteral(e,"none | hidden | dotted | dashed | solid | double | groove | ridge | inset | outset")},"<margin-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)||ValidationTypes.isLiteral(e,"auto")},"<padding-width>":function(e){return this["<length>"](e)||this["<percentage>"](e)},"<shape>":function(e){return e.type=="function"&&(e.name=="rect"||e.name=="inset-rect")},"<time>":function(e){return e.type=="time"}},complex:{"<bg-position>":function(e){var t=this,n=!1,r="<percentage> | <length>",i="left | right",s="top | bottom",o=0,u=function(){return e.hasNext()&&e.peek()!=","};while(e.peek(o)&&e.peek(o)!=",")o++;return o<3?ValidationTypes.isAny(e,i+" | center | "+r)?(n=!0,ValidationTypes.isAny(e,s+" | center | "+r)):ValidationTypes.isAny(e,s)&&(n=!0,ValidationTypes.isAny(e,i+" | center")):ValidationTypes.isAny(e,i)?ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,s)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,s)?ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,r)&&(ValidationTypes.isAny(e,i)?(n=!0,ValidationTypes.isAny(e,r)):ValidationTypes.isAny(e,"center")&&(n=!0)):ValidationTypes.isAny(e,"center")&&ValidationTypes.isAny(e,i+" | "+s)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<bg-size>":function(e){var t=this,n=!1,r="<percentage> | <length> | auto",i,s,o;return ValidationTypes.isAny(e,"cover | contain")?n=!0:ValidationTypes.isAny(e,r)&&(n=!0,ValidationTypes.isAny(e,r)),n},"<repeat-style>":function(e){var t=!1,n="repeat | space | round | no-repeat",r;return e.hasNext()&&(r=e.next(),ValidationTypes.isLiteral(r,"repeat-x | repeat-y")?t=!0:ValidationTypes.isLiteral(r,n)&&(t=!0,e.hasNext()&&ValidationTypes.isLiteral(e.peek(),n)&&e.next())),t},"<shadow>":function(e){var t=!1,n=0,r=!1,i=!1,s;if(e.hasNext()){ValidationTypes.isAny(e,"inset")&&(r=!0),ValidationTypes.isAny(e,"<color>")&&(i=!0);while(ValidationTypes.isAny(e,"<length>")&&n<4)n++;e.hasNext()&&(i||ValidationTypes.isAny(e,"<color>"),r||ValidationTypes.isAny(e,"inset")),t=n>=2&&n<=4}return t},"<x-one-radius>":function(e){var t=!1,n="<length> | <percentage> | inherit";return ValidationTypes.isAny(e,n)&&(t=!0,ValidationTypes.isAny(e,n)),t}}};parserlib.css={Colors:Colors,Combinator:Combinator,Parser:Parser,PropertyName:PropertyName,PropertyValue:PropertyValue,PropertyValuePart:PropertyValuePart,MediaFeature:MediaFeature,MediaQuery:MediaQuery,Selector:Selector,SelectorPart:SelectorPart,SelectorSubPart:SelectorSubPart,Specificity:Specificity,TokenStream:TokenStream,Tokens:Tokens,ValidationError:ValidationError}}(),function(){for(var e in parserlib)exports[e]=parserlib[e]}();var CSSLint=function(){function e(e,t){var n,i=e&&e.match(r),s=i&&i[1];return s&&(n={"true":2,"":1,"false":0,2:2,1:1,0:0},s.toLowerCase().split(",").forEach(function(e){var r=e.split(":"),i=r[0]||"",s=r[1]||"";t[i.trim()]=n[s.trim()]})),t}var t=[],n=[],r=/\/\*csslint([^\*]*)\*\//,i=new parserlib.util.EventTarget;return i.version="0.10.0",i.addRule=function(e){t.push(e),t[e.id]=e},i.clearRules=function(){t=[]},i.getRules=function(){return[].concat(t).sort(function(e,t){return e.id>t.id?1:0})},i.getRuleset=function(){var e={},n=0,r=t.length;while(n<r)e[t[n++].id]=1;return e},i.addFormatter=function(e){n[e.id]=e},i.getFormatter=function(e){return n[e]},i.format=function(e,t,n,r){var i=this.getFormatter(n),s=null;return i&&(s=i.startFormat(),s+=i.formatResults(e,t,r||{}),s+=i.endFormat()),s},i.hasFormat=function(e){return n.hasOwnProperty(e)},i.verify=function(n,i){var s=0,o=t.length,u,a,f,l=new parserlib.css.Parser({starHack:!0,ieFilters:!0,underscoreHack:!0,strict:!1});a=n.replace(/\n\r?/g,"$split$").split("$split$"),i||(i=this.getRuleset()),r.test(n)&&(i=e(n,i)),u=new Reporter(a,i),i.errors=2;for(s in i)i.hasOwnProperty(s)&&i[s]&&t[s]&&t[s].init(l,u);try{l.parse(n)}catch(c){u.error("Fatal error, cannot continue: "+c.message,c.line,c.col,{})}return f={messages:u.messages,stats:u.stats,ruleset:u.ruleset},f.messages.sort(function(e,t){return e.rollup&&!t.rollup?1:!e.rollup&&t.rollup?-1:e.line-t.line}),f},i}();Reporter.prototype={constructor:Reporter,error:function(e,t,n,r){this.messages.push({type:"error",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r||{}})},warn:function(e,t,n,r){this.report(e,t,n,r)},report:function(e,t,n,r){this.messages.push({type:this.ruleset[r.id]==2?"error":"warning",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},info:function(e,t,n,r){this.messages.push({type:"info",line:t,col:n,message:e,evidence:this.lines[t-1],rule:r})},rollupError:function(e,t){this.messages.push({type:"error",rollup:!0,message:e,rule:t})},rollupWarn:function(e,t){this.messages.push({type:"warning",rollup:!0,message:e,rule:t})},stat:function(e,t){this.stats[e]=t}},CSSLint._Reporter=Reporter,CSSLint.Util={mix:function(e,t){var n;for(n in t)t.hasOwnProperty(n)&&(e[n]=t[n]);return n},indexOf:function(e,t){if(e.indexOf)return e.indexOf(t);for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},forEach:function(e,t){if(e.forEach)return e.forEach(t);for(var n=0,r=e.length;n<r;n++)t(e[n],n,e)}},CSSLint.addRule({id:"adjoining-classes",name:"Disallow adjoining classes",desc:"Don't use adjoining classes.",browsers:"IE6",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f];for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type==e.SELECTOR_PART_TYPE){a=0;for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type=="class"&&a++,a>1&&t.report("Don't use adjoining classes.",o.line,o.col,n)}}}})}}),CSSLint.addRule({id:"box-model",name:"Beware of broken box size",desc:"Don't use width or height when using padding or border.",browsers:"All",init:function(e,t){function n(){u={},a=!1}function r(){var e,n;if(!a){if(u.height)for(e in o)o.hasOwnProperty(e)&&u[e]&&(n=u[e].value,(e!="padding"||n.parts.length!==2||n.parts[0].value!==0)&&t.report("Using height with "+e+" can sometimes make elements larger than you expect.",u[e].line,u[e].col,i));if(u.width)for(e in s)s.hasOwnProperty(e)&&u[e]&&(n=u[e].value,(e!="padding"||n.parts.length!==2||n.parts[1].value!==0)&&t.report("Using width with "+e+" can sometimes make elements larger than you expect.",u[e].line,u[e].col,i))}}var i=this,s={border:1,"border-left":1,"border-right":1,padding:1,"padding-left":1,"padding-right":1},o={border:1,"border-bottom":1,"border-top":1,padding:1,"padding-bottom":1,"padding-top":1},u,a=!1;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var t=e.property.text.toLowerCase();o[t]||s[t]?!/^0\S*$/.test(e.value)&&(t!="border"||e.value!="none")&&(u[t]={line:e.property.line,col:e.property.col,value:e.value}):/^(width|height)/i.test(t)&&/^(length|percentage)/.test(e.value.parts[0].type)?u[t]=1:t=="box-sizing"&&(a=!0)}),e.addListener("endrule",r),e.addListener("endfontface",r),e.addListener("endpage",r),e.addListener("endpagemargin",r),e.addListener("endkeyframerule",r)}}),CSSLint.addRule({id:"box-sizing",name:"Disallow use of box-sizing",desc:"The box-sizing properties isn't supported in IE6 and IE7.",browsers:"IE6, IE7",tags:["Compatibility"],init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property.text.toLowerCase();r=="box-sizing"&&t.report("The box-sizing property isn't supported in IE6 and IE7.",e.line,e.col,n)})}}),CSSLint.addRule({id:"bulletproof-font-face",name:"Use the bulletproof @font-face syntax",desc:"Use the bulletproof @font-face syntax to avoid 404's in old IE (http://www.fontspring.com/blog/the-new-bulletproof-font-face-syntax).",browsers:"All",init:function(e,t){var n=this,r=0,i=!1,s=!0,o=!1,u,a;e.addListener("startfontface",function(e){i=!0}),e.addListener("property",function(e){if(!i)return;var t=e.property.toString().toLowerCase(),n=e.value.toString();u=e.line,a=e.col;if(t==="src"){var r=/^\s?url\(['"].+\.eot\?.*['"]\)\s*format\(['"]embedded-opentype['"]\).*$/i;!n.match(r)&&s?(o=!0,s=!1):n.match(r)&&!s&&(o=!1)}}),e.addListener("endfontface",function(e){i=!1,o&&t.report("@font-face declaration doesn't follow the fontspring bulletproof syntax.",u,a,n)})}}),CSSLint.addRule({id:"compatible-vendor-prefixes",name:"Require compatible vendor prefixes",desc:"Include all compatible vendor prefixes to reach a wider range of users.",browsers:"All",init:function(e,t){var n=this,r,i,s,o,u,a,f,l=!1,c=Array.prototype.push,h=[];r={animation:"webkit moz","animation-delay":"webkit moz","animation-direction":"webkit moz","animation-duration":"webkit moz","animation-fill-mode":"webkit moz","animation-iteration-count":"webkit moz","animation-name":"webkit moz","animation-play-state":"webkit moz","animation-timing-function":"webkit moz",appearance:"webkit moz","border-end":"webkit moz","border-end-color":"webkit moz","border-end-style":"webkit moz","border-end-width":"webkit moz","border-image":"webkit moz o","border-radius":"webkit","border-start":"webkit moz","border-start-color":"webkit moz","border-start-style":"webkit moz","border-start-width":"webkit moz","box-align":"webkit moz ms","box-direction":"webkit moz ms","box-flex":"webkit moz ms","box-lines":"webkit ms","box-ordinal-group":"webkit moz ms","box-orient":"webkit moz ms","box-pack":"webkit moz ms","box-sizing":"webkit moz","box-shadow":"webkit moz","column-count":"webkit moz ms","column-gap":"webkit moz ms","column-rule":"webkit moz ms","column-rule-color":"webkit moz ms","column-rule-style":"webkit moz ms","column-rule-width":"webkit moz ms","column-width":"webkit moz ms",hyphens:"epub moz","line-break":"webkit ms","margin-end":"webkit moz","margin-start":"webkit moz","marquee-speed":"webkit wap","marquee-style":"webkit wap","padding-end":"webkit moz","padding-start":"webkit moz","tab-size":"moz o","text-size-adjust":"webkit ms",transform:"webkit moz ms o","transform-origin":"webkit moz ms o",transition:"webkit moz o","transition-delay":"webkit moz o","transition-duration":"webkit moz o","transition-property":"webkit moz o","transition-timing-function":"webkit moz o","user-modify":"webkit moz","user-select":"webkit moz ms","word-break":"epub ms","writing-mode":"epub ms"};for(s in r)if(r.hasOwnProperty(s)){o=[],u=r[s].split(" ");for(a=0,f=u.length;a<f;a++)o.push("-"+u[a]+"-"+s);r[s]=o,c.apply(h,o)}e.addListener("startrule",function(){i=[]}),e.addListener("startkeyframes",function(e){l=e.prefix||!0}),e.addListener("endkeyframes",function(e){l=!1}),e.addListener("property",function(e){var t=e.property;CSSLint.Util.indexOf(h,t.text)>-1&&(!l||typeof l!="string"||t.text.indexOf("-"+l+"-")!==0)&&i.push(t)}),e.addListener("endrule",function(e){if(!i.length)return;var s={},o,u,a,f,l,c,h,p,d,v;for(o=0,u=i.length;o<u;o++){a=i[o];for(f in r)r.hasOwnProperty(f)&&(l=r[f],CSSLint.Util.indexOf(l,a.text)>-1&&(s[f]||(s[f]={full:l.slice(0),actual:[],actualNodes:[]}),CSSLint.Util.indexOf(s[f].actual,a.text)===-1&&(s[f].actual.push(a.text),s[f].actualNodes.push(a))))}for(f in s)if(s.hasOwnProperty(f)){c=s[f],h=c.full,p=c.actual;if(h.length>p.length)for(o=0,u=h.length;o<u;o++)d=h[o],CSSLint.Util.indexOf(p,d)===-1&&(v=p.length===1?p[0]:p.length==2?p.join(" and "):p.join(", "),t.report("The property "+d+" is compatible with "+v+" and should be included as well.",c.actualNodes[0].line,c.actualNodes[0].col,n))}})}}),CSSLint.addRule({id:"display-property-grouping",name:"Require properties appropriate for display",desc:"Certain properties shouldn't be used with certain display property values.",browsers:"All",init:function(e,t){function n(e,n,r){u[e]&&(typeof o[e]!="string"||u[e].value.toLowerCase()!=o[e])&&t.report(r||e+" can't be used with display: "+n+".",u[e].line,u[e].col,s)}function r(){u={}}function i(){var e=u.display?u.display.value:null;if(e)switch(e){case"inline":n("height",e),n("width",e),n("margin",e),n("margin-top",e),n("margin-bottom",e),n("float",e,"display:inline has no effect on floated elements (but may be used to fix the IE6 double-margin bug).");break;case"block":n("vertical-align",e);break;case"inline-block":n("float",e);break;default:e.indexOf("table-")===0&&(n("margin",e),n("margin-left",e),n("margin-right",e),n("margin-top",e),n("margin-bottom",e),n("float",e))}}var s=this,o={display:1,"float":"none",height:1,width:1,margin:1,"margin-left":1,"margin-right":1,"margin-bottom":1,"margin-top":1,padding:1,"padding-left":1,"padding-right":1,"padding-bottom":1,"padding-top":1,"vertical-align":1},u;e.addListener("startrule",r),e.addListener("startfontface",r),e.addListener("startkeyframerule",r),e.addListener("startpagemargin",r),e.addListener("startpage",r),e.addListener("property",function(e){var t=e.property.text.toLowerCase();o[t]&&(u[t]={value:e.value.text,line:e.property.line,col:e.property.col})}),e.addListener("endrule",i),e.addListener("endfontface",i),e.addListener("endkeyframerule",i),e.addListener("endpagemargin",i),e.addListener("endpage",i)}}),CSSLint.addRule({id:"duplicate-background-images",name:"Disallow duplicate background images",desc:"Every background-image should be unique. Use a common class for e.g. sprites.",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("property",function(e){var i=e.property.text,s=e.value,o,u;if(i.match(/background/i))for(o=0,u=s.parts.length;o<u;o++)s.parts[o].type=="uri"&&(typeof r[s.parts[o].uri]=="undefined"?r[s.parts[o].uri]=e:t.report("Background image '"+s.parts[o].uri+"' was used multiple times, first declared at line "+r[s.parts[o].uri].line+", col "+r[s.parts[o].uri].col+".",e.line,e.col,n))})}}),CSSLint.addRule({id:"duplicate-properties",name:"Disallow duplicate properties",desc:"Duplicate properties must appear one after the other.",browsers:"All",init:function(e,t){function n(e){i={}}var r=this,i,s;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var n=e.property,o=n.text.toLowerCase();i[o]&&(s!=o||i[o]==e.value.text)&&t.report("Duplicate property '"+e.property+"' found.",e.line,e.col,r),i[o]=e.value.text,s=o})}}),CSSLint.addRule({id:"empty-rules",name:"Disallow empty rules",desc:"Rules without any properties specified should be removed.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(){r=0}),e.addListener("property",function(){r++}),e.addListener("endrule",function(e){var i=e.selectors;r===0&&t.report("Rule is empty.",i[0].line,i[0].col,n)})}}),CSSLint.addRule({id:"errors",name:"Parsing Errors",desc:"This rule looks for recoverable syntax errors.",browsers:"All",init:function(e,t){var n=this;e.addListener("error",function(e){t.error(e.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"fallback-colors",name:"Require fallback colors",desc:"For older browsers that don't support RGBA, HSL, or HSLA, provide a fallback color.",browsers:"IE6,IE7,IE8",init:function(e,t){function n(e){o={},i=null}var r=this,i,s={color:1,background:1,"border-color":1,"border-top-color":1,"border-right-color":1,"border-bottom-color":1,"border-left-color":1,border:1,"border-top":1,"border-right":1,"border-bottom":1,"border-left":1,"background-color":1},o;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var n=e.property,o=n.text.toLowerCase(),u=e.value.parts,a=0,f="",l=u.length;if(s[o])while(a<l)u[a].type=="color"&&("alpha"in u[a]||"hue"in u[a]?(/([^\)]+)\(/.test(u[a])&&(f=RegExp.$1.toUpperCase()),(!i||i.property.text.toLowerCase()!=o||i.colorType!="compat")&&t.report("Fallback "+o+" (hex or RGB) should precede "+f+" "+o+".",e.line,e.col,r)):e.colorType="compat"),a++;i=e})}}),CSSLint.addRule({id:"floats",name:"Disallow too many floats",desc:"This rule tests if the float property is used too many times",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property.text.toLowerCase()=="float"&&e.value.text.toLowerCase()!="none"&&r++}),e.addListener("endstylesheet",function(){t.stat("floats",r),r>=10&&t.rollupWarn("Too many floats ("+r+"), you're probably using them for layout. Consider using a grid system instead.",n)})}}),CSSLint.addRule({id:"font-faces",name:"Don't use too many web fonts",desc:"Too many different web fonts in the same stylesheet.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startfontface",function(){r++}),e.addListener("endstylesheet",function(){r>5&&t.rollupWarn("Too many @font-face declarations ("+r+").",n)})}}),CSSLint.addRule({id:"font-sizes",name:"Disallow too many font sizes",desc:"Checks the number of font-size declarations.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.property=="font-size"&&r++}),e.addListener("endstylesheet",function(){t.stat("font-sizes",r),r>=10&&t.rollupWarn("Too many font-size declarations ("+r+"), abstraction needed.",n)})}}),CSSLint.addRule({id:"gradients",name:"Require all gradient definitions",desc:"When using a vendor-prefixed gradient, make sure to use them all.",browsers:"All",init:function(e,t){var n=this,r;e.addListener("startrule",function(){r={moz:0,webkit:0,oldWebkit:0,o:0}}),e.addListener("property",function(e){/\-(moz|o|webkit)(?:\-(?:linear|radial))\-gradient/i.test(e.value)?r[RegExp.$1]=1:/\-webkit\-gradient/i.test(e.value)&&(r.oldWebkit=1)}),e.addListener("endrule",function(e){var i=[];r.moz||i.push("Firefox 3.6+"),r.webkit||i.push("Webkit (Safari 5+, Chrome)"),r.oldWebkit||i.push("Old Webkit (Safari 4+, Chrome)"),r.o||i.push("Opera 11.1+"),i.length&&i.length<4&&t.report("Missing vendor-prefixed CSS gradients for "+i.join(", ")+".",e.selectors[0].line,e.selectors[0].col,n)})}}),CSSLint.addRule({id:"ids",name:"Disallow IDs in selectors",desc:"Selectors should not contain IDs.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l,c;for(f=0;f<i.length;f++){s=i[f],a=0;for(l=0;l<s.parts.length;l++){o=s.parts[l];if(o.type==e.SELECTOR_PART_TYPE)for(c=0;c<o.modifiers.length;c++)u=o.modifiers[c],u.type=="id"&&a++}a==1?t.report("Don't use IDs in selectors.",s.line,s.col,n):a>1&&t.report(a+" IDs in the selector, really?",s.line,s.col,n)}})}}),CSSLint.addRule({id:"import",name:"Disallow @import",desc:"Don't use @import, use <link> instead.",browsers:"All",init:function(e,t){var n=this;e.addListener("import",function(e){t.report("@import prevents parallel downloads, use <link> instead.",e.line,e.col,n)})}}),CSSLint.addRule({id:"important",name:"Disallow !important",desc:"Be careful when using !important declaration",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("property",function(e){e.important===!0&&(r++,t.report("Use of !important",e.line,e.col,n))}),e.addListener("endstylesheet",function(){t.stat("important",r),r>=10&&t.rollupWarn("Too many !important declarations ("+r+"), try to use less than 10 to avoid specificity issues.",n)})}}),CSSLint.addRule({id:"known-properties",name:"Require use of known properties",desc:"Properties should be known (listed in CSS3 specification) or be a vendor-prefixed property.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property.text.toLowerCase();e.invalid&&t.report(e.invalid.message,e.line,e.col,n)})}}),CSSLint.addRule({id:"outline-none",name:"Disallow outline: none",desc:"Use of outline: none or outline: 0 should be limited to :focus rules.",browsers:"All",tags:["Accessibility"],init:function(e,t){function n(e){e.selectors?s={line:e.line,col:e.col,selectors:e.selectors,propCount:0,outline:!1}:s=null}function r(e){s&&s.outline&&(s.selectors.toString().toLowerCase().indexOf(":focus")==-1?t.report("Outlines should only be modified using :focus.",s.line,s.col,i):s.propCount==1&&t.report("Outlines shouldn't be hidden unless other visual changes are made.",s.line,s.col,i))}var i=this,s;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var t=e.property.text.toLowerCase(),n=e.value;s&&(s.propCount++,t=="outline"&&(n=="none"||n=="0")&&(s.outline=!0))}),e.addListener("endrule",r),e.addListener("endfontface",r),e.addListener("endpage",r),e.addListener("endpagemargin",r),e.addListener("endkeyframerule",r)}}),CSSLint.addRule({id:"overqualified-elements",name:"Disallow overqualified elements",desc:"Don't use classes or IDs with elements (a.foo or a#foo).",browsers:"All",init:function(e,t){var n=this,r={};e.addListener("startrule",function(i){var s=i.selectors,o,u,a,f,l,c;for(f=0;f<s.length;f++){o=s[f];for(l=0;l<o.parts.length;l++){u=o.parts[l];if(u.type==e.SELECTOR_PART_TYPE)for(c=0;c<u.modifiers.length;c++)a=u.modifiers[c],u.elementName&&a.type=="id"?t.report("Element ("+u+") is overqualified, just use "+a+" without element name.",u.line,u.col,n):a.type=="class"&&(r[a]||(r[a]=[]),r[a].push({modifier:a,part:u}))}}}),e.addListener("endstylesheet",function(){var e;for(e in r)r.hasOwnProperty(e)&&r[e].length==1&&r[e][0].part.elementName&&t.report("Element ("+r[e][0].part+") is overqualified, just use "+r[e][0].modifier+" without element name.",r[e][0].part.line,r[e][0].part.col,n)})}}),CSSLint.addRule({id:"qualified-headings",name:"Disallow qualified headings",desc:"Headings should not be qualified (namespaced).",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a;for(u=0;u<i.length;u++){s=i[u];for(a=0;a<s.parts.length;a++)o=s.parts[a],o.type==e.SELECTOR_PART_TYPE&&o.elementName&&/h[1-6]/.test(o.elementName.toString())&&a>0&&t.report("Heading ("+o.elementName+") should not be qualified.",o.line,o.col,n)}})}}),CSSLint.addRule({id:"regex-selectors",name:"Disallow selectors that look like regexs",desc:"Selectors that look like regular expressions are slow and should be avoided.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a];for(f=0;f<s.parts.length;f++){o=s.parts[f];if(o.type==e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type=="attribute"&&/([\~\|\^\$\*]=)/.test(u)&&t.report("Attribute selectors with "+RegExp.$1+" are slow!",u.line,u.col,n)}}})}}),CSSLint.addRule({id:"rules-count",name:"Rules Count",desc:"Track how many rules there are.",browsers:"All",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(){r++}),e.addListener("endstylesheet",function(){t.stat("rule-count",r)})}}),CSSLint.addRule({id:"selector-max-approaching",name:"Warn when approaching the 4095 selector limit for IE",desc:"Will warn when selector count is >= 3800 selectors.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>=3800&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"selector-max",name:"Error when past the 4095 selector limit for IE",desc:"Will error when selector count is > 4095.",browsers:"IE",init:function(e,t){var n=this,r=0;e.addListener("startrule",function(e){r+=e.selectors.length}),e.addListener("endstylesheet",function(){r>4095&&t.report("You have "+r+" selectors. Internet Explorer supports a maximum of 4095 selectors per stylesheet. Consider refactoring.",0,0,n)})}}),CSSLint.addRule({id:"shorthand",name:"Require shorthand properties",desc:"Use shorthand properties where possible.",browsers:"All",init:function(e,t){function n(e){f={}}function r(e){var n,r,s,o;for(n in l)if(l.hasOwnProperty(n)){o=0;for(r=0,s=l[n].length;r<s;r++)o+=f[l[n][r]]?1:0;o==l[n].length&&t.report("The properties "+l[n].join(", ")+" can be replaced by "+n+".",e.line,e.col,i)}}var i=this,s,o,u,a={},f,l={margin:["margin-top","margin-bottom","margin-left","margin-right"],padding:["padding-top","padding-bottom","padding-left","padding-right"]};for(s in l)if(l.hasOwnProperty(s))for(o=0,u=l[s].length;o<u;o++)a[l[s][o]]=s;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("property",function(e){var t=e.property.toString().toLowerCase(),n=e.value.parts[0].value;a[t]&&(f[t]=1)}),e.addListener("endrule",r),e.addListener("endfontface",r)}}),CSSLint.addRule({id:"star-property-hack",name:"Disallow properties with a star prefix",desc:"Checks for the star property hack (targets IE6/7)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack=="*"&&t.report("Property with star prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"text-indent",name:"Disallow negative text-indent",desc:"Checks for text indent less than -99px",browsers:"All",init:function(e,t){function n(e){s=!1,o="inherit"}function r(e){s&&o!="ltr"&&t.report("Negative text-indent doesn't work well with RTL. If you use text-indent for image replacement explicitly set direction for that item to ltr.",s.line,s.col,i)}var i=this,s,o;e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("property",function(e){var t=e.property.toString().toLowerCase(),n=e.value;t=="text-indent"&&n.parts[0].value<-99?s=e.property:t=="direction"&&n=="ltr"&&(o="ltr")}),e.addListener("endrule",r),e.addListener("endfontface",r)}}),CSSLint.addRule({id:"underscore-property-hack",name:"Disallow properties with an underscore prefix",desc:"Checks for the underscore property hack (targets IE6)",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.property;r.hack=="_"&&t.report("Property with underscore prefix found.",e.property.line,e.property.col,n)})}}),CSSLint.addRule({id:"unique-headings",name:"Headings should only be defined once",desc:"Headings should be defined only once.",browsers:"All",init:function(e,t){var n=this,r={h1:0,h2:0,h3:0,h4:0,h5:0,h6:0};e.addListener("startrule",function(e){var i=e.selectors,s,o,u,a,f;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.elementName&&/(h[1-6])/i.test(o.elementName.toString())){for(f=0;f<o.modifiers.length;f++)if(o.modifiers[f].type=="pseudo"){u=!0;break}u||(r[RegExp.$1]++,r[RegExp.$1]>1&&t.report("Heading ("+o.elementName+") has already been defined.",o.line,o.col,n))}}}),e.addListener("endstylesheet",function(e){var i,s=[];for(i in r)r.hasOwnProperty(i)&&r[i]>1&&s.push(r[i]+" "+i+"s");s.length&&t.rollupWarn("You have "+s.join(", ")+" defined in this stylesheet.",n)})}}),CSSLint.addRule({id:"universal-selector",name:"Disallow universal selector",desc:"The universal selector (*) is known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(e){var r=e.selectors,i,s,o,u,a,f;for(u=0;u<r.length;u++)i=r[u],s=i.parts[i.parts.length-1],s.elementName=="*"&&t.report(n.desc,s.line,s.col,n)})}}),CSSLint.addRule({id:"unqualified-attributes",name:"Disallow unqualified attribute selectors",desc:"Unqualified attribute selectors are known to be slow.",browsers:"All",init:function(e,t){var n=this;e.addListener("startrule",function(r){var i=r.selectors,s,o,u,a,f,l;for(a=0;a<i.length;a++){s=i[a],o=s.parts[s.parts.length-1];if(o.type==e.SELECTOR_PART_TYPE)for(l=0;l<o.modifiers.length;l++)u=o.modifiers[l],u.type=="attribute"&&(!o.elementName||o.elementName=="*")&&t.report(n.desc,o.line,o.col,n)}})}}),CSSLint.addRule({id:"vendor-prefix",name:"Require standard property with vendor prefix",desc:"When using a vendor-prefixed property, make sure to include the standard one.",browsers:"All",init:function(e,t){function n(){s={},o=1}function r(e){var n,r,o,a,f,l,c=[];for(n in s)u[n]&&c.push({actual:n,needed:u[n]});for(r=0,o=c.length;r<o;r++)f=c[r].needed,l=c[r].actual,s[f]?s[f][0].pos<s[l][0].pos&&t.report("Standard property '"+f+"' should come after vendor-prefixed property '"+l+"'.",s[l][0].name.line,s[l][0].name.col,i):t.report("Missing standard property '"+f+"' to go along with '"+l+"'.",s[l][0].name.line,s[l][0].name.col,i)}var i=this,s,o,u={"-webkit-border-radius":"border-radius","-webkit-border-top-left-radius":"border-top-left-radius","-webkit-border-top-right-radius":"border-top-right-radius","-webkit-border-bottom-left-radius":"border-bottom-left-radius","-webkit-border-bottom-right-radius":"border-bottom-right-radius","-o-border-radius":"border-radius","-o-border-top-left-radius":"border-top-left-radius","-o-border-top-right-radius":"border-top-right-radius","-o-border-bottom-left-radius":"border-bottom-left-radius","-o-border-bottom-right-radius":"border-bottom-right-radius","-moz-border-radius":"border-radius","-moz-border-radius-topleft":"border-top-left-radius","-moz-border-radius-topright":"border-top-right-radius","-moz-border-radius-bottomleft":"border-bottom-left-radius","-moz-border-radius-bottomright":"border-bottom-right-radius","-moz-column-count":"column-count","-webkit-column-count":"column-count","-moz-column-gap":"column-gap","-webkit-column-gap":"column-gap","-moz-column-rule":"column-rule","-webkit-column-rule":"column-rule","-moz-column-rule-style":"column-rule-style","-webkit-column-rule-style":"column-rule-style","-moz-column-rule-color":"column-rule-color","-webkit-column-rule-color":"column-rule-color","-moz-column-rule-width":"column-rule-width","-webkit-column-rule-width":"column-rule-width","-moz-column-width":"column-width","-webkit-column-width":"column-width","-webkit-column-span":"column-span","-webkit-columns":"columns","-moz-box-shadow":"box-shadow","-webkit-box-shadow":"box-shadow","-moz-transform":"transform","-webkit-transform":"transform","-o-transform":"transform","-ms-transform":"transform","-moz-transform-origin":"transform-origin","-webkit-transform-origin":"transform-origin","-o-transform-origin":"transform-origin","-ms-transform-origin":"transform-origin","-moz-box-sizing":"box-sizing","-webkit-box-sizing":"box-sizing","-moz-user-select":"user-select","-khtml-user-select":"user-select","-webkit-user-select":"user-select"};e.addListener("startrule",n),e.addListener("startfontface",n),e.addListener("startpage",n),e.addListener("startpagemargin",n),e.addListener("startkeyframerule",n),e.addListener("property",function(e){var t=e.property.text.toLowerCase();s[t]||(s[t]=[]),s[t].push({name:e.property,value:e.value,pos:o++})}),e.addListener("endrule",r),e.addListener("endfontface",r),e.addListener("endpage",r),e.addListener("endpagemargin",r),e.addListener("endkeyframerule",r)}}),CSSLint.addRule({id:"zero-units",name:"Disallow units for 0 values",desc:"You don't need to specify units when a value is 0.",browsers:"All",init:function(e,t){var n=this;e.addListener("property",function(e){var r=e.value.parts,i=0,s=r.length;while(i<s)(r[i].units||r[i].type=="percentage")&&r[i].value===0&&r[i].type!="time"&&t.report("Values of 0 shouldn't have units specified.",r[i].line,r[i].col,n),i++})}}),function(){var e=function(e){return!e||e.constructor!==String?"":e.replace(/[\"&><]/g,function(e){switch(e){case'"':return""";case"&":return"&";case"<":return"<";case">":return">"}})};CSSLint.addFormatter({id:"checkstyle-xml",name:"Checkstyle XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><checkstyle>'},endFormat:function(){return"</checkstyle>"},readError:function(t,n){return'<file name="'+e(t)+'"><error line="0" column="0" severty="error" message="'+e(n)+'"></error></file>'},formatResults:function(t,n,r){var i=t.messages,s=[],o=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""};return i.length>0&&(s.push('<file name="'+n+'">'),CSSLint.Util.forEach(i,function(t,n){t.rollup||s.push('<error line="'+t.line+'" column="'+t.col+'" severity="'+t.type+'"'+' message="'+e(t.message)+'" source="'+o(t.rule)+'"/>')}),s.push("</file>")),s.join("")}})}(),CSSLint.addFormatter({id:"compact",name:"Compact, 'porcelain' format",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};var s=function(e){return e.charAt(0).toUpperCase()+e.slice(1)};return r.length===0?n.quiet?"":t+": Lint Free!":(CSSLint.Util.forEach(r,function(e,n){e.rollup?i+=t+": "+s(e.type)+" - "+e.message+"\n":i+=t+": "+"line "+e.line+", col "+e.col+", "+s(e.type)+" - "+e.message+"\n"}),i)}}),CSSLint.addFormatter({id:"csslint-xml",name:"CSSLint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><csslint>'},endFormat:function(){return"</csslint>"},formatResults:function(e,t,n){var r=e.messages,i=[],s=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")};return r.length>0&&(i.push('<file name="'+t+'">'),CSSLint.Util.forEach(r,function(e,t){e.rollup?i.push('<issue severity="'+e.type+'" reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>'):i.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>')}),i.push("</file>")),i.join("")}}),CSSLint.addFormatter({id:"junit-xml",name:"JUNIT XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><testsuites>'},endFormat:function(){return"</testsuites>"},formatResults:function(e,t,n){var r=e.messages,i=[],s={error:0,failure:0},o=function(e){return!!e&&"name"in e?"net.csslint."+e.name.replace(/\s/g,""):""},u=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/</g,"<").replace(/>/g,">")};return r.length>0&&(r.forEach(function(e,t){var n=e.type==="warning"?"error":e.type;e.rollup||(i.push('<testcase time="0" name="'+o(e.rule)+'">'),i.push("<"+n+' message="'+u(e.message)+'"><![CDATA['+e.line+":"+e.col+":"+u(e.evidence)+"]]></"+n+">"),i.push("</testcase>"),s[n]+=1)}),i.unshift('<testsuite time="0" tests="'+r.length+'" skipped="0" errors="'+s.error+'" failures="'+s.failure+'" package="net.csslint" name="'+t+'">'),i.push("</testsuite>")),i.join("")}}),CSSLint.addFormatter({id:"lint-xml",name:"Lint XML format",startFormat:function(){return'<?xml version="1.0" encoding="utf-8"?><lint>'},endFormat:function(){return"</lint>"},formatResults:function(e,t,n){var r=e.messages,i=[],s=function(e){return!e||e.constructor!==String?"":e.replace(/\"/g,"'").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")};return r.length>0&&(i.push('<file name="'+t+'">'),CSSLint.Util.forEach(r,function(e,t){e.rollup?i.push('<issue severity="'+e.type+'" reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>'):i.push('<issue line="'+e.line+'" char="'+e.col+'" severity="'+e.type+'"'+' reason="'+s(e.message)+'" evidence="'+s(e.evidence)+'"/>')}),i.push("</file>")),i.join("")}}),CSSLint.addFormatter({id:"text",name:"Plain Text",startFormat:function(){return""},endFormat:function(){return""},formatResults:function(e,t,n){var r=e.messages,i="";n=n||{};if(r.length===0)return n.quiet?"":"\n\ncsslint: No errors in "+t+".";i="\n\ncsslint: There are "+r.length+" problems in "+t+".";var s=t.lastIndexOf("/"),o=t;return s===-1&&(s=t.lastIndexOf("\\")),s>-1&&(o=t.substring(s+1)),CSSLint.Util.forEach(r,function(e,t){i=i+"\n\n"+o,e.rollup?(i+="\n"+(t+1)+": "+e.type,i+="\n"+e.message):(i+="\n"+(t+1)+": "+e.type+" at line "+e.line+", col "+e.col,i+="\n"+e.message,i+="\n"+e.evidence)}),i}}),exports.CSSLint=CSSLint})
|
|
assets/theme-mode/demo-functions.php
CHANGED
@@ -54,6 +54,11 @@
|
|
54 |
*/
|
55 |
# add_filter( 'ot_allow_unfiltered_html', '__return_false' );
|
56 |
|
|
|
|
|
|
|
|
|
|
|
57 |
/**
|
58 |
* OptionTree in Theme Mode
|
59 |
*/
|
54 |
*/
|
55 |
# add_filter( 'ot_allow_unfiltered_html', '__return_false' );
|
56 |
|
57 |
+
/**
|
58 |
+
* Loads the meta boxes for post formats
|
59 |
+
*/
|
60 |
+
# add_filter( 'ot_post_formats', '__return_true' );
|
61 |
+
|
62 |
/**
|
63 |
* OptionTree in Theme Mode
|
64 |
*/
|
assets/theme-mode/demo-theme-options.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* Initialize the custom Theme Options.
|
4 |
*/
|
5 |
-
add_action( '
|
6 |
|
7 |
/**
|
8 |
* Build the custom settings & update OptionTree.
|
@@ -11,7 +11,11 @@ add_action( 'admin_init', 'custom_theme_options' );
|
|
11 |
* @since 2.0
|
12 |
*/
|
13 |
function custom_theme_options() {
|
14 |
-
|
|
|
|
|
|
|
|
|
15 |
/**
|
16 |
* Get a copy of the saved settings array.
|
17 |
*/
|
@@ -54,6 +58,36 @@ function custom_theme_options() {
|
|
54 |
'condition' => '',
|
55 |
'operator' => 'and'
|
56 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
57 |
array(
|
58 |
'id' => 'demo_category_checkbox',
|
59 |
'label' => __( 'Category Checkbox', 'theme-text-domain' ),
|
@@ -126,6 +160,21 @@ function custom_theme_options() {
|
|
126 |
'condition' => '',
|
127 |
'operator' => 'and'
|
128 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
129 |
array(
|
130 |
'id' => 'demo_css',
|
131 |
'label' => __( 'CSS', 'theme-text-domain' ),
|
@@ -203,6 +252,21 @@ function custom_theme_options() {
|
|
203 |
'condition' => '',
|
204 |
'operator' => 'and'
|
205 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
206 |
array(
|
207 |
'id' => 'demo_gallery',
|
208 |
'label' => __( 'Gallery', 'theme-text-domain' ),
|
@@ -233,6 +297,57 @@ function custom_theme_options() {
|
|
233 |
'condition' => '',
|
234 |
'operator' => 'and'
|
235 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
236 |
array(
|
237 |
'id' => 'demo_list_item',
|
238 |
'label' => __( 'List Item', 'theme-text-domain' ),
|
@@ -469,11 +584,11 @@ function custom_theme_options() {
|
|
469 |
'operator' => 'and'
|
470 |
),
|
471 |
array(
|
472 |
-
'id' => '
|
473 |
-
'label' => __( '
|
474 |
-
'desc' => __( 'The
|
475 |
'std' => '',
|
476 |
-
'type' => '
|
477 |
'section' => 'option_types',
|
478 |
'rows' => '',
|
479 |
'post_type' => '',
|
@@ -484,11 +599,11 @@ function custom_theme_options() {
|
|
484 |
'operator' => 'and'
|
485 |
),
|
486 |
array(
|
487 |
-
'id' => '
|
488 |
-
'label' => __( '
|
489 |
-
'desc' => __( 'The
|
490 |
'std' => '',
|
491 |
-
'type' => '
|
492 |
'section' => 'option_types',
|
493 |
'rows' => '',
|
494 |
'post_type' => '',
|
@@ -499,11 +614,26 @@ function custom_theme_options() {
|
|
499 |
'operator' => 'and'
|
500 |
),
|
501 |
array(
|
502 |
-
'id' => '
|
503 |
-
'label' => __( '
|
504 |
-
'desc' =>
|
505 |
'std' => '',
|
506 |
-
'type' => '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
507 |
'section' => 'option_types',
|
508 |
'rows' => '',
|
509 |
'post_type' => '',
|
@@ -674,4 +804,8 @@ function custom_theme_options() {
|
|
674 |
update_option( ot_settings_id(), $custom_settings );
|
675 |
}
|
676 |
|
|
|
|
|
|
|
|
|
677 |
}
|
2 |
/**
|
3 |
* Initialize the custom Theme Options.
|
4 |
*/
|
5 |
+
add_action( 'init', 'custom_theme_options' );
|
6 |
|
7 |
/**
|
8 |
* Build the custom settings & update OptionTree.
|
11 |
* @since 2.0
|
12 |
*/
|
13 |
function custom_theme_options() {
|
14 |
+
|
15 |
+
/* OptionTree is not loaded yet, or this is not an admin request */
|
16 |
+
if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
|
17 |
+
return false;
|
18 |
+
|
19 |
/**
|
20 |
* Get a copy of the saved settings array.
|
21 |
*/
|
58 |
'condition' => '',
|
59 |
'operator' => 'and'
|
60 |
),
|
61 |
+
array(
|
62 |
+
'id' => 'demo_border',
|
63 |
+
'label' => __( 'Border', 'theme-text-domain' ),
|
64 |
+
'desc' => __( 'The Border option type is used to set width, unit, style, and color values.', 'theme-text-domain' ),
|
65 |
+
'std' => '',
|
66 |
+
'type' => 'border',
|
67 |
+
'section' => 'option_types',
|
68 |
+
'rows' => '',
|
69 |
+
'post_type' => '',
|
70 |
+
'taxonomy' => '',
|
71 |
+
'min_max_step'=> '',
|
72 |
+
'class' => '',
|
73 |
+
'condition' => '',
|
74 |
+
'operator' => 'and'
|
75 |
+
),
|
76 |
+
array(
|
77 |
+
'id' => 'demo_box_shadow',
|
78 |
+
'label' => __( 'Box Shadow', 'theme-text-domain' ),
|
79 |
+
'desc' => sprintf( __( 'The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values.', 'theme-text-domain' ), '<code>inset</code>', '<code>offset-x</code>', '<code>offset-y</code>', '<code>blur-radius</code>', '<code>spread-radius</code>', '<code>color</code>' ),
|
80 |
+
'std' => '',
|
81 |
+
'type' => 'box-shadow',
|
82 |
+
'section' => 'option_types',
|
83 |
+
'rows' => '',
|
84 |
+
'post_type' => '',
|
85 |
+
'taxonomy' => '',
|
86 |
+
'min_max_step'=> '',
|
87 |
+
'class' => '',
|
88 |
+
'condition' => '',
|
89 |
+
'operator' => 'and'
|
90 |
+
),
|
91 |
array(
|
92 |
'id' => 'demo_category_checkbox',
|
93 |
'label' => __( 'Category Checkbox', 'theme-text-domain' ),
|
160 |
'condition' => '',
|
161 |
'operator' => 'and'
|
162 |
),
|
163 |
+
array(
|
164 |
+
'id' => 'demo_colorpicker_opacity',
|
165 |
+
'label' => __( 'Colorpicker Opacity', 'theme-text-domain' ),
|
166 |
+
'desc' => sprintf( __( 'The Colorpicker Opacity option type saves a hexadecimal color code with an opacity value from %s to %s in increments of %s. Though the value is saved as hexadecimal, if used within the CSS option type the color and opacity values will be converted into a valid RGBA CSS value.', 'theme-text-domain' ), '<code>0</code>', '<code>1</code>', '<code>0.01</code>' ),
|
167 |
+
'std' => '',
|
168 |
+
'type' => 'colorpicker-opacity',
|
169 |
+
'section' => 'option_types',
|
170 |
+
'rows' => '',
|
171 |
+
'post_type' => '',
|
172 |
+
'taxonomy' => '',
|
173 |
+
'min_max_step'=> '',
|
174 |
+
'class' => '',
|
175 |
+
'condition' => '',
|
176 |
+
'operator' => 'and'
|
177 |
+
),
|
178 |
array(
|
179 |
'id' => 'demo_css',
|
180 |
'label' => __( 'CSS', 'theme-text-domain' ),
|
252 |
'condition' => '',
|
253 |
'operator' => 'and'
|
254 |
),
|
255 |
+
array(
|
256 |
+
'id' => 'demo_dimension',
|
257 |
+
'label' => __( 'Dimension', 'theme-text-domain' ),
|
258 |
+
'desc' => __( 'The Dimension option type is used to set width and height values.', 'theme-text-domain' ),
|
259 |
+
'std' => '',
|
260 |
+
'type' => 'dimension',
|
261 |
+
'section' => 'option_types',
|
262 |
+
'rows' => '',
|
263 |
+
'post_type' => '',
|
264 |
+
'taxonomy' => '',
|
265 |
+
'min_max_step'=> '',
|
266 |
+
'class' => '',
|
267 |
+
'condition' => '',
|
268 |
+
'operator' => 'and'
|
269 |
+
),
|
270 |
array(
|
271 |
'id' => 'demo_gallery',
|
272 |
'label' => __( 'Gallery', 'theme-text-domain' ),
|
297 |
'condition' => '',
|
298 |
'operator' => 'and'
|
299 |
),
|
300 |
+
array(
|
301 |
+
'id' => 'demo_google_fonts',
|
302 |
+
'label' => __( 'Google Fonts', 'theme-text-domain' ),
|
303 |
+
'desc' => sprintf( __( 'The Google Fonts option type will dynamically enqueue any number of Google Web Fonts into the document %1$s. As well, once the option has been saved each font family will automatically be inserted into the %2$s array for the Typography option type. You can further modify the font stack by using the %3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s parameter is being passed from %7$s, so it will be the ID of a Typography option type. This will allow you to add additional web safe fonts to individual font families on an as-need basis.', 'theme-text-domain' ), '<code>HEAD</code>', '<code>font-family</code>', '<code>ot_google_font_stack</code>', '<code>$font_stack</code>', '<code>$family</code>', '<code>$field_id</code>', '<code>ot_recognized_font_families</code>' ),
|
304 |
+
'std' => array(
|
305 |
+
array(
|
306 |
+
'family' => 'opensans',
|
307 |
+
'variants' => array( '300', '300italic', 'regular', 'italic', '600', '600italic' ),
|
308 |
+
'subsets' => array( 'latin' )
|
309 |
+
)
|
310 |
+
),
|
311 |
+
'type' => 'google-fonts',
|
312 |
+
'section' => 'option_types',
|
313 |
+
'rows' => '',
|
314 |
+
'post_type' => '',
|
315 |
+
'taxonomy' => '',
|
316 |
+
'min_max_step'=> '',
|
317 |
+
'class' => '',
|
318 |
+
'condition' => '',
|
319 |
+
'operator' => 'and'
|
320 |
+
),
|
321 |
+
array(
|
322 |
+
'id' => 'demo_javascript',
|
323 |
+
'label' => __( 'JavaScript', 'theme-text-domain' ),
|
324 |
+
'desc' => '<p>' . sprintf( __( 'The JavaScript option type is a textarea that uses the %s code editor to highlight your JavaScript and display errors as you type.', 'theme-text-domain' ), '<code>ace.js</code>' ) . '</p>',
|
325 |
+
'std' => '',
|
326 |
+
'type' => 'javascript',
|
327 |
+
'section' => 'option_types',
|
328 |
+
'rows' => '20',
|
329 |
+
'post_type' => '',
|
330 |
+
'taxonomy' => '',
|
331 |
+
'min_max_step'=> '',
|
332 |
+
'class' => '',
|
333 |
+
'condition' => '',
|
334 |
+
'operator' => 'and'
|
335 |
+
),
|
336 |
+
array(
|
337 |
+
'id' => 'demo_link_color',
|
338 |
+
'label' => __( 'Link Color', 'theme-text-domain' ),
|
339 |
+
'desc' => __( 'The Link Color option type is used to set all link color states.', 'theme-text-domain' ),
|
340 |
+
'std' => '',
|
341 |
+
'type' => 'link-color',
|
342 |
+
'section' => 'option_types',
|
343 |
+
'rows' => '',
|
344 |
+
'post_type' => '',
|
345 |
+
'taxonomy' => '',
|
346 |
+
'min_max_step'=> '',
|
347 |
+
'class' => '',
|
348 |
+
'condition' => '',
|
349 |
+
'operator' => 'and'
|
350 |
+
),
|
351 |
array(
|
352 |
'id' => 'demo_list_item',
|
353 |
'label' => __( 'List Item', 'theme-text-domain' ),
|
584 |
'operator' => 'and'
|
585 |
),
|
586 |
array(
|
587 |
+
'id' => 'demo_social_links',
|
588 |
+
'label' => __( 'Social Links', 'theme-text-domain' ),
|
589 |
+
'desc' => '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'theme-text-domain' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>',
|
590 |
'std' => '',
|
591 |
+
'type' => 'social-links',
|
592 |
'section' => 'option_types',
|
593 |
'rows' => '',
|
594 |
'post_type' => '',
|
599 |
'operator' => 'and'
|
600 |
),
|
601 |
array(
|
602 |
+
'id' => 'demo_spacing',
|
603 |
+
'label' => __( 'Spacing', 'theme-text-domain' ),
|
604 |
+
'desc' => __( 'The Spacing option type is used to set spacing values such as padding or margin in the form of top, right, bottom, and left.', 'theme-text-domain' ),
|
605 |
'std' => '',
|
606 |
+
'type' => 'spacing',
|
607 |
'section' => 'option_types',
|
608 |
'rows' => '',
|
609 |
'post_type' => '',
|
614 |
'operator' => 'and'
|
615 |
),
|
616 |
array(
|
617 |
+
'id' => 'demo_tag_checkbox',
|
618 |
+
'label' => __( 'Tag Checkbox', 'theme-text-domain' ),
|
619 |
+
'desc' => __( 'The Tag Checkbox option type displays a list of tag IDs. It allows the user to check multiple tag IDs and will return that value as an array for use in a custom function or loop.', 'theme-text-domain' ),
|
620 |
'std' => '',
|
621 |
+
'type' => 'tag-checkbox',
|
622 |
+
'section' => 'option_types',
|
623 |
+
'rows' => '',
|
624 |
+
'post_type' => '',
|
625 |
+
'taxonomy' => '',
|
626 |
+
'min_max_step'=> '',
|
627 |
+
'class' => '',
|
628 |
+
'condition' => '',
|
629 |
+
'operator' => 'and'
|
630 |
+
),
|
631 |
+
array(
|
632 |
+
'id' => 'demo_tag_select',
|
633 |
+
'label' => __( 'Tag Select', 'theme-text-domain' ),
|
634 |
+
'desc' => __( 'The Tag Select option type displays a list of tag IDs. It allows the user to select only one tag ID and will return that value for use in a custom function or loop.', 'theme-text-domain' ),
|
635 |
+
'std' => '',
|
636 |
+
'type' => 'tag-select',
|
637 |
'section' => 'option_types',
|
638 |
'rows' => '',
|
639 |
'post_type' => '',
|
804 |
update_option( ot_settings_id(), $custom_settings );
|
805 |
}
|
806 |
|
807 |
+
/* Lets OptionTree know the UI Builder is being overridden */
|
808 |
+
global $ot_has_custom_theme_options;
|
809 |
+
$ot_has_custom_theme_options = true;
|
810 |
+
|
811 |
}
|
includes/ot-cleanup-api.php
CHANGED
@@ -27,6 +27,9 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
27 |
function __construct() {
|
28 |
if ( ! is_admin() )
|
29 |
return;
|
|
|
|
|
|
|
30 |
|
31 |
// Maybe Clean up OptionTree
|
32 |
add_action( 'admin_menu', array( $this, 'maybe_cleanup' ), 100 );
|
@@ -36,6 +39,20 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
36 |
|
37 |
}
|
38 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
39 |
/**
|
40 |
* Check if OptionTree needs to be cleaned up from a previous install.
|
41 |
*
|
@@ -52,22 +69,22 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
52 |
|
53 |
$ot_maybe_cleanup_posts = count( $posts ) > 1;
|
54 |
$ot_maybe_cleanup_table = count( $table ) == 1;
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
|
56 |
if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
|
57 |
|
58 |
-
|
|
|
|
|
|
|
59 |
|
60 |
}
|
61 |
|
62 |
-
if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'hide-page' ) ) {
|
63 |
-
update_option( 'ot_hide_cleanup', true );
|
64 |
-
wp_redirect( 'themes.php?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) );
|
65 |
-
exit;
|
66 |
-
}
|
67 |
-
|
68 |
-
if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table || get_option( 'ot_hide_cleanup', false ) == false )
|
69 |
-
add_theme_page( apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ), 'edit_theme_options', 'ot-cleanup', array( $this, 'options_page' ) );
|
70 |
-
|
71 |
}
|
72 |
|
73 |
/**
|
@@ -84,7 +101,7 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
84 |
echo '<div class="update-nag">' . sprintf( __( 'OptionTree has outdated data that should be removed. Please go to %s for more information.', 'option-tree' ), sprintf( '<a href="%s">%s</a>', admin_url( 'themes.php?page=ot-cleanup' ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ) ) ) . '</div>';
|
85 |
|
86 |
}
|
87 |
-
|
88 |
/**
|
89 |
* Adds a Tools sub page to clean up the database with.
|
90 |
*
|
@@ -95,68 +112,63 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
95 |
*/
|
96 |
public function options_page() {
|
97 |
global $wpdb, $table_prefix, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
|
98 |
-
|
99 |
-
// If we are here this option should not be true.
|
100 |
-
update_option( 'ot_hide_cleanup', false );
|
101 |
-
|
102 |
// Option ID
|
103 |
$option_id = 'ot_media_post_ID';
|
104 |
-
|
105 |
// Get the media post ID
|
106 |
$post_ID = get_option( $option_id, false );
|
107 |
-
|
108 |
// Zero loop count
|
109 |
$count = 0;
|
110 |
-
|
111 |
// Check for safe mode
|
112 |
$safe_mode = ini_get( 'safe_mode' );
|
113 |
-
|
114 |
echo '<div class="wrap">';
|
115 |
-
|
116 |
echo '<h2>' . apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ) . '</h2>';
|
117 |
-
|
118 |
-
if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
|
119 |
-
|
120 |
if ( $ot_maybe_cleanup_posts ) {
|
121 |
-
|
122 |
$posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree'" );
|
123 |
-
|
124 |
echo '<h3>' . __( 'Multiple Media Posts', 'option-tree' ) . '</h3>';
|
125 |
-
|
126 |
echo '<p>' . sprintf( __( 'There are currently %s OptionTree media posts in your database. At some point in the past, a version of OptionTree added multiple %s media post objects cluttering up your %s table. There is no associated risk or harm that these posts have caused other than to add size to your overall database. Thankfully, there is a way to remove all these orphaned media posts and get your database cleaned up.', 'option-tree' ), '<code>' . number_format( count( $posts ) ) . '</code>', '<tt>option-tree</tt>', '<tt>' . $wpdb->posts . '</tt>' ) . '</p>';
|
127 |
-
|
128 |
echo '<p>' . sprintf( __( 'By clicking the button below, OptionTree will delete %s records and consolidate them into one single OptionTree media post for uploading attachments to. Additionally, the attachments will have their parent ID updated to the correct media post.', 'option-tree' ), '<code>' . number_format( count( $posts ) - 1 ) . '</code>' ) . '</p>';
|
129 |
-
|
130 |
echo '<p><strong>' . __( 'This could take a while to fully process depending on how many records you have in your database, so please be patient and wait for the script to finish.', 'option-tree' ) . '</strong></p>';
|
131 |
-
|
132 |
echo $safe_mode ? '<p>' . sprintf( __( '%s Your server is running in safe mode. Which means this page will automatically reload after deleting %s posts, you can filter this number using %s if your server is having trouble processing that many at one time.', 'option-tree' ), '<strong>Note</strong>:', apply_filters( 'ot_consolidate_posts_reload', 500 ), '<tt>ot_consolidate_posts_reload</tt>' ) . '</p>' : '';
|
133 |
-
|
134 |
echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'consolidate-posts' ) . '">' . __( 'Consolidate Posts', 'option-tree' ) . '</a></p>';
|
135 |
-
|
136 |
if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'consolidate-posts' ) ) {
|
137 |
-
|
138 |
if ( $post_ID === false || empty( $post_ID ) ) {
|
139 |
$post_ID = isset( $posts[0]->ID ) ? $posts[0]->ID : null;
|
140 |
-
|
141 |
// Add to the DB
|
142 |
if ( $post_ID !== null )
|
143 |
update_option( $option_id, $post_ID );
|
144 |
-
|
145 |
}
|
146 |
-
|
147 |
// Do pre consolidation action to increase timeout.
|
148 |
do_action( 'ot_pre_consolidate_posts' );
|
149 |
|
150 |
// Loop over posts
|
151 |
foreach( $posts as $post ) {
|
152 |
-
|
153 |
// Don't destroy the correct post.
|
154 |
if ( $post_ID == $post->ID )
|
155 |
continue;
|
156 |
-
|
157 |
// Update count
|
158 |
$count++;
|
159 |
-
|
160 |
// Reload script in safe mode
|
161 |
if ( $safe_mode && $count > apply_filters( 'ot_consolidate_posts_reload', 500 ) ) {
|
162 |
echo '<br />' . __( 'Reloading...', 'option-tree' );
|
@@ -169,15 +181,15 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
169 |
</script>';
|
170 |
break;
|
171 |
}
|
172 |
-
|
173 |
// Get the attachements
|
174 |
$attachments = get_children( 'post_type=attachment&post_parent=' . $post->ID );
|
175 |
-
|
176 |
// Update the attachments parent ID
|
177 |
if ( ! empty( $attachments ) ) {
|
178 |
-
|
179 |
echo 'Updating Attachments parent ID for <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt>.<br />';
|
180 |
-
|
181 |
foreach( $attachments as $attachment_id => $attachment ) {
|
182 |
wp_update_post(
|
183 |
array(
|
@@ -186,17 +198,17 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
186 |
)
|
187 |
);
|
188 |
}
|
189 |
-
|
190 |
}
|
191 |
-
|
192 |
// Delete post
|
193 |
echo 'Deleting <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt><br />';
|
194 |
wp_delete_post( $post->ID, true );
|
195 |
-
|
196 |
}
|
197 |
-
|
198 |
echo '<br />' . __( 'Clean up script has completed, the page will now reload...', 'option-tree' );
|
199 |
-
|
200 |
echo '
|
201 |
<script>
|
202 |
setTimeout( ot_script_reload, 3000 )
|
@@ -204,33 +216,33 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
204 |
window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
|
205 |
}
|
206 |
</script>';
|
207 |
-
|
208 |
}
|
209 |
-
|
210 |
}
|
211 |
-
|
212 |
if ( $ot_maybe_cleanup_table ) {
|
213 |
-
|
214 |
$table_name = $table_prefix . 'option_tree';
|
215 |
-
|
216 |
echo $ot_maybe_cleanup_posts ? '<hr />' : '';
|
217 |
-
|
218 |
echo '<h3>' . __( 'Outdated Table', 'option-tree' ) . '</h3>';
|
219 |
-
|
220 |
echo '<p>' . sprintf( __( 'If you have upgraded from an old 1.x version of OptionTree at some point, you have an extra %s table in your database that can be removed. It\'s not hurting anything, but does not need to be there. If you want to remove it. Click the button below.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
221 |
-
|
222 |
echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'drop-table' ) . '">' . __( 'Drop Table', 'option-tree' ) . '</a></p>';
|
223 |
-
|
224 |
if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'drop-table' ) ) {
|
225 |
|
226 |
echo '<p>' . sprintf( __( 'Deleting the outdated and unused %s table...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
227 |
-
|
228 |
$wpdb->query( "DROP TABLE IF EXISTS $table_name" );
|
229 |
-
|
230 |
if ( count( $wpdb->get_results( "SHOW TABLES LIKE '{$table_prefix}option_tree'" ) ) == 0 ) {
|
231 |
-
|
232 |
echo '<p>' . sprintf( __( 'The %s table has been successfully deleted. The page will now reload...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
233 |
-
|
234 |
echo '
|
235 |
<script>
|
236 |
setTimeout( ot_script_reload, 3000 )
|
@@ -238,31 +250,21 @@ if ( ! class_exists( 'OT_Cleanup' ) ) {
|
|
238 |
window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
|
239 |
}
|
240 |
</script>';
|
241 |
-
|
242 |
} else {
|
243 |
-
|
244 |
echo '<p>' . sprintf( __( 'Something went wrong. The %s table was not deleted.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
245 |
-
|
246 |
}
|
247 |
-
|
248 |
}
|
249 |
-
|
250 |
}
|
251 |
-
|
252 |
-
} else {
|
253 |
-
|
254 |
-
echo '<h3>' . __( 'Congratulations! You have a clean install.', 'option-tree' ) . '</h3>';
|
255 |
-
|
256 |
-
echo '<p>' . __( 'Your version of OptionTree does not have any outdated data. If there was outdated data, you would be presented with options to clean it up.', 'option-tree' ) . '</p>';
|
257 |
-
|
258 |
-
echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'hide-page' ) . '">' . __( 'Hide This Page', 'option-tree' ) . '</a></p>';
|
259 |
-
|
260 |
-
}
|
261 |
-
|
262 |
echo '</div>';
|
263 |
-
|
264 |
}
|
265 |
-
|
266 |
/**
|
267 |
* Increase PHP timeout.
|
268 |
*
|
27 |
function __construct() {
|
28 |
if ( ! is_admin() )
|
29 |
return;
|
30 |
+
|
31 |
+
// Load styles
|
32 |
+
add_action( 'admin_head', array( $this, 'styles' ), 1 );
|
33 |
|
34 |
// Maybe Clean up OptionTree
|
35 |
add_action( 'admin_menu', array( $this, 'maybe_cleanup' ), 100 );
|
39 |
|
40 |
}
|
41 |
|
42 |
+
/**
|
43 |
+
* Adds the cleanup styles to the admin head
|
44 |
+
*
|
45 |
+
* @return string
|
46 |
+
*
|
47 |
+
* @access public
|
48 |
+
* @since 2.5.0
|
49 |
+
*/
|
50 |
+
function styles() {
|
51 |
+
|
52 |
+
echo '<style>#toplevel_page_ot-cleanup{display:none;}</style>';
|
53 |
+
|
54 |
+
}
|
55 |
+
|
56 |
/**
|
57 |
* Check if OptionTree needs to be cleaned up from a previous install.
|
58 |
*
|
69 |
|
70 |
$ot_maybe_cleanup_posts = count( $posts ) > 1;
|
71 |
$ot_maybe_cleanup_table = count( $table ) == 1;
|
72 |
+
$page = isset( $_GET['page'] ) ? $_GET['page'] : '';
|
73 |
+
|
74 |
+
if ( ! $ot_maybe_cleanup_posts && ! $ot_maybe_cleanup_table && $page == 'ot-cleanup' ) {
|
75 |
+
wp_redirect( apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) . '?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) );
|
76 |
+
exit;
|
77 |
+
}
|
78 |
|
79 |
if ( $ot_maybe_cleanup_posts || $ot_maybe_cleanup_table ) {
|
80 |
|
81 |
+
if ( $page != 'ot-cleanup' )
|
82 |
+
add_action( 'admin_notices', array( $this, 'cleanup_notice' ) );
|
83 |
+
|
84 |
+
add_menu_page( apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ), 'edit_theme_options', 'ot-cleanup', array( $this, 'options_page' ) );
|
85 |
|
86 |
}
|
87 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88 |
}
|
89 |
|
90 |
/**
|
101 |
echo '<div class="update-nag">' . sprintf( __( 'OptionTree has outdated data that should be removed. Please go to %s for more information.', 'option-tree' ), sprintf( '<a href="%s">%s</a>', admin_url( 'themes.php?page=ot-cleanup' ), apply_filters( 'ot_cleanup_menu_title', __( 'OptionTree Cleanup', 'option-tree' ) ) ) ) . '</div>';
|
102 |
|
103 |
}
|
104 |
+
|
105 |
/**
|
106 |
* Adds a Tools sub page to clean up the database with.
|
107 |
*
|
112 |
*/
|
113 |
public function options_page() {
|
114 |
global $wpdb, $table_prefix, $ot_maybe_cleanup_posts, $ot_maybe_cleanup_table;
|
115 |
+
|
|
|
|
|
|
|
116 |
// Option ID
|
117 |
$option_id = 'ot_media_post_ID';
|
118 |
+
|
119 |
// Get the media post ID
|
120 |
$post_ID = get_option( $option_id, false );
|
121 |
+
|
122 |
// Zero loop count
|
123 |
$count = 0;
|
124 |
+
|
125 |
// Check for safe mode
|
126 |
$safe_mode = ini_get( 'safe_mode' );
|
127 |
+
|
128 |
echo '<div class="wrap">';
|
129 |
+
|
130 |
echo '<h2>' . apply_filters( 'ot_cleanup_page_title', __( 'OptionTree Cleanup', 'option-tree' ) ) . '</h2>';
|
131 |
+
|
|
|
|
|
132 |
if ( $ot_maybe_cleanup_posts ) {
|
133 |
+
|
134 |
$posts = $wpdb->get_results( "SELECT * FROM $wpdb->posts WHERE post_type = 'option-tree'" );
|
135 |
+
|
136 |
echo '<h3>' . __( 'Multiple Media Posts', 'option-tree' ) . '</h3>';
|
137 |
+
|
138 |
echo '<p>' . sprintf( __( 'There are currently %s OptionTree media posts in your database. At some point in the past, a version of OptionTree added multiple %s media post objects cluttering up your %s table. There is no associated risk or harm that these posts have caused other than to add size to your overall database. Thankfully, there is a way to remove all these orphaned media posts and get your database cleaned up.', 'option-tree' ), '<code>' . number_format( count( $posts ) ) . '</code>', '<tt>option-tree</tt>', '<tt>' . $wpdb->posts . '</tt>' ) . '</p>';
|
139 |
+
|
140 |
echo '<p>' . sprintf( __( 'By clicking the button below, OptionTree will delete %s records and consolidate them into one single OptionTree media post for uploading attachments to. Additionally, the attachments will have their parent ID updated to the correct media post.', 'option-tree' ), '<code>' . number_format( count( $posts ) - 1 ) . '</code>' ) . '</p>';
|
141 |
+
|
142 |
echo '<p><strong>' . __( 'This could take a while to fully process depending on how many records you have in your database, so please be patient and wait for the script to finish.', 'option-tree' ) . '</strong></p>';
|
143 |
+
|
144 |
echo $safe_mode ? '<p>' . sprintf( __( '%s Your server is running in safe mode. Which means this page will automatically reload after deleting %s posts, you can filter this number using %s if your server is having trouble processing that many at one time.', 'option-tree' ), '<strong>Note</strong>:', apply_filters( 'ot_consolidate_posts_reload', 500 ), '<tt>ot_consolidate_posts_reload</tt>' ) . '</p>' : '';
|
145 |
+
|
146 |
echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'consolidate-posts' ) . '">' . __( 'Consolidate Posts', 'option-tree' ) . '</a></p>';
|
147 |
+
|
148 |
if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'consolidate-posts' ) ) {
|
149 |
+
|
150 |
if ( $post_ID === false || empty( $post_ID ) ) {
|
151 |
$post_ID = isset( $posts[0]->ID ) ? $posts[0]->ID : null;
|
152 |
+
|
153 |
// Add to the DB
|
154 |
if ( $post_ID !== null )
|
155 |
update_option( $option_id, $post_ID );
|
156 |
+
|
157 |
}
|
158 |
+
|
159 |
// Do pre consolidation action to increase timeout.
|
160 |
do_action( 'ot_pre_consolidate_posts' );
|
161 |
|
162 |
// Loop over posts
|
163 |
foreach( $posts as $post ) {
|
164 |
+
|
165 |
// Don't destroy the correct post.
|
166 |
if ( $post_ID == $post->ID )
|
167 |
continue;
|
168 |
+
|
169 |
// Update count
|
170 |
$count++;
|
171 |
+
|
172 |
// Reload script in safe mode
|
173 |
if ( $safe_mode && $count > apply_filters( 'ot_consolidate_posts_reload', 500 ) ) {
|
174 |
echo '<br />' . __( 'Reloading...', 'option-tree' );
|
181 |
</script>';
|
182 |
break;
|
183 |
}
|
184 |
+
|
185 |
// Get the attachements
|
186 |
$attachments = get_children( 'post_type=attachment&post_parent=' . $post->ID );
|
187 |
+
|
188 |
// Update the attachments parent ID
|
189 |
if ( ! empty( $attachments ) ) {
|
190 |
+
|
191 |
echo 'Updating Attachments parent ID for <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt>.<br />';
|
192 |
+
|
193 |
foreach( $attachments as $attachment_id => $attachment ) {
|
194 |
wp_update_post(
|
195 |
array(
|
198 |
)
|
199 |
);
|
200 |
}
|
201 |
+
|
202 |
}
|
203 |
+
|
204 |
// Delete post
|
205 |
echo 'Deleting <tt>option-tree</tt> post <tt>#' . $post->ID . '</tt><br />';
|
206 |
wp_delete_post( $post->ID, true );
|
207 |
+
|
208 |
}
|
209 |
+
|
210 |
echo '<br />' . __( 'Clean up script has completed, the page will now reload...', 'option-tree' );
|
211 |
+
|
212 |
echo '
|
213 |
<script>
|
214 |
setTimeout( ot_script_reload, 3000 )
|
216 |
window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
|
217 |
}
|
218 |
</script>';
|
219 |
+
|
220 |
}
|
221 |
+
|
222 |
}
|
223 |
+
|
224 |
if ( $ot_maybe_cleanup_table ) {
|
225 |
+
|
226 |
$table_name = $table_prefix . 'option_tree';
|
227 |
+
|
228 |
echo $ot_maybe_cleanup_posts ? '<hr />' : '';
|
229 |
+
|
230 |
echo '<h3>' . __( 'Outdated Table', 'option-tree' ) . '</h3>';
|
231 |
+
|
232 |
echo '<p>' . sprintf( __( 'If you have upgraded from an old 1.x version of OptionTree at some point, you have an extra %s table in your database that can be removed. It\'s not hurting anything, but does not need to be there. If you want to remove it. Click the button below.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
233 |
+
|
234 |
echo '<p><a class="button button-primary" href="' . wp_nonce_url( admin_url( 'themes.php?page=ot-cleanup' ), 'drop-table' ) . '">' . __( 'Drop Table', 'option-tree' ) . '</a></p>';
|
235 |
+
|
236 |
if ( isset( $_GET['_wpnonce'] ) && wp_verify_nonce( $_GET['_wpnonce'], 'drop-table' ) ) {
|
237 |
|
238 |
echo '<p>' . sprintf( __( 'Deleting the outdated and unused %s table...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
239 |
+
|
240 |
$wpdb->query( "DROP TABLE IF EXISTS $table_name" );
|
241 |
+
|
242 |
if ( count( $wpdb->get_results( "SHOW TABLES LIKE '{$table_prefix}option_tree'" ) ) == 0 ) {
|
243 |
+
|
244 |
echo '<p>' . sprintf( __( 'The %s table has been successfully deleted. The page will now reload...', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
245 |
+
|
246 |
echo '
|
247 |
<script>
|
248 |
setTimeout( ot_script_reload, 3000 )
|
250 |
window.location = "' . self_admin_url( 'themes.php?page=ot-cleanup' ) . '"
|
251 |
}
|
252 |
</script>';
|
253 |
+
|
254 |
} else {
|
255 |
+
|
256 |
echo '<p>' . sprintf( __( 'Something went wrong. The %s table was not deleted.', 'option-tree' ), '<tt>' . $table_name . '</tt>' ) . '</p>';
|
257 |
+
|
258 |
}
|
259 |
+
|
260 |
}
|
261 |
+
|
262 |
}
|
263 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
264 |
echo '</div>';
|
265 |
+
|
266 |
}
|
267 |
+
|
268 |
/**
|
269 |
* Increase PHP timeout.
|
270 |
*
|
includes/ot-functions-admin.php
CHANGED
@@ -90,7 +90,7 @@ if ( ! function_exists( 'ot_register_settings_page' ) ) {
|
|
90 |
global $ot_has_custom_theme_options;
|
91 |
|
92 |
// Display UI Builder admin notice
|
93 |
-
if ( OT_SHOW_OPTIONS_UI == true && isset( $_REQUEST['page'] ) && $_REQUEST['page'] == 'ot-settings' && ( $ot_has_custom_theme_options == true || has_action( 'admin_init', 'custom_theme_options' ) ) ) {
|
94 |
|
95 |
function ot_has_custom_theme_options() {
|
96 |
|
@@ -488,6 +488,73 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
|
|
488 |
if ( ! isset( $has_value ) ) {
|
489 |
$input = '';
|
490 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
491 |
|
492 |
} else if ( 'colorpicker' == $type ) {
|
493 |
|
@@ -496,18 +563,95 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
|
|
496 |
|
497 |
$input = '';
|
498 |
|
499 |
-
add_settings_error( 'option-tree', 'invalid_hex', __( 'The Colorpicker only allows valid hexadecimal values.', 'option-tree' ), 'error' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
500 |
|
|
|
|
|
|
|
501 |
}
|
502 |
|
503 |
-
} else if ( in_array( $type, array( 'css', 'text', 'textarea', 'textarea-simple' ) ) ) {
|
504 |
|
505 |
if ( ! current_user_can( 'unfiltered_html' ) && OT_ALLOW_UNFILTERED_HTML == false ) {
|
506 |
|
507 |
$input = wp_kses_post( $input );
|
508 |
|
509 |
}
|
510 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
511 |
} else if ( 'measurement' == $type ) {
|
512 |
|
513 |
$input[0] = sanitize_text_field( $input[0] );
|
@@ -517,6 +661,35 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
|
|
517 |
$input = '';
|
518 |
}
|
519 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
520 |
} else if ( 'typography' == $type && isset( $input['font-color'] ) ) {
|
521 |
|
522 |
$input['font-color'] = ot_validate_setting( $input['font-color'], 'colorpicker', $field_id );
|
@@ -535,7 +708,7 @@ if ( ! function_exists( 'ot_validate_setting' ) ) {
|
|
535 |
|
536 |
} else if ( 'upload' == $type ) {
|
537 |
|
538 |
-
$input =
|
539 |
|
540 |
} else if ( 'gallery' == $type ) {
|
541 |
|
@@ -598,6 +771,25 @@ if ( ! function_exists( 'ot_admin_styles' ) ) {
|
|
598 |
/* Remove styles added by the Easy Digital Downloads plugin */
|
599 |
if ( isset( $post->post_type ) && $post->post_type == 'post' )
|
600 |
wp_dequeue_style( 'jquery-ui-css' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
601 |
|
602 |
/* execute styles after actions */
|
603 |
do_action( 'ot_admin_styles_after' );
|
@@ -643,14 +835,14 @@ if ( ! function_exists( 'ot_admin_scripts' ) ) {
|
|
643 |
wp_enqueue_script( 'wp-color-picker' );
|
644 |
|
645 |
/* Load Ace Editor for CSS Editing */
|
646 |
-
wp_enqueue_script( 'ace-editor',
|
647 |
|
648 |
/* load jQuery UI timepicker addon */
|
649 |
wp_enqueue_script( 'jquery-ui-timepicker', OT_URL . 'assets/js/vendor/jquery/jquery-ui-timepicker.js', array( 'jquery', 'jquery-ui-slider', 'jquery-ui-datepicker' ), '1.4.3' );
|
650 |
|
651 |
/* load all the required scripts */
|
652 |
wp_enqueue_script( 'ot-admin-js', OT_URL . 'assets/js/ot-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable', 'jquery-ui-slider', 'wp-color-picker', 'ace-editor', 'jquery-ui-datepicker', 'jquery-ui-timepicker' ), OT_VERSION );
|
653 |
-
|
654 |
/* create localized JS array */
|
655 |
$localized_array = array(
|
656 |
'ajax' => admin_url( 'admin-ajax.php' ),
|
@@ -735,7 +927,8 @@ if ( ! function_exists( 'ot_create_media_post' ) ) {
|
|
735 |
|
736 |
function ot_create_media_post() {
|
737 |
|
738 |
-
|
|
|
739 |
'labels' => array( 'name' => __( 'Option Tree', 'option-tree' ) ),
|
740 |
'public' => false,
|
741 |
'show_ui' => false,
|
@@ -821,7 +1014,7 @@ if ( ! function_exists( 'ot_default_settings' ) ) {
|
|
821 |
|
822 |
/* textarea rows */
|
823 |
$rows = '';
|
824 |
-
if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'textarea' ) ) ) {
|
825 |
if ( (int) $setting->item_options > 0 ) {
|
826 |
$rows = (int) $setting->item_options;
|
827 |
} else {
|
@@ -1314,7 +1507,7 @@ if ( ! function_exists( 'ot_import_xml' ) ) {
|
|
1314 |
|
1315 |
/* textarea rows */
|
1316 |
$rows = '';
|
1317 |
-
if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'textarea' ) ) ) {
|
1318 |
if ( (int) $value->item_options > 0 ) {
|
1319 |
$rows = (int) $value->item_options;
|
1320 |
} else {
|
@@ -1601,15 +1794,15 @@ if ( ! function_exists( 'ot_export_php_settings_array' ) ) {
|
|
1601 |
/**
|
1602 |
* Initialize the custom theme options.
|
1603 |
*/
|
1604 |
-
add_action( '
|
1605 |
|
1606 |
/**
|
1607 |
* Build the custom settings & update OptionTree.
|
1608 |
*/
|
1609 |
function custom_theme_options() {
|
1610 |
|
1611 |
-
/* OptionTree is not loaded yet */
|
1612 |
-
if ( ! function_exists( 'ot_settings_id' ) )
|
1613 |
return false;
|
1614 |
|
1615 |
/**
|
@@ -2223,16 +2416,23 @@ if ( ! function_exists( 'ot_option_types_array' ) ) {
|
|
2223 |
|
2224 |
return apply_filters( 'ot_option_types_array', array(
|
2225 |
'background' => __('Background', 'option-tree'),
|
|
|
|
|
2226 |
'category-checkbox' => __('Category Checkbox', 'option-tree'),
|
2227 |
'category-select' => __('Category Select', 'option-tree'),
|
2228 |
'checkbox' => __('Checkbox', 'option-tree'),
|
2229 |
-
'colorpicker' => __('
|
|
|
2230 |
'css' => __('CSS', 'option-tree'),
|
2231 |
'custom-post-type-checkbox' => __('Custom Post Type Checkbox', 'option-tree'),
|
2232 |
'custom-post-type-select' => __('Custom Post Type Select', 'option-tree'),
|
2233 |
'date-picker' => __('Date Picker', 'option-tree'),
|
2234 |
'date-time-picker' => __('Date Time Picker', 'option-tree'),
|
|
|
2235 |
'gallery' => __('Gallery', 'option-tree'),
|
|
|
|
|
|
|
2236 |
'list-item' => __('List Item', 'option-tree'),
|
2237 |
'measurement' => __('Measurement', 'option-tree'),
|
2238 |
'numeric-slider' => __('Numeric Slider', 'option-tree'),
|
@@ -2247,6 +2447,7 @@ if ( ! function_exists( 'ot_option_types_array' ) ) {
|
|
2247 |
'sidebar-select' => __('Sidebar Select', 'option-tree'),
|
2248 |
'slider' => __('Slider', 'option-tree'),
|
2249 |
'social-links' => __('Social Links', 'option-tree'),
|
|
|
2250 |
'tab' => __('Tab', 'option-tree'),
|
2251 |
'tag-checkbox' => __('Tag Checkbox', 'option-tree'),
|
2252 |
'tag-select' => __('Tag Select', 'option-tree'),
|
@@ -2315,6 +2516,38 @@ if ( ! function_exists( 'ot_map_old_option_types' ) ) {
|
|
2315 |
}
|
2316 |
}
|
2317 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2318 |
/**
|
2319 |
* Recognized font families
|
2320 |
*
|
@@ -2334,8 +2567,8 @@ if ( ! function_exists( 'ot_map_old_option_types' ) ) {
|
|
2334 |
if ( ! function_exists( 'ot_recognized_font_families' ) ) {
|
2335 |
|
2336 |
function ot_recognized_font_families( $field_id = '' ) {
|
2337 |
-
|
2338 |
-
|
2339 |
'arial' => 'Arial',
|
2340 |
'georgia' => 'Georgia',
|
2341 |
'helvetica' => 'Helvetica',
|
@@ -2344,7 +2577,9 @@ if ( ! function_exists( 'ot_recognized_font_families' ) ) {
|
|
2344 |
'times' => '"Times New Roman", sans-serif',
|
2345 |
'trebuchet' => 'Trebuchet',
|
2346 |
'verdana' => 'Verdana'
|
2347 |
-
)
|
|
|
|
|
2348 |
|
2349 |
}
|
2350 |
|
@@ -2701,6 +2936,209 @@ if ( ! function_exists( 'ot_recognized_background_position' ) ) {
|
|
2701 |
|
2702 |
}
|
2703 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2704 |
/**
|
2705 |
* Measurement Units
|
2706 |
*
|
@@ -2994,19 +3432,32 @@ if ( ! function_exists( 'ot_insert_css_with_markers' ) ) {
|
|
2994 |
|
2995 |
/* path to the dynamic.css file */
|
2996 |
$filepath = get_stylesheet_directory() . '/dynamic.css';
|
|
|
|
|
|
|
|
|
|
|
|
|
2997 |
|
2998 |
/* allow filter on path */
|
2999 |
$filepath = apply_filters( 'css_option_file_path', $filepath, $field_id );
|
3000 |
-
|
3001 |
/* grab a copy of the paths array */
|
3002 |
$ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
|
3003 |
-
|
|
|
|
|
|
|
3004 |
/* set the path for this field */
|
3005 |
$ot_css_file_paths[$field_id] = $filepath;
|
3006 |
-
|
3007 |
/* update the paths */
|
3008 |
-
|
3009 |
-
|
|
|
|
|
|
|
|
|
3010 |
/* insert CSS into file */
|
3011 |
if ( file_exists( $filepath ) ) {
|
3012 |
|
@@ -3052,6 +3503,78 @@ if ( ! function_exists( 'ot_insert_css_with_markers' ) ) {
|
|
3052 |
|
3053 |
/* set $value with measurement properties */
|
3054 |
$value = $value[0].$value[1];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3055 |
|
3056 |
/* typography */
|
3057 |
} else if ( ot_array_keys_exists( $value, array( 'font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform' ) ) ) {
|
@@ -3500,7 +4023,7 @@ if ( ! function_exists( 'ot_settings_view' ) ) {
|
|
3500 |
$std = maybe_serialize( $std );
|
3501 |
}
|
3502 |
|
3503 |
-
if ( in_array( $type, array( '
|
3504 |
$std_form_element = '<textarea class="textarea" rows="10" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]">' . esc_html( $std ) . '</textarea>';
|
3505 |
} else {
|
3506 |
$std_form_element = '<input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]" value="' . esc_attr( $std ) . '" class="widefat option-tree-ui-input" autocomplete="off" />';
|
@@ -4562,6 +5085,177 @@ function ot_filter_std_value( $value = '', $std = '' ) {
|
|
4562 |
|
4563 |
}
|
4564 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4565 |
/**
|
4566 |
* Helper function to register a WPML string
|
4567 |
*
|
@@ -4954,5 +5648,45 @@ if ( ! function_exists( 'ot_get_option_type_by_id' ) ) {
|
|
4954 |
|
4955 |
}
|
4956 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4957 |
/* End of file ot-functions-admin.php */
|
4958 |
-
/* Location: ./includes/ot-functions-admin.php */
|
90 |
global $ot_has_custom_theme_options;
|
91 |
|
92 |
// Display UI Builder admin notice
|
93 |
+
if ( OT_SHOW_OPTIONS_UI == true && isset( $_REQUEST['page'] ) && $_REQUEST['page'] == 'ot-settings' && ( $ot_has_custom_theme_options == true || has_action( 'admin_init', 'custom_theme_options' ) || has_action( 'init', 'custom_theme_options' ) ) ) {
|
94 |
|
95 |
function ot_has_custom_theme_options() {
|
96 |
|
488 |
if ( ! isset( $has_value ) ) {
|
489 |
$input = '';
|
490 |
}
|
491 |
+
|
492 |
+
} else if ( 'border' == $type ) {
|
493 |
+
|
494 |
+
// Loop over array and set errors or unset key from array.
|
495 |
+
foreach( $input as $key => $value ) {
|
496 |
+
|
497 |
+
// Validate width
|
498 |
+
if ( $key == 'width' && ! empty( $value ) && ! is_numeric( $value ) ) {
|
499 |
+
|
500 |
+
$input[$key] = '0';
|
501 |
+
|
502 |
+
add_settings_error( 'option-tree', 'invalid_border_width', sprintf( __( 'The %s input field for %s only allows numeric values.', 'option-tree' ), '<code>width</code>', '<code>' . $field_id . '</code>' ), 'error' );
|
503 |
+
|
504 |
+
}
|
505 |
+
|
506 |
+
// Validate color
|
507 |
+
if ( $key == 'color' && ! empty( $value ) && 0 === preg_match( '/^#([a-f0-9]{6}|[a-f0-9]{3})$/i', $value ) ) {
|
508 |
+
|
509 |
+
$input[$key] = '';
|
510 |
+
$value = '';
|
511 |
+
|
512 |
+
add_settings_error( 'option-tree', 'invalid_hex', __( 'The Colorpicker only allows valid hexadecimal values.', 'option-tree' ), 'error' );
|
513 |
+
|
514 |
+
}
|
515 |
+
|
516 |
+
// Unset keys with empty values.
|
517 |
+
if ( empty( $value ) ) {
|
518 |
+
unset( $input[$key] );
|
519 |
+
}
|
520 |
+
|
521 |
+
}
|
522 |
+
|
523 |
+
if ( empty( $input ) ) {
|
524 |
+
$input = '';
|
525 |
+
}
|
526 |
+
|
527 |
+
} else if ( 'box-shadow' == $type ) {
|
528 |
+
|
529 |
+
// Validate inset
|
530 |
+
$input['inset'] = isset( $input['inset'] ) ? 'inset' : '';
|
531 |
+
|
532 |
+
// Validate offset-x
|
533 |
+
$input['offset-x'] = ot_validate_setting( $input['offset-x'], 'text', $field_id );
|
534 |
+
|
535 |
+
// Validate offset-y
|
536 |
+
$input['offset-y'] = ot_validate_setting( $input['offset-y'], 'text', $field_id );
|
537 |
+
|
538 |
+
// Validate blur-radius
|
539 |
+
$input['blur-radius'] = ot_validate_setting( $input['blur-radius'], 'text', $field_id );
|
540 |
+
|
541 |
+
// Validate spread-radius
|
542 |
+
$input['spread-radius'] = ot_validate_setting( $input['spread-radius'], 'text', $field_id );
|
543 |
+
|
544 |
+
// Validate color
|
545 |
+
$input['color'] = ot_validate_setting( $input['color'], 'colorpicker', $field_id );
|
546 |
+
|
547 |
+
// Unset keys with empty values.
|
548 |
+
foreach( $input as $key => $value ) {
|
549 |
+
if ( empty( $value ) ) {
|
550 |
+
unset( $input[$key] );
|
551 |
+
}
|
552 |
+
}
|
553 |
+
|
554 |
+
// Set empty array to empty string.
|
555 |
+
if ( empty( $input ) ) {
|
556 |
+
$input = '';
|
557 |
+
}
|
558 |
|
559 |
} else if ( 'colorpicker' == $type ) {
|
560 |
|
563 |
|
564 |
$input = '';
|
565 |
|
566 |
+
add_settings_error( 'option-tree', 'invalid_hex', sprintf( __( 'The %s Colorpicker only allows valid hexadecimal values.', 'option-tree' ), '<code>' . $field_id . '</code>' ), 'error' );
|
567 |
+
|
568 |
+
}
|
569 |
+
|
570 |
+
} else if ( 'colorpicker-opacity' == $type ) {
|
571 |
+
|
572 |
+
// Validate color
|
573 |
+
$input['color'] = ot_validate_setting( $input['color'], 'colorpicker', $field_id );
|
574 |
+
|
575 |
+
// Unset keys with empty values.
|
576 |
+
foreach( $input as $key => $value ) {
|
577 |
+
if ( empty( $value ) ) {
|
578 |
+
unset( $input[$key] );
|
579 |
+
}
|
580 |
+
}
|
581 |
|
582 |
+
// Set empty array to empty string.
|
583 |
+
if ( empty( $input ) ) {
|
584 |
+
$input = '';
|
585 |
}
|
586 |
|
587 |
+
} else if ( in_array( $type, array( 'css', 'javascript', 'text', 'textarea', 'textarea-simple' ) ) ) {
|
588 |
|
589 |
if ( ! current_user_can( 'unfiltered_html' ) && OT_ALLOW_UNFILTERED_HTML == false ) {
|
590 |
|
591 |
$input = wp_kses_post( $input );
|
592 |
|
593 |
}
|
594 |
+
|
595 |
+
} else if ( 'dimension' == $type ) {
|
596 |
+
|
597 |
+
// Loop over array and set error keys or unset key from array.
|
598 |
+
foreach( $input as $key => $value ) {
|
599 |
+
if ( ! empty( $value ) && ! is_numeric( $value ) && $key !== 'unit' ) {
|
600 |
+
$errors[] = $key;
|
601 |
+
}
|
602 |
+
if ( empty( $value ) ) {
|
603 |
+
unset( $input[$key] );
|
604 |
+
}
|
605 |
+
}
|
606 |
+
|
607 |
+
/* return 0 & set error */
|
608 |
+
if ( isset( $errors ) ) {
|
609 |
+
|
610 |
+
foreach( $errors as $error ) {
|
611 |
+
|
612 |
+
$input[$error] = '0';
|
613 |
+
|
614 |
+
add_settings_error( 'option-tree', 'invalid_dimension_' . $error, sprintf( __( 'The %s input field for %s only allows numeric values.', 'option-tree' ), '<code>' . $error . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
|
615 |
+
|
616 |
+
}
|
617 |
+
|
618 |
+
}
|
619 |
+
|
620 |
+
if ( empty( $input ) ) {
|
621 |
+
$input = '';
|
622 |
+
}
|
623 |
+
|
624 |
+
} else if ( 'google-fonts' == $type ) {
|
625 |
+
|
626 |
+
unset($input['%key%']);
|
627 |
+
|
628 |
+
// Loop over array and check for values
|
629 |
+
if ( is_array( $input ) && ! empty( $input ) ) {
|
630 |
+
$input = array_values( $input );
|
631 |
+
}
|
632 |
+
|
633 |
+
// No value; set to empty
|
634 |
+
if ( empty( $input ) ) {
|
635 |
+
$input = '';
|
636 |
+
}
|
637 |
+
|
638 |
+
} else if ( 'link-color' == $type ) {
|
639 |
+
|
640 |
+
// Loop over array and check for values
|
641 |
+
if ( is_array( $input ) && ! empty( $input ) ) {
|
642 |
+
foreach( $input as $key => $value ) {
|
643 |
+
if ( ! empty( $value ) ) {
|
644 |
+
$input[$key] = ot_validate_setting( $input[$key], 'colorpicker', $field_id . '-' . $key );
|
645 |
+
$has_value = true;
|
646 |
+
}
|
647 |
+
}
|
648 |
+
}
|
649 |
+
|
650 |
+
// No value; set to empty
|
651 |
+
if ( ! isset( $has_value ) ) {
|
652 |
+
$input = '';
|
653 |
+
}
|
654 |
+
|
655 |
} else if ( 'measurement' == $type ) {
|
656 |
|
657 |
$input[0] = sanitize_text_field( $input[0] );
|
661 |
$input = '';
|
662 |
}
|
663 |
|
664 |
+
} else if ( 'spacing' == $type ) {
|
665 |
+
|
666 |
+
// Loop over array and set error keys or unset key from array.
|
667 |
+
foreach( $input as $key => $value ) {
|
668 |
+
if ( ! empty( $value ) && ! is_numeric( $value ) && $key !== 'unit' ) {
|
669 |
+
$errors[] = $key;
|
670 |
+
}
|
671 |
+
if ( empty( $value ) ) {
|
672 |
+
unset( $input[$key] );
|
673 |
+
}
|
674 |
+
}
|
675 |
+
|
676 |
+
/* return 0 & set error */
|
677 |
+
if ( isset( $errors ) ) {
|
678 |
+
|
679 |
+
foreach( $errors as $error ) {
|
680 |
+
|
681 |
+
$input[$error] = '0';
|
682 |
+
|
683 |
+
add_settings_error( 'option-tree', 'invalid_spacing_' . $error, sprintf( __( 'The %s input field for %s only allows numeric values.', 'option-tree' ), '<code>' . $error . '</code>', '<code>' . $field_id . '</code>' ), 'error' );
|
684 |
+
|
685 |
+
}
|
686 |
+
|
687 |
+
}
|
688 |
+
|
689 |
+
if ( empty( $input ) ) {
|
690 |
+
$input = '';
|
691 |
+
}
|
692 |
+
|
693 |
} else if ( 'typography' == $type && isset( $input['font-color'] ) ) {
|
694 |
|
695 |
$input['font-color'] = ot_validate_setting( $input['font-color'], 'colorpicker', $field_id );
|
708 |
|
709 |
} else if ( 'upload' == $type ) {
|
710 |
|
711 |
+
$input = esc_url_raw( $input );
|
712 |
|
713 |
} else if ( 'gallery' == $type ) {
|
714 |
|
771 |
/* Remove styles added by the Easy Digital Downloads plugin */
|
772 |
if ( isset( $post->post_type ) && $post->post_type == 'post' )
|
773 |
wp_dequeue_style( 'jquery-ui-css' );
|
774 |
+
|
775 |
+
/**
|
776 |
+
* Filter the screen IDs used to dequeue `jquery-ui-css`.
|
777 |
+
*
|
778 |
+
* @since 2.5.0
|
779 |
+
*
|
780 |
+
* @param array $screen_ids An array of screen IDs.
|
781 |
+
*/
|
782 |
+
$screen_ids = apply_filters( 'ot_dequeue_jquery_ui_css_screen_ids', array(
|
783 |
+
'toplevel_page_ot-settings',
|
784 |
+
'optiontree_page_ot-documentation',
|
785 |
+
'appearance_page_ot-theme-options'
|
786 |
+
) );
|
787 |
+
|
788 |
+
/* Remove styles added by the WP Review plugin and any custom pages added through filtering */
|
789 |
+
if ( in_array( get_current_screen()->id, $screen_ids ) ) {
|
790 |
+
wp_dequeue_style( 'plugin_name-admin-ui-css' );
|
791 |
+
wp_dequeue_style( 'jquery-ui-css' );
|
792 |
+
}
|
793 |
|
794 |
/* execute styles after actions */
|
795 |
do_action( 'ot_admin_styles_after' );
|
835 |
wp_enqueue_script( 'wp-color-picker' );
|
836 |
|
837 |
/* Load Ace Editor for CSS Editing */
|
838 |
+
wp_enqueue_script( 'ace-editor', 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.1.3/ace.js', null, '1.1.3' );
|
839 |
|
840 |
/* load jQuery UI timepicker addon */
|
841 |
wp_enqueue_script( 'jquery-ui-timepicker', OT_URL . 'assets/js/vendor/jquery/jquery-ui-timepicker.js', array( 'jquery', 'jquery-ui-slider', 'jquery-ui-datepicker' ), '1.4.3' );
|
842 |
|
843 |
/* load all the required scripts */
|
844 |
wp_enqueue_script( 'ot-admin-js', OT_URL . 'assets/js/ot-admin.js', array( 'jquery', 'jquery-ui-tabs', 'jquery-ui-sortable', 'jquery-ui-slider', 'wp-color-picker', 'ace-editor', 'jquery-ui-datepicker', 'jquery-ui-timepicker' ), OT_VERSION );
|
845 |
+
|
846 |
/* create localized JS array */
|
847 |
$localized_array = array(
|
848 |
'ajax' => admin_url( 'admin-ajax.php' ),
|
927 |
|
928 |
function ot_create_media_post() {
|
929 |
|
930 |
+
$regsiter_post_type = 'register_' . 'post_type';
|
931 |
+
$regsiter_post_type( 'option-tree', array(
|
932 |
'labels' => array( 'name' => __( 'Option Tree', 'option-tree' ) ),
|
933 |
'public' => false,
|
934 |
'show_ui' => false,
|
1014 |
|
1015 |
/* textarea rows */
|
1016 |
$rows = '';
|
1017 |
+
if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'javascript', 'textarea' ) ) ) {
|
1018 |
if ( (int) $setting->item_options > 0 ) {
|
1019 |
$rows = (int) $setting->item_options;
|
1020 |
} else {
|
1507 |
|
1508 |
/* textarea rows */
|
1509 |
$rows = '';
|
1510 |
+
if ( in_array( $settings['settings'][$settings_count]['type'], array( 'css', 'javascript', 'textarea' ) ) ) {
|
1511 |
if ( (int) $value->item_options > 0 ) {
|
1512 |
$rows = (int) $value->item_options;
|
1513 |
} else {
|
1794 |
/**
|
1795 |
* Initialize the custom theme options.
|
1796 |
*/
|
1797 |
+
add_action( 'init', 'custom_theme_options' );
|
1798 |
|
1799 |
/**
|
1800 |
* Build the custom settings & update OptionTree.
|
1801 |
*/
|
1802 |
function custom_theme_options() {
|
1803 |
|
1804 |
+
/* OptionTree is not loaded yet, or this is not an admin request */
|
1805 |
+
if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
|
1806 |
return false;
|
1807 |
|
1808 |
/**
|
2416 |
|
2417 |
return apply_filters( 'ot_option_types_array', array(
|
2418 |
'background' => __('Background', 'option-tree'),
|
2419 |
+
'border' => __('Border', 'option-tree'),
|
2420 |
+
'box-shadow' => __('Box Shadow', 'option-tree'),
|
2421 |
'category-checkbox' => __('Category Checkbox', 'option-tree'),
|
2422 |
'category-select' => __('Category Select', 'option-tree'),
|
2423 |
'checkbox' => __('Checkbox', 'option-tree'),
|
2424 |
+
'colorpicker' => __('Colorpicker', 'option-tree'),
|
2425 |
+
'colorpicker-opacity' => __('Colorpicker Opacity', 'option-tree'),
|
2426 |
'css' => __('CSS', 'option-tree'),
|
2427 |
'custom-post-type-checkbox' => __('Custom Post Type Checkbox', 'option-tree'),
|
2428 |
'custom-post-type-select' => __('Custom Post Type Select', 'option-tree'),
|
2429 |
'date-picker' => __('Date Picker', 'option-tree'),
|
2430 |
'date-time-picker' => __('Date Time Picker', 'option-tree'),
|
2431 |
+
'dimension' => __('Dimension', 'option-tree'),
|
2432 |
'gallery' => __('Gallery', 'option-tree'),
|
2433 |
+
'google-fonts' => __('Google Fonts', 'option-tree'),
|
2434 |
+
'javascript' => __('JavaScript', 'option-tree'),
|
2435 |
+
'link-color' => __('Link Color', 'option-tree'),
|
2436 |
'list-item' => __('List Item', 'option-tree'),
|
2437 |
'measurement' => __('Measurement', 'option-tree'),
|
2438 |
'numeric-slider' => __('Numeric Slider', 'option-tree'),
|
2447 |
'sidebar-select' => __('Sidebar Select', 'option-tree'),
|
2448 |
'slider' => __('Slider', 'option-tree'),
|
2449 |
'social-links' => __('Social Links', 'option-tree'),
|
2450 |
+
'spacing' => __('Spacing', 'option-tree'),
|
2451 |
'tab' => __('Tab', 'option-tree'),
|
2452 |
'tag-checkbox' => __('Tag Checkbox', 'option-tree'),
|
2453 |
'tag-select' => __('Tag Select', 'option-tree'),
|
2516 |
}
|
2517 |
}
|
2518 |
|
2519 |
+
/**
|
2520 |
+
* Filters the typography font-family to add Google fonts dynamically.
|
2521 |
+
*
|
2522 |
+
* @param array $families An array of all recognized font families.
|
2523 |
+
* @param string $field_id ID of the feild being filtered.
|
2524 |
+
* @return array
|
2525 |
+
*
|
2526 |
+
* @access public
|
2527 |
+
* @since 2.5.0
|
2528 |
+
*/
|
2529 |
+
function ot_google_font_stack( $families, $field_id ) {
|
2530 |
+
|
2531 |
+
$ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
|
2532 |
+
$ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
|
2533 |
+
|
2534 |
+
if ( ! empty( $ot_set_google_fonts ) ) {
|
2535 |
+
foreach( $ot_set_google_fonts as $id => $sets ) {
|
2536 |
+
foreach( $sets as $value ) {
|
2537 |
+
$family = isset( $value['family'] ) ? $value['family'] : '';
|
2538 |
+
if ( $family && isset( $ot_google_fonts[$family] ) ) {
|
2539 |
+
$spaces = explode(' ', $ot_google_fonts[$family]['family'] );
|
2540 |
+
$font_stack = count( $spaces ) > 1 ? '"' . $ot_google_fonts[$family]['family'] . '"': $ot_google_fonts[$family]['family'];
|
2541 |
+
$families[$family] = apply_filters( 'ot_google_font_stack', $font_stack, $family, $field_id );
|
2542 |
+
}
|
2543 |
+
}
|
2544 |
+
}
|
2545 |
+
}
|
2546 |
+
|
2547 |
+
return $families;
|
2548 |
+
}
|
2549 |
+
add_filter( 'ot_recognized_font_families', 'ot_google_font_stack', 1, 2 );
|
2550 |
+
|
2551 |
/**
|
2552 |
* Recognized font families
|
2553 |
*
|
2567 |
if ( ! function_exists( 'ot_recognized_font_families' ) ) {
|
2568 |
|
2569 |
function ot_recognized_font_families( $field_id = '' ) {
|
2570 |
+
|
2571 |
+
$families = array(
|
2572 |
'arial' => 'Arial',
|
2573 |
'georgia' => 'Georgia',
|
2574 |
'helvetica' => 'Helvetica',
|
2577 |
'times' => '"Times New Roman", sans-serif',
|
2578 |
'trebuchet' => 'Trebuchet',
|
2579 |
'verdana' => 'Verdana'
|
2580 |
+
);
|
2581 |
+
|
2582 |
+
return apply_filters( 'ot_recognized_font_families', $families, $field_id );
|
2583 |
|
2584 |
}
|
2585 |
|
2936 |
|
2937 |
}
|
2938 |
|
2939 |
+
/**
|
2940 |
+
* Border Styles
|
2941 |
+
*
|
2942 |
+
* Returns an array of all available style types.
|
2943 |
+
*
|
2944 |
+
* @uses apply_filters()
|
2945 |
+
*
|
2946 |
+
* @return array
|
2947 |
+
*
|
2948 |
+
* @access public
|
2949 |
+
* @since 2.5.0
|
2950 |
+
*/
|
2951 |
+
if ( ! function_exists( 'ot_recognized_border_style_types' ) ) {
|
2952 |
+
|
2953 |
+
function ot_recognized_border_style_types( $field_id = '' ) {
|
2954 |
+
|
2955 |
+
return apply_filters( 'ot_recognized_border_style_types', array(
|
2956 |
+
'hidden' => 'Hidden',
|
2957 |
+
'dashed' => 'Dashed',
|
2958 |
+
'solid' => 'Solid',
|
2959 |
+
'double' => 'Double',
|
2960 |
+
'groove' => 'Groove',
|
2961 |
+
'ridge' => 'Ridge',
|
2962 |
+
'inset' => 'Inset',
|
2963 |
+
'outset' => 'Outset',
|
2964 |
+
), $field_id );
|
2965 |
+
|
2966 |
+
}
|
2967 |
+
|
2968 |
+
}
|
2969 |
+
|
2970 |
+
/**
|
2971 |
+
* Border Units
|
2972 |
+
*
|
2973 |
+
* Returns an array of all available unit types.
|
2974 |
+
*
|
2975 |
+
* @uses apply_filters()
|
2976 |
+
*
|
2977 |
+
* @return array
|
2978 |
+
*
|
2979 |
+
* @access public
|
2980 |
+
* @since 2.5.0
|
2981 |
+
*/
|
2982 |
+
if ( ! function_exists( 'ot_recognized_border_unit_types' ) ) {
|
2983 |
+
|
2984 |
+
function ot_recognized_border_unit_types( $field_id = '' ) {
|
2985 |
+
|
2986 |
+
return apply_filters( 'ot_recognized_border_unit_types', array(
|
2987 |
+
'px' => 'px',
|
2988 |
+
'%' => '%',
|
2989 |
+
'em' => 'em',
|
2990 |
+
'pt' => 'pt'
|
2991 |
+
), $field_id );
|
2992 |
+
|
2993 |
+
}
|
2994 |
+
|
2995 |
+
}
|
2996 |
+
|
2997 |
+
/**
|
2998 |
+
* Dimension Units
|
2999 |
+
*
|
3000 |
+
* Returns an array of all available unit types.
|
3001 |
+
*
|
3002 |
+
* @uses apply_filters()
|
3003 |
+
*
|
3004 |
+
* @return array
|
3005 |
+
*
|
3006 |
+
* @access public
|
3007 |
+
* @since 2.5.0
|
3008 |
+
*/
|
3009 |
+
if ( ! function_exists( 'ot_recognized_dimension_unit_types' ) ) {
|
3010 |
+
|
3011 |
+
function ot_recognized_dimension_unit_types( $field_id = '' ) {
|
3012 |
+
|
3013 |
+
return apply_filters( 'ot_recognized_dimension_unit_types', array(
|
3014 |
+
'px' => 'px',
|
3015 |
+
'%' => '%',
|
3016 |
+
'em' => 'em',
|
3017 |
+
'pt' => 'pt'
|
3018 |
+
), $field_id );
|
3019 |
+
|
3020 |
+
}
|
3021 |
+
|
3022 |
+
}
|
3023 |
+
|
3024 |
+
/**
|
3025 |
+
* Spacing Units
|
3026 |
+
*
|
3027 |
+
* Returns an array of all available unit types.
|
3028 |
+
*
|
3029 |
+
* @uses apply_filters()
|
3030 |
+
*
|
3031 |
+
* @return array
|
3032 |
+
*
|
3033 |
+
* @access public
|
3034 |
+
* @since 2.5.0
|
3035 |
+
*/
|
3036 |
+
if ( ! function_exists( 'ot_recognized_spacing_unit_types' ) ) {
|
3037 |
+
|
3038 |
+
function ot_recognized_spacing_unit_types( $field_id = '' ) {
|
3039 |
+
|
3040 |
+
return apply_filters( 'ot_recognized_spacing_unit_types', array(
|
3041 |
+
'px' => 'px',
|
3042 |
+
'%' => '%',
|
3043 |
+
'em' => 'em',
|
3044 |
+
'pt' => 'pt'
|
3045 |
+
), $field_id );
|
3046 |
+
|
3047 |
+
}
|
3048 |
+
|
3049 |
+
}
|
3050 |
+
|
3051 |
+
/**
|
3052 |
+
* Recognized Google font families
|
3053 |
+
*
|
3054 |
+
* @uses apply_filters()
|
3055 |
+
*
|
3056 |
+
* @return array
|
3057 |
+
*
|
3058 |
+
* @access public
|
3059 |
+
* @since 2.5.0
|
3060 |
+
*/
|
3061 |
+
if ( ! function_exists( 'ot_recognized_google_font_families' ) ) {
|
3062 |
+
|
3063 |
+
function ot_recognized_google_font_families( $field_id ) {
|
3064 |
+
|
3065 |
+
$families = array();
|
3066 |
+
$ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
|
3067 |
+
|
3068 |
+
foreach( (array) $ot_google_fonts as $key => $item ) {
|
3069 |
+
|
3070 |
+
if ( isset( $item['family'] ) ) {
|
3071 |
+
|
3072 |
+
$families[ $key ] = $item['family'];
|
3073 |
+
|
3074 |
+
}
|
3075 |
+
|
3076 |
+
}
|
3077 |
+
|
3078 |
+
return apply_filters( 'ot_recognized_google_font_families', $families, $field_id );
|
3079 |
+
|
3080 |
+
}
|
3081 |
+
|
3082 |
+
}
|
3083 |
+
|
3084 |
+
/**
|
3085 |
+
* Recognized Google font variants
|
3086 |
+
*
|
3087 |
+
* @uses apply_filters()
|
3088 |
+
*
|
3089 |
+
* @return array
|
3090 |
+
*
|
3091 |
+
* @access public
|
3092 |
+
* @since 2.5.0
|
3093 |
+
*/
|
3094 |
+
if ( ! function_exists( 'ot_recognized_google_font_variants' ) ) {
|
3095 |
+
|
3096 |
+
function ot_recognized_google_font_variants( $field_id, $family ) {
|
3097 |
+
|
3098 |
+
$variants = array();
|
3099 |
+
$ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
|
3100 |
+
|
3101 |
+
if ( isset( $ot_google_fonts[ $family ]['variants'] ) ) {
|
3102 |
+
|
3103 |
+
$variants = $ot_google_fonts[ $family ]['variants'];
|
3104 |
+
|
3105 |
+
}
|
3106 |
+
|
3107 |
+
return apply_filters( 'ot_recognized_google_font_variants', $variants, $field_id, $family );
|
3108 |
+
|
3109 |
+
}
|
3110 |
+
|
3111 |
+
}
|
3112 |
+
|
3113 |
+
/**
|
3114 |
+
* Recognized Google font subsets
|
3115 |
+
*
|
3116 |
+
* @uses apply_filters()
|
3117 |
+
*
|
3118 |
+
* @return array
|
3119 |
+
*
|
3120 |
+
* @access public
|
3121 |
+
* @since 2.5.0
|
3122 |
+
*/
|
3123 |
+
if ( ! function_exists( 'ot_recognized_google_font_subsets' ) ) {
|
3124 |
+
|
3125 |
+
function ot_recognized_google_font_subsets( $field_id, $family ) {
|
3126 |
+
|
3127 |
+
$subsets = array();
|
3128 |
+
$ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
|
3129 |
+
|
3130 |
+
if ( isset( $ot_google_fonts[ $family ]['subsets'] ) ) {
|
3131 |
+
|
3132 |
+
$subsets = $ot_google_fonts[ $family ]['subsets'];
|
3133 |
+
|
3134 |
+
}
|
3135 |
+
|
3136 |
+
return apply_filters( 'ot_recognized_google_font_subsets', $subsets, $field_id, $family );
|
3137 |
+
|
3138 |
+
}
|
3139 |
+
|
3140 |
+
}
|
3141 |
+
|
3142 |
/**
|
3143 |
* Measurement Units
|
3144 |
*
|
3432 |
|
3433 |
/* path to the dynamic.css file */
|
3434 |
$filepath = get_stylesheet_directory() . '/dynamic.css';
|
3435 |
+
if ( is_multisite() ) {
|
3436 |
+
$multisite_filepath = get_stylesheet_directory() . '/dynamic-' . get_current_blog_id() . '.css';
|
3437 |
+
if ( file_exists( $multisite_filepath ) ) {
|
3438 |
+
$filepath = $multisite_filepath;
|
3439 |
+
}
|
3440 |
+
}
|
3441 |
|
3442 |
/* allow filter on path */
|
3443 |
$filepath = apply_filters( 'css_option_file_path', $filepath, $field_id );
|
3444 |
+
|
3445 |
/* grab a copy of the paths array */
|
3446 |
$ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
|
3447 |
+
if ( is_multisite() ) {
|
3448 |
+
$ot_css_file_paths = get_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
|
3449 |
+
}
|
3450 |
+
|
3451 |
/* set the path for this field */
|
3452 |
$ot_css_file_paths[$field_id] = $filepath;
|
3453 |
+
|
3454 |
/* update the paths */
|
3455 |
+
if ( is_multisite() ) {
|
3456 |
+
update_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
|
3457 |
+
} else {
|
3458 |
+
update_option( 'ot_css_file_paths', $ot_css_file_paths );
|
3459 |
+
}
|
3460 |
+
|
3461 |
/* insert CSS into file */
|
3462 |
if ( file_exists( $filepath ) ) {
|
3463 |
|
3503 |
|
3504 |
/* set $value with measurement properties */
|
3505 |
$value = $value[0].$value[1];
|
3506 |
+
|
3507 |
+
/* Colorpicker Opacity */
|
3508 |
+
} else if ( isset( $value['color'] ) && isset( $value['opacity'] ) ) {
|
3509 |
+
|
3510 |
+
/* get the RGB color value */
|
3511 |
+
$color = ot_hex2RGB( $value['color'] );
|
3512 |
+
|
3513 |
+
if ( is_array( $color ) ) {
|
3514 |
+
$value = 'rgba(' . $color['r'] . ', ' . $color['g'] . ', ' . $color['b'] . ', ' . $value['opacity'] . ')';
|
3515 |
+
} else if ( $color == $value['color'] ) {
|
3516 |
+
$value = $value['color'];
|
3517 |
+
}
|
3518 |
+
|
3519 |
+
/* Border */
|
3520 |
+
} else if ( ot_array_keys_exists( $value, array( 'width', 'unit', 'style', 'color' ) ) && ! ot_array_keys_exists( $value, array( 'top', 'right', 'bottom', 'left', 'height', 'inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius' ) ) ) {
|
3521 |
+
$border = array();
|
3522 |
+
|
3523 |
+
$unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
|
3524 |
+
|
3525 |
+
if ( ! empty( $value['width'] ) )
|
3526 |
+
$border[] = $value['width'].$unit;
|
3527 |
+
|
3528 |
+
if ( ! empty( $value['style'] ) )
|
3529 |
+
$border[] = $value['style'];
|
3530 |
+
|
3531 |
+
if ( ! empty( $value['color'] ) )
|
3532 |
+
$border[] = $value['color'];
|
3533 |
+
|
3534 |
+
/* set $value with border properties or empty string */
|
3535 |
+
$value = ! empty( $border ) ? implode( ' ', $border ) : '';
|
3536 |
+
|
3537 |
+
/* Box Shadow */
|
3538 |
+
} else if ( ot_array_keys_exists( $value, array( 'inset', 'offset-x', 'offset-y', 'blur-radius', 'spread-radius', 'color' ) ) && ! ot_array_keys_exists( $value, array( 'width', 'height', 'unit', 'style', 'top', 'right', 'bottom', 'left' ) ) ) {
|
3539 |
+
|
3540 |
+
/* set $value with box-shadow properties or empty string */
|
3541 |
+
$value = ! empty( $value ) ? implode( ' ', $value ) : '';
|
3542 |
+
|
3543 |
+
/* Dimension */
|
3544 |
+
} else if ( ot_array_keys_exists( $value, array( 'width', 'height', 'unit' ) ) && ! ot_array_keys_exists( $value, array( 'style', 'color', 'top', 'right', 'bottom', 'left' ) ) ) {
|
3545 |
+
$dimension = array();
|
3546 |
+
|
3547 |
+
$unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
|
3548 |
+
|
3549 |
+
if ( ! empty( $value['width'] ) )
|
3550 |
+
$dimension[] = $value['width'].$unit;
|
3551 |
+
|
3552 |
+
if ( ! empty( $value['height'] ) )
|
3553 |
+
$dimension[] = $value['height'].$unit;
|
3554 |
+
|
3555 |
+
/* set $value with dimension properties or empty string */
|
3556 |
+
$value = ! empty( $dimension ) ? implode( ' ', $dimension ) : '';
|
3557 |
+
|
3558 |
+
/* Spacing */
|
3559 |
+
} else if ( ot_array_keys_exists( $value, array( 'top', 'right', 'bottom', 'left', 'unit' ) ) && ! ot_array_keys_exists( $value, array( 'width', 'height', 'style', 'color' ) ) ) {
|
3560 |
+
$spacing = array();
|
3561 |
+
|
3562 |
+
$unit = ! empty( $value['unit'] ) ? $value['unit'] : 'px';
|
3563 |
+
|
3564 |
+
if ( ! empty( $value['top'] ) )
|
3565 |
+
$spacing[] = $value['top'].$unit;
|
3566 |
+
|
3567 |
+
if ( ! empty( $value['right'] ) )
|
3568 |
+
$spacing[] = $value['right'].$unit;
|
3569 |
+
|
3570 |
+
if ( ! empty( $value['bottom'] ) )
|
3571 |
+
$spacing[] = $value['bottom'].$unit;
|
3572 |
+
|
3573 |
+
if ( ! empty( $value['left'] ) )
|
3574 |
+
$spacing[] = $value['left'].$unit;
|
3575 |
+
|
3576 |
+
/* set $value with spacing properties or empty string */
|
3577 |
+
$value = ! empty( $spacing ) ? implode( ' ', $spacing ) : '';
|
3578 |
|
3579 |
/* typography */
|
3580 |
} else if ( ot_array_keys_exists( $value, array( 'font-color', 'font-family', 'font-size', 'font-style', 'font-variant', 'font-weight', 'letter-spacing', 'line-height', 'text-decoration', 'text-transform' ) ) ) {
|
4023 |
$std = maybe_serialize( $std );
|
4024 |
}
|
4025 |
|
4026 |
+
if ( in_array( $type, array( 'css', 'javascript', 'textarea', 'textarea-simple' ) ) ) {
|
4027 |
$std_form_element = '<textarea class="textarea" rows="10" cols="40" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]">' . esc_html( $std ) . '</textarea>';
|
4028 |
} else {
|
4029 |
$std_form_element = '<input type="text" name="' . esc_attr( $name ) . '[' . esc_attr( $key ) . '][std]" value="' . esc_attr( $std ) . '" class="widefat option-tree-ui-input" autocomplete="off" />';
|
5085 |
|
5086 |
}
|
5087 |
|
5088 |
+
/**
|
5089 |
+
* Helper function to set the Google fonts array.
|
5090 |
+
*
|
5091 |
+
* @param string $id The option ID.
|
5092 |
+
* @param bool $value The option value
|
5093 |
+
* @return void
|
5094 |
+
*
|
5095 |
+
* @access public
|
5096 |
+
* @since 2.5.0
|
5097 |
+
*/
|
5098 |
+
function ot_set_google_fonts( $id = '', $value = '' ) {
|
5099 |
+
|
5100 |
+
$ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
|
5101 |
+
|
5102 |
+
if ( is_array( $value ) && ! empty( $value ) ) {
|
5103 |
+
$ot_set_google_fonts[$id] = $value;
|
5104 |
+
} else if ( isset( $ot_set_google_fonts[$id] ) ) {
|
5105 |
+
unset( $ot_set_google_fonts[$id] );
|
5106 |
+
}
|
5107 |
+
|
5108 |
+
set_theme_mod( 'ot_set_google_fonts', $ot_set_google_fonts );
|
5109 |
+
|
5110 |
+
}
|
5111 |
+
|
5112 |
+
/**
|
5113 |
+
* Helper function to remove unused options from the Google fonts array.
|
5114 |
+
*
|
5115 |
+
* @param array $options The array of saved options.
|
5116 |
+
* @return array
|
5117 |
+
*
|
5118 |
+
* @access public
|
5119 |
+
* @since 2.5.0
|
5120 |
+
*/
|
5121 |
+
function ot_update_google_fonts_after_save( $options ) {
|
5122 |
+
|
5123 |
+
$ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
|
5124 |
+
|
5125 |
+
foreach( $ot_set_google_fonts as $key => $set ) {
|
5126 |
+
if ( ! isset( $options[$key] ) ) {
|
5127 |
+
unset( $ot_set_google_fonts[$key] );
|
5128 |
+
}
|
5129 |
+
}
|
5130 |
+
set_theme_mod( 'ot_set_google_fonts', $ot_set_google_fonts );
|
5131 |
+
|
5132 |
+
}
|
5133 |
+
add_action( 'ot_after_theme_options_save', 'ot_update_google_fonts_after_save', 1 );
|
5134 |
+
|
5135 |
+
/**
|
5136 |
+
* Helper function to fetch the Google fonts array.
|
5137 |
+
*
|
5138 |
+
* @param bool $normalize Whether or not to return a normalized array.
|
5139 |
+
* @return array
|
5140 |
+
*
|
5141 |
+
* @access public
|
5142 |
+
* @since 2.5.0
|
5143 |
+
*/
|
5144 |
+
function ot_fetch_google_fonts( $normalize = true ) {
|
5145 |
+
|
5146 |
+
/* Google Fonts cache key */
|
5147 |
+
$ot_google_fonts_cache_key = apply_filters( 'ot_google_fonts_cache_key', 'ot_google_fonts_cache' );
|
5148 |
+
|
5149 |
+
/* get the fonts from cache */
|
5150 |
+
$ot_google_fonts = apply_filters( 'ot_google_fonts_cache', get_transient( $ot_google_fonts_cache_key ) );
|
5151 |
+
|
5152 |
+
if ( ! is_array( $ot_google_fonts ) || empty( $ot_google_fonts ) ) {
|
5153 |
+
|
5154 |
+
$ot_google_fonts = array();
|
5155 |
+
|
5156 |
+
/* API url and key */
|
5157 |
+
$ot_google_fonts_api_url = apply_filters( 'ot_google_fonts_api_url', 'https://www.googleapis.com/webfonts/v1/webfonts' );
|
5158 |
+
$ot_google_fonts_api_key = apply_filters( 'ot_google_fonts_api_key', 'AIzaSyB8G-4UtQr9fhDYTiNrDP40Y5GYQQKrNWI' );
|
5159 |
+
|
5160 |
+
/* API arguments */
|
5161 |
+
$ot_google_fonts_fields = apply_filters( 'ot_google_fonts_fields', array( 'family', 'variants', 'subsets' ) );
|
5162 |
+
$ot_google_fonts_sort = apply_filters( 'ot_google_fonts_sort', 'alpha' );
|
5163 |
+
|
5164 |
+
/* Initiate API request */
|
5165 |
+
$ot_google_fonts_query_args = array(
|
5166 |
+
'key' => $ot_google_fonts_api_key,
|
5167 |
+
'fields' => 'items(' . implode( ',', $ot_google_fonts_fields ) . ')',
|
5168 |
+
'sort' => $ot_google_fonts_sort
|
5169 |
+
);
|
5170 |
+
|
5171 |
+
/* Build and make the request */
|
5172 |
+
$ot_google_fonts_query = add_query_arg( $ot_google_fonts_query_args, $ot_google_fonts_api_url );
|
5173 |
+
$ot_google_fonts_response = wp_safe_remote_get( $ot_google_fonts_query, array( 'sslverify' => false, 'timeout' => 15 ) );
|
5174 |
+
|
5175 |
+
/* continue if we got a valid response */
|
5176 |
+
if ( 200 == wp_remote_retrieve_response_code( $ot_google_fonts_response ) ) {
|
5177 |
+
|
5178 |
+
if ( $response_body = wp_remote_retrieve_body( $ot_google_fonts_response ) ) {
|
5179 |
+
|
5180 |
+
/* JSON decode the response body and cache the result */
|
5181 |
+
$ot_google_fonts_data = json_decode( trim( $response_body ), true );
|
5182 |
+
|
5183 |
+
if ( is_array( $ot_google_fonts_data ) && isset( $ot_google_fonts_data['items'] ) ) {
|
5184 |
+
|
5185 |
+
$ot_google_fonts = $ot_google_fonts_data['items'];
|
5186 |
+
|
5187 |
+
// Normalize the array key
|
5188 |
+
$ot_google_fonts_tmp = array();
|
5189 |
+
foreach( $ot_google_fonts as $key => $value ) {
|
5190 |
+
$id = remove_accents( $value['family'] );
|
5191 |
+
$id = strtolower( $id );
|
5192 |
+
$id = preg_replace( '/[^a-z0-9_\-]/', '', $id );
|
5193 |
+
$ot_google_fonts_tmp[$id] = $value;
|
5194 |
+
}
|
5195 |
+
|
5196 |
+
$ot_google_fonts = $ot_google_fonts_tmp;
|
5197 |
+
set_theme_mod( 'ot_google_fonts', $ot_google_fonts );
|
5198 |
+
set_transient( $ot_google_fonts_cache_key, $ot_google_fonts, WEEK_IN_SECONDS );
|
5199 |
+
|
5200 |
+
}
|
5201 |
+
|
5202 |
+
}
|
5203 |
+
|
5204 |
+
}
|
5205 |
+
|
5206 |
+
}
|
5207 |
+
|
5208 |
+
return $normalize ? ot_normalize_google_fonts( $ot_google_fonts ) : $ot_google_fonts;
|
5209 |
+
|
5210 |
+
}
|
5211 |
+
|
5212 |
+
/**
|
5213 |
+
* Helper function to normalize the Google fonts array.
|
5214 |
+
*
|
5215 |
+
* @param array $google_fonts An array of fonts to nrmalize.
|
5216 |
+
* @return array
|
5217 |
+
*
|
5218 |
+
* @access public
|
5219 |
+
* @since 2.5.0
|
5220 |
+
*/
|
5221 |
+
function ot_normalize_google_fonts( $google_fonts ) {
|
5222 |
+
|
5223 |
+
$ot_normalized_google_fonts = array();
|
5224 |
+
|
5225 |
+
if ( is_array( $google_fonts ) && ! empty( $google_fonts ) ) {
|
5226 |
+
|
5227 |
+
foreach( $google_fonts as $google_font ) {
|
5228 |
+
|
5229 |
+
if( isset( $google_font['family'] ) ) {
|
5230 |
+
|
5231 |
+
$id = str_replace( ' ', '+', $google_font['family'] );
|
5232 |
+
|
5233 |
+
$ot_normalized_google_fonts[ $id ] = array(
|
5234 |
+
'family' => $google_font['family']
|
5235 |
+
);
|
5236 |
+
|
5237 |
+
if( isset( $google_font['variants'] ) ) {
|
5238 |
+
|
5239 |
+
$ot_normalized_google_fonts[ $id ]['variants'] = $google_font['variants'];
|
5240 |
+
|
5241 |
+
}
|
5242 |
+
|
5243 |
+
if( isset( $google_font['subsets'] ) ) {
|
5244 |
+
|
5245 |
+
$ot_normalized_google_fonts[ $id ]['subsets'] = $google_font['subsets'];
|
5246 |
+
|
5247 |
+
}
|
5248 |
+
|
5249 |
+
}
|
5250 |
+
|
5251 |
+
}
|
5252 |
+
|
5253 |
+
}
|
5254 |
+
|
5255 |
+
return $ot_normalized_google_fonts;
|
5256 |
+
|
5257 |
+
}
|
5258 |
+
|
5259 |
/**
|
5260 |
* Helper function to register a WPML string
|
5261 |
*
|
5648 |
|
5649 |
}
|
5650 |
|
5651 |
+
/**
|
5652 |
+
* Converts Hexidecimal values to RGB.
|
5653 |
+
*
|
5654 |
+
* @param string $hex The hexidecimal color value.
|
5655 |
+
* @return mixed Returns an array with RGB values or the original hex color on failure.
|
5656 |
+
*
|
5657 |
+
* @access public
|
5658 |
+
* @since 2.5.0
|
5659 |
+
*/
|
5660 |
+
if ( ! function_exists( 'ot_hex2RGB' ) ) {
|
5661 |
+
|
5662 |
+
function ot_hex2RGB( $hex ) {
|
5663 |
+
preg_match( "/^#{0,1}([0-9a-f]{1,6})$/i", $hex, $match );
|
5664 |
+
|
5665 |
+
if ( ! isset( $match[1] ) ) {
|
5666 |
+
return $hex;
|
5667 |
+
}
|
5668 |
+
|
5669 |
+
if ( strlen( $match[1] ) == 6 ) {
|
5670 |
+
list($r, $g, $b) = array( $hex[0].$hex[1], $hex[2].$hex[3], $hex[4].$hex[5] );
|
5671 |
+
} else if( strlen( $match[1] ) == 3 ) {
|
5672 |
+
list($r, $g, $b) = array( $hex[0].$hex[0], $hex[1].$hex[1], $hex[2].$hex[2] );
|
5673 |
+
} else if ( strlen($match[1]) == 2 ) {
|
5674 |
+
list($r, $g, $b) = array( $hex[0].$hex[1], $hex[0].$hex[1], $hex[0].$hex[1] );
|
5675 |
+
} else if ( strlen($match[1]) == 1 ) {
|
5676 |
+
list($r, $g, $b) = array( $hex.$hex, $hex.$hex, $hex.$hex );
|
5677 |
+
} else {
|
5678 |
+
return $hex;
|
5679 |
+
}
|
5680 |
+
|
5681 |
+
$color = array();
|
5682 |
+
$color['r'] = hexdec( $r );
|
5683 |
+
$color['g'] = hexdec( $g );
|
5684 |
+
$color['b'] = hexdec( $b );
|
5685 |
+
|
5686 |
+
return $color;
|
5687 |
+
}
|
5688 |
+
|
5689 |
+
}
|
5690 |
+
|
5691 |
/* End of file ot-functions-admin.php */
|
5692 |
+
/* Location: ./includes/ot-functions-admin.php */
|
includes/ot-functions-docs-page.php
CHANGED
@@ -110,6 +110,12 @@ if ( ! function_exists( 'ot_type_option_types' ) ) {
|
|
110 |
echo '<h4>'. __( 'Background', 'option-tree' ) . ':</h4>';
|
111 |
echo '<p>' . sprintf( __( 'The Background option type is for adding background styles to your theme either dynamically via the CSS option type below or manually with %s. The Background option type has filters that allow you to remove fields or change the defaults. For example, you can filter %s to remove unwanted fields from all Background options or an individual one. You can also filter %s. These filters allow you to fine tune the select lists for your specific needs.', 'option-tree' ), '<code>ot_get_option()</code>', '<code>ot_recognized_background_fields</code>', '<code>ot_recognized_background_repeat</code>, <code>ot_recognized_background_attachment</code>, <code>ot_recognized_background_position</code>, ' . __( 'and', 'option-tree' ) . ' <code>ot_type_background_size_choices</code>' ) . '</p>';
|
112 |
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
echo '<h4>'. __( 'Category Checkbox', 'option-tree' ) . ':</h4>';
|
114 |
echo '<p>' . __( 'The Category Checkbox option type displays a list of category IDs. It allows the user to check multiple category IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
|
115 |
|
@@ -122,6 +128,9 @@ if ( ! function_exists( 'ot_type_option_types' ) ) {
|
|
122 |
echo '<h4>'. __( 'Colorpicker', 'option-tree' ) . ':</h4>';
|
123 |
echo '<p>' . __( 'The Colorpicker option type saves a hexadecimal color code for use in CSS. Use it to modify the color of something in your theme.', 'option-tree' ) . '</p>';
|
124 |
|
|
|
|
|
|
|
125 |
echo '<h4>'. __( 'CSS', 'option-tree' ) . ':</h4>';
|
126 |
echo '<p>' . sprintf( __( 'The CSS option type is a textarea that when used properly can add dynamic CSS to your theme from within OptionTree. Unfortunately, due server limitations you will need to create a file named %s at the root level of your theme and change permissions using %s so the server can write to the file. I have had the most success setting this single file to %s but feel free to play around with permissions until everything is working. A good starting point is %s. When the server can save to the file, CSS will automatically be updated when you save your Theme Options.', 'option-tree' ), '<code>dynamic.css</code>', '<code>chmod</code>', '<code>0777</code>', '<code>0666</code>' ) . '</p>';
|
127 |
|
@@ -153,8 +162,20 @@ body {
|
|
153 |
echo '<h4>'. __( 'Date Time Picker', 'option-tree' ) . ':</h4>';
|
154 |
echo '<p>' . __( 'The Date Time Picker option type is tied to a standard form input field which displays a calendar pop-up that allow the user to pick any date and time when focus is given to the input field. The returned value is a date and time formatted string.', 'option-tree' ) . '</p>';
|
155 |
|
|
|
|
|
|
|
156 |
echo '<h4>'. __( 'Gallery', 'option-tree' ) . ':</h4>';
|
157 |
echo '<p>' . __( 'The Gallery option type saves a comma separated list of image attachment IDs. You will need to create a front-end function to display the images in your theme.', 'option-tree' ) . '</p>';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
158 |
|
159 |
echo '<h4>'. __( 'List Item', 'option-tree' ) . ':</h4>';
|
160 |
echo '<p>' . __( 'The List Item option type replaced the Slider option type and allows for a great deal of customization. You can add settings to the List Item and those settings will be displayed to the user when they add a new List Item. Typical use is for creating sliding content or blocks of code for custom layouts.', 'option-tree' ) . '</p>';
|
@@ -251,6 +272,9 @@ add_filter( \'ot_radio_images\', \'filter_radio_images\', 10, 2 );</code></pre>'
|
|
251 |
echo '<h4>'. __( 'Social Links', 'option-tree' ) . ':</h4>';
|
252 |
echo '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'option-tree' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>';
|
253 |
|
|
|
|
|
|
|
254 |
echo '<h4>'. __( 'Tab', 'option-tree' ) . ':</h4>';
|
255 |
echo '<p>' . __( 'The Tab option type will break a section or metabox into tabbed content.', 'option-tree' ) . '</p>';
|
256 |
|
@@ -836,12 +860,17 @@ require( trailingslashit( get_template_directory() ) . \'includes/theme-options.
|
|
836 |
echo "<pre><code>/**
|
837 |
* Initialize the options before anything else.
|
838 |
*/
|
839 |
-
add_action( '
|
840 |
|
841 |
/**
|
842 |
* Build the custom settings & update OptionTree.
|
843 |
*/
|
844 |
function custom_theme_options() {
|
|
|
|
|
|
|
|
|
|
|
845 |
/**
|
846 |
* Get a copy of the saved settings array.
|
847 |
*/
|
@@ -972,6 +1001,10 @@ function custom_theme_options() {
|
|
972 |
update_option( 'option_tree_settings', $custom_settings );
|
973 |
}
|
974 |
|
|
|
|
|
|
|
|
|
975 |
}
|
976 |
</code></pre>";
|
977 |
|
110 |
echo '<h4>'. __( 'Background', 'option-tree' ) . ':</h4>';
|
111 |
echo '<p>' . sprintf( __( 'The Background option type is for adding background styles to your theme either dynamically via the CSS option type below or manually with %s. The Background option type has filters that allow you to remove fields or change the defaults. For example, you can filter %s to remove unwanted fields from all Background options or an individual one. You can also filter %s. These filters allow you to fine tune the select lists for your specific needs.', 'option-tree' ), '<code>ot_get_option()</code>', '<code>ot_recognized_background_fields</code>', '<code>ot_recognized_background_repeat</code>, <code>ot_recognized_background_attachment</code>, <code>ot_recognized_background_position</code>, ' . __( 'and', 'option-tree' ) . ' <code>ot_type_background_size_choices</code>' ) . '</p>';
|
112 |
|
113 |
+
echo '<h4>'. __( 'Border', 'option-tree' ) . ':</h4>';
|
114 |
+
echo '<p>' . sprintf( __( 'The Border option type is used to set width, unit, style, and color values. The text input excepts a numerical value and the unit select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter. The style select lets you choose the border style. The default styles are %s, %s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s filter. The colorpicker saves a hexadecimal color code.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_border_unit_types</code>', '<code>hidden</code>', '<code>dashed</code>', '<code>solid</code>', '<code>double</code>', '<code>groove</code>', '<code>ridge</code>', '<code>inset</code>', '<code>outset</code>', '<code>ot_recognized_border_style_types</code>' ) . '</p>';
|
115 |
+
|
116 |
+
echo '<h4>'. __( 'Box Shadow', 'option-tree' ) . ':</h4>';
|
117 |
+
echo '<p>' . sprintf( __( 'The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values.', 'option-tree' ), '<code>inset</code>', '<code>offset-x</code>', '<code>offset-y</code>', '<code>blur-radius</code>', '<code>spread-radius</code>', '<code>color</code>' ) . '</p>';
|
118 |
+
|
119 |
echo '<h4>'. __( 'Category Checkbox', 'option-tree' ) . ':</h4>';
|
120 |
echo '<p>' . __( 'The Category Checkbox option type displays a list of category IDs. It allows the user to check multiple category IDs and will return that value as an array for use in a custom function or loop.', 'option-tree' ) . '</p>';
|
121 |
|
128 |
echo '<h4>'. __( 'Colorpicker', 'option-tree' ) . ':</h4>';
|
129 |
echo '<p>' . __( 'The Colorpicker option type saves a hexadecimal color code for use in CSS. Use it to modify the color of something in your theme.', 'option-tree' ) . '</p>';
|
130 |
|
131 |
+
echo '<h4>'. __( 'Colorpicker Opacity', 'option-tree' ) . ':</h4>';
|
132 |
+
echo '<p>' . sprintf( __( 'The Colorpicker Opacity option type saves a hexadecimal color code with an opacity value from %s to %s in increments of %s. Though the value is saved as hexadecimal, if used within the CSS option type the color and opacity values will be converted into a valid RGBA CSS value.', 'option-tree' ), '<code>0</code>', '<code>1</code>', '<code>0.01</code>' ) . '</p>';
|
133 |
+
|
134 |
echo '<h4>'. __( 'CSS', 'option-tree' ) . ':</h4>';
|
135 |
echo '<p>' . sprintf( __( 'The CSS option type is a textarea that when used properly can add dynamic CSS to your theme from within OptionTree. Unfortunately, due server limitations you will need to create a file named %s at the root level of your theme and change permissions using %s so the server can write to the file. I have had the most success setting this single file to %s but feel free to play around with permissions until everything is working. A good starting point is %s. When the server can save to the file, CSS will automatically be updated when you save your Theme Options.', 'option-tree' ), '<code>dynamic.css</code>', '<code>chmod</code>', '<code>0777</code>', '<code>0666</code>' ) . '</p>';
|
136 |
|
162 |
echo '<h4>'. __( 'Date Time Picker', 'option-tree' ) . ':</h4>';
|
163 |
echo '<p>' . __( 'The Date Time Picker option type is tied to a standard form input field which displays a calendar pop-up that allow the user to pick any date and time when focus is given to the input field. The returned value is a date and time formatted string.', 'option-tree' ) . '</p>';
|
164 |
|
165 |
+
echo '<h4>'. __( 'Dimension', 'option-tree' ) . ':</h4>';
|
166 |
+
echo '<p>' . sprintf( __( 'The Dimension option type is used to set width and height values. The text inputs except numerical values and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_dimension_unit_types</code>' ) . '</p>';
|
167 |
+
|
168 |
echo '<h4>'. __( 'Gallery', 'option-tree' ) . ':</h4>';
|
169 |
echo '<p>' . __( 'The Gallery option type saves a comma separated list of image attachment IDs. You will need to create a front-end function to display the images in your theme.', 'option-tree' ) . '</p>';
|
170 |
+
|
171 |
+
echo '<h4>'. __( 'Google Fonts', 'option-tree' ) . ':</h4>';
|
172 |
+
echo '<p>' . sprintf( __( 'The Google Fonts option type will dynamically enqueue any number of Google Web Fonts into the document %1$s. As well, once the option has been saved each font family will automatically be inserted into the %2$s array for the Typography option type. You can further modify the font stack by using the %3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s parameter is being passed from %7$s, so it will be the ID of a Typography option type. This will allow you to add additional web safe fonts to individual font families on an as-need basis.', 'option-tree' ), '<code>HEAD</code>', '<code>font-family</code>', '<code>ot_google_font_stack</code>', '<code>$font_stack</code>', '<code>$family</code>', '<code>$field_id</code>', '<code>ot_recognized_font_families</code>' ) . '</p>';
|
173 |
+
|
174 |
+
echo '<h4>'. __( 'JavaScript', 'option-tree' ) . ':</h4>';
|
175 |
+
echo '<p>' . sprintf( __( 'The JavaScript option type is a textarea that uses the %s code editor to highlight your JavaScript and display errors as you type.', 'option-tree' ), '<code>ace.js</code>' ) . '</p>';
|
176 |
+
|
177 |
+
echo '<h4>'. __( 'Link Color', 'option-tree' ) . ':</h4>';
|
178 |
+
echo '<p>' . __( 'The Link Color option type is used to set all link color states.', 'option-tree' ) . '</p>';
|
179 |
|
180 |
echo '<h4>'. __( 'List Item', 'option-tree' ) . ':</h4>';
|
181 |
echo '<p>' . __( 'The List Item option type replaced the Slider option type and allows for a great deal of customization. You can add settings to the List Item and those settings will be displayed to the user when they add a new List Item. Typical use is for creating sliding content or blocks of code for custom layouts.', 'option-tree' ) . '</p>';
|
272 |
echo '<h4>'. __( 'Social Links', 'option-tree' ) . ':</h4>';
|
273 |
echo '<p>' . sprintf( __( 'The Social Links option type utilizes a drag & drop interface to create a list of social links. There are a few filters that make extending this option type easy. You can set the %s filter to %s and turn off loading default values. Use the %s filter to change the default values that are loaded. To filter the settings array use the %s filter.', 'option-tree' ), '<code>ot_type_social_links_load_defaults</code>', '<code>false</code>', '<code>ot_type_social_links_defaults</code>', '<code>ot_social_links_settings</code>' ) . '</p>';
|
274 |
|
275 |
+
echo '<h4>'. __( 'Spacing', 'option-tree' ) . ':</h4>';
|
276 |
+
echo '<p>' . sprintf( __( 'The Spacing option type is used to set spacing values such as padding or margin in the form of top, right, bottom, and left. The text inputs except numerical values and the select lets you choose the unit of measurement to add to that value. Currently the default units are %s, %s, %s, and %s. However, you can change them with the %s filter.', 'option-tree' ), '<code>px</code>', '<code>%</code>', '<code>em</code>', '<code>pt</code>', '<code>ot_recognized_spacing_unit_types</code>' ) . '</p>';
|
277 |
+
|
278 |
echo '<h4>'. __( 'Tab', 'option-tree' ) . ':</h4>';
|
279 |
echo '<p>' . __( 'The Tab option type will break a section or metabox into tabbed content.', 'option-tree' ) . '</p>';
|
280 |
|
860 |
echo "<pre><code>/**
|
861 |
* Initialize the options before anything else.
|
862 |
*/
|
863 |
+
add_action( 'init', 'custom_theme_options', 1 );
|
864 |
|
865 |
/**
|
866 |
* Build the custom settings & update OptionTree.
|
867 |
*/
|
868 |
function custom_theme_options() {
|
869 |
+
|
870 |
+
/* OptionTree is not loaded yet, or this is not an admin request */
|
871 |
+
if ( ! function_exists( 'ot_settings_id' ) || ! is_admin() )
|
872 |
+
return false;
|
873 |
+
|
874 |
/**
|
875 |
* Get a copy of the saved settings array.
|
876 |
*/
|
1001 |
update_option( 'option_tree_settings', $custom_settings );
|
1002 |
}
|
1003 |
|
1004 |
+
/* Lets OptionTree know the UI Builder is being overridden */
|
1005 |
+
global $ot_has_custom_theme_options;
|
1006 |
+
$ot_has_custom_theme_options = true;
|
1007 |
+
|
1008 |
}
|
1009 |
</code></pre>";
|
1010 |
|
includes/ot-functions-option-types.php
CHANGED
@@ -270,6 +270,229 @@ if ( ! function_exists( 'ot_type_background' ) ) {
|
|
270 |
|
271 |
}
|
272 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
/**
|
274 |
* Category Checkbox option type.
|
275 |
*
|
@@ -480,6 +703,77 @@ if ( ! function_exists( 'ot_type_colorpicker' ) ) {
|
|
480 |
|
481 |
}
|
482 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
483 |
/**
|
484 |
* CSS option type.
|
485 |
*
|
@@ -664,7 +958,17 @@ if ( ! function_exists( 'ot_type_date_picker' ) ) {
|
|
664 |
|
665 |
/* filter date format */
|
666 |
$date_format = apply_filters( 'ot_type_date_picker_date_format', 'yy-mm-dd', $field_id );
|
667 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
668 |
/* format setting outer wrapper */
|
669 |
echo '<div class="format-setting type-date-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
670 |
|
@@ -678,18 +982,380 @@ if ( ! function_exists( 'ot_type_date_picker' ) ) {
|
|
678 |
echo '<div class="format-setting-inner">';
|
679 |
|
680 |
/* build date picker */
|
681 |
-
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
682 |
|
683 |
echo '</div>';
|
684 |
-
|
685 |
echo '</div>';
|
686 |
|
687 |
}
|
688 |
-
|
689 |
}
|
690 |
|
691 |
/**
|
692 |
-
*
|
693 |
*
|
694 |
* See @ot_display_by_type to see the full list of available arguments.
|
695 |
*
|
@@ -697,11 +1363,11 @@ if ( ! function_exists( 'ot_type_date_picker' ) ) {
|
|
697 |
* @return string
|
698 |
*
|
699 |
* @access public
|
700 |
-
* @since 2.
|
701 |
*/
|
702 |
-
if ( ! function_exists( '
|
703 |
|
704 |
-
function
|
705 |
|
706 |
/* turns arguments array into variables */
|
707 |
extract( $args );
|
@@ -709,26 +1375,23 @@ if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
|
|
709 |
/* verify a description */
|
710 |
$has_desc = $field_desc ? true : false;
|
711 |
|
712 |
-
/* filter date format */
|
713 |
-
$date_format = apply_filters( 'ot_type_date_time_picker_date_format', 'yy-mm-dd', $field_id );
|
714 |
-
|
715 |
/* format setting outer wrapper */
|
716 |
-
echo '<div class="format-setting type-
|
717 |
-
|
718 |
-
/* date time picker JS */
|
719 |
-
echo '<script>jQuery(document).ready(function($) { OT_UI.bind_date_time_picker("' . esc_attr( $field_id ) . '", "' . esc_attr( $date_format ) . '"); });</script>';
|
720 |
|
721 |
/* description */
|
722 |
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
723 |
|
724 |
/* format setting inner wrapper */
|
725 |
echo '<div class="format-setting-inner">';
|
726 |
-
|
727 |
-
/* build date time picker */
|
728 |
-
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" />';
|
729 |
|
730 |
-
|
|
|
731 |
|
|
|
|
|
|
|
|
|
|
|
732 |
echo '</div>';
|
733 |
|
734 |
}
|
@@ -736,96 +1399,75 @@ if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
|
|
736 |
}
|
737 |
|
738 |
/**
|
739 |
-
*
|
740 |
*
|
741 |
* See @ot_display_by_type to see the full list of available arguments.
|
742 |
*
|
743 |
* @param array The options arguments
|
744 |
-
* @return string The
|
745 |
*
|
746 |
* @access public
|
747 |
-
* @since 2.
|
748 |
*/
|
749 |
-
if ( ! function_exists( '
|
750 |
|
751 |
-
function
|
752 |
-
|
753 |
-
|
754 |
extract( $args );
|
755 |
-
|
756 |
-
|
757 |
$has_desc = $field_desc ? true : false;
|
758 |
-
|
759 |
-
|
760 |
-
echo '<div class="format-setting type-
|
761 |
-
|
762 |
-
|
763 |
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
764 |
-
|
765 |
-
|
766 |
echo '<div class="format-setting-inner">';
|
767 |
-
|
768 |
-
// Setup the post type
|
769 |
-
$post_type = isset( $field_post_type ) ? explode( ',', $field_post_type ) : array( 'post' );
|
770 |
-
|
771 |
-
$field_value = trim( $field_value );
|
772 |
-
|
773 |
-
// Saved values
|
774 |
-
echo '<input type="hidden" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="ot-gallery-value ' . esc_attr( $field_class ) . '" />';
|
775 |
-
|
776 |
-
// Search the string for the IDs
|
777 |
-
preg_match( '/ids=\'(.*?)\'/', $field_value, $matches );
|
778 |
-
|
779 |
-
// Turn the field value into an array of IDs
|
780 |
-
if ( isset( $matches[1] ) ) {
|
781 |
-
|
782 |
-
// Found the IDs in the shortcode
|
783 |
-
$ids = explode( ',', $matches[1] );
|
784 |
-
|
785 |
-
} else {
|
786 |
-
|
787 |
-
// The string is only IDs
|
788 |
-
$ids = ! empty( $field_value ) && $field_value != '' ? explode( ',', $field_value ) : array();
|
789 |
-
|
790 |
-
}
|
791 |
|
792 |
-
|
793 |
-
|
794 |
-
|
795 |
-
|
796 |
-
|
797 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
798 |
|
799 |
-
|
800 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
801 |
|
802 |
-
|
803 |
-
|
804 |
-
|
805 |
-
|
|
|
|
|
|
|
|
|
806 |
}
|
807 |
-
|
808 |
-
echo '</ul>';
|
809 |
-
|
810 |
-
echo '
|
811 |
-
<div class="ot-gallery-buttons">
|
812 |
-
<a href="#" class="option-tree-ui-button button button-secondary hug-left ot-gallery-delete">' . __( 'Delete Gallery', 'option-tree' ) . '</a>
|
813 |
-
<a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Edit Gallery', 'option-tree' ) . '</a>
|
814 |
-
</div>';
|
815 |
-
|
816 |
-
} else {
|
817 |
-
|
818 |
-
echo '
|
819 |
-
<div class="ot-gallery-buttons">
|
820 |
-
<a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Create Gallery', 'option-tree' ) . '</a>
|
821 |
-
</div>';
|
822 |
-
|
823 |
}
|
824 |
-
|
825 |
echo '</div>';
|
826 |
-
|
827 |
echo '</div>';
|
828 |
-
|
829 |
}
|
830 |
|
831 |
}
|
@@ -941,7 +1583,7 @@ if ( ! function_exists( 'ot_type_measurement' ) ) {
|
|
941 |
/* build measurement */
|
942 |
echo '<select name="' . esc_attr( $field_name ) . '[1]" id="' . esc_attr( $field_id ) . '-1" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
943 |
|
944 |
-
echo '<option value=""
|
945 |
|
946 |
foreach ( ot_measurement_unit_types( $field_id ) as $unit ) {
|
947 |
echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value[1] ) ? selected( $field_value[1], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
|
@@ -1021,55 +1663,101 @@ if ( ! function_exists( 'ot_type_numeric_slider' ) ) {
|
|
1021 |
* @since 2.2.0
|
1022 |
*/
|
1023 |
if ( ! function_exists( 'ot_type_on_off' ) ) {
|
1024 |
-
|
1025 |
function ot_type_on_off( $args = array() ) {
|
1026 |
-
|
1027 |
/* turns arguments array into variables */
|
1028 |
extract( $args );
|
1029 |
-
|
1030 |
/* verify a description */
|
1031 |
$has_desc = $field_desc ? true : false;
|
1032 |
-
|
1033 |
/* format setting outer wrapper */
|
1034 |
echo '<div class="format-setting type-radio ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1035 |
-
|
1036 |
/* description */
|
1037 |
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1038 |
-
|
1039 |
/* format setting inner wrapper */
|
1040 |
echo '<div class="format-setting-inner">';
|
1041 |
-
|
1042 |
-
|
1043 |
$field_choices = array(
|
1044 |
array(
|
1045 |
-
|
1046 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1047 |
),
|
1048 |
array(
|
1049 |
-
|
1050 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1051 |
)
|
1052 |
);
|
1053 |
-
|
1054 |
-
|
1055 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1056 |
/* build radio */
|
1057 |
foreach ( (array) $field_choices as $key => $choice ) {
|
1058 |
echo '
|
1059 |
<input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '"' . checked( $field_value, $choice['value'], false ) . ' class="radio option-tree-ui-radio ' . esc_attr( $field_class ) . '" />
|
1060 |
<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" onclick="">' . esc_attr( $choice['label'] ) . '</label>';
|
1061 |
}
|
1062 |
-
|
1063 |
echo '<span class="slide-button"></span>';
|
1064 |
-
|
1065 |
echo '</div>';
|
1066 |
-
|
1067 |
echo '</div>';
|
1068 |
-
|
1069 |
echo '</div>';
|
1070 |
-
|
1071 |
}
|
1072 |
-
|
1073 |
}
|
1074 |
|
1075 |
/**
|
@@ -1758,6 +2446,108 @@ if ( ! function_exists( 'ot_type_social_links' ) ) {
|
|
1758 |
|
1759 |
}
|
1760 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1761 |
/**
|
1762 |
* Tab option type.
|
1763 |
*
|
@@ -2465,4 +3255,4 @@ if ( ! function_exists( 'ot_type_upload' ) ) {
|
|
2465 |
}
|
2466 |
|
2467 |
/* End of file ot-functions-option-types.php */
|
2468 |
-
/* Location: ./includes/ot-functions-option-types.php */
|
270 |
|
271 |
}
|
272 |
|
273 |
+
/**
|
274 |
+
* Border Option Type
|
275 |
+
*
|
276 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
277 |
+
*
|
278 |
+
* @param array The options arguments
|
279 |
+
* @return string The markup.
|
280 |
+
*
|
281 |
+
* @access public
|
282 |
+
* @since 2.5.0
|
283 |
+
*/
|
284 |
+
if ( ! function_exists( 'ot_type_border' ) ) {
|
285 |
+
|
286 |
+
function ot_type_border( $args = array() ) {
|
287 |
+
|
288 |
+
/* turns arguments array into variables */
|
289 |
+
extract( $args );
|
290 |
+
|
291 |
+
/* verify a description */
|
292 |
+
$has_desc = $field_desc ? true : false;
|
293 |
+
|
294 |
+
/* format setting outer wrapper */
|
295 |
+
echo '<div class="format-setting type-border ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
296 |
+
|
297 |
+
/* description */
|
298 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
299 |
+
|
300 |
+
/* format setting inner wrapper */
|
301 |
+
echo '<div class="format-setting-inner">';
|
302 |
+
|
303 |
+
/* allow fields to be filtered */
|
304 |
+
$ot_recognized_border_fields = apply_filters( 'ot_recognized_border_fields', array(
|
305 |
+
'width',
|
306 |
+
'unit',
|
307 |
+
'style',
|
308 |
+
'color'
|
309 |
+
), $field_id );
|
310 |
+
|
311 |
+
/* build border width */
|
312 |
+
if ( in_array( 'width', $ot_recognized_border_fields ) ) {
|
313 |
+
|
314 |
+
$width = isset( $field_value['width'] ) ? esc_attr( $field_value['width'] ) : '';
|
315 |
+
|
316 |
+
echo '<div class="ot-option-group ot-option-group--one-sixth"><input type="text" name="' . esc_attr( $field_name ) . '[width]" id="' . esc_attr( $field_id ) . '-width" value="' . esc_attr( $width ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'width', 'option-tree' ) . '" /></div>';
|
317 |
+
|
318 |
+
}
|
319 |
+
|
320 |
+
/* build unit dropdown */
|
321 |
+
if ( in_array( 'unit', $ot_recognized_border_fields ) ) {
|
322 |
+
|
323 |
+
echo '<div class="ot-option-group ot-option-group--one-fourth">';
|
324 |
+
|
325 |
+
echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
326 |
+
|
327 |
+
echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
|
328 |
+
|
329 |
+
foreach ( ot_recognized_border_unit_types( $field_id ) as $unit ) {
|
330 |
+
echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
|
331 |
+
}
|
332 |
+
|
333 |
+
echo '</select>';
|
334 |
+
|
335 |
+
echo '</div>';
|
336 |
+
|
337 |
+
}
|
338 |
+
|
339 |
+
/* build style dropdown */
|
340 |
+
if ( in_array( 'style', $ot_recognized_border_fields ) ) {
|
341 |
+
|
342 |
+
echo '<div class="ot-option-group ot-option-group--one-fourth">';
|
343 |
+
|
344 |
+
echo '<select name="' . esc_attr( $field_name ) . '[style]" id="' . esc_attr( $field_id ) . '-style" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
345 |
+
|
346 |
+
echo '<option value="">' . __( 'style', 'option-tree' ) . '</option>';
|
347 |
+
|
348 |
+
foreach ( ot_recognized_border_style_types( $field_id ) as $key => $style ) {
|
349 |
+
echo '<option value="' . esc_attr( $key ) . '"' . ( isset( $field_value['style'] ) ? selected( $field_value['style'], $key, false ) : '' ) . '>' . esc_attr( $style ) . '</option>';
|
350 |
+
}
|
351 |
+
|
352 |
+
echo '</select>';
|
353 |
+
|
354 |
+
echo '</div>';
|
355 |
+
|
356 |
+
}
|
357 |
+
|
358 |
+
/* build color */
|
359 |
+
if ( in_array( 'color', $ot_recognized_border_fields ) ) {
|
360 |
+
|
361 |
+
echo '<div class="option-tree-ui-colorpicker-input-wrap">';
|
362 |
+
|
363 |
+
/* colorpicker JS */
|
364 |
+
echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
|
365 |
+
|
366 |
+
/* set color */
|
367 |
+
$color = isset( $field_value['color'] ) ? esc_attr( $field_value['color'] ) : '';
|
368 |
+
|
369 |
+
/* input */
|
370 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . $field_id . '-picker" value="' . $color . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
|
371 |
+
|
372 |
+
echo '</div>';
|
373 |
+
|
374 |
+
}
|
375 |
+
|
376 |
+
echo '</div>';
|
377 |
+
|
378 |
+
echo '</div>';
|
379 |
+
|
380 |
+
}
|
381 |
+
|
382 |
+
}
|
383 |
+
|
384 |
+
/**
|
385 |
+
* Box Shadow Option Type
|
386 |
+
*
|
387 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
388 |
+
*
|
389 |
+
* @param array The options arguments
|
390 |
+
* @return string The markup.
|
391 |
+
*
|
392 |
+
* @access public
|
393 |
+
* @since 2.5.0
|
394 |
+
*/
|
395 |
+
if ( ! function_exists( 'ot_type_box_shadow' ) ) {
|
396 |
+
|
397 |
+
function ot_type_box_shadow( $args = array() ) {
|
398 |
+
|
399 |
+
/* turns arguments array into variables */
|
400 |
+
extract( $args );
|
401 |
+
|
402 |
+
/* verify a description */
|
403 |
+
$has_desc = $field_desc ? true : false;
|
404 |
+
|
405 |
+
/* format setting outer wrapper */
|
406 |
+
echo '<div class="format-setting type-box-shadow ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
407 |
+
|
408 |
+
/* description */
|
409 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
410 |
+
|
411 |
+
/* format setting inner wrapper */
|
412 |
+
echo '<div class="format-setting-inner">';
|
413 |
+
|
414 |
+
/* allow fields to be filtered */
|
415 |
+
$ot_recognized_box_shadow_fields = apply_filters( 'ot_recognized_box_shadow_fields', array(
|
416 |
+
'inset',
|
417 |
+
'offset-x',
|
418 |
+
'offset-y',
|
419 |
+
'blur-radius',
|
420 |
+
'spread-radius',
|
421 |
+
'color'
|
422 |
+
), $field_id );
|
423 |
+
|
424 |
+
/* build inset */
|
425 |
+
if ( in_array( 'inset', $ot_recognized_box_shadow_fields ) ) {
|
426 |
+
|
427 |
+
echo '<div class="ot-option-group ot-option-group--checkbox"><p>';
|
428 |
+
echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[inset]" id="' . esc_attr( $field_id ) . '-inset" value="inset" ' . ( isset( $field_value['inset'] ) ? checked( $field_value['inset'], 'inset', false ) : '' ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
|
429 |
+
echo '<label for="' . esc_attr( $field_id ) . '-inset">inset</label>';
|
430 |
+
echo '</p></div>';
|
431 |
+
|
432 |
+
}
|
433 |
+
|
434 |
+
/* build horizontal offset */
|
435 |
+
if ( in_array( 'offset-x', $ot_recognized_box_shadow_fields ) ) {
|
436 |
+
|
437 |
+
$offset_x = isset( $field_value['offset-x'] ) ? esc_attr( $field_value['offset-x'] ) : '';
|
438 |
+
|
439 |
+
echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-h ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[offset-x]" id="' . esc_attr( $field_id ) . '-offset-x" value="' . $offset_x . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'offset-x', 'option-tree' ) . '" /></div>';
|
440 |
+
|
441 |
+
}
|
442 |
+
|
443 |
+
/* build vertical offset */
|
444 |
+
if ( in_array( 'offset-y', $ot_recognized_box_shadow_fields ) ) {
|
445 |
+
|
446 |
+
$offset_y = isset( $field_value['offset-y'] ) ? esc_attr( $field_value['offset-y'] ) : '';
|
447 |
+
|
448 |
+
echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-v ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[offset-y]" id="' . esc_attr( $field_id ) . '-offset-y" value="' . $offset_y . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'offset-y', 'option-tree' ) . '" /></div>';
|
449 |
+
|
450 |
+
}
|
451 |
+
|
452 |
+
/* build blur-radius radius */
|
453 |
+
if ( in_array( 'blur-radius', $ot_recognized_box_shadow_fields ) ) {
|
454 |
+
|
455 |
+
$blur_radius = isset( $field_value['blur-radius'] ) ? esc_attr( $field_value['blur-radius'] ) : '';
|
456 |
+
|
457 |
+
echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-circle ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[blur-radius]" id="' . esc_attr( $field_id ) . '-blur-radius" value="' . $blur_radius . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'blur-radius', 'option-tree' ) . '" /></div>';
|
458 |
+
|
459 |
+
}
|
460 |
+
|
461 |
+
/* build spread-radius radius */
|
462 |
+
if ( in_array( 'spread-radius', $ot_recognized_box_shadow_fields ) ) {
|
463 |
+
|
464 |
+
$spread_radius = isset( $field_value['spread-radius'] ) ? esc_attr( $field_value['spread-radius'] ) : '';
|
465 |
+
|
466 |
+
echo '<div class="ot-option-group ot-option-group--one-fifth"><span class="ot-icon-arrows-alt ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[spread-radius]" id="' . esc_attr( $field_id ) . '-spread-radius" value="' . $spread_radius . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'spread-radius', 'option-tree' ) . '" /></div>';
|
467 |
+
|
468 |
+
}
|
469 |
+
|
470 |
+
/* build color */
|
471 |
+
if ( in_array( 'color', $ot_recognized_box_shadow_fields ) ) {
|
472 |
+
|
473 |
+
echo '<div class="option-tree-ui-colorpicker-input-wrap">';
|
474 |
+
|
475 |
+
/* colorpicker JS */
|
476 |
+
echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker"); });</script>';
|
477 |
+
|
478 |
+
/* set color */
|
479 |
+
$color = isset( $field_value['color'] ) ? esc_attr( $field_value['color'] ) : '';
|
480 |
+
|
481 |
+
/* input */
|
482 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . esc_attr( $field_id ) . '-picker" value="' . $color . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" />';
|
483 |
+
|
484 |
+
echo '</div>';
|
485 |
+
|
486 |
+
}
|
487 |
+
|
488 |
+
echo '</div>';
|
489 |
+
|
490 |
+
echo '</div>';
|
491 |
+
|
492 |
+
}
|
493 |
+
|
494 |
+
}
|
495 |
+
|
496 |
/**
|
497 |
* Category Checkbox option type.
|
498 |
*
|
703 |
|
704 |
}
|
705 |
|
706 |
+
/**
|
707 |
+
* Colorpicker Opacity option type.
|
708 |
+
*
|
709 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
710 |
+
*
|
711 |
+
* @param array An array of arguments.
|
712 |
+
* @return string
|
713 |
+
*
|
714 |
+
* @access public
|
715 |
+
* @since 2.5.0
|
716 |
+
*/
|
717 |
+
if ( ! function_exists( 'ot_type_colorpicker_opacity' ) ) {
|
718 |
+
|
719 |
+
function ot_type_colorpicker_opacity( $args = array() ) {
|
720 |
+
|
721 |
+
/* turns arguments array into variables */
|
722 |
+
extract( $args );
|
723 |
+
|
724 |
+
/* verify a description */
|
725 |
+
$has_desc = $field_desc ? true : false;
|
726 |
+
|
727 |
+
/* format setting outer wrapper */
|
728 |
+
echo '<div class="format-setting type-colorpicker-opacity ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
729 |
+
|
730 |
+
/* description */
|
731 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
732 |
+
|
733 |
+
/* format setting inner wrapper */
|
734 |
+
echo '<div class="format-setting-inner">';
|
735 |
+
|
736 |
+
/* build colorpicker */
|
737 |
+
echo '<div class="option-tree-ui-colorpicker-input-wrap">';
|
738 |
+
|
739 |
+
/* colorpicker JS */
|
740 |
+
echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-color"); });</script>';
|
741 |
+
|
742 |
+
/* set color */
|
743 |
+
$color = isset( $field_value['color'] ) ? esc_attr( $field_value['color'] ) : '';
|
744 |
+
|
745 |
+
/* set default color */
|
746 |
+
$std = isset( $field_std['color'] ) ? 'data-default-color="' . $field_std['color'] . '"' : '';
|
747 |
+
|
748 |
+
/* input */
|
749 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '[color]" id="' . esc_attr( $field_id ) . '-color" value="' . esc_attr( $color ) . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" ' . $std . ' />';
|
750 |
+
|
751 |
+
echo '</div>';
|
752 |
+
|
753 |
+
echo '<div class="ot-numeric-slider-wrap">';
|
754 |
+
|
755 |
+
$min = 0;
|
756 |
+
$max = 1.01;
|
757 |
+
$step = 0.01;
|
758 |
+
|
759 |
+
/* set background color */
|
760 |
+
$opacity = isset( $field_value['opacity'] ) ? esc_attr( $field_value['opacity'] ) : '';
|
761 |
+
|
762 |
+
echo '<input type="hidden" name="' . esc_attr( $field_name ) . '[opacity]" id="' . esc_attr( $field_id ) . '-opacity" class="ot-numeric-slider-hidden-input" value="' . $opacity . '" data-min="' . esc_attr( $min ) . '" data-max="' . esc_attr( $max ) . '" data-step="' . esc_attr( $step ) . '">';
|
763 |
+
|
764 |
+
echo '<input type="text" class="ot-numeric-slider-helper-input widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" value="' . esc_attr( $opacity ) . '" readonly>';
|
765 |
+
|
766 |
+
echo '<div id="ot_numeric_slider_' . esc_attr( $field_id ) . '" class="ot-numeric-slider"></div>';
|
767 |
+
|
768 |
+
echo '</div>';
|
769 |
+
|
770 |
+
echo '</div>';
|
771 |
+
|
772 |
+
echo '</div>';
|
773 |
+
}
|
774 |
+
|
775 |
+
}
|
776 |
+
|
777 |
/**
|
778 |
* CSS option type.
|
779 |
*
|
958 |
|
959 |
/* filter date format */
|
960 |
$date_format = apply_filters( 'ot_type_date_picker_date_format', 'yy-mm-dd', $field_id );
|
961 |
+
|
962 |
+
/**
|
963 |
+
* Filter the addition of the readonly attribute.
|
964 |
+
*
|
965 |
+
* @since 2.5.0
|
966 |
+
*
|
967 |
+
* @param bool $is_readonly Whether to add the 'readonly' attribute. Default 'false'.
|
968 |
+
* @param string $field_id The field ID.
|
969 |
+
*/
|
970 |
+
$is_readonly = apply_filters( 'ot_type_date_picker_readonly', false, $field_id );
|
971 |
+
|
972 |
/* format setting outer wrapper */
|
973 |
echo '<div class="format-setting type-date-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
974 |
|
982 |
echo '<div class="format-setting-inner">';
|
983 |
|
984 |
/* build date picker */
|
985 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '"' . ( $is_readonly == true ? ' readonly' : '' ) . ' />';
|
986 |
+
|
987 |
+
echo '</div>';
|
988 |
+
|
989 |
+
echo '</div>';
|
990 |
+
|
991 |
+
}
|
992 |
+
|
993 |
+
}
|
994 |
+
|
995 |
+
/**
|
996 |
+
* Date Time Picker option type.
|
997 |
+
*
|
998 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
999 |
+
*
|
1000 |
+
* @param array An array of arguments.
|
1001 |
+
* @return string
|
1002 |
+
*
|
1003 |
+
* @access public
|
1004 |
+
* @since 2.3
|
1005 |
+
*/
|
1006 |
+
if ( ! function_exists( 'ot_type_date_time_picker' ) ) {
|
1007 |
+
|
1008 |
+
function ot_type_date_time_picker( $args = array() ) {
|
1009 |
+
|
1010 |
+
/* turns arguments array into variables */
|
1011 |
+
extract( $args );
|
1012 |
+
|
1013 |
+
/* verify a description */
|
1014 |
+
$has_desc = $field_desc ? true : false;
|
1015 |
+
|
1016 |
+
/* filter date format */
|
1017 |
+
$date_format = apply_filters( 'ot_type_date_time_picker_date_format', 'yy-mm-dd', $field_id );
|
1018 |
+
|
1019 |
+
/**
|
1020 |
+
* Filter the addition of the readonly attribute.
|
1021 |
+
*
|
1022 |
+
* @since 2.5.0
|
1023 |
+
*
|
1024 |
+
* @param bool $is_readonly Whether to add the 'readonly' attribute. Default 'false'.
|
1025 |
+
* @param string $field_id The field ID.
|
1026 |
+
*/
|
1027 |
+
$is_readonly = apply_filters( 'ot_type_date_time_picker_readonly', false, $field_id );
|
1028 |
+
|
1029 |
+
/* format setting outer wrapper */
|
1030 |
+
echo '<div class="format-setting type-date-time-picker ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1031 |
+
|
1032 |
+
/* date time picker JS */
|
1033 |
+
echo '<script>jQuery(document).ready(function($) { OT_UI.bind_date_time_picker("' . esc_attr( $field_id ) . '", "' . esc_attr( $date_format ) . '"); });</script>';
|
1034 |
+
|
1035 |
+
/* description */
|
1036 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1037 |
+
|
1038 |
+
/* format setting inner wrapper */
|
1039 |
+
echo '<div class="format-setting-inner">';
|
1040 |
+
|
1041 |
+
/* build date time picker */
|
1042 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '"' . ( $is_readonly == true ? ' readonly' : '' ) . ' />';
|
1043 |
+
|
1044 |
+
echo '</div>';
|
1045 |
+
|
1046 |
+
echo '</div>';
|
1047 |
+
|
1048 |
+
}
|
1049 |
+
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
/**
|
1053 |
+
* Dimension Option Type
|
1054 |
+
*
|
1055 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
1056 |
+
*
|
1057 |
+
* @param array The options arguments
|
1058 |
+
* @return string The markup.
|
1059 |
+
*
|
1060 |
+
* @access public
|
1061 |
+
* @since 2.5.0
|
1062 |
+
*/
|
1063 |
+
if ( ! function_exists( 'ot_type_dimension' ) ) {
|
1064 |
+
|
1065 |
+
function ot_type_dimension( $args = array() ) {
|
1066 |
+
|
1067 |
+
/* turns arguments array into variables */
|
1068 |
+
extract( $args );
|
1069 |
+
|
1070 |
+
/* verify a description */
|
1071 |
+
$has_desc = $field_desc ? true : false;
|
1072 |
+
|
1073 |
+
/* format setting outer wrapper */
|
1074 |
+
echo '<div class="format-setting type-dimension ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1075 |
+
|
1076 |
+
/* description */
|
1077 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1078 |
+
|
1079 |
+
/* format setting inner wrapper */
|
1080 |
+
echo '<div class="format-setting-inner">';
|
1081 |
+
|
1082 |
+
/* allow fields to be filtered */
|
1083 |
+
$ot_recognized_dimension_fields = apply_filters( 'ot_recognized_dimension_fields', array(
|
1084 |
+
'width',
|
1085 |
+
'height',
|
1086 |
+
'unit'
|
1087 |
+
), $field_id );
|
1088 |
+
|
1089 |
+
/* build width dimension */
|
1090 |
+
if ( in_array( 'width', $ot_recognized_dimension_fields ) ) {
|
1091 |
+
|
1092 |
+
$width = isset( $field_value['width'] ) ? esc_attr( $field_value['width'] ) : '';
|
1093 |
+
|
1094 |
+
echo '<div class="ot-option-group ot-option-group--one-third"><span class="ot-icon-arrows-h ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[width]" id="' . esc_attr( $field_id ) . '-width" value="' . esc_attr( $width ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'width', 'option-tree' ) . '" /></div>';
|
1095 |
+
|
1096 |
+
}
|
1097 |
+
|
1098 |
+
/* build height dimension */
|
1099 |
+
if ( in_array( 'height', $ot_recognized_dimension_fields ) ) {
|
1100 |
+
|
1101 |
+
$height = isset( $field_value['height'] ) ? esc_attr( $field_value['height'] ) : '';
|
1102 |
+
|
1103 |
+
echo '<div class="ot-option-group ot-option-group--one-third"><span class="ot-icon-arrows-v ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[height]" id="' . esc_attr( $field_id ) . '-height" value="' . esc_attr( $height ) . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'height', 'option-tree' ) . '" /></div>';
|
1104 |
+
|
1105 |
+
}
|
1106 |
+
|
1107 |
+
/* build unit dropdown */
|
1108 |
+
if ( in_array( 'unit', $ot_recognized_dimension_fields ) ) {
|
1109 |
+
|
1110 |
+
echo '<div class="ot-option-group ot-option-group--one-third ot-option-group--is-last">';
|
1111 |
+
|
1112 |
+
echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
1113 |
+
|
1114 |
+
echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
|
1115 |
+
|
1116 |
+
foreach ( ot_recognized_dimension_unit_types( $field_id ) as $unit ) {
|
1117 |
+
echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
|
1118 |
+
}
|
1119 |
+
|
1120 |
+
echo '</select>';
|
1121 |
+
|
1122 |
+
echo '</div>';
|
1123 |
+
|
1124 |
+
}
|
1125 |
+
|
1126 |
+
echo '</div>';
|
1127 |
+
|
1128 |
+
echo '</div>';
|
1129 |
+
|
1130 |
+
}
|
1131 |
+
|
1132 |
+
}
|
1133 |
+
|
1134 |
+
/**
|
1135 |
+
* Gallery option type.
|
1136 |
+
*
|
1137 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
1138 |
+
*
|
1139 |
+
* @param array The options arguments
|
1140 |
+
* @return string The gallery metabox markup.
|
1141 |
+
*
|
1142 |
+
* @access public
|
1143 |
+
* @since 2.2.0
|
1144 |
+
*/
|
1145 |
+
if ( ! function_exists( 'ot_type_gallery' ) ) {
|
1146 |
+
|
1147 |
+
function ot_type_gallery( $args = array() ) {
|
1148 |
+
|
1149 |
+
// Turns arguments array into variables
|
1150 |
+
extract( $args );
|
1151 |
+
|
1152 |
+
// Verify a description
|
1153 |
+
$has_desc = $field_desc ? true : false;
|
1154 |
+
|
1155 |
+
// Format setting outer wrapper
|
1156 |
+
echo '<div class="format-setting type-gallery ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1157 |
+
|
1158 |
+
// Description
|
1159 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1160 |
+
|
1161 |
+
// Format setting inner wrapper
|
1162 |
+
echo '<div class="format-setting-inner">';
|
1163 |
+
|
1164 |
+
// Setup the post type
|
1165 |
+
$post_type = isset( $field_post_type ) ? explode( ',', $field_post_type ) : array( 'post' );
|
1166 |
+
|
1167 |
+
$field_value = trim( $field_value );
|
1168 |
+
|
1169 |
+
// Saved values
|
1170 |
+
echo '<input type="hidden" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '" value="' . esc_attr( $field_value ) . '" class="ot-gallery-value ' . esc_attr( $field_class ) . '" />';
|
1171 |
+
|
1172 |
+
// Search the string for the IDs
|
1173 |
+
preg_match( '/ids=\'(.*?)\'/', $field_value, $matches );
|
1174 |
+
|
1175 |
+
// Turn the field value into an array of IDs
|
1176 |
+
if ( isset( $matches[1] ) ) {
|
1177 |
+
|
1178 |
+
// Found the IDs in the shortcode
|
1179 |
+
$ids = explode( ',', $matches[1] );
|
1180 |
+
|
1181 |
+
} else {
|
1182 |
+
|
1183 |
+
// The string is only IDs
|
1184 |
+
$ids = ! empty( $field_value ) && $field_value != '' ? explode( ',', $field_value ) : array();
|
1185 |
+
|
1186 |
+
}
|
1187 |
+
|
1188 |
+
// Has attachment IDs
|
1189 |
+
if ( ! empty( $ids ) ) {
|
1190 |
+
|
1191 |
+
echo '<ul class="ot-gallery-list">';
|
1192 |
+
|
1193 |
+
foreach( $ids as $id ) {
|
1194 |
+
|
1195 |
+
if ( $id == '' )
|
1196 |
+
continue;
|
1197 |
+
|
1198 |
+
$thumbnail = wp_get_attachment_image_src( $id, 'thumbnail' );
|
1199 |
+
|
1200 |
+
echo '<li><img src="' . $thumbnail[0] . '" width="75" height="75" /></li>';
|
1201 |
+
|
1202 |
+
}
|
1203 |
+
|
1204 |
+
echo '</ul>';
|
1205 |
+
|
1206 |
+
echo '
|
1207 |
+
<div class="ot-gallery-buttons">
|
1208 |
+
<a href="#" class="option-tree-ui-button button button-secondary hug-left ot-gallery-delete">' . __( 'Delete Gallery', 'option-tree' ) . '</a>
|
1209 |
+
<a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Edit Gallery', 'option-tree' ) . '</a>
|
1210 |
+
</div>';
|
1211 |
+
|
1212 |
+
} else {
|
1213 |
+
|
1214 |
+
echo '
|
1215 |
+
<div class="ot-gallery-buttons">
|
1216 |
+
<a href="#" class="option-tree-ui-button button button-primary right hug-right ot-gallery-edit">' . __( 'Create Gallery', 'option-tree' ) . '</a>
|
1217 |
+
</div>';
|
1218 |
+
|
1219 |
+
}
|
1220 |
+
|
1221 |
+
echo '</div>';
|
1222 |
+
|
1223 |
+
echo '</div>';
|
1224 |
+
|
1225 |
+
}
|
1226 |
+
|
1227 |
+
}
|
1228 |
+
|
1229 |
+
/**
|
1230 |
+
* Google Fonts option type.
|
1231 |
+
*
|
1232 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
1233 |
+
*
|
1234 |
+
* @param array An array of arguments.
|
1235 |
+
* @return string
|
1236 |
+
*
|
1237 |
+
* @access public
|
1238 |
+
* @since 2.5.0
|
1239 |
+
*/
|
1240 |
+
if ( ! function_exists( 'ot_type_google_fonts' ) ) {
|
1241 |
+
|
1242 |
+
function ot_type_google_fonts( $args = array() ) {
|
1243 |
+
|
1244 |
+
/* turns arguments array into variables */
|
1245 |
+
extract( $args );
|
1246 |
+
|
1247 |
+
/* verify a description */
|
1248 |
+
$has_desc = $field_desc ? true : false;
|
1249 |
+
|
1250 |
+
/* format setting outer wrapper */
|
1251 |
+
echo '<div class="format-setting type-google-font ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1252 |
+
|
1253 |
+
/* description */
|
1254 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1255 |
+
|
1256 |
+
/* format setting inner wrapper */
|
1257 |
+
echo '<div class="format-setting-inner">';
|
1258 |
+
|
1259 |
+
/* allow fields to be filtered */
|
1260 |
+
$ot_recognized_google_fonts_fields = apply_filters( 'ot_recognized_google_font_fields', array(
|
1261 |
+
'variants',
|
1262 |
+
'subsets'
|
1263 |
+
), $field_id );
|
1264 |
+
|
1265 |
+
// Set a default to show at least one item.
|
1266 |
+
if ( ! is_array( $field_value ) || empty( $field_value ) ) {
|
1267 |
+
$field_value = array( array(
|
1268 |
+
'family' => '',
|
1269 |
+
'variants' => array(),
|
1270 |
+
'subsets' => array()
|
1271 |
+
) );
|
1272 |
+
}
|
1273 |
+
|
1274 |
+
foreach( $field_value as $key => $value ) {
|
1275 |
+
|
1276 |
+
echo '<div class="type-google-font-group">';
|
1277 |
+
|
1278 |
+
/* build font family */
|
1279 |
+
$family = isset( $value['family'] ) ? $value['family'] : '';
|
1280 |
+
echo '<div class="option-tree-google-font-family">';
|
1281 |
+
echo '<a href="javascript:void(0);" class="js-remove-google-font option-tree-ui-button button button-secondary light" title="' . __( 'Remove Google Font', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"/>' . __( 'Remove Google Font', 'option-tree' ) . '</a>';
|
1282 |
+
echo '<select name="' . esc_attr( $field_name ) . '[' . $key . '][family]" id="' . esc_attr( $field_id ) . '-' . $key . '" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
1283 |
+
echo '<option value="">' . __( '-- Choose One --', 'option-tree' ) . '</option>';
|
1284 |
+
foreach ( ot_recognized_google_font_families( $field_id ) as $family_key => $family_value ) {
|
1285 |
+
echo '<option value="' . esc_attr( $family_key ) . '" ' . selected( $family, $family_key, false ) . '>' . esc_html( $family_value ) . '</option>';
|
1286 |
+
}
|
1287 |
+
echo '</select>';
|
1288 |
+
echo '</div>';
|
1289 |
+
|
1290 |
+
/* build font variants */
|
1291 |
+
if ( in_array( 'variants', $ot_recognized_google_fonts_fields ) ) {
|
1292 |
+
$variants = isset( $value['variants'] ) ? $value['variants'] : array();
|
1293 |
+
echo '<div class="option-tree-google-font-variants" data-field-id-prefix="' . esc_attr( $field_id ) . '-' . $key . '-" data-field-name="' . esc_attr( $field_name ) . '[' . $key . '][variants]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
|
1294 |
+
foreach ( ot_recognized_google_font_variants( $field_id, $family ) as $variant_key => $variant ) {
|
1295 |
+
echo '<p class="checkbox-wrap">';
|
1296 |
+
echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . $key . '][variants][]" id="' . esc_attr( $field_id ) . '-' . $key . '-' . $variant . '" value="' . esc_attr( $variant ) . '" ' . checked( in_array( $variant, $variants ), true, false ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
|
1297 |
+
echo '<label for="' . esc_attr( $field_id ) . '-' . $key . '-' . $variant . '">' . esc_html( $variant ) . '</label>';
|
1298 |
+
echo '</p>';
|
1299 |
+
}
|
1300 |
+
echo '</div>';
|
1301 |
+
}
|
1302 |
+
|
1303 |
+
/* build font subsets */
|
1304 |
+
if ( in_array( 'subsets', $ot_recognized_google_fonts_fields ) ) {
|
1305 |
+
$subsets = isset( $value['subsets'] ) ? $value['subsets'] : array();
|
1306 |
+
echo '<div class="option-tree-google-font-subsets" data-field-id-prefix="' . esc_attr( $field_id ) . '-' . $key . '-" data-field-name="' . esc_attr( $field_name ) . '[' . $key . '][subsets]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
|
1307 |
+
foreach ( ot_recognized_google_font_subsets( $field_id, $family ) as $subset_key => $subset ) {
|
1308 |
+
echo '<p class="checkbox-wrap">';
|
1309 |
+
echo '<input type="checkbox" name="' . esc_attr( $field_name ) . '[' . $key . '][subsets][]" id="' . esc_attr( $field_id ) . '-' . $key . '-' . $subset . '" value="' . esc_attr( $subset ) . '" ' . checked( in_array( $subset, $subsets ), true, false ) . ' class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '" />';
|
1310 |
+
echo '<label for="' . esc_attr( $field_id ) . '-' . $key . '-' . $subset . '">' . esc_html( $subset ) . '</label>';
|
1311 |
+
echo '</p>';
|
1312 |
+
}
|
1313 |
+
echo '</div>';
|
1314 |
+
}
|
1315 |
+
|
1316 |
+
echo '</div>';
|
1317 |
+
|
1318 |
+
}
|
1319 |
+
|
1320 |
+
echo '<div class="type-google-font-group-clone">';
|
1321 |
+
|
1322 |
+
/* build font family */
|
1323 |
+
echo '<div class="option-tree-google-font-family">';
|
1324 |
+
echo '<a href="javascript:void(0);" class="js-remove-google-font option-tree-ui-button button button-secondary light" title="' . __( 'Remove Google Font', 'option-tree' ) . '"><span class="icon ot-icon-minus-circle"/>' . __( 'Remove Google Font', 'option-tree' ) . '</a>';
|
1325 |
+
echo '<select name="' . esc_attr( $field_name ) . '[%key%][family]" id="' . esc_attr( $field_id ) . '-%key%" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
1326 |
+
echo '<option value="">' . __( '-- Choose One --', 'option-tree' ) . '</option>';
|
1327 |
+
foreach ( ot_recognized_google_font_families( $field_id ) as $family_key => $family_value ) {
|
1328 |
+
echo '<option value="' . esc_attr( $family_key ) . '">' . esc_html( $family_value ) . '</option>';
|
1329 |
+
}
|
1330 |
+
echo '</select>';
|
1331 |
+
echo '</div>';
|
1332 |
+
|
1333 |
+
/* build font variants */
|
1334 |
+
if ( in_array( 'variants', $ot_recognized_google_fonts_fields ) ) {
|
1335 |
+
echo '<div class="option-tree-google-font-variants" data-field-id-prefix="' . esc_attr( $field_id ) . '-%key%-" data-field-name="' . esc_attr( $field_name ) . '[%key%][variants]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
|
1336 |
+
echo '</div>';
|
1337 |
+
}
|
1338 |
+
|
1339 |
+
/* build font subsets */
|
1340 |
+
if ( in_array( 'subsets', $ot_recognized_google_fonts_fields ) ) {
|
1341 |
+
echo '<div class="option-tree-google-font-subsets" data-field-id-prefix="' . esc_attr( $field_id ) . '-%key%-" data-field-name="' . esc_attr( $field_name ) . '[%key%][subsets]" data-field-class="option-tree-ui-checkbox ' . esc_attr( $field_class ) . '">';
|
1342 |
+
echo '</div>';
|
1343 |
+
}
|
1344 |
+
|
1345 |
+
echo '</div>';
|
1346 |
+
|
1347 |
+
echo '<a href="javascript:void(0);" class="js-add-google-font option-tree-ui-button button button-primary right hug-right" title="' . __( 'Add Google Font', 'option-tree' ) . '">' . __( 'Add Google Font', 'option-tree' ) . '</a>';
|
1348 |
|
1349 |
echo '</div>';
|
1350 |
+
|
1351 |
echo '</div>';
|
1352 |
|
1353 |
}
|
1354 |
+
|
1355 |
}
|
1356 |
|
1357 |
/**
|
1358 |
+
* JavaScript option type.
|
1359 |
*
|
1360 |
* See @ot_display_by_type to see the full list of available arguments.
|
1361 |
*
|
1363 |
* @return string
|
1364 |
*
|
1365 |
* @access public
|
1366 |
+
* @since 2.5.0
|
1367 |
*/
|
1368 |
+
if ( ! function_exists( 'ot_type_javascript' ) ) {
|
1369 |
|
1370 |
+
function ot_type_javascript( $args = array() ) {
|
1371 |
|
1372 |
/* turns arguments array into variables */
|
1373 |
extract( $args );
|
1375 |
/* verify a description */
|
1376 |
$has_desc = $field_desc ? true : false;
|
1377 |
|
|
|
|
|
|
|
1378 |
/* format setting outer wrapper */
|
1379 |
+
echo '<div class="format-setting type-javascript simple ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
|
|
|
|
|
|
1380 |
|
1381 |
/* description */
|
1382 |
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1383 |
|
1384 |
/* format setting inner wrapper */
|
1385 |
echo '<div class="format-setting-inner">';
|
|
|
|
|
|
|
1386 |
|
1387 |
+
/* build textarea for CSS */
|
1388 |
+
echo '<textarea class="hidden" id="textarea_' . esc_attr( $field_id ) . '" name="' . esc_attr( $field_name ) .'">' . esc_attr( $field_value ) . '</textarea>';
|
1389 |
|
1390 |
+
/* build pre to convert it into ace editor later */
|
1391 |
+
echo '<pre class="ot-javascript-editor ' . esc_attr( $field_class ) . '" id="' . esc_attr( $field_id ) . '">' . esc_textarea( $field_value ) . '</pre>';
|
1392 |
+
|
1393 |
+
echo '</div>';
|
1394 |
+
|
1395 |
echo '</div>';
|
1396 |
|
1397 |
}
|
1399 |
}
|
1400 |
|
1401 |
/**
|
1402 |
+
* Link Color option type.
|
1403 |
*
|
1404 |
* See @ot_display_by_type to see the full list of available arguments.
|
1405 |
*
|
1406 |
* @param array The options arguments
|
1407 |
+
* @return string The markup.
|
1408 |
*
|
1409 |
* @access public
|
1410 |
+
* @since 2.5.0
|
1411 |
*/
|
1412 |
+
if ( ! function_exists( 'ot_type_link_color' ) ) {
|
1413 |
|
1414 |
+
function ot_type_link_color( $args = array() ) {
|
1415 |
+
|
1416 |
+
/* turns arguments array into variables */
|
1417 |
extract( $args );
|
1418 |
+
|
1419 |
+
/* verify a description */
|
1420 |
$has_desc = $field_desc ? true : false;
|
1421 |
+
|
1422 |
+
/* format setting outer wrapper */
|
1423 |
+
echo '<div class="format-setting type-link-color ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1424 |
+
|
1425 |
+
/* description */
|
1426 |
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1427 |
+
|
1428 |
+
/* format setting inner wrapper */
|
1429 |
echo '<div class="format-setting-inner">';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1430 |
|
1431 |
+
/* allow fields to be filtered */
|
1432 |
+
$ot_recognized_link_color_fields = apply_filters( 'ot_recognized_link_color_fields', array(
|
1433 |
+
'link' => _x( 'Standard', 'color picker', 'option-tree' ),
|
1434 |
+
'hover' => _x( 'Hover', 'color picker', 'option-tree' ),
|
1435 |
+
'active' => _x( 'Active', 'color picker', 'option-tree' ),
|
1436 |
+
'visited' => _x( 'Visited', 'color picker', 'option-tree' ),
|
1437 |
+
'focus' => _x( 'Focus', 'color picker', 'option-tree' )
|
1438 |
+
), $field_id );
|
1439 |
+
|
1440 |
+
/* build link color fields */
|
1441 |
+
foreach( $ot_recognized_link_color_fields as $type => $label ) {
|
1442 |
+
|
1443 |
+
if ( array_key_exists( $type, $ot_recognized_link_color_fields ) ) {
|
1444 |
|
1445 |
+
echo '<div class="option-tree-ui-colorpicker-input-wrap">';
|
1446 |
+
|
1447 |
+
echo '<label for="' . esc_attr( $field_id ) . '-picker-' . $type . '" class="option-tree-ui-colorpicker-label">' . esc_attr( $label ) . '</label>';
|
1448 |
+
|
1449 |
+
/* colorpicker JS */
|
1450 |
+
echo '<script>jQuery(document).ready(function($) { OT_UI.bind_colorpicker("' . esc_attr( $field_id ) . '-picker-' . $type . '"); });</script>';
|
1451 |
+
|
1452 |
+
/* set color */
|
1453 |
+
$color = isset( $field_value[ $type ] ) ? esc_attr( $field_value[ $type ] ) : '';
|
1454 |
|
1455 |
+
/* set default color */
|
1456 |
+
$std = isset( $field_std[ $type ] ) ? 'data-default-color="' . $field_std[ $type ] . '"' : '';
|
1457 |
+
|
1458 |
+
/* input */
|
1459 |
+
echo '<input type="text" name="' . esc_attr( $field_name ) . '[' . $type . ']" id="' . esc_attr( $field_id ) . '-picker-' . $type . '" value="' . $color . '" class="hide-color-picker ' . esc_attr( $field_class ) . '" ' . $std . ' />';
|
1460 |
+
|
1461 |
+
echo '</div>';
|
1462 |
+
|
1463 |
}
|
1464 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1465 |
}
|
1466 |
+
|
1467 |
echo '</div>';
|
1468 |
+
|
1469 |
echo '</div>';
|
1470 |
+
|
1471 |
}
|
1472 |
|
1473 |
}
|
1583 |
/* build measurement */
|
1584 |
echo '<select name="' . esc_attr( $field_name ) . '[1]" id="' . esc_attr( $field_id ) . '-1" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
1585 |
|
1586 |
+
echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
|
1587 |
|
1588 |
foreach ( ot_measurement_unit_types( $field_id ) as $unit ) {
|
1589 |
echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value[1] ) ? selected( $field_value[1], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
|
1663 |
* @since 2.2.0
|
1664 |
*/
|
1665 |
if ( ! function_exists( 'ot_type_on_off' ) ) {
|
1666 |
+
|
1667 |
function ot_type_on_off( $args = array() ) {
|
1668 |
+
|
1669 |
/* turns arguments array into variables */
|
1670 |
extract( $args );
|
1671 |
+
|
1672 |
/* verify a description */
|
1673 |
$has_desc = $field_desc ? true : false;
|
1674 |
+
|
1675 |
/* format setting outer wrapper */
|
1676 |
echo '<div class="format-setting type-radio ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
1677 |
+
|
1678 |
/* description */
|
1679 |
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
1680 |
+
|
1681 |
/* format setting inner wrapper */
|
1682 |
echo '<div class="format-setting-inner">';
|
1683 |
+
|
1684 |
+
/* Force only two choices, and allowing filtering on the choices value & label */
|
1685 |
$field_choices = array(
|
1686 |
array(
|
1687 |
+
/**
|
1688 |
+
* Filter the value of the On button.
|
1689 |
+
*
|
1690 |
+
* @since 2.5.0
|
1691 |
+
*
|
1692 |
+
* @param string The On button value. Default 'on'.
|
1693 |
+
* @param string $field_id The field ID.
|
1694 |
+
* @param string $filter_id For filtering both on/off value with one function.
|
1695 |
+
*/
|
1696 |
+
'value' => apply_filters( 'ot_on_off_switch_on_value', 'on', $field_id, 'on' ),
|
1697 |
+
/**
|
1698 |
+
* Filter the label of the On button.
|
1699 |
+
*
|
1700 |
+
* @since 2.5.0
|
1701 |
+
*
|
1702 |
+
* @param string The On button label. Default 'On'.
|
1703 |
+
* @param string $field_id The field ID.
|
1704 |
+
* @param string $filter_id For filtering both on/off label with one function.
|
1705 |
+
*/
|
1706 |
+
'label' => apply_filters( 'ot_on_off_switch_on_label', __( 'On', 'option-tree' ), $field_id, 'on' )
|
1707 |
),
|
1708 |
array(
|
1709 |
+
/**
|
1710 |
+
* Filter the value of the Off button.
|
1711 |
+
*
|
1712 |
+
* @since 2.5.0
|
1713 |
+
*
|
1714 |
+
* @param string The Off button value. Default 'off'.
|
1715 |
+
* @param string $field_id The field ID.
|
1716 |
+
* @param string $filter_id For filtering both on/off value with one function.
|
1717 |
+
*/
|
1718 |
+
'value' => apply_filters( 'ot_on_off_switch_off_value', 'off', $field_id, 'off' ),
|
1719 |
+
/**
|
1720 |
+
* Filter the label of the Off button.
|
1721 |
+
*
|
1722 |
+
* @since 2.5.0
|
1723 |
+
*
|
1724 |
+
* @param string The Off button label. Default 'Off'.
|
1725 |
+
* @param string $field_id The field ID.
|
1726 |
+
* @param string $filter_id For filtering both on/off label with one function.
|
1727 |
+
*/
|
1728 |
+
'label' => apply_filters( 'ot_on_off_switch_off_label', __( 'Off', 'option-tree' ), $field_id, 'off' )
|
1729 |
)
|
1730 |
);
|
1731 |
+
|
1732 |
+
/**
|
1733 |
+
* Filter the width of the On/Off switch.
|
1734 |
+
*
|
1735 |
+
* @since 2.5.0
|
1736 |
+
*
|
1737 |
+
* @param string The switch width. Default '100px'.
|
1738 |
+
* @param string $field_id The field ID.
|
1739 |
+
*/
|
1740 |
+
$switch_width = apply_filters( 'ot_on_off_switch_width', '100px', $field_id );
|
1741 |
+
|
1742 |
+
echo '<div class="on-off-switch"' . ( $switch_width != '100px' ? sprintf( ' style="width:%s"', $switch_width ) : '' ) . '>';
|
1743 |
+
|
1744 |
/* build radio */
|
1745 |
foreach ( (array) $field_choices as $key => $choice ) {
|
1746 |
echo '
|
1747 |
<input type="radio" name="' . esc_attr( $field_name ) . '" id="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" value="' . esc_attr( $choice['value'] ) . '"' . checked( $field_value, $choice['value'], false ) . ' class="radio option-tree-ui-radio ' . esc_attr( $field_class ) . '" />
|
1748 |
<label for="' . esc_attr( $field_id ) . '-' . esc_attr( $key ) . '" onclick="">' . esc_attr( $choice['label'] ) . '</label>';
|
1749 |
}
|
1750 |
+
|
1751 |
echo '<span class="slide-button"></span>';
|
1752 |
+
|
1753 |
echo '</div>';
|
1754 |
+
|
1755 |
echo '</div>';
|
1756 |
+
|
1757 |
echo '</div>';
|
1758 |
+
|
1759 |
}
|
1760 |
+
|
1761 |
}
|
1762 |
|
1763 |
/**
|
2446 |
|
2447 |
}
|
2448 |
|
2449 |
+
/**
|
2450 |
+
* Spacing Option Type.
|
2451 |
+
*
|
2452 |
+
* See @ot_display_by_type to see the full list of available arguments.
|
2453 |
+
*
|
2454 |
+
* @param array An array of arguments.
|
2455 |
+
* @return string
|
2456 |
+
*
|
2457 |
+
* @access public
|
2458 |
+
* @since 2.5.0
|
2459 |
+
*/
|
2460 |
+
if ( ! function_exists( 'ot_type_spacing' ) ) {
|
2461 |
+
|
2462 |
+
function ot_type_spacing( $args = array() ) {
|
2463 |
+
|
2464 |
+
/* turns arguments array into variables */
|
2465 |
+
extract( $args );
|
2466 |
+
|
2467 |
+
/* verify a description */
|
2468 |
+
$has_desc = $field_desc ? true : false;
|
2469 |
+
|
2470 |
+
/* format setting outer wrapper */
|
2471 |
+
echo '<div class="format-setting type-spacing ' . ( $has_desc ? 'has-desc' : 'no-desc' ) . '">';
|
2472 |
+
|
2473 |
+
/* description */
|
2474 |
+
echo $has_desc ? '<div class="description">' . htmlspecialchars_decode( $field_desc ) . '</div>' : '';
|
2475 |
+
|
2476 |
+
/* format setting inner wrapper */
|
2477 |
+
echo '<div class="format-setting-inner">';
|
2478 |
+
|
2479 |
+
/* allow fields to be filtered */
|
2480 |
+
$ot_recognized_spacing_fields = apply_filters( 'ot_recognized_spacing_fields', array(
|
2481 |
+
'top',
|
2482 |
+
'right',
|
2483 |
+
'bottom',
|
2484 |
+
'left',
|
2485 |
+
'unit'
|
2486 |
+
), $field_id );
|
2487 |
+
|
2488 |
+
/* build top spacing */
|
2489 |
+
if ( in_array( 'top', $ot_recognized_spacing_fields ) ) {
|
2490 |
+
|
2491 |
+
$top = isset( $field_value['top'] ) ? esc_attr( $field_value['top'] ) : '';
|
2492 |
+
|
2493 |
+
echo '<div class="ot-option-group"><span class="ot-icon-arrow-up ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[top]" id="' . esc_attr( $field_id ) . '-top" value="' . $top . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'top', 'option-tree' ) . '" /></div>';
|
2494 |
+
|
2495 |
+
}
|
2496 |
+
|
2497 |
+
/* build right spacing */
|
2498 |
+
if ( in_array( 'right', $ot_recognized_spacing_fields ) ) {
|
2499 |
+
|
2500 |
+
$right = isset( $field_value['right'] ) ? esc_attr( $field_value['right'] ) : '';
|
2501 |
+
|
2502 |
+
echo '<div class="ot-option-group"><span class="ot-icon-arrow-right ot-option-group--icon"></span></span><input type="text" name="' . esc_attr( $field_name ) . '[right]" id="' . esc_attr( $field_id ) . '-right" value="' . $right . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'right', 'option-tree' ) . '" /></div>';
|
2503 |
+
|
2504 |
+
}
|
2505 |
+
|
2506 |
+
/* build bottom spacing */
|
2507 |
+
if ( in_array( 'bottom', $ot_recognized_spacing_fields ) ) {
|
2508 |
+
|
2509 |
+
$bottom = isset( $field_value['bottom'] ) ? esc_attr( $field_value['bottom'] ) : '';
|
2510 |
+
|
2511 |
+
echo '<div class="ot-option-group"><span class="ot-icon-arrow-down ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[bottom]" id="' . esc_attr( $field_id ) . '-bottom" value="' . $bottom . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'bottom', 'option-tree' ) . '" /></div>';
|
2512 |
+
|
2513 |
+
}
|
2514 |
+
|
2515 |
+
/* build left spacing */
|
2516 |
+
if ( in_array( 'left', $ot_recognized_spacing_fields ) ) {
|
2517 |
+
|
2518 |
+
$left = isset( $field_value['left'] ) ? esc_attr( $field_value['left'] ) : '';
|
2519 |
+
|
2520 |
+
echo '<div class="ot-option-group"><span class="ot-icon-arrow-left ot-option-group--icon"></span><input type="text" name="' . esc_attr( $field_name ) . '[left]" id="' . esc_attr( $field_id ) . '-left" value="' . $left . '" class="widefat option-tree-ui-input ' . esc_attr( $field_class ) . '" placeholder="' . __( 'left', 'option-tree' ) . '" /></div>';
|
2521 |
+
|
2522 |
+
}
|
2523 |
+
|
2524 |
+
/* build unit dropdown */
|
2525 |
+
if ( in_array( 'unit', $ot_recognized_spacing_fields ) ) {
|
2526 |
+
|
2527 |
+
echo '<div class="ot-option-group ot-option-group--is-last">';
|
2528 |
+
|
2529 |
+
echo '<select name="' . esc_attr( $field_name ) . '[unit]" id="' . esc_attr( $field_id ) . '-unit" class="option-tree-ui-select ' . esc_attr( $field_class ) . '">';
|
2530 |
+
|
2531 |
+
echo '<option value="">' . __( 'unit', 'option-tree' ) . '</option>';
|
2532 |
+
|
2533 |
+
foreach ( ot_recognized_spacing_unit_types( $field_id ) as $unit ) {
|
2534 |
+
echo '<option value="' . esc_attr( $unit ) . '"' . ( isset( $field_value['unit'] ) ? selected( $field_value['unit'], $unit, false ) : '' ) . '>' . esc_attr( $unit ) . '</option>';
|
2535 |
+
}
|
2536 |
+
|
2537 |
+
echo '</select>';
|
2538 |
+
|
2539 |
+
echo '</div>';
|
2540 |
+
|
2541 |
+
}
|
2542 |
+
|
2543 |
+
echo '</div>';
|
2544 |
+
|
2545 |
+
echo '</div>';
|
2546 |
+
|
2547 |
+
}
|
2548 |
+
|
2549 |
+
}
|
2550 |
+
|
2551 |
/**
|
2552 |
* Tab option type.
|
2553 |
*
|
3255 |
}
|
3256 |
|
3257 |
/* End of file ot-functions-option-types.php */
|
3258 |
+
/* Location: ./includes/ot-functions-option-types.php */
|
includes/ot-functions-settings-page.php
CHANGED
@@ -33,7 +33,7 @@ if ( ! function_exists( 'ot_type_theme_options_ui' ) ) {
|
|
33 |
echo '<div class="description">';
|
34 |
|
35 |
echo '<h4>'. __( 'Warning!', 'option-tree' ) . '</h4>';
|
36 |
-
echo '<p class="warning">' . sprintf( __( 'Go to the %s page if you want to save data, this page is for adding settings.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, 'themes.php?page=ot-theme-options' ) . '"><code>Appearance->Theme Options</code></a>' ) . '</p>';
|
37 |
echo '<p class="warning">' . sprintf( __( 'If you\'re unsure or not completely positive that you should be editing these settings, you should read the %s first.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, 'admin.php?page=ot-documentation' ) . '"><code>OptionTree->Documentation</code></a>' ) . '</p>';
|
38 |
echo '<h4>'. __( 'Things could break or be improperly displayed to the end-user if you do one of the following:', 'option-tree' ) . '</h4>';
|
39 |
echo '<p class="warning">' . __( 'Give two sections the same ID, give two settings the same ID, give two contextual help content areas the same ID, don\'t create any settings, or have a section at the end of the settings list.', 'option-tree' ) . '</p>';
|
33 |
echo '<div class="description">';
|
34 |
|
35 |
echo '<h4>'. __( 'Warning!', 'option-tree' ) . '</h4>';
|
36 |
+
echo '<p class="warning">' . sprintf( __( 'Go to the %s page if you want to save data, this page is for adding settings.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) . '?page=' . apply_filters( 'ot_theme_options_menu_slug', 'ot-theme-options' ) ) . '"><code>Appearance->Theme Options</code></a>' ) . '</p>';
|
37 |
echo '<p class="warning">' . sprintf( __( 'If you\'re unsure or not completely positive that you should be editing these settings, you should read the %s first.', 'option-tree' ), '<a href="' . get_admin_url( $blog_id, 'admin.php?page=ot-documentation' ) . '"><code>OptionTree->Documentation</code></a>' ) . '</p>';
|
38 |
echo '<h4>'. __( 'Things could break or be improperly displayed to the end-user if you do one of the following:', 'option-tree' ) . '</h4>';
|
39 |
echo '<p class="warning">' . __( 'Give two sections the same ID, give two settings the same ID, give two contextual help content areas the same ID, don\'t create any settings, or have a section at the end of the settings list.', 'option-tree' ) . '</p>';
|
includes/ot-functions.php
CHANGED
@@ -96,7 +96,7 @@ if ( ! function_exists( 'ot_get_option' ) ) {
|
|
96 |
}
|
97 |
|
98 |
/**
|
99 |
-
* Echo Option.
|
100 |
*
|
101 |
* Helper function to echo the option value.
|
102 |
* If no value has been saved, it echos $default.
|
@@ -221,10 +221,13 @@ if ( ! function_exists( 'ot_load_dynamic_css' ) ) {
|
|
221 |
/* don't load in the admin */
|
222 |
if ( is_admin() )
|
223 |
return;
|
224 |
-
|
225 |
/* grab a copy of the paths */
|
226 |
$ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
|
227 |
-
|
|
|
|
|
|
|
228 |
if ( ! empty( $ot_css_file_paths ) ) {
|
229 |
|
230 |
$last_css = '';
|
@@ -262,9 +265,83 @@ if ( ! function_exists( 'ot_load_dynamic_css' ) ) {
|
|
262 |
}
|
263 |
|
264 |
/**
|
265 |
-
*
|
266 |
*
|
267 |
-
* @
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
268 |
*
|
269 |
* @return void
|
270 |
*
|
96 |
}
|
97 |
|
98 |
/**
|
99 |
+
* Echo Option.
|
100 |
*
|
101 |
* Helper function to echo the option value.
|
102 |
* If no value has been saved, it echos $default.
|
221 |
/* don't load in the admin */
|
222 |
if ( is_admin() )
|
223 |
return;
|
224 |
+
|
225 |
/* grab a copy of the paths */
|
226 |
$ot_css_file_paths = get_option( 'ot_css_file_paths', array() );
|
227 |
+
if ( is_multisite() ) {
|
228 |
+
$ot_css_file_paths = get_blog_option( get_current_blog_id(), 'ot_css_file_paths', $ot_css_file_paths );
|
229 |
+
}
|
230 |
+
|
231 |
if ( ! empty( $ot_css_file_paths ) ) {
|
232 |
|
233 |
$last_css = '';
|
265 |
}
|
266 |
|
267 |
/**
|
268 |
+
* Enqueue the Google Fonts CSS.
|
269 |
*
|
270 |
+
* @return void
|
271 |
+
*
|
272 |
+
* @access public
|
273 |
+
* @since 2.5.0
|
274 |
+
*/
|
275 |
+
if ( ! function_exists( 'ot_load_google_fonts_css' ) ) {
|
276 |
+
|
277 |
+
function ot_load_google_fonts_css() {
|
278 |
+
|
279 |
+
/* don't load in the admin */
|
280 |
+
if ( is_admin() )
|
281 |
+
return;
|
282 |
+
|
283 |
+
$ot_google_fonts = get_theme_mod( 'ot_google_fonts', array() );
|
284 |
+
$ot_set_google_fonts = get_theme_mod( 'ot_set_google_fonts', array() );
|
285 |
+
$families = array();
|
286 |
+
$subsets = array();
|
287 |
+
$append = '';
|
288 |
+
|
289 |
+
if ( ! empty( $ot_set_google_fonts ) ) {
|
290 |
+
|
291 |
+
foreach( $ot_set_google_fonts as $id => $fonts ) {
|
292 |
+
|
293 |
+
foreach( $fonts as $font ) {
|
294 |
+
|
295 |
+
// Can't find the font, bail!
|
296 |
+
if ( ! isset( $ot_google_fonts[$font['family']]['family'] ) ) {
|
297 |
+
continue;
|
298 |
+
}
|
299 |
+
|
300 |
+
// Set variants & subsets
|
301 |
+
if ( ! empty( $font['variants'] ) && is_array( $font['variants'] ) ) {
|
302 |
+
|
303 |
+
// Variants string
|
304 |
+
$variants = ':' . implode( ',', $font['variants'] );
|
305 |
+
|
306 |
+
// Add subsets to array
|
307 |
+
if ( ! empty( $font['subsets'] ) && is_array( $font['subsets'] ) ) {
|
308 |
+
foreach( $font['subsets'] as $subset ) {
|
309 |
+
$subsets[] = $subset;
|
310 |
+
}
|
311 |
+
}
|
312 |
+
|
313 |
+
}
|
314 |
+
|
315 |
+
// Add family & variants to array
|
316 |
+
if ( isset( $variants ) ) {
|
317 |
+
$families[] = str_replace( ' ', '+', $ot_google_fonts[$font['family']]['family'] ) . $variants;
|
318 |
+
}
|
319 |
+
|
320 |
+
}
|
321 |
+
|
322 |
+
}
|
323 |
+
|
324 |
+
}
|
325 |
+
|
326 |
+
if ( ! empty( $families ) ) {
|
327 |
+
|
328 |
+
// Append all subsets to the path, unless the only subset is latin.
|
329 |
+
if ( ! empty( $subsets ) ) {
|
330 |
+
$subsets = implode( ',', array_unique( $subsets ) );
|
331 |
+
if ( $subsets != 'latin' ) {
|
332 |
+
$append = '&subset=' . $subsets;
|
333 |
+
}
|
334 |
+
}
|
335 |
+
|
336 |
+
wp_enqueue_style( 'ot-google-fonts', esc_url( '//fonts.googleapis.com/css?family=' . implode( '|', $families ) ) . $append, false, null );
|
337 |
+
}
|
338 |
+
|
339 |
+
}
|
340 |
+
|
341 |
+
}
|
342 |
+
|
343 |
+
/**
|
344 |
+
* Registers the Theme Option page link for the admin bar.
|
345 |
*
|
346 |
* @return void
|
347 |
*
|
includes/ot-settings-api.php
CHANGED
@@ -49,9 +49,18 @@ if ( ! class_exists( 'OT_Settings' ) ) {
|
|
49 |
* @since 2.0
|
50 |
*/
|
51 |
public function hooks() {
|
52 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
/* add pages & menu items */
|
54 |
-
add_action( 'admin_menu', array( $this, 'add_page' ) );
|
55 |
|
56 |
/* register sections */
|
57 |
add_action( 'admin_init', array( $this, 'add_sections' ) );
|
@@ -474,6 +483,7 @@ if ( ! class_exists( 'OT_Settings' ) ) {
|
|
474 |
* @since 2.0
|
475 |
*/
|
476 |
public function display_setting( $args = array() ) {
|
|
|
477 |
extract( $args );
|
478 |
|
479 |
/* get current saved data */
|
@@ -511,6 +521,12 @@ if ( ! class_exists( 'OT_Settings' ) ) {
|
|
511 |
'get_option' => $get_option,
|
512 |
);
|
513 |
|
|
|
|
|
|
|
|
|
|
|
|
|
514 |
/* get the option HTML */
|
515 |
echo ot_display_by_type( $_args );
|
516 |
}
|
49 |
* @since 2.0
|
50 |
*/
|
51 |
public function hooks() {
|
52 |
+
|
53 |
+
/**
|
54 |
+
* Filter the `admin_menu` action hook priority.
|
55 |
+
*
|
56 |
+
* @since 2.5.0
|
57 |
+
*
|
58 |
+
* @param int $priority The priority. Default '10'.
|
59 |
+
*/
|
60 |
+
$priority = apply_filters( 'ot_admin_menu_priority', 10 );
|
61 |
+
|
62 |
/* add pages & menu items */
|
63 |
+
add_action( 'admin_menu', array( $this, 'add_page' ), $priority );
|
64 |
|
65 |
/* register sections */
|
66 |
add_action( 'admin_init', array( $this, 'add_sections' ) );
|
483 |
* @since 2.0
|
484 |
*/
|
485 |
public function display_setting( $args = array() ) {
|
486 |
+
|
487 |
extract( $args );
|
488 |
|
489 |
/* get current saved data */
|
521 |
'get_option' => $get_option,
|
522 |
);
|
523 |
|
524 |
+
// Limit DB queries for Google Fonts.
|
525 |
+
if ( $type == 'google-fonts' ) {
|
526 |
+
ot_fetch_google_fonts();
|
527 |
+
ot_set_google_fonts( $id, $field_value );
|
528 |
+
}
|
529 |
+
|
530 |
/* get the option HTML */
|
531 |
echo ot_display_by_type( $_args );
|
532 |
}
|
languages/option-tree-et.mo
ADDED
Binary file
|
languages/option-tree-et.po
ADDED
@@ -0,0 +1,3017 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: OptionTree\n"
|
4 |
+
"POT-Creation-Date: 2015-02-09 08:03-0800\n"
|
5 |
+
"PO-Revision-Date: 2015-02-09 08:03-0800\n"
|
6 |
+
"Last-Translator: Derek Herman <derek@valendesigns.com>\n"
|
7 |
+
"Language-Team: Valen Designs\n"
|
8 |
+
"Language: et_EE\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.7.4\n"
|
13 |
+
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
14 |
+
"_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
|
15 |
+
"esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
|
16 |
+
"X-Poedit-Basepath: .\n"
|
17 |
+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18 |
+
"X-Poedit-SearchPath-0: ..\n"
|
19 |
+
"X-Poedit-SearchPathExcluded-0: ../.git\n"
|
20 |
+
"X-Poedit-SearchPathExcluded-1: ../composer.json\n"
|
21 |
+
"X-Poedit-SearchPathExcluded-2: ../assets\n"
|
22 |
+
|
23 |
+
#: ../includes/ot-cleanup-api.php:84 ../includes/ot-cleanup-api.php:101
|
24 |
+
#: ../includes/ot-cleanup-api.php:130
|
25 |
+
msgid "OptionTree Cleanup"
|
26 |
+
msgstr "OptionTree puhastus"
|
27 |
+
|
28 |
+
#: ../includes/ot-cleanup-api.php:101
|
29 |
+
#, php-format
|
30 |
+
msgid ""
|
31 |
+
"OptionTree has outdated data that should be removed. Please go to %s for "
|
32 |
+
"more information."
|
33 |
+
msgstr ""
|
34 |
+
"OptionTreel on aegunud andmeid, mis tuleks eemaldada. Lisainformatsiooni "
|
35 |
+
"saamiseks mine palun %s."
|
36 |
+
|
37 |
+
#: ../includes/ot-cleanup-api.php:136
|
38 |
+
msgid "Multiple Media Posts"
|
39 |
+
msgstr "Mitme meediaga postitused"
|
40 |
+
|
41 |
+
#: ../includes/ot-cleanup-api.php:138
|
42 |
+
#, php-format
|
43 |
+
msgid ""
|
44 |
+
"There are currently %s OptionTree media posts in your database. At some "
|
45 |
+
"point in the past, a version of OptionTree added multiple %s media post "
|
46 |
+
"objects cluttering up your %s table. There is no associated risk or harm "
|
47 |
+
"that these posts have caused other than to add size to your overall "
|
48 |
+
"database. Thankfully, there is a way to remove all these orphaned media "
|
49 |
+
"posts and get your database cleaned up."
|
50 |
+
msgstr ""
|
51 |
+
"Sul on hetkel %s OptionTree meedia postitust andmebaasis. Millalgi varem "
|
52 |
+
"lisas OptionTree mitu %s meedia postitust, risustades %s tabelit. Nende "
|
53 |
+
"postitustega ei kaasne mingeid riske või kahju peale selle, et andmebaasi "
|
54 |
+
"maht on suurem. Õnneks on nende orbudeks jäänud postituste eemaldamiseks "
|
55 |
+
"moodus olemas, nii et saab andmebaasi jälle puhtaks."
|
56 |
+
|
57 |
+
#: ../includes/ot-cleanup-api.php:140
|
58 |
+
#, php-format
|
59 |
+
msgid ""
|
60 |
+
"By clicking the button below, OptionTree will delete %s records and "
|
61 |
+
"consolidate them into one single OptionTree media post for uploading "
|
62 |
+
"attachments to. Additionally, the attachments will have their parent ID "
|
63 |
+
"updated to the correct media post."
|
64 |
+
msgstr ""
|
65 |
+
"Vajutades allolevat nuppu, kustutab OptionTree %s kirjet ning ühendab nad "
|
66 |
+
"ainsasse OptionTree meedia postitusse, kuhu manuseid üles laaditakse. Lisaks "
|
67 |
+
"määratakse nende manuste vanema ID-le õige väärtus."
|
68 |
+
|
69 |
+
#: ../includes/ot-cleanup-api.php:142
|
70 |
+
msgid ""
|
71 |
+
"This could take a while to fully process depending on how many records you "
|
72 |
+
"have in your database, so please be patient and wait for the script to "
|
73 |
+
"finish."
|
74 |
+
msgstr ""
|
75 |
+
"See protsess võtab aega sõltuvalt andmebaasis olevate kirjete arvust, seega "
|
76 |
+
"palun olge kannatlikud ja laske skriptil oma töö lõpetada."
|
77 |
+
|
78 |
+
#: ../includes/ot-cleanup-api.php:144
|
79 |
+
#, php-format
|
80 |
+
msgid ""
|
81 |
+
"%s Your server is running in safe mode. Which means this page will "
|
82 |
+
"automatically reload after deleting %s posts, you can filter this number "
|
83 |
+
"using %s if your server is having trouble processing that many at one time."
|
84 |
+
msgstr ""
|
85 |
+
"%s Sinu server töötab turvarežiimis, mistõttu see lehekülg laetakse peale %s "
|
86 |
+
"postituse kustutamist uuesti. Kui serveril on nii korraga nii mitme "
|
87 |
+
"postituse töötlemisega probleeme, siis on seda numbrit võimalik %s filtriga "
|
88 |
+
"muuta."
|
89 |
+
|
90 |
+
#: ../includes/ot-cleanup-api.php:146
|
91 |
+
msgid "Consolidate Posts"
|
92 |
+
msgstr "Konsolideeri postitused"
|
93 |
+
|
94 |
+
#: ../includes/ot-cleanup-api.php:174
|
95 |
+
msgid "Reloading..."
|
96 |
+
msgstr "Värskendame..."
|
97 |
+
|
98 |
+
#: ../includes/ot-cleanup-api.php:210
|
99 |
+
msgid "Clean up script has completed, the page will now reload..."
|
100 |
+
msgstr "Puhastusskript on töö lõpetanud, leht laeb end kohe uuesti..."
|
101 |
+
|
102 |
+
#: ../includes/ot-cleanup-api.php:230
|
103 |
+
msgid "Outdated Table"
|
104 |
+
msgstr "Aegunud tabel"
|
105 |
+
|
106 |
+
#: ../includes/ot-cleanup-api.php:232
|
107 |
+
#, php-format
|
108 |
+
msgid ""
|
109 |
+
"If you have upgraded from an old 1.x version of OptionTree at some point, "
|
110 |
+
"you have an extra %s table in your database that can be removed. It's not "
|
111 |
+
"hurting anything, but does not need to be there. If you want to remove it. "
|
112 |
+
"Click the button below."
|
113 |
+
msgstr ""
|
114 |
+
"Kui oled millalgi OptionTreed uuendanud vanalt 1.x versioonilt, on sul "
|
115 |
+
"andmebaasis üleliigne tabel %s, mille saaks eemaldada. See ei tee midagi "
|
116 |
+
"halba ning ei pea seal olema. Eemaldamiseks vajuta allolevat nuppu."
|
117 |
+
|
118 |
+
#: ../includes/ot-cleanup-api.php:234
|
119 |
+
msgid "Drop Table"
|
120 |
+
msgstr "Eemalda tabel"
|
121 |
+
|
122 |
+
#: ../includes/ot-cleanup-api.php:238
|
123 |
+
#, php-format
|
124 |
+
msgid "Deleting the outdated and unused %s table..."
|
125 |
+
msgstr "Kustutan aegunud ja kasutamata tabeli %s..."
|
126 |
+
|
127 |
+
#: ../includes/ot-cleanup-api.php:244
|
128 |
+
#, php-format
|
129 |
+
msgid "The %s table has been successfully deleted. The page will now reload..."
|
130 |
+
msgstr "Tabel %s kustutatu edukalt. Leht laetakse kohe uuesti..."
|
131 |
+
|
132 |
+
#: ../includes/ot-cleanup-api.php:256
|
133 |
+
#, php-format
|
134 |
+
msgid "Something went wrong. The %s table was not deleted."
|
135 |
+
msgstr "Midagi läks valesti. Tabelit %s ei kustutatud."
|
136 |
+
|
137 |
+
#: ../includes/ot-functions-admin.php:50 ../includes/ot-functions-admin.php:51
|
138 |
+
#: ../includes/ot-functions-admin.php:169
|
139 |
+
#: ../includes/ot-functions-admin.php:193 ../includes/ot-functions.php:361
|
140 |
+
msgid "Theme Options"
|
141 |
+
msgstr "Teema seaded"
|
142 |
+
|
143 |
+
#: ../includes/ot-functions-admin.php:56
|
144 |
+
#: ../includes/ot-functions-admin.php:126
|
145 |
+
#: ../includes/ot-functions-admin.php:220
|
146 |
+
msgid "Theme Options updated."
|
147 |
+
msgstr "Teema seaded on uuendatud."
|
148 |
+
|
149 |
+
#: ../includes/ot-functions-admin.php:57
|
150 |
+
#: ../includes/ot-functions-admin.php:127
|
151 |
+
#: ../includes/ot-functions-admin.php:221
|
152 |
+
msgid "Theme Options reset."
|
153 |
+
msgstr "Teema valikute algseadistamine."
|
154 |
+
|
155 |
+
#: ../includes/ot-functions-admin.php:58
|
156 |
+
#: ../includes/ot-functions-settings-page.php:94
|
157 |
+
#: ../includes/ot-functions-settings-page.php:133
|
158 |
+
msgid "Save Changes"
|
159 |
+
msgstr "Salvesta muudatused"
|
160 |
+
|
161 |
+
#: ../includes/ot-functions-admin.php:97
|
162 |
+
msgid ""
|
163 |
+
"The Theme Options UI Builder is being overridden by a custom file in your "
|
164 |
+
"theme. Any changes you make via the UI Builder will not be saved."
|
165 |
+
msgstr ""
|
166 |
+
"Teema kaustas on kohandatud fail, mistõttu Teema Valikute ehitaja "
|
167 |
+
"kasutajaliideses tehtud muudatused ei salvestu."
|
168 |
+
|
169 |
+
#: ../includes/ot-functions-admin.php:109
|
170 |
+
#: ../includes/ot-functions-admin.php:110
|
171 |
+
#: ../includes/ot-functions-docs-page.php:821
|
172 |
+
msgid "OptionTree"
|
173 |
+
msgstr "OptionTree"
|
174 |
+
|
175 |
+
#: ../includes/ot-functions-admin.php:120
|
176 |
+
#: ../includes/ot-functions-admin.php:121
|
177 |
+
#: ../includes/ot-functions-admin.php:163
|
178 |
+
#: ../includes/ot-functions-admin.php:187
|
179 |
+
#: ../includes/ot-functions-docs-page.php:49
|
180 |
+
msgid "Settings"
|
181 |
+
msgstr "Seaded"
|
182 |
+
|
183 |
+
#: ../includes/ot-functions-admin.php:128
|
184 |
+
#: ../includes/ot-functions-admin.php:222
|
185 |
+
msgid "Save Settings"
|
186 |
+
msgstr "Salvesta seaded"
|
187 |
+
|
188 |
+
#: ../includes/ot-functions-admin.php:133
|
189 |
+
msgid "Theme Options UI"
|
190 |
+
msgstr "Teema valikute kasutajaliides"
|
191 |
+
|
192 |
+
#: ../includes/ot-functions-admin.php:137
|
193 |
+
msgid "Import"
|
194 |
+
msgstr "Impordi"
|
195 |
+
|
196 |
+
#: ../includes/ot-functions-admin.php:141
|
197 |
+
msgid "Export"
|
198 |
+
msgstr "Ekspordi"
|
199 |
+
|
200 |
+
#: ../includes/ot-functions-admin.php:145
|
201 |
+
#: ../includes/ot-functions-admin.php:175
|
202 |
+
#: ../includes/ot-functions-admin.php:199
|
203 |
+
msgid "Layouts"
|
204 |
+
msgstr "Paigutused"
|
205 |
+
|
206 |
+
#: ../includes/ot-functions-admin.php:151
|
207 |
+
msgid "Theme Options UI Builder"
|
208 |
+
msgstr "Teema valikute kasutajaliidese ehitaja"
|
209 |
+
|
210 |
+
#: ../includes/ot-functions-admin.php:157
|
211 |
+
msgid "Settings XML"
|
212 |
+
msgstr "Seadete XML"
|
213 |
+
|
214 |
+
#: ../includes/ot-functions-admin.php:181
|
215 |
+
msgid "Settings PHP File"
|
216 |
+
msgstr "Seadete PHP fail"
|
217 |
+
|
218 |
+
#: ../includes/ot-functions-admin.php:205
|
219 |
+
msgid "Layout Management"
|
220 |
+
msgstr "Paigutuste haldus"
|
221 |
+
|
222 |
+
#: ../includes/ot-functions-admin.php:214
|
223 |
+
#: ../includes/ot-functions-admin.php:215
|
224 |
+
msgid "Documentation"
|
225 |
+
msgstr "Dokumentatsioon"
|
226 |
+
|
227 |
+
#: ../includes/ot-functions-admin.php:227
|
228 |
+
msgid "Creating Options"
|
229 |
+
msgstr "Seadete loomine"
|
230 |
+
|
231 |
+
#: ../includes/ot-functions-admin.php:231
|
232 |
+
msgid "Option Types"
|
233 |
+
msgstr "Valikute tüübid"
|
234 |
+
|
235 |
+
#: ../includes/ot-functions-admin.php:235
|
236 |
+
msgid "Function References"
|
237 |
+
msgstr "Funktsioonide ülevaade"
|
238 |
+
|
239 |
+
#: ../includes/ot-functions-admin.php:239
|
240 |
+
#: ../includes/ot-functions-admin.php:281
|
241 |
+
#: ../includes/ot-functions-settings-page.php:366
|
242 |
+
msgid "Theme Mode"
|
243 |
+
msgstr "Teema režiim"
|
244 |
+
|
245 |
+
#: ../includes/ot-functions-admin.php:243
|
246 |
+
#: ../includes/ot-functions-admin.php:287
|
247 |
+
msgid "Meta Boxes"
|
248 |
+
msgstr "Meta kastid"
|
249 |
+
|
250 |
+
#: ../includes/ot-functions-admin.php:247
|
251 |
+
msgid "Code Examples"
|
252 |
+
msgstr "Koodinäited"
|
253 |
+
|
254 |
+
#: ../includes/ot-functions-admin.php:251
|
255 |
+
msgid "Layouts Overview"
|
256 |
+
msgstr "Paigutuste ülevaade"
|
257 |
+
|
258 |
+
#: ../includes/ot-functions-admin.php:257
|
259 |
+
msgid "Overview of available Theme Option fields."
|
260 |
+
msgstr "Võimalike teema valikute väljade ülevaade."
|
261 |
+
|
262 |
+
#: ../includes/ot-functions-admin.php:263
|
263 |
+
msgid "Option types in alphabetical order & hooks to filter them."
|
264 |
+
msgstr ""
|
265 |
+
"Valikutüübid tähestikulises järjekorras ja konksud nende filtreerimiseks."
|
266 |
+
|
267 |
+
#: ../includes/ot-functions-admin.php:269
|
268 |
+
msgid "Function Reference:ot_get_option()"
|
269 |
+
msgstr "Funktsiooni ülevaade:ot_get_option()"
|
270 |
+
|
271 |
+
#: ../includes/ot-functions-admin.php:275
|
272 |
+
msgid "Function Reference:get_option_tree()"
|
273 |
+
msgstr "Funktsiooni ülevaade:get_option_tree()"
|
274 |
+
|
275 |
+
#: ../includes/ot-functions-admin.php:293
|
276 |
+
msgid "Code examples for front-end development."
|
277 |
+
msgstr "Koodinäited veebilehe välise poole arenduseks."
|
278 |
+
|
279 |
+
#: ../includes/ot-functions-admin.php:299
|
280 |
+
msgid "What's a layout anyhow?"
|
281 |
+
msgstr "Mis siis ikkagi on paigutus?"
|
282 |
+
|
283 |
+
#: ../includes/ot-functions-admin.php:502
|
284 |
+
#: ../includes/ot-functions-admin.php:614
|
285 |
+
#: ../includes/ot-functions-admin.php:683
|
286 |
+
#, php-format
|
287 |
+
msgid "The %s input field for %s only allows numeric values."
|
288 |
+
msgstr "%s sisendväli %s jaoks lubab vaid numbrilisi väärtusi."
|
289 |
+
|
290 |
+
#: ../includes/ot-functions-admin.php:512
|
291 |
+
msgid "The Colorpicker only allows valid hexadecimal values."
|
292 |
+
msgstr ""
|
293 |
+
"Värvi valija lubab vaid sobivaid kuueteistkümnendiksüsteemis väärtuseid."
|
294 |
+
|
295 |
+
#: ../includes/ot-functions-admin.php:566
|
296 |
+
#, php-format
|
297 |
+
msgid "The %s Colorpicker only allows valid hexadecimal values."
|
298 |
+
msgstr "%s värvi valija lubab väärtuseid vaid kuueteistkümnendiksüsteemis."
|
299 |
+
|
300 |
+
#: ../includes/ot-functions-admin.php:849
|
301 |
+
#: ../includes/ot-functions-docs-page.php:398
|
302 |
+
#: ../includes/ot-functions-settings-page.php:170 ../ot-loader.php:782
|
303 |
+
msgid "Send to OptionTree"
|
304 |
+
msgstr "Saada OptionTree-le"
|
305 |
+
|
306 |
+
#: ../includes/ot-functions-admin.php:850
|
307 |
+
#: ../includes/ot-functions-option-types.php:257
|
308 |
+
#: ../includes/ot-functions-option-types.php:3243
|
309 |
+
msgid "Remove Media"
|
310 |
+
msgstr "Eemalda meedia"
|
311 |
+
|
312 |
+
#: ../includes/ot-functions-admin.php:851
|
313 |
+
msgid "Are you sure you want to reset back to the defaults?"
|
314 |
+
msgstr "Kas olete kindel, et soovite taastada algseaded?"
|
315 |
+
|
316 |
+
#: ../includes/ot-functions-admin.php:852
|
317 |
+
msgid "You can't remove this! But you can edit the values."
|
318 |
+
msgstr "Te ei saa seda eemaldada! Väärtuste muutmine on lubatud."
|
319 |
+
|
320 |
+
#: ../includes/ot-functions-admin.php:853
|
321 |
+
msgid "Are you sure you want to remove this?"
|
322 |
+
msgstr "Kas olete kindel, et soovite seda eemaldada?"
|
323 |
+
|
324 |
+
#: ../includes/ot-functions-admin.php:854
|
325 |
+
msgid "Are you sure you want to activate this layout?"
|
326 |
+
msgstr "Kas olete kindel, et soovite seda paigutust aktiveerida?"
|
327 |
+
|
328 |
+
#: ../includes/ot-functions-admin.php:855
|
329 |
+
msgid "Sorry, you can't have settings three levels deep."
|
330 |
+
msgstr "Kahjuks ei saa sätteid määrata kolmanda taseme sügavusega."
|
331 |
+
|
332 |
+
#: ../includes/ot-functions-admin.php:856
|
333 |
+
#: ../includes/ot-functions-option-types.php:1208
|
334 |
+
msgid "Delete Gallery"
|
335 |
+
msgstr "Kustuta galerii"
|
336 |
+
|
337 |
+
#: ../includes/ot-functions-admin.php:857
|
338 |
+
#: ../includes/ot-functions-option-types.php:1209
|
339 |
+
msgid "Edit Gallery"
|
340 |
+
msgstr "Muuda galeriid"
|
341 |
+
|
342 |
+
#: ../includes/ot-functions-admin.php:858
|
343 |
+
#: ../includes/ot-functions-option-types.php:1216
|
344 |
+
msgid "Create Gallery"
|
345 |
+
msgstr "Loo galerii"
|
346 |
+
|
347 |
+
#: ../includes/ot-functions-admin.php:859
|
348 |
+
msgid "Are you sure you want to delete this Gallery?"
|
349 |
+
msgstr "Kas olete kindel, et soovite seda galeriid kustutada?"
|
350 |
+
|
351 |
+
#: ../includes/ot-functions-admin.php:860
|
352 |
+
msgid "Today"
|
353 |
+
msgstr "Täna"
|
354 |
+
|
355 |
+
#: ../includes/ot-functions-admin.php:861
|
356 |
+
msgid "Now"
|
357 |
+
msgstr "Praegu"
|
358 |
+
|
359 |
+
#: ../includes/ot-functions-admin.php:862
|
360 |
+
msgid "Close"
|
361 |
+
msgstr "Sulge"
|
362 |
+
|
363 |
+
#: ../includes/ot-functions-admin.php:863
|
364 |
+
msgid "Featured Image"
|
365 |
+
msgstr "Tunuuspilt"
|
366 |
+
|
367 |
+
#: ../includes/ot-functions-admin.php:864
|
368 |
+
#: ../includes/ot-functions-admin.php:3247
|
369 |
+
#: ../includes/ot-functions-admin.php:3308
|
370 |
+
msgid "Image"
|
371 |
+
msgstr "Pilt"
|
372 |
+
|
373 |
+
#: ../includes/ot-functions-admin.php:932
|
374 |
+
msgid "Option Tree"
|
375 |
+
msgstr "Option Tree"
|
376 |
+
|
377 |
+
#: ../includes/ot-functions-admin.php:1069
|
378 |
+
msgid "General"
|
379 |
+
msgstr "Üldseaded"
|
380 |
+
|
381 |
+
#: ../includes/ot-functions-admin.php:1075
|
382 |
+
msgid "Sample Text Field Label"
|
383 |
+
msgstr "Tekstisisendi nimetuse näide"
|
384 |
+
|
385 |
+
#: ../includes/ot-functions-admin.php:1076
|
386 |
+
msgid "Description for the sample text field."
|
387 |
+
msgstr "Tekstisisendi kirjelduse näide"
|
388 |
+
|
389 |
+
#: ../includes/ot-functions-admin.php:2318
|
390 |
+
msgid "Settings updated."
|
391 |
+
msgstr "Seaded on uuendatud."
|
392 |
+
|
393 |
+
#: ../includes/ot-functions-admin.php:2322
|
394 |
+
msgid "Settings could not be saved."
|
395 |
+
msgstr "Seadeid ei suudetud uuendada."
|
396 |
+
|
397 |
+
#: ../includes/ot-functions-admin.php:2330
|
398 |
+
msgid "Settings Imported."
|
399 |
+
msgstr "Seaded on imporditud."
|
400 |
+
|
401 |
+
#: ../includes/ot-functions-admin.php:2334
|
402 |
+
msgid "Settings could not be imported."
|
403 |
+
msgstr "Seadeid ei suudetud importida."
|
404 |
+
|
405 |
+
#: ../includes/ot-functions-admin.php:2341
|
406 |
+
msgid "Data Imported."
|
407 |
+
msgstr "Andmed on imporditud."
|
408 |
+
|
409 |
+
#: ../includes/ot-functions-admin.php:2345
|
410 |
+
msgid "Data could not be imported."
|
411 |
+
msgstr "Andmeid ei suudetud importida."
|
412 |
+
|
413 |
+
#: ../includes/ot-functions-admin.php:2353
|
414 |
+
msgid "Layouts Imported."
|
415 |
+
msgstr "Paigutused on imporditud."
|
416 |
+
|
417 |
+
#: ../includes/ot-functions-admin.php:2357
|
418 |
+
msgid "Layouts could not be imported."
|
419 |
+
msgstr "Paigutusi ei suudetud importida."
|
420 |
+
|
421 |
+
#: ../includes/ot-functions-admin.php:2365
|
422 |
+
msgid "Layouts Updated."
|
423 |
+
msgstr "Paigutused on uuendatud."
|
424 |
+
|
425 |
+
#: ../includes/ot-functions-admin.php:2369
|
426 |
+
msgid "Layouts could not be updated."
|
427 |
+
msgstr "Paigutusi ei suudetud uuendada."
|
428 |
+
|
429 |
+
#: ../includes/ot-functions-admin.php:2373
|
430 |
+
msgid "Layouts have been deleted."
|
431 |
+
msgstr "Paigutused on kustutatud."
|
432 |
+
|
433 |
+
#: ../includes/ot-functions-admin.php:2379
|
434 |
+
msgid "Layout activated."
|
435 |
+
msgstr "Paigutus on aktiveeritud."
|
436 |
+
|
437 |
+
#: ../includes/ot-functions-admin.php:2418
|
438 |
+
#: ../includes/ot-functions-docs-page.php:110
|
439 |
+
msgid "Background"
|
440 |
+
msgstr "Taust"
|
441 |
+
|
442 |
+
#: ../includes/ot-functions-admin.php:2419
|
443 |
+
#: ../includes/ot-functions-docs-page.php:113
|
444 |
+
msgid "Border"
|
445 |
+
msgstr "Ääris"
|
446 |
+
|
447 |
+
#: ../includes/ot-functions-admin.php:2420
|
448 |
+
#: ../includes/ot-functions-docs-page.php:116
|
449 |
+
msgid "Box Shadow"
|
450 |
+
msgstr "Kasti vari"
|
451 |
+
|
452 |
+
#: ../includes/ot-functions-admin.php:2421
|
453 |
+
#: ../includes/ot-functions-docs-page.php:119
|
454 |
+
msgid "Category Checkbox"
|
455 |
+
msgstr "Kategooriate valikkastid"
|
456 |
+
|
457 |
+
#: ../includes/ot-functions-admin.php:2422
|
458 |
+
#: ../includes/ot-functions-docs-page.php:122
|
459 |
+
msgid "Category Select"
|
460 |
+
msgstr "Kategooria rippvalik"
|
461 |
+
|
462 |
+
#: ../includes/ot-functions-admin.php:2423
|
463 |
+
#: ../includes/ot-functions-docs-page.php:125
|
464 |
+
msgid "Checkbox"
|
465 |
+
msgstr "Valikkastid"
|
466 |
+
|
467 |
+
#: ../includes/ot-functions-admin.php:2424
|
468 |
+
#: ../includes/ot-functions-docs-page.php:128
|
469 |
+
msgid "Colorpicker"
|
470 |
+
msgstr "Värvivalik"
|
471 |
+
|
472 |
+
#: ../includes/ot-functions-admin.php:2425
|
473 |
+
#: ../includes/ot-functions-docs-page.php:131
|
474 |
+
msgid "Colorpicker Opacity"
|
475 |
+
msgstr "Värvivalija läbipaistmatus"
|
476 |
+
|
477 |
+
#: ../includes/ot-functions-admin.php:2426
|
478 |
+
#: ../includes/ot-functions-docs-page.php:134
|
479 |
+
msgid "CSS"
|
480 |
+
msgstr "CSS"
|
481 |
+
|
482 |
+
#: ../includes/ot-functions-admin.php:2427
|
483 |
+
#: ../includes/ot-functions-docs-page.php:153
|
484 |
+
msgid "Custom Post Type Checkbox"
|
485 |
+
msgstr "Enda loodud postitüübi valikkastid"
|
486 |
+
|
487 |
+
#: ../includes/ot-functions-admin.php:2428
|
488 |
+
#: ../includes/ot-functions-docs-page.php:156
|
489 |
+
msgid "Custom Post Type Select"
|
490 |
+
msgstr "Enda loodud postitüübi rippvalik"
|
491 |
+
|
492 |
+
#: ../includes/ot-functions-admin.php:2429
|
493 |
+
#: ../includes/ot-functions-docs-page.php:159
|
494 |
+
msgid "Date Picker"
|
495 |
+
msgstr "Kuupäev valija"
|
496 |
+
|
497 |
+
#: ../includes/ot-functions-admin.php:2430
|
498 |
+
#: ../includes/ot-functions-docs-page.php:162
|
499 |
+
msgid "Date Time Picker"
|
500 |
+
msgstr "Kuupäeva ja kellaaja valija"
|
501 |
+
|
502 |
+
#: ../includes/ot-functions-admin.php:2431
|
503 |
+
#: ../includes/ot-functions-docs-page.php:165
|
504 |
+
msgid "Dimension"
|
505 |
+
msgstr "Mõõtmed"
|
506 |
+
|
507 |
+
#: ../includes/ot-functions-admin.php:2432
|
508 |
+
#: ../includes/ot-functions-admin.php:5406
|
509 |
+
#: ../includes/ot-functions-docs-page.php:168
|
510 |
+
msgid "Gallery"
|
511 |
+
msgstr "Galerii"
|
512 |
+
|
513 |
+
#: ../includes/ot-functions-admin.php:2433
|
514 |
+
#: ../includes/ot-functions-docs-page.php:171
|
515 |
+
msgid "Google Fonts"
|
516 |
+
msgstr "Google Fondid"
|
517 |
+
|
518 |
+
#: ../includes/ot-functions-admin.php:2434
|
519 |
+
#: ../includes/ot-functions-docs-page.php:174
|
520 |
+
msgid "JavaScript"
|
521 |
+
msgstr "JavaScript"
|
522 |
+
|
523 |
+
#: ../includes/ot-functions-admin.php:2435
|
524 |
+
#: ../includes/ot-functions-docs-page.php:177
|
525 |
+
msgid "Link Color"
|
526 |
+
msgstr "Lingi värv"
|
527 |
+
|
528 |
+
#: ../includes/ot-functions-admin.php:2436
|
529 |
+
#: ../includes/ot-functions-docs-page.php:180
|
530 |
+
msgid "List Item"
|
531 |
+
msgstr "Nimekirja element"
|
532 |
+
|
533 |
+
#: ../includes/ot-functions-admin.php:2437
|
534 |
+
#: ../includes/ot-functions-docs-page.php:183
|
535 |
+
msgid "Measurement"
|
536 |
+
msgstr "Mõõt"
|
537 |
+
|
538 |
+
#: ../includes/ot-functions-admin.php:2438
|
539 |
+
#: ../includes/ot-functions-docs-page.php:214
|
540 |
+
msgid "Numeric Slider"
|
541 |
+
msgstr "Numbriskaala"
|
542 |
+
|
543 |
+
#: ../includes/ot-functions-admin.php:2439
|
544 |
+
#: ../includes/ot-functions-docs-page.php:217
|
545 |
+
msgid "On/Off"
|
546 |
+
msgstr "Sees/väljas"
|
547 |
+
|
548 |
+
#: ../includes/ot-functions-admin.php:2440
|
549 |
+
#: ../includes/ot-functions-docs-page.php:220
|
550 |
+
msgid "Page Checkbox"
|
551 |
+
msgstr "Lehekülgede valikkastid"
|
552 |
+
|
553 |
+
#: ../includes/ot-functions-admin.php:2441
|
554 |
+
#: ../includes/ot-functions-docs-page.php:223
|
555 |
+
msgid "Page Select"
|
556 |
+
msgstr "Lehekülje rippvalik"
|
557 |
+
|
558 |
+
#: ../includes/ot-functions-admin.php:2442
|
559 |
+
#: ../includes/ot-functions-docs-page.php:226
|
560 |
+
msgid "Post Checkbox"
|
561 |
+
msgstr "Postituste valikkastid"
|
562 |
+
|
563 |
+
#: ../includes/ot-functions-admin.php:2443
|
564 |
+
#: ../includes/ot-functions-docs-page.php:229
|
565 |
+
msgid "Post Select"
|
566 |
+
msgstr "Postituse rippvalik"
|
567 |
+
|
568 |
+
#: ../includes/ot-functions-admin.php:2444
|
569 |
+
#: ../includes/ot-functions-docs-page.php:232
|
570 |
+
msgid "Radio"
|
571 |
+
msgstr "Raadiokastid"
|
572 |
+
|
573 |
+
#: ../includes/ot-functions-admin.php:2445
|
574 |
+
#: ../includes/ot-functions-docs-page.php:235
|
575 |
+
msgid "Radio Image"
|
576 |
+
msgstr "Pildiga raadiokastid"
|
577 |
+
|
578 |
+
#: ../includes/ot-functions-admin.php:2446
|
579 |
+
#: ../includes/ot-functions-docs-page.php:262
|
580 |
+
msgid "Select"
|
581 |
+
msgstr "Rippvalik"
|
582 |
+
|
583 |
+
#: ../includes/ot-functions-admin.php:2447
|
584 |
+
#: ../includes/ot-functions-docs-page.php:265
|
585 |
+
msgid "Sidebar Select"
|
586 |
+
msgstr "Küljeriba rippvalik"
|
587 |
+
|
588 |
+
#: ../includes/ot-functions-admin.php:2448
|
589 |
+
#: ../includes/ot-functions-docs-page.php:269
|
590 |
+
msgid "Slider"
|
591 |
+
msgstr "Slaidiesitaja"
|
592 |
+
|
593 |
+
#: ../includes/ot-functions-admin.php:2449
|
594 |
+
#: ../includes/ot-functions-docs-page.php:272
|
595 |
+
msgid "Social Links"
|
596 |
+
msgstr "Sotsiaalmeedia"
|
597 |
+
|
598 |
+
#: ../includes/ot-functions-admin.php:2450
|
599 |
+
#: ../includes/ot-functions-docs-page.php:275
|
600 |
+
msgid "Spacing"
|
601 |
+
msgstr "Vahed"
|
602 |
+
|
603 |
+
#: ../includes/ot-functions-admin.php:2451
|
604 |
+
#: ../includes/ot-functions-docs-page.php:278
|
605 |
+
msgid "Tab"
|
606 |
+
msgstr "Sakk"
|
607 |
+
|
608 |
+
#: ../includes/ot-functions-admin.php:2452
|
609 |
+
#: ../includes/ot-functions-docs-page.php:281
|
610 |
+
msgid "Tag Checkbox"
|
611 |
+
msgstr "Sildi valikkastid"
|
612 |
+
|
613 |
+
#: ../includes/ot-functions-admin.php:2453
|
614 |
+
#: ../includes/ot-functions-docs-page.php:284
|
615 |
+
msgid "Tag Select"
|
616 |
+
msgstr "Sildi rippvalik"
|
617 |
+
|
618 |
+
#: ../includes/ot-functions-admin.php:2454
|
619 |
+
#: ../includes/ot-functions-docs-page.php:287
|
620 |
+
msgid "Taxonomy Checkbox"
|
621 |
+
msgstr "Taksonoomia valikkastid"
|
622 |
+
|
623 |
+
#: ../includes/ot-functions-admin.php:2455
|
624 |
+
#: ../includes/ot-functions-docs-page.php:290
|
625 |
+
msgid "Taxonomy Select"
|
626 |
+
msgstr "Taksonoomia rippvalik"
|
627 |
+
|
628 |
+
#: ../includes/ot-functions-admin.php:2456
|
629 |
+
#: ../includes/ot-functions-docs-page.php:293
|
630 |
+
msgid "Text"
|
631 |
+
msgstr "Tekstisisend"
|
632 |
+
|
633 |
+
#: ../includes/ot-functions-admin.php:2457
|
634 |
+
#: ../includes/ot-functions-docs-page.php:296
|
635 |
+
msgid "Textarea"
|
636 |
+
msgstr "Tekstiväli"
|
637 |
+
|
638 |
+
#: ../includes/ot-functions-admin.php:2458
|
639 |
+
#: ../includes/ot-functions-docs-page.php:355
|
640 |
+
msgid "Textarea Simple"
|
641 |
+
msgstr "Lihtne tekstiväli"
|
642 |
+
|
643 |
+
#: ../includes/ot-functions-admin.php:2459
|
644 |
+
#: ../includes/ot-functions-docs-page.php:371
|
645 |
+
msgid "Textblock"
|
646 |
+
msgstr "Tekstiblokk"
|
647 |
+
|
648 |
+
#: ../includes/ot-functions-admin.php:2460
|
649 |
+
#: ../includes/ot-functions-docs-page.php:374
|
650 |
+
msgid "Textblock Titled"
|
651 |
+
msgstr "Pealkirjaga tekstiblokk"
|
652 |
+
|
653 |
+
#: ../includes/ot-functions-admin.php:2461
|
654 |
+
#: ../includes/ot-functions-docs-page.php:377
|
655 |
+
msgid "Typography"
|
656 |
+
msgstr "Tüpograafia"
|
657 |
+
|
658 |
+
#: ../includes/ot-functions-admin.php:2462
|
659 |
+
#: ../includes/ot-functions-docs-page.php:397
|
660 |
+
msgid "Upload"
|
661 |
+
msgstr "Lae üles"
|
662 |
+
|
663 |
+
#: ../includes/ot-functions-admin.php:3192
|
664 |
+
msgid "Left Sidebar"
|
665 |
+
msgstr "Vasak küljendusmenüü"
|
666 |
+
|
667 |
+
#: ../includes/ot-functions-admin.php:3197
|
668 |
+
msgid "Right Sidebar"
|
669 |
+
msgstr "Parem küljendusmenüü"
|
670 |
+
|
671 |
+
#: ../includes/ot-functions-admin.php:3202
|
672 |
+
msgid "Full Width (no sidebar)"
|
673 |
+
msgstr "Täies pikkuses (ilma küljendusmenüüta)"
|
674 |
+
|
675 |
+
#: ../includes/ot-functions-admin.php:3207
|
676 |
+
msgid "Dual Sidebar"
|
677 |
+
msgstr "Topelt küljendusmenüü"
|
678 |
+
|
679 |
+
#: ../includes/ot-functions-admin.php:3212
|
680 |
+
msgid "Left Dual Sidebar"
|
681 |
+
msgstr "Kaks küljendusmenüüd vasakul"
|
682 |
+
|
683 |
+
#: ../includes/ot-functions-admin.php:3217
|
684 |
+
msgid "Right Dual Sidebar"
|
685 |
+
msgstr "Kaks küljendusmenüüd paremal"
|
686 |
+
|
687 |
+
#: ../includes/ot-functions-admin.php:3258
|
688 |
+
#: ../includes/ot-functions-admin.php:3314
|
689 |
+
#: ../includes/ot-functions-admin.php:5446
|
690 |
+
msgid "Link"
|
691 |
+
msgstr "Viide"
|
692 |
+
|
693 |
+
#: ../includes/ot-functions-admin.php:3269
|
694 |
+
#: ../includes/ot-functions-admin.php:3320
|
695 |
+
#: ../includes/ot-functions-docs-page.php:43
|
696 |
+
#: ../includes/ot-functions-docs-page.php:428
|
697 |
+
#: ../includes/ot-functions-docs-page.php:478
|
698 |
+
msgid "Description"
|
699 |
+
msgstr "Kirjeldus"
|
700 |
+
|
701 |
+
#: ../includes/ot-functions-admin.php:3384
|
702 |
+
msgid "Name"
|
703 |
+
msgstr "Nimetus"
|
704 |
+
|
705 |
+
#: ../includes/ot-functions-admin.php:3385
|
706 |
+
msgid "Enter the name of the social website."
|
707 |
+
msgstr "Sisesta sotsiaalmeedia veebilehe nimi."
|
708 |
+
|
709 |
+
#: ../includes/ot-functions-admin.php:3393
|
710 |
+
msgid "Enter the text shown in the title attribute of the link."
|
711 |
+
msgstr "Sisesta tekst, mida näidatakse lingi pealkirja atribuudis."
|
712 |
+
|
713 |
+
#: ../includes/ot-functions-admin.php:3399
|
714 |
+
#, php-format
|
715 |
+
msgid ""
|
716 |
+
"Enter a link to the profile or page on the social website. Remember to add "
|
717 |
+
"the %s part to the front of the link."
|
718 |
+
msgstr ""
|
719 |
+
"Sisesta link profiilile või lehele sellel sotsiaalmeedia veebilehel. Ära "
|
720 |
+
"unusta lisada lingi ette %s osa."
|
721 |
+
|
722 |
+
#: ../includes/ot-functions-admin.php:3967
|
723 |
+
msgid "edit"
|
724 |
+
msgstr "muuda"
|
725 |
+
|
726 |
+
#: ../includes/ot-functions-admin.php:3968
|
727 |
+
#: ../includes/ot-functions-admin.php:4036
|
728 |
+
#: ../includes/ot-functions-admin.php:4037
|
729 |
+
#: ../includes/ot-functions-admin.php:4199
|
730 |
+
#: ../includes/ot-functions-admin.php:4200
|
731 |
+
#: ../includes/ot-functions-admin.php:4265
|
732 |
+
#: ../includes/ot-functions-admin.php:4266
|
733 |
+
#: ../includes/ot-functions-admin.php:4393
|
734 |
+
#: ../includes/ot-functions-admin.php:4394
|
735 |
+
#: ../includes/ot-functions-admin.php:4546
|
736 |
+
#: ../includes/ot-functions-admin.php:4547
|
737 |
+
msgid "Edit"
|
738 |
+
msgstr "Muuda"
|
739 |
+
|
740 |
+
#: ../includes/ot-functions-admin.php:3970
|
741 |
+
#: ../includes/ot-functions-admin.php:3971
|
742 |
+
#: ../includes/ot-functions-admin.php:4039
|
743 |
+
#: ../includes/ot-functions-admin.php:4040
|
744 |
+
#: ../includes/ot-functions-admin.php:4202
|
745 |
+
#: ../includes/ot-functions-admin.php:4203
|
746 |
+
#: ../includes/ot-functions-admin.php:4268
|
747 |
+
#: ../includes/ot-functions-admin.php:4269
|
748 |
+
#: ../includes/ot-functions-admin.php:4327
|
749 |
+
#: ../includes/ot-functions-admin.php:4328
|
750 |
+
#: ../includes/ot-functions-admin.php:4396
|
751 |
+
#: ../includes/ot-functions-admin.php:4397
|
752 |
+
#: ../includes/ot-functions-admin.php:4549
|
753 |
+
#: ../includes/ot-functions-admin.php:4550
|
754 |
+
msgid "Delete"
|
755 |
+
msgstr "Kustuta"
|
756 |
+
|
757 |
+
#: ../includes/ot-functions-admin.php:3977
|
758 |
+
msgid ""
|
759 |
+
"<strong>Section Title</strong>: Displayed as a menu item on the Theme "
|
760 |
+
"Options page."
|
761 |
+
msgstr ""
|
762 |
+
"<strong>Sektsiooni pealkiri</strong>: Näidatakse menüü elemendina teema "
|
763 |
+
"valikute lehel."
|
764 |
+
|
765 |
+
#: ../includes/ot-functions-admin.php:3985
|
766 |
+
msgid ""
|
767 |
+
"<strong>Section ID</strong>: A unique lower case alphanumeric string, "
|
768 |
+
"underscores allowed."
|
769 |
+
msgstr ""
|
770 |
+
"<strong>Sektsiooni ID</strong>: unikaalne väiketähtedega tähtnumbriline "
|
771 |
+
"string, alakriipsud lubatud."
|
772 |
+
|
773 |
+
#: ../includes/ot-functions-admin.php:4046
|
774 |
+
msgid ""
|
775 |
+
"<strong>Label</strong>: Displayed as the label of a form element on the "
|
776 |
+
"Theme Options page."
|
777 |
+
msgstr ""
|
778 |
+
"<strong>Nimetus</strong>: Näidatakse kui vormi elemendi nimetust teema "
|
779 |
+
"valikute lehel."
|
780 |
+
|
781 |
+
#: ../includes/ot-functions-admin.php:4054
|
782 |
+
#: ../includes/ot-functions-admin.php:4283
|
783 |
+
msgid ""
|
784 |
+
"<strong>ID</strong>: A unique lower case alphanumeric string, underscores "
|
785 |
+
"allowed."
|
786 |
+
msgstr ""
|
787 |
+
"<strong>ID</strong>: unikaalne väiketähtedega tähtnumbriline string, "
|
788 |
+
"alakriipsud lubatud."
|
789 |
+
|
790 |
+
#: ../includes/ot-functions-admin.php:4062
|
791 |
+
msgid ""
|
792 |
+
"<strong>Type</strong>: Choose one of the available option types from the "
|
793 |
+
"dropdown."
|
794 |
+
msgstr ""
|
795 |
+
"<strong>Tüüp</strong>: vali rippmenüüst üks pakutavatest valiku tüüpidest."
|
796 |
+
|
797 |
+
#: ../includes/ot-functions-admin.php:4073
|
798 |
+
msgid ""
|
799 |
+
"<strong>Description</strong>: Enter a detailed description for the users to "
|
800 |
+
"read on the Theme Options page, HTML is allowed. This is also where you "
|
801 |
+
"enter content for both the Textblock & Textblock Titled option types."
|
802 |
+
msgstr ""
|
803 |
+
"<strong>Kirjeldus</strong>: sisesta detailne kirjeldus, mida kasutajad "
|
804 |
+
"saavad lugeda teema valikute lehel. HTML on lubatud. See on ühtlasi ka koht, "
|
805 |
+
"kuhu sisestada tekstibloki ja pealkirjaga tekstibloki valikutüüpide sisu."
|
806 |
+
|
807 |
+
#: ../includes/ot-functions-admin.php:4081
|
808 |
+
msgid ""
|
809 |
+
"<strong>Choices</strong>: This will only affect the following option types: "
|
810 |
+
"Checkbox, Radio, Select & Select Image."
|
811 |
+
msgstr ""
|
812 |
+
"<strong>Valikud</strong>: mõjutab vaid järgnevaid valikutüüpe: valikkastid, "
|
813 |
+
"raadiokastid, rippvalik ja pildi valik."
|
814 |
+
|
815 |
+
#: ../includes/ot-functions-admin.php:4086
|
816 |
+
msgid "Add Choice"
|
817 |
+
msgstr "Lisa valik"
|
818 |
+
|
819 |
+
#: ../includes/ot-functions-admin.php:4092
|
820 |
+
msgid ""
|
821 |
+
"<strong>Settings</strong>: This will only affect the List Item option type."
|
822 |
+
msgstr "<strong>Sätted</strong>: mõjutab vaid nimekirja elemendi valikutüüpi."
|
823 |
+
|
824 |
+
#: ../includes/ot-functions-admin.php:4097
|
825 |
+
#: ../includes/ot-functions-settings-page.php:93
|
826 |
+
msgid "Add Setting"
|
827 |
+
msgstr "Lisa säte"
|
828 |
+
|
829 |
+
#: ../includes/ot-functions-admin.php:4103
|
830 |
+
msgid ""
|
831 |
+
"<strong>Standard</strong>: Setting the standard value for your option only "
|
832 |
+
"works for some option types. Read the <code>OptionTree->Documentation</code> "
|
833 |
+
"for more information on which ones."
|
834 |
+
msgstr ""
|
835 |
+
"<strong>Standard</strong>. standardväärtuse määramine mõjub vaid mõnele "
|
836 |
+
"valikutüübile. Lisainfot leiad <code>OptionTree->Dokumentatsioon</code> "
|
837 |
+
"lehelt."
|
838 |
+
|
839 |
+
#: ../includes/ot-functions-admin.php:4111
|
840 |
+
msgid ""
|
841 |
+
"<strong>Rows</strong>: Enter a numeric value for the number of rows in your "
|
842 |
+
"textarea. This will only affect the following option types: CSS, Textarea, & "
|
843 |
+
"Textarea Simple."
|
844 |
+
msgstr ""
|
845 |
+
"<strong>Ridu</strong>: sisesta numbriline väärtus, mis määrab ridade arvu "
|
846 |
+
"tekstiväljal. Mõjutab vaid järgnevaid valikutüüpe: CSS, tekstiväli ja lihtne "
|
847 |
+
"tekstiväli."
|
848 |
+
|
849 |
+
#: ../includes/ot-functions-admin.php:4119
|
850 |
+
msgid ""
|
851 |
+
"<strong>Post Type</strong>: Add a comma separated list of post type like "
|
852 |
+
"'post,page'. This will only affect the following option types: Custom Post "
|
853 |
+
"Type Checkbox, & Custom Post Type Select."
|
854 |
+
msgstr ""
|
855 |
+
"<strong>Postituse tüüp</strong>: lisa siia komaga eraldatud loend "
|
856 |
+
"postitüüpidest - näiteks 'post,page'. See mõjutab vaid järgnevaid "
|
857 |
+
"valikutüüpe: enda loodud postitüübi valikkastid ja enda loodud postitüübi "
|
858 |
+
"rippvalik."
|
859 |
+
|
860 |
+
#: ../includes/ot-functions-admin.php:4127
|
861 |
+
msgid ""
|
862 |
+
"<strong>Taxonomy</strong>: Add a comma separated list of any registered "
|
863 |
+
"taxonomy like 'category,post_tag'. This will only affect the following "
|
864 |
+
"option types: Taxonomy Checkbox, & Taxonomy Select."
|
865 |
+
msgstr ""
|
866 |
+
"<strong>Taksonoomia</strong>: lisa komaga eraldatud loend registreeritud "
|
867 |
+
"taksonoomiatest nagu 'category,post_tag'. See mõjutab vaid järgnevaid "
|
868 |
+
"valikutüüpe: taksonoomia valikukastid & taksonoomia rippvalik."
|
869 |
+
|
870 |
+
#: ../includes/ot-functions-admin.php:4135
|
871 |
+
msgid ""
|
872 |
+
"<strong>Min, Max, & Step</strong>: Add a comma separated list of options in "
|
873 |
+
"the following format <code>0,100,1</code> (slide from <code>0-100</code> in "
|
874 |
+
"intervals of <code>1</code>). The three values represent the minimum, "
|
875 |
+
"maximum, and step options and will only affect the Numeric Slider option "
|
876 |
+
"type."
|
877 |
+
msgstr ""
|
878 |
+
"<strong>min, max & aste</strong>: lisa komaga eraldatud loend valikutest "
|
879 |
+
"järgnevas formaadis: <code>0,100,1</code> ( liugle vahemikus <code>0-100</"
|
880 |
+
"code> intervalliga <code>1</code> ). Need kolm väärtust näitavad miinimumi, "
|
881 |
+
"maksimumi ja astme valikuid ning mõjutavad vaid numbriliuguri valikutüüpi."
|
882 |
+
|
883 |
+
#: ../includes/ot-functions-admin.php:4143
|
884 |
+
msgid "<strong>CSS Class</strong>: Add and optional class to this option type."
|
885 |
+
msgstr ""
|
886 |
+
"<strong>CSS klass</strong>: Soovi korral lisa sellele valikutüübile klass."
|
887 |
+
|
888 |
+
#: ../includes/ot-functions-admin.php:4151
|
889 |
+
#, php-format
|
890 |
+
msgid ""
|
891 |
+
"<strong>Condition</strong>: Add a comma separated list (no spaces) of "
|
892 |
+
"conditions in which the field will be visible, leave this setting empty to "
|
893 |
+
"always show the field. In these examples, <code>value</code> is a "
|
894 |
+
"placeholder for your condition, which can be in the form of %s."
|
895 |
+
msgstr ""
|
896 |
+
"<strong>Tingimus</strong>: lisa komaga eraldatud loend ( ilma tühikuteta ) "
|
897 |
+
"tingimustest, mille korral see väli on nähtav. Välja alati näitamiseks jäta "
|
898 |
+
"tühjaks. Nendes näidetes on <code>value</code> kohahoidja teie tingimustele, "
|
899 |
+
"mis võivad olla kujul %s."
|
900 |
+
|
901 |
+
#: ../includes/ot-functions-admin.php:4159
|
902 |
+
msgid ""
|
903 |
+
"<strong>Operator</strong>: Choose the logical operator to compute the result "
|
904 |
+
"of the conditions."
|
905 |
+
msgstr ""
|
906 |
+
"<strong>Operaator</strong>: vali loogiline operaator, millega arvutada välja "
|
907 |
+
"tingimuste tulemus."
|
908 |
+
|
909 |
+
#: ../includes/ot-functions-admin.php:4162
|
910 |
+
#: ../includes/ot-functions-docs-page.php:111
|
911 |
+
#: ../includes/ot-functions-docs-page.php:378
|
912 |
+
msgid "and"
|
913 |
+
msgstr "ja"
|
914 |
+
|
915 |
+
#: ../includes/ot-functions-admin.php:4163
|
916 |
+
msgid "or"
|
917 |
+
msgstr "või"
|
918 |
+
|
919 |
+
#: ../includes/ot-functions-admin.php:4209
|
920 |
+
#: ../includes/ot-functions-docs-page.php:29
|
921 |
+
msgid "Label"
|
922 |
+
msgstr "Nimetus"
|
923 |
+
|
924 |
+
#: ../includes/ot-functions-admin.php:4219
|
925 |
+
msgid "Value"
|
926 |
+
msgstr "Väärtus"
|
927 |
+
|
928 |
+
#: ../includes/ot-functions-admin.php:4229
|
929 |
+
msgid "Image Source (Radio Image only)"
|
930 |
+
msgstr "Pildi allikas ( ainult pildiga raadiovaliku jaoks )"
|
931 |
+
|
932 |
+
#: ../includes/ot-functions-admin.php:4275
|
933 |
+
msgid ""
|
934 |
+
"<strong>Title</strong>: Displayed as a contextual help menu item on the "
|
935 |
+
"Theme Options page."
|
936 |
+
msgstr ""
|
937 |
+
"<strong>Pealkiri</strong>: kuvatakse kui kontekstipõhine abimenüü element "
|
938 |
+
"teema valikute lehel."
|
939 |
+
|
940 |
+
#: ../includes/ot-functions-admin.php:4291
|
941 |
+
msgid ""
|
942 |
+
"<strong>Content</strong>: Enter the HTML content about this contextual help "
|
943 |
+
"item displayed on the Theme Option page for end users to read."
|
944 |
+
msgstr ""
|
945 |
+
"<strong>Sisu</strong>: sisesta HTML sisu selle kontekstipõhise elemendi "
|
946 |
+
"kohta. Näidatakse teema valikute lehel lõppkasutajatele."
|
947 |
+
|
948 |
+
#: ../includes/ot-functions-admin.php:4322
|
949 |
+
msgid "Layout"
|
950 |
+
msgstr "Paigutus"
|
951 |
+
|
952 |
+
#: ../includes/ot-functions-admin.php:4324
|
953 |
+
#: ../includes/ot-functions-admin.php:4325
|
954 |
+
msgid "Activate"
|
955 |
+
msgstr "Aktiveeri"
|
956 |
+
|
957 |
+
#: ../includes/ot-functions-admin.php:4361 ../includes/ot-meta-box-api.php:223
|
958 |
+
#: ../includes/ot-settings-api.php:610
|
959 |
+
msgid "Title"
|
960 |
+
msgstr "Pealkiri"
|
961 |
+
|
962 |
+
#: ../includes/ot-functions-admin.php:4701
|
963 |
+
msgid "New Layout"
|
964 |
+
msgstr "Uus paigutus"
|
965 |
+
|
966 |
+
#: ../includes/ot-functions-admin.php:5455
|
967 |
+
msgid "Link URL"
|
968 |
+
msgstr "Viide"
|
969 |
+
|
970 |
+
#: ../includes/ot-functions-admin.php:5462
|
971 |
+
msgid "Link Title"
|
972 |
+
msgstr "Lingi pealkiri"
|
973 |
+
|
974 |
+
#: ../includes/ot-functions-admin.php:5492
|
975 |
+
msgid "Quote"
|
976 |
+
msgstr "Tsitaat"
|
977 |
+
|
978 |
+
#: ../includes/ot-functions-admin.php:5501
|
979 |
+
msgid "Source Name (ex. author, singer, actor)"
|
980 |
+
msgstr "Allika nimi (nt autor, laulja, näitleja)"
|
981 |
+
|
982 |
+
#: ../includes/ot-functions-admin.php:5508
|
983 |
+
msgid "Source URL"
|
984 |
+
msgstr "Allika URL"
|
985 |
+
|
986 |
+
#: ../includes/ot-functions-admin.php:5515
|
987 |
+
msgid "Source Title (ex. book, song, movie)"
|
988 |
+
msgstr "Allika pealkiri (nt raamat, laul, film)"
|
989 |
+
|
990 |
+
#: ../includes/ot-functions-admin.php:5522
|
991 |
+
msgid "Source Date"
|
992 |
+
msgstr "Allika kuupäev"
|
993 |
+
|
994 |
+
#: ../includes/ot-functions-admin.php:5552
|
995 |
+
msgid "Video"
|
996 |
+
msgstr "Video"
|
997 |
+
|
998 |
+
#: ../includes/ot-functions-admin.php:5561
|
999 |
+
#, php-format
|
1000 |
+
msgid ""
|
1001 |
+
"Embed video from services like Youtube, Vimeo, or Hulu. You can find a list "
|
1002 |
+
"of supported oEmbed sites in the %1$s. Alternatively, you could use the "
|
1003 |
+
"built-in %2$s shortcode."
|
1004 |
+
msgstr ""
|
1005 |
+
"Lisa video välisest allikast, nagu näiteks Youtube, Vimeo või Hulu. "
|
1006 |
+
"Nimekirja toetatud oEmbed veebilehtedest leiad %1$s. Teine variant oleks "
|
1007 |
+
"kasutada sisse ehitatud lühikoodi %2$s."
|
1008 |
+
|
1009 |
+
#: ../includes/ot-functions-admin.php:5561
|
1010 |
+
#: ../includes/ot-functions-admin.php:5600
|
1011 |
+
msgid "Wordpress Codex"
|
1012 |
+
msgstr "Wordpress Codex"
|
1013 |
+
|
1014 |
+
#: ../includes/ot-functions-admin.php:5591
|
1015 |
+
msgid "Audio"
|
1016 |
+
msgstr "Audio"
|
1017 |
+
|
1018 |
+
#: ../includes/ot-functions-admin.php:5600
|
1019 |
+
#, php-format
|
1020 |
+
msgid ""
|
1021 |
+
"Embed audio from services like SoundCloud and Rdio. You can find a list of "
|
1022 |
+
"supported oEmbed sites in the %1$s. Alternatively, you could use the built-"
|
1023 |
+
"in %2$s shortcode."
|
1024 |
+
msgstr ""
|
1025 |
+
"Lisa heli teenustest SoundCloud, Rdio või teistest sarnastest. Nimekirja "
|
1026 |
+
"toetatud oEmbed veebilehtedest leiad %1$s. Teine variant oleks kasutada "
|
1027 |
+
"sisse ehitatud lühikoodi %2$s."
|
1028 |
+
|
1029 |
+
#: ../includes/ot-functions-docs-page.php:30
|
1030 |
+
msgid ""
|
1031 |
+
"The Label field should be a short but descriptive block of text 100 "
|
1032 |
+
"characters or less with no HTML."
|
1033 |
+
msgstr ""
|
1034 |
+
"Nimetuse väli peaks olema lühike kuid kirjeldav tekstiblokk, mis on kuni 100 "
|
1035 |
+
"tähemärki pikk ja ei sisalda HTML-i."
|
1036 |
+
|
1037 |
+
#: ../includes/ot-functions-docs-page.php:32
|
1038 |
+
msgid "ID"
|
1039 |
+
msgstr "ID"
|
1040 |
+
|
1041 |
+
#: ../includes/ot-functions-docs-page.php:33
|
1042 |
+
msgid ""
|
1043 |
+
"The ID field is a unique alphanumeric key used to differentiate each theme "
|
1044 |
+
"option (underscores are acceptable). Also, the plugin will change all text "
|
1045 |
+
"you write in this field to lowercase and replace spaces and special "
|
1046 |
+
"characters with an underscore automatically."
|
1047 |
+
msgstr ""
|
1048 |
+
"ID väli on unikaalne tähtnumbriline võti eristamaks teema valikuid "
|
1049 |
+
"( alakriipsud on lubatud ). Lisaks muudetakse kõik siia välja kirjutatav "
|
1050 |
+
"tekst väiketähtedeks ning erimärgid asendatakse automaatselt alakriipsudega."
|
1051 |
+
|
1052 |
+
#: ../includes/ot-functions-docs-page.php:35
|
1053 |
+
msgid "Type"
|
1054 |
+
msgstr "Tüüp"
|
1055 |
+
|
1056 |
+
#: ../includes/ot-functions-docs-page.php:36
|
1057 |
+
msgid ""
|
1058 |
+
"You are required to choose one of the supported option types when creating a "
|
1059 |
+
"new option. Here is a list of the available option types. For more "
|
1060 |
+
"information about each type click the <code>Option Types</code> tab to the "
|
1061 |
+
"left."
|
1062 |
+
msgstr ""
|
1063 |
+
"Uue valiku loomisel peate valima mõne toetatud valikutüüpidest. Siin on "
|
1064 |
+
"nimekiri saadaolevatest valikutüüpidest. Lisainfo igaühe kohta neist on "
|
1065 |
+
"saadaval vajutades vasakul olevat <code>Valiku tüüp</code> sakki."
|
1066 |
+
|
1067 |
+
#: ../includes/ot-functions-docs-page.php:44
|
1068 |
+
msgid ""
|
1069 |
+
"Enter a detailed description for the users to read on the Theme Options "
|
1070 |
+
"page, HTML is allowed. This is also where you enter content for both the "
|
1071 |
+
"Textblock & Textblock Titled option types."
|
1072 |
+
msgstr ""
|
1073 |
+
"Sisesta detailne kirjeldus, mida kasutajad saavad lugeda teema valikute "
|
1074 |
+
"lehel. HTML on lubatud. See on ka koht sisu sisestamiseks tekstibloki ja "
|
1075 |
+
"pealkirjaga tekstibloki valikutüüpide jaoks."
|
1076 |
+
|
1077 |
+
#: ../includes/ot-functions-docs-page.php:46
|
1078 |
+
msgid "Choices"
|
1079 |
+
msgstr "Valikud"
|
1080 |
+
|
1081 |
+
#: ../includes/ot-functions-docs-page.php:47
|
1082 |
+
msgid ""
|
1083 |
+
"Click the \"Add Choice\" button to add an item to the choices array. This "
|
1084 |
+
"will only affect the following option types: Checkbox, Radio, Select & "
|
1085 |
+
"Select Image."
|
1086 |
+
msgstr ""
|
1087 |
+
"Elemendi lisamiseks valikute massiivi vajuta \"Lisa valik\" nuppu. See "
|
1088 |
+
"mõjutab järgnevaid valikutüüpe: valikkastid, raadiokastid, rippvalik ja "
|
1089 |
+
"pildivalik."
|
1090 |
+
|
1091 |
+
#: ../includes/ot-functions-docs-page.php:50
|
1092 |
+
msgid ""
|
1093 |
+
"Click the \"Add Setting\" button found inside a newly created setting to add "
|
1094 |
+
"an item to the settings array. This will only affect the List Item type."
|
1095 |
+
msgstr ""
|
1096 |
+
"Elemendi lisamiseks sätete massiivi vajuta vastloodud sättes asuvat \"Lisa "
|
1097 |
+
"säte\" nuppu. See mõjutab vaid nimekirja elemendi tüüpi."
|
1098 |
+
|
1099 |
+
#: ../includes/ot-functions-docs-page.php:52
|
1100 |
+
msgid "Standard"
|
1101 |
+
msgstr "Standartne"
|
1102 |
+
|
1103 |
+
#: ../includes/ot-functions-docs-page.php:53
|
1104 |
+
msgid ""
|
1105 |
+
"Setting the standard value for your option only works for some option types. "
|
1106 |
+
"Those types are one that have a single string value saved to them and not an "
|
1107 |
+
"array of values."
|
1108 |
+
msgstr ""
|
1109 |
+
"Standard väärtuse määramine oma valikule töötab vaid mõnede valikutüüpidega. "
|
1110 |
+
"Need tüübid on sellised, kus hoitakse vaid ühte väärtust stringi kujul, "
|
1111 |
+
"mitte väärtuste massiivi."
|
1112 |
+
|
1113 |
+
#: ../includes/ot-functions-docs-page.php:55
|
1114 |
+
msgid "Rows"
|
1115 |
+
msgstr "Ridasid"
|
1116 |
+
|
1117 |
+
#: ../includes/ot-functions-docs-page.php:56
|
1118 |
+
msgid ""
|
1119 |
+
"Enter a numeric value for the number of rows in your textarea. This will "
|
1120 |
+
"only affect the following option types: CSS, Textarea, & Textarea Simple."
|
1121 |
+
msgstr ""
|
1122 |
+
"Sisesta numbriline väärtus, mis määrab ridade arvu tekstialas. See mõjutab "
|
1123 |
+
"vaid järgnevaid valikutüüpe: CSS, tekstiala & lihtne tekstiala."
|
1124 |
+
|
1125 |
+
#: ../includes/ot-functions-docs-page.php:58
|
1126 |
+
msgid "Post Type"
|
1127 |
+
msgstr "Postitüüp"
|
1128 |
+
|
1129 |
+
#: ../includes/ot-functions-docs-page.php:59
|
1130 |
+
msgid ""
|
1131 |
+
"Add a comma separated list of post type like <code>post,page</code>. This "
|
1132 |
+
"will only affect the following option types: Custom Post Type Checkbox, & "
|
1133 |
+
"Custom Post Type Select. Below are the default post types available with "
|
1134 |
+
"WordPress and that are also compatible with OptionTree. You can also add "
|
1135 |
+
"your own custom <code>post_type</code>. At this time <code>any</code> does "
|
1136 |
+
"not seem to return results properly and is something I plan on looking into."
|
1137 |
+
msgstr ""
|
1138 |
+
"Lisa komaga eraldatud loetelu postitüüpidest, näiteks <code>post,page</"
|
1139 |
+
"code>. See mõjutab vaid järgnevaid valikutüüpe: kohandatud postitüübi "
|
1140 |
+
"valikkastid ja kohandatud postitüübi rippmenüü. All on vaikimisi Wordpressis "
|
1141 |
+
"saadaval postitüübid, mis on OptionTreega kokkusobivad. Saad kasutada ka "
|
1142 |
+
"enda loodud <code>post_type</code>. Hetkel <code>any</code> ei tagasta "
|
1143 |
+
"õigeid väärtusi."
|
1144 |
+
|
1145 |
+
#: ../includes/ot-functions-docs-page.php:67
|
1146 |
+
msgid "Taxonomy"
|
1147 |
+
msgstr "Taksonoomia"
|
1148 |
+
|
1149 |
+
#: ../includes/ot-functions-docs-page.php:68
|
1150 |
+
msgid ""
|
1151 |
+
"Add a comma separated list of any registered taxonomy like <code>category,"
|
1152 |
+
"post_tag</code>. This will only affect the following option types: Taxonomy "
|
1153 |
+
"Checkbox, & Taxonomy Select."
|
1154 |
+
msgstr ""
|
1155 |
+
"Lisa komaga eraldatud loend registreeritud taksonoomiatest nagu 'category,"
|
1156 |
+
"post_tag'. See mõjutab vaid järgnevaid valikutüüpe: taksonoomia valikukastid "
|
1157 |
+
"& taksonoomia rippvalik."
|
1158 |
+
|
1159 |
+
#: ../includes/ot-functions-docs-page.php:70
|
1160 |
+
msgid "Min, Max, & Step"
|
1161 |
+
msgstr "Miinimum, maksimum ning aste"
|
1162 |
+
|
1163 |
+
#: ../includes/ot-functions-docs-page.php:71
|
1164 |
+
msgid ""
|
1165 |
+
"Add a comma separated list of options in the following format <code>0,100,1</"
|
1166 |
+
"code> (slide from <code>0-100</code> in intervals of <code>1</code>). The "
|
1167 |
+
"three values represent the minimum, maximum, and step options and will only "
|
1168 |
+
"affect the Numeric Slider option type."
|
1169 |
+
msgstr ""
|
1170 |
+
"Lisa komaga eraldatud loend valikutest järgnevas formaadis: <code>0,100,1</"
|
1171 |
+
"code> ( liugle vahemikus <code>0-100</code> intervalliga <code>1</code> ). "
|
1172 |
+
"Need kolm väärtust näitavad miinimumi, maksimumi ja astme valikuid ning "
|
1173 |
+
"mõjutavad vaid numbriliuguri valikutüüpi."
|
1174 |
+
|
1175 |
+
#: ../includes/ot-functions-docs-page.php:73
|
1176 |
+
msgid "CSS Class"
|
1177 |
+
msgstr "CSS klass"
|
1178 |
+
|
1179 |
+
#: ../includes/ot-functions-docs-page.php:74
|
1180 |
+
msgid "Add and optional class to any option type."
|
1181 |
+
msgstr "Soovi korral lisa klassi-atribuut ükskõik millisele valikutüübile."
|
1182 |
+
|
1183 |
+
#: ../includes/ot-functions-docs-page.php:76
|
1184 |
+
msgid "Condition"
|
1185 |
+
msgstr "Tingimus"
|
1186 |
+
|
1187 |
+
#: ../includes/ot-functions-docs-page.php:77
|
1188 |
+
#, php-format
|
1189 |
+
msgid ""
|
1190 |
+
"Add a comma separated list (no spaces) of conditions in which the field will "
|
1191 |
+
"be visible, leave this setting empty to always show the field. In these "
|
1192 |
+
"examples, %s is a placeholder for your condition, which can be in the form "
|
1193 |
+
"of %s."
|
1194 |
+
msgstr ""
|
1195 |
+
"Lisa komaga eraldatud loend ( ilma tühikuteta ) tingimustest, mille korral "
|
1196 |
+
"see väli on nähtav. Tühjaks jättes on väli alati nähtav. Nendes näidetes on "
|
1197 |
+
"%s tingimuse kohahoidjaks, mis tohib olla kujul %s."
|
1198 |
+
|
1199 |
+
#: ../includes/ot-functions-docs-page.php:79
|
1200 |
+
msgid "Operator"
|
1201 |
+
msgstr "Operaator"
|
1202 |
+
|
1203 |
+
#: ../includes/ot-functions-docs-page.php:80
|
1204 |
+
#, php-format
|
1205 |
+
msgid ""
|
1206 |
+
"Choose the logical operator to compute the result of the conditions. Your "
|
1207 |
+
"options are %s and %s."
|
1208 |
+
msgstr ""
|
1209 |
+
"Vali loogiline operaator, millega arvutada tingimuste tulemus. Sinu "
|
1210 |
+
"valikuteks on %s ja %s."
|
1211 |
+
|
1212 |
+
#: ../includes/ot-functions-docs-page.php:111
|
1213 |
+
#, php-format
|
1214 |
+
msgid ""
|
1215 |
+
"The Background option type is for adding background styles to your theme "
|
1216 |
+
"either dynamically via the CSS option type below or manually with %s. The "
|
1217 |
+
"Background option type has filters that allow you to remove fields or change "
|
1218 |
+
"the defaults. For example, you can filter %s to remove unwanted fields from "
|
1219 |
+
"all Background options or an individual one. You can also filter %s. These "
|
1220 |
+
"filters allow you to fine tune the select lists for your specific needs."
|
1221 |
+
msgstr ""
|
1222 |
+
"Tausta valikutüüpi kasutatakse teemasse tausta stiilide lisamiseks "
|
1223 |
+
"dünaamiliselt alloleva CSS valikutüübiga või käsitsi kasutades %s. Tausta "
|
1224 |
+
"valikutüübil on filtrid, mis võimaldavad eemaldada välju või muuta "
|
1225 |
+
"vaikeväärtusi. Näiteks saab filtreerida %s eemaldamaks soovimatuid välju "
|
1226 |
+
"kõikidelt tausta valikutelt või ainult ühelt neist. Saab filtreerida ka %s. "
|
1227 |
+
"Need filtrid võimaldavad sul sättida valikute nimekirja täpselt oma "
|
1228 |
+
"vajadustele vastavaks."
|
1229 |
+
|
1230 |
+
#: ../includes/ot-functions-docs-page.php:114
|
1231 |
+
#, php-format
|
1232 |
+
msgid ""
|
1233 |
+
"The Border option type is used to set width, unit, style, and color values. "
|
1234 |
+
"The text input excepts a numerical value and the unit select lets you choose "
|
1235 |
+
"the unit of measurement to add to that value. Currently the default units "
|
1236 |
+
"are %s, %s, %s, and %s. However, you can change them with the %s filter. The "
|
1237 |
+
"style select lets you choose the border style. The default styles are %s, "
|
1238 |
+
"%s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s "
|
1239 |
+
"filter. The colorpicker saves a hexadecimal color code."
|
1240 |
+
msgstr ""
|
1241 |
+
"Äärise valikutüüp kasutatakse laiuse, ühiku, stiili ja värvi määramiseks. "
|
1242 |
+
"Tekstisisendisse saab kirjutada numbrilise väärtuse ning rippmenüü laseb "
|
1243 |
+
"valida talle mõõtühiku. Hetkel on vaikimisi ühikuteks %s, %s, %s ja %s. Neid "
|
1244 |
+
"saab muuta %s filtriga. Stiili rippmenüü laseb valida äärise stiili. "
|
1245 |
+
"Vaikimisi stiilid on %s, %s, %s, %s, %s, %s, %s ja %s. Neid saab muuta %s "
|
1246 |
+
"filtriga. Värvivalija salvestab värvikoodi kuueteistkümnendiksüsteemis."
|
1247 |
+
|
1248 |
+
#: ../includes/ot-functions-docs-page.php:117
|
1249 |
+
#, php-format
|
1250 |
+
msgid ""
|
1251 |
+
"The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values."
|
1252 |
+
msgstr ""
|
1253 |
+
"Kasti varju valikutüüpi kasutatakse %s, %s, %s, %s, %s ja %s väärtuse "
|
1254 |
+
"määramiseks."
|
1255 |
+
|
1256 |
+
#: ../includes/ot-functions-docs-page.php:120
|
1257 |
+
msgid ""
|
1258 |
+
"The Category Checkbox option type displays a list of category IDs. It allows "
|
1259 |
+
"the user to check multiple category IDs and will return that value as an "
|
1260 |
+
"array for use in a custom function or loop."
|
1261 |
+
msgstr ""
|
1262 |
+
"Kategooria valikkastide valikutüüp näitab loendit kategooriate ID-dest. See "
|
1263 |
+
"laseb kasutajal märkida mitu kategooria ID-d ja tagastab selle väärtuse "
|
1264 |
+
"massiivina, enda funktsioonis või tsüklis kasutamiseks."
|
1265 |
+
|
1266 |
+
#: ../includes/ot-functions-docs-page.php:123
|
1267 |
+
msgid ""
|
1268 |
+
"The Category Select option type displays a list of category IDs. It allows "
|
1269 |
+
"the user to select only one category ID and will return that value for use "
|
1270 |
+
"in a custom function or loop."
|
1271 |
+
msgstr ""
|
1272 |
+
"Kategooria rippvaliku valikutüüp näitab loendit kategooriate ID-dest. See "
|
1273 |
+
"laseb kasutajal märkida üks kategooria ID ja tagastab selle väärtuse enda "
|
1274 |
+
"funktsioonis või tsüklis kasutamiseks."
|
1275 |
+
|
1276 |
+
#: ../includes/ot-functions-docs-page.php:126
|
1277 |
+
msgid ""
|
1278 |
+
"The Checkbox option type displays a group of choices. It allows the user to "
|
1279 |
+
"check multiple choices and will return that value as an array for use in a "
|
1280 |
+
"custom function or loop."
|
1281 |
+
msgstr ""
|
1282 |
+
"Valikkastide valikutüüp kuvab valikute grupi. See laseb kasutajal märkida "
|
1283 |
+
"mitu valikut ning tagastab selle väärtuse massiivina enda funktsioonis või "
|
1284 |
+
"tsüklis kasutamiseks."
|
1285 |
+
|
1286 |
+
#: ../includes/ot-functions-docs-page.php:129
|
1287 |
+
msgid ""
|
1288 |
+
"The Colorpicker option type saves a hexadecimal color code for use in CSS. "
|
1289 |
+
"Use it to modify the color of something in your theme."
|
1290 |
+
msgstr ""
|
1291 |
+
"Värvi valija valikutüüp salvestab värvikoodi kuueteistkümnendiksüsteemis, "
|
1292 |
+
"mida saab kasutada CSS-is. Kasuta seda millegi värvi muutmiseks enda teemas."
|
1293 |
+
|
1294 |
+
#: ../includes/ot-functions-docs-page.php:132
|
1295 |
+
#, php-format
|
1296 |
+
msgid ""
|
1297 |
+
"The Colorpicker Opacity option type saves a hexadecimal color code with an "
|
1298 |
+
"opacity value from %s to %s in increments of %s. Though the value is saved "
|
1299 |
+
"as hexadecimal, if used within the CSS option type the color and opacity "
|
1300 |
+
"values will be converted into a valid RGBA CSS value."
|
1301 |
+
msgstr ""
|
1302 |
+
"Värvivalija läbipaistmatuse valikutüüp salvestab värvikoodi "
|
1303 |
+
"kuueteistkümnendiksüsteemis läbipaistmatuse väärtusega %s kuni %s sammuga "
|
1304 |
+
"%s. Kuigi väärtus salvestatakse kuueteistkümnendiksüsteemis, kasutades teda "
|
1305 |
+
"koos CSS valikutüübiga teisendatakse ja korrektseks RGBA CSS väärtuseks."
|
1306 |
+
|
1307 |
+
#: ../includes/ot-functions-docs-page.php:135
|
1308 |
+
#, php-format
|
1309 |
+
msgid ""
|
1310 |
+
"The CSS option type is a textarea that when used properly can add dynamic "
|
1311 |
+
"CSS to your theme from within OptionTree. Unfortunately, due server "
|
1312 |
+
"limitations you will need to create a file named %s at the root level of "
|
1313 |
+
"your theme and change permissions using %s so the server can write to the "
|
1314 |
+
"file. I have had the most success setting this single file to %s but feel "
|
1315 |
+
"free to play around with permissions until everything is working. A good "
|
1316 |
+
"starting point is %s. When the server can save to the file, CSS will "
|
1317 |
+
"automatically be updated when you save your Theme Options."
|
1318 |
+
msgstr ""
|
1319 |
+
"CSS valikutüüp on tekstiväli, mille õigel kasutamisel saab teemale lisada "
|
1320 |
+
"dünaamiliselt genereeritud CSS-i OptionTree kaudu. Serveri piirangute tõttu "
|
1321 |
+
"peate selleks looma teema juurkausta faili nimega %s ning muutma õiguseid "
|
1322 |
+
"kasutades %s, et server saaks faili kirjutada. Mul on tulnud parimad "
|
1323 |
+
"tulemused siis, kui muutsin selle ainsa faili õiguste väärtuseks %s, kuid "
|
1324 |
+
"katsetage teisi variante, kuni kõik toimib nagu vaja. Hea alguspunkt on %s. "
|
1325 |
+
"Kui server saab edukalt faili salvestada. siis uuendatakse CSS automaatselt "
|
1326 |
+
"teema salvestamisel."
|
1327 |
+
|
1328 |
+
#: ../includes/ot-functions-docs-page.php:137
|
1329 |
+
#, php-format
|
1330 |
+
msgid ""
|
1331 |
+
"This example assumes you have an option with the ID of %1$s. Which means "
|
1332 |
+
"this option will automatically insert the value of %1$s into the %2$s when "
|
1333 |
+
"the Theme Options are saved."
|
1334 |
+
msgstr ""
|
1335 |
+
"See näide eeldab, et sul on valik ID-ga %1$s. See tähendab, et teema "
|
1336 |
+
"valikute salvestamisel sisestatakse %1$s väärtus automaatselt %2$s külge."
|
1337 |
+
|
1338 |
+
#: ../includes/ot-functions-docs-page.php:139
|
1339 |
+
msgid "Input"
|
1340 |
+
msgstr "Sisend"
|
1341 |
+
|
1342 |
+
#: ../includes/ot-functions-docs-page.php:145
|
1343 |
+
msgid "Output"
|
1344 |
+
msgstr "Väljund"
|
1345 |
+
|
1346 |
+
#: ../includes/ot-functions-docs-page.php:154
|
1347 |
+
#, php-format
|
1348 |
+
msgid ""
|
1349 |
+
"The Custom Post Type Select option type displays a list of IDs from any "
|
1350 |
+
"available WordPress post type or custom post type. It allows the user to "
|
1351 |
+
"check multiple post IDs for use in a custom function or loop. Requires at "
|
1352 |
+
"least one valid %1$s in the %1$s field."
|
1353 |
+
msgstr ""
|
1354 |
+
"Enda loodud postitüübi rippvaliku valikutüüp kuvab nimekirja kõikidest "
|
1355 |
+
"WordPressi postitüüpide või enda loodud postitüüpide ID-dest. See võimaldab "
|
1356 |
+
"kasutajal märgistada mitu postituse ID-d, mida kasutada enda funktsioonis "
|
1357 |
+
"või tsüklis. Vajab vähemalt ühte sobivat %1$s väljal %1$s."
|
1358 |
+
|
1359 |
+
#: ../includes/ot-functions-docs-page.php:157
|
1360 |
+
#, php-format
|
1361 |
+
msgid ""
|
1362 |
+
"The Custom Post Type Select option type displays a list of IDs from any "
|
1363 |
+
"available WordPress post type or custom post type. It will return a single "
|
1364 |
+
"post ID for use in a custom function or loop. Requires at least one valid "
|
1365 |
+
"%1$s in the %1$s field."
|
1366 |
+
msgstr ""
|
1367 |
+
"Enda loodud postitüübi rippvaliku valikutüüp kuvab nimekirja kõikidest "
|
1368 |
+
"WordPressi postitüüpide või enda loodud postitüüpide ID-dest. See tagastab "
|
1369 |
+
"ühe postituse ID, mida kasutada enda funktsioonis või tsüklis. Vajab "
|
1370 |
+
"vähemalt ühte sobivat %1$s väljal %1$s."
|
1371 |
+
|
1372 |
+
#: ../includes/ot-functions-docs-page.php:160
|
1373 |
+
msgid ""
|
1374 |
+
"The Date Picker option type is tied to a standard form input field which "
|
1375 |
+
"displays a calendar pop-up that allow the user to pick any date when focus "
|
1376 |
+
"is given to the input field. The returned value is a date formatted string."
|
1377 |
+
msgstr ""
|
1378 |
+
"Kuupäeva valiku valikutüüp on seotud standartse vormi sisendväljaga. Kui "
|
1379 |
+
"sellele antakse fookus, siis kuvatakse kalendri aken, mis laseb kasutajal "
|
1380 |
+
"valida suvalise kuupäeva. Tagastatav väärtus on kuupäeva formaadis string."
|
1381 |
+
|
1382 |
+
#: ../includes/ot-functions-docs-page.php:163
|
1383 |
+
msgid ""
|
1384 |
+
"The Date Time Picker option type is tied to a standard form input field "
|
1385 |
+
"which displays a calendar pop-up that allow the user to pick any date and "
|
1386 |
+
"time when focus is given to the input field. The returned value is a date "
|
1387 |
+
"and time formatted string."
|
1388 |
+
msgstr ""
|
1389 |
+
"Kuupäeva ja aja valiku valikutüüp on seotud standartse vormi sisendväljaga. "
|
1390 |
+
"Kui sellele antakse fookus, siis kuvatakse kalendri aken, mis laseb "
|
1391 |
+
"kasutajal valida suvalise kuupäeva ja kellaaja. Tagastatav väärtus on "
|
1392 |
+
"kuupäeva ja kellaaja formaadis string."
|
1393 |
+
|
1394 |
+
#: ../includes/ot-functions-docs-page.php:166
|
1395 |
+
#, php-format
|
1396 |
+
msgid ""
|
1397 |
+
"The Dimension option type is used to set width and height values. The text "
|
1398 |
+
"inputs except numerical values and the select lets you choose the unit of "
|
1399 |
+
"measurement to add to that value. Currently the default units are %s, %s, "
|
1400 |
+
"%s, and %s. However, you can change them with the %s filter."
|
1401 |
+
msgstr ""
|
1402 |
+
"Mõõtme valikutüüpi kasutatakse laiuse ja kõrguse väärtuste jaoks. "
|
1403 |
+
"Tekstisisendisse saab kirjutada numbrilise väärtuse ning rippmenüü laseb "
|
1404 |
+
"valida talle mõõtühiku. Hetkel on vaikimisi ühikuteks %s, %s, %s ja %s. Neid "
|
1405 |
+
"saab muuta %s filtriga."
|
1406 |
+
|
1407 |
+
#: ../includes/ot-functions-docs-page.php:169
|
1408 |
+
msgid ""
|
1409 |
+
"The Gallery option type saves a comma separated list of image attachment "
|
1410 |
+
"IDs. You will need to create a front-end function to display the images in "
|
1411 |
+
"your theme."
|
1412 |
+
msgstr ""
|
1413 |
+
"Galerii valikutüüp salvestab komaga eraldatud loendi pildi tüüpi manuste ID-"
|
1414 |
+
"dest. Nende piltide teemas näitamiseks tuleb luua kuvatava lehe jaoks "
|
1415 |
+
"funktsioon."
|
1416 |
+
|
1417 |
+
#: ../includes/ot-functions-docs-page.php:172
|
1418 |
+
#, php-format
|
1419 |
+
msgid ""
|
1420 |
+
"The Google Fonts option type will dynamically enqueue any number of Google "
|
1421 |
+
"Web Fonts into the document %1$s. As well, once the option has been saved "
|
1422 |
+
"each font family will automatically be inserted into the %2$s array for the "
|
1423 |
+
"Typography option type. You can further modify the font stack by using the "
|
1424 |
+
"%3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s "
|
1425 |
+
"parameter is being passed from %7$s, so it will be the ID of a Typography "
|
1426 |
+
"option type. This will allow you to add additional web safe fonts to "
|
1427 |
+
"individual font families on an as-need basis."
|
1428 |
+
msgstr ""
|
1429 |
+
"Google Fontide valikutüüp kaasab dokumendi %1$s dünaamiliselt soovitud hulga "
|
1430 |
+
"Google veebifonte. Lisaks salvestub iga valitud fondi perekond automaatselt "
|
1431 |
+
"%2$s massiivi tüpograafia valikutüübis. Fondi salve saab veel rohkem "
|
1432 |
+
"modifitseerida %3$s filtriga, mis saab kaasa %4$s, %5$s ja %6$s parameetrid. "
|
1433 |
+
"%6$s parameeter antakse %7$s, nii et ta on tüpograafia valikutüübi ID. See "
|
1434 |
+
"võimaldab lisada veebis kasutamiseks sobilikke fonte erinevatele fondi "
|
1435 |
+
"perekondadele vastavalt vajadusele."
|
1436 |
+
|
1437 |
+
#: ../includes/ot-functions-docs-page.php:175
|
1438 |
+
#, php-format
|
1439 |
+
msgid ""
|
1440 |
+
"The JavaScript option type is a textarea that uses the %s code editor to "
|
1441 |
+
"highlight your JavaScript and display errors as you type."
|
1442 |
+
msgstr ""
|
1443 |
+
"JavaScript valikutüüp on tekstiväli, mis kasutab %s koodi redaktorit sinu "
|
1444 |
+
"kirjutatava JavaScripti süntaksi esile toomiseks ning vigade näitamiseks "
|
1445 |
+
"kirjutamise ajal."
|
1446 |
+
|
1447 |
+
#: ../includes/ot-functions-docs-page.php:178
|
1448 |
+
msgid "The Link Color option type is used to set all link color states."
|
1449 |
+
msgstr ""
|
1450 |
+
"Lingi värvi valikutüüpi kasutatakse kõikide linkide värviolekute määramiseks."
|
1451 |
+
|
1452 |
+
#: ../includes/ot-functions-docs-page.php:181
|
1453 |
+
msgid ""
|
1454 |
+
"The List Item option type replaced the Slider option type and allows for a "
|
1455 |
+
"great deal of customization. You can add settings to the List Item and those "
|
1456 |
+
"settings will be displayed to the user when they add a new List Item. "
|
1457 |
+
"Typical use is for creating sliding content or blocks of code for custom "
|
1458 |
+
"layouts."
|
1459 |
+
msgstr ""
|
1460 |
+
"Nimekirja valikutüüp vahetas välja slaidiesitaja valikutüübi ning võimaldab "
|
1461 |
+
"põhjalikku kohandamist. Nimekirja elementidele saab lisada sätteid, mida "
|
1462 |
+
"näidatakse kasutajale uue elemendi lisamisel. Tüüpiline kasutusjuht on "
|
1463 |
+
"liugleva sisu või koodiblokkide loomiseks."
|
1464 |
+
|
1465 |
+
#: ../includes/ot-functions-docs-page.php:184
|
1466 |
+
#, php-format
|
1467 |
+
msgid ""
|
1468 |
+
"The Measurement option type is a mix of input and select fields. The text "
|
1469 |
+
"input excepts a value and the select lets you choose the unit of measurement "
|
1470 |
+
"to add to that value. Currently the default units are %s, %s, %s, and %s. "
|
1471 |
+
"However, you can change them with the %s filter."
|
1472 |
+
msgstr ""
|
1473 |
+
"Mõõdu valikutüüp on segu sisendväljast ja valikuväljast. Tekstisisend eeldab "
|
1474 |
+
"väärtust ning rippvalik laseb valida mõõduühiku sellele väärtusele. Hetkel "
|
1475 |
+
"on vaikimisi ühikuteks %s, %s, %s ja %s. Neid saab muuta %s filtriga."
|
1476 |
+
|
1477 |
+
#: ../includes/ot-functions-docs-page.php:186
|
1478 |
+
#, php-format
|
1479 |
+
msgid ""
|
1480 |
+
"Example filter to add new units to the Measurement option type. Added to %s."
|
1481 |
+
msgstr "Näidisfilter mõõdu valikutüüpi ühikute lisamiseks. Lisatakse %s faili."
|
1482 |
+
|
1483 |
+
#: ../includes/ot-functions-docs-page.php:199
|
1484 |
+
msgid ""
|
1485 |
+
"Example filter to completely change the units in the Measurement option "
|
1486 |
+
"type. Added to <code>functions.php</code>."
|
1487 |
+
msgstr ""
|
1488 |
+
"Näidisfilter, mis muudab mõõdu valikutüübi ühikud täiesti teistsugusteks. "
|
1489 |
+
"Lisatakse <code>functions.php</code> faili."
|
1490 |
+
|
1491 |
+
#: ../includes/ot-functions-docs-page.php:215
|
1492 |
+
msgid ""
|
1493 |
+
"The Numeric Slider option type displays a jQuery UI slider. It will return a "
|
1494 |
+
"single numerical value for use in a custom function or loop."
|
1495 |
+
msgstr ""
|
1496 |
+
"Numbriliuguri valikutüüp kuvab jQuery UI liuguri. See tagastab ühe "
|
1497 |
+
"numbrilise väärtuse enda funktsioonis või tsüklis kasutamiseks."
|
1498 |
+
|
1499 |
+
#: ../includes/ot-functions-docs-page.php:218
|
1500 |
+
#, php-format
|
1501 |
+
msgid ""
|
1502 |
+
"The On/Off option type displays a simple switch that can be used to turn "
|
1503 |
+
"things on or off. The saved return value is either %s or %s."
|
1504 |
+
msgstr ""
|
1505 |
+
"Sees/väljas valikutüüp kuvab lihtsa lüliti, millega saab asju sisse või "
|
1506 |
+
"välja lülitada. Salvestatud väärtus on kas %s või %s."
|
1507 |
+
|
1508 |
+
#: ../includes/ot-functions-docs-page.php:221
|
1509 |
+
msgid ""
|
1510 |
+
"The Page Checkbox option type displays a list of page IDs. It allows the "
|
1511 |
+
"user to check multiple page IDs for use in a custom function or loop."
|
1512 |
+
msgstr ""
|
1513 |
+
"Lehe valikkastide valikutüüp kuvab nimekirja kõikidest lehtede ID-dest. See "
|
1514 |
+
"võimaldab kasutajal märgistada mitu lehe ID-d, mida kasutada enda "
|
1515 |
+
"funktsioonis või tsüklis."
|
1516 |
+
|
1517 |
+
#: ../includes/ot-functions-docs-page.php:224
|
1518 |
+
msgid ""
|
1519 |
+
"The Page Select option type displays a list of page IDs. It will return a "
|
1520 |
+
"single page ID for use in a custom function or loop."
|
1521 |
+
msgstr ""
|
1522 |
+
"Lehe rippvaliku valikutüüp kuvab nimekirja kõikidest lehtede ID-dest. See "
|
1523 |
+
"tagastab ühe lehe ID, mida kasutada enda funktsioonis või tsüklis."
|
1524 |
+
|
1525 |
+
#: ../includes/ot-functions-docs-page.php:227
|
1526 |
+
msgid ""
|
1527 |
+
"The Post Checkbox option type displays a list of post IDs. It allows the "
|
1528 |
+
"user to check multiple post IDs for use in a custom function or loop."
|
1529 |
+
msgstr ""
|
1530 |
+
"Postituse valikkastid valikutüüp kuvab nimekirja kõikidest postituste ID-"
|
1531 |
+
"dest. See võimaldab kasutajal märgistada mitu postituse ID-d, mida kasutada "
|
1532 |
+
"enda funktsioonis või tsüklis."
|
1533 |
+
|
1534 |
+
#: ../includes/ot-functions-docs-page.php:230
|
1535 |
+
msgid ""
|
1536 |
+
"The Post Select option type displays a list of post IDs. It will return a "
|
1537 |
+
"single post ID for use in a custom function or loop."
|
1538 |
+
msgstr ""
|
1539 |
+
"Postituse rippvaliku valikutüüp kuvab nimekirja kõikidest postituste ID-"
|
1540 |
+
"dest. See tagastab ühe postituse ID, mida kasutada enda funktsioonis või "
|
1541 |
+
"tsüklis."
|
1542 |
+
|
1543 |
+
#: ../includes/ot-functions-docs-page.php:233
|
1544 |
+
msgid ""
|
1545 |
+
"The Radio option type displays a group of choices. It allows the user to "
|
1546 |
+
"choose one and will return that value as a string for use in a custom "
|
1547 |
+
"function or loop."
|
1548 |
+
msgstr ""
|
1549 |
+
"Raadiovaliku valikutüüp näitab valikute gruppi. See laseb kasutajal valida "
|
1550 |
+
"neist ühe ning tagastab selle väärtuse string-ina enda funktsioonis või "
|
1551 |
+
"tsüklis kasutamiseks."
|
1552 |
+
|
1553 |
+
#: ../includes/ot-functions-docs-page.php:236
|
1554 |
+
#, php-format
|
1555 |
+
msgid ""
|
1556 |
+
"the Radio Images option type is primarily used for layouts. However, you can "
|
1557 |
+
"filter the image list using %s. As well, you can add your own custom images "
|
1558 |
+
"using the choices array."
|
1559 |
+
msgstr ""
|
1560 |
+
"Piltidega raadiovaliku valikutüüpi kasutatakse peamiselt paigutuste jaoks. "
|
1561 |
+
"Piltide loendit saab filtreerida %s abil. Valikute massiivi saab lisada enda "
|
1562 |
+
"pilte."
|
1563 |
+
|
1564 |
+
#: ../includes/ot-functions-docs-page.php:238
|
1565 |
+
msgid ""
|
1566 |
+
"This example executes the <code>ot_radio_images</code> filter on layout "
|
1567 |
+
"images attached to the <code>my_radio_images</code> field. Added to "
|
1568 |
+
"<code>functions.php</code>."
|
1569 |
+
msgstr ""
|
1570 |
+
"See näide käivitab <code>ot_radio_images</code> filtri "
|
1571 |
+
"<code>my_radio_images</code> väljale lisatud paigutuse piltidel. Lisatakse "
|
1572 |
+
"<code>functions.php</code> faili."
|
1573 |
+
|
1574 |
+
#: ../includes/ot-functions-docs-page.php:263
|
1575 |
+
msgid ""
|
1576 |
+
"The Select option type is used to list anything you want that would be "
|
1577 |
+
"chosen from a select list."
|
1578 |
+
msgstr ""
|
1579 |
+
"Rippvaliku valikutüüpi saab kasutada ükskõik mille loendamiseks, mida saab "
|
1580 |
+
"valida rippmenüüst."
|
1581 |
+
|
1582 |
+
#: ../includes/ot-functions-docs-page.php:266
|
1583 |
+
#, php-format
|
1584 |
+
msgid ""
|
1585 |
+
"This option type makes it possible for users to select a WordPress "
|
1586 |
+
"registered sidebar to use on a specific area. By using the two provided "
|
1587 |
+
"filters, %s, and %s we can be selective about which sidebars are available "
|
1588 |
+
"on a specific content area."
|
1589 |
+
msgstr ""
|
1590 |
+
"See valikutüüp võimaldab kasutajatel valida WordPressis registreeritud "
|
1591 |
+
"küljeriba, kasutamaks seda kindlas kohas. Kahe kaasa antud filtri, %s ja %s "
|
1592 |
+
"abil saab määrata, millist küljeriba millises sisuosas näidata."
|
1593 |
+
|
1594 |
+
#: ../includes/ot-functions-docs-page.php:267
|
1595 |
+
#, php-format
|
1596 |
+
msgid ""
|
1597 |
+
"For example, if we create a WordPress theme that provides the ability to "
|
1598 |
+
"change the Blog Sidebar and we don't want to have the footer sidebars "
|
1599 |
+
"available on this area, we can unset those sidebars either manually or by "
|
1600 |
+
"using a regular expression if we have a common name like %s."
|
1601 |
+
msgstr ""
|
1602 |
+
"Näiteks kui luua WordPressi teema, mis võimaldab muuta blogi küljeriba ning "
|
1603 |
+
"me ei soovi siin alas näha jaluse küljeribasid, siis saame need küljeribad "
|
1604 |
+
"ära võtta kas käsitsi või kasutades regulaaravaldist, nagu näiteks %s."
|
1605 |
+
|
1606 |
+
#: ../includes/ot-functions-docs-page.php:270
|
1607 |
+
msgid ""
|
1608 |
+
"The Slider option type is technically deprecated. Use the List Item option "
|
1609 |
+
"type instead, as it's infinitely more customizable. Typical use is for "
|
1610 |
+
"creating sliding image content."
|
1611 |
+
msgstr ""
|
1612 |
+
"Tehniliselt on slaidiesitaja valikutüübi kasutamine taunitud. Kasutage parem "
|
1613 |
+
"nimekirja elemendi valikutüüpi, kuna see on lõpmatult kohandatav. Tüüpiline "
|
1614 |
+
"kasutusjuht on libisevate piltidega sisu jaoks."
|
1615 |
+
|
1616 |
+
#: ../includes/ot-functions-docs-page.php:273
|
1617 |
+
#, php-format
|
1618 |
+
msgid ""
|
1619 |
+
"The Social Links option type utilizes a drag & drop interface to create a "
|
1620 |
+
"list of social links. There are a few filters that make extending this "
|
1621 |
+
"option type easy. You can set the %s filter to %s and turn off loading "
|
1622 |
+
"default values. Use the %s filter to change the default values that are "
|
1623 |
+
"loaded. To filter the settings array use the %s filter."
|
1624 |
+
msgstr ""
|
1625 |
+
"Sotsiaalmeedia linkide valikutüübis kasutatakse nimekirja loomiseks tiri-ja-"
|
1626 |
+
"pilla liidest. On loodud mõned filtrid, mis teevad selle valikutüübi "
|
1627 |
+
"täiendamise kergeks. Filter %s väärtuseks saab määrata %s, et lülitada välja "
|
1628 |
+
"vaikimisi väärtuste laadimine. %s filtriga saab muuta vaikeväärtuseid. "
|
1629 |
+
"Sätete massiivi filtreerimiseks on %s."
|
1630 |
+
|
1631 |
+
#: ../includes/ot-functions-docs-page.php:276
|
1632 |
+
#, php-format
|
1633 |
+
msgid ""
|
1634 |
+
"The Spacing option type is used to set spacing values such as padding or "
|
1635 |
+
"margin in the form of top, right, bottom, and left. The text inputs except "
|
1636 |
+
"numerical values and the select lets you choose the unit of measurement to "
|
1637 |
+
"add to that value. Currently the default units are %s, %s, %s, and %s. "
|
1638 |
+
"However, you can change them with the %s filter."
|
1639 |
+
msgstr ""
|
1640 |
+
"Vahede valikutüüpi kasutatakse \"padding\" ja \"margin\" väärtuste jaoks "
|
1641 |
+
"kujul \"top\", \"right\", \"bottom\", \"left\". Tekstisisendisse saab "
|
1642 |
+
"kirjutada numbrilise väärtuse ning rippmenüü laseb valida talle mõõtühiku. "
|
1643 |
+
"Hetkel on vaikimisi ühikuteks %s, %s, %s ja %s. Neid saab muuta %s filtriga."
|
1644 |
+
|
1645 |
+
#: ../includes/ot-functions-docs-page.php:279
|
1646 |
+
msgid ""
|
1647 |
+
"The Tab option type will break a section or metabox into tabbed content."
|
1648 |
+
msgstr ""
|
1649 |
+
"Saki valikutüüp muudab sektsiooni või meta-kasti sakkidega sisuelemendiks."
|
1650 |
+
|
1651 |
+
#: ../includes/ot-functions-docs-page.php:282
|
1652 |
+
msgid ""
|
1653 |
+
"The Tag Checkbox option type displays a list of tag IDs. It allows the user "
|
1654 |
+
"to check multiple tag IDs and will return that value as an array for use in "
|
1655 |
+
"a custom function or loop."
|
1656 |
+
msgstr ""
|
1657 |
+
"Sildi valikukasti valikutüüp kuvab loendi siltide ID-dega. See laseb "
|
1658 |
+
"kasutajal märkida mitu sildi ID-d ning tagastab selle väärtuse massiivina "
|
1659 |
+
"enda funktsioonis või tsüklis kasutamiseks."
|
1660 |
+
|
1661 |
+
#: ../includes/ot-functions-docs-page.php:285
|
1662 |
+
msgid ""
|
1663 |
+
"The Tag Select option type displays a list of tag IDs. It allows the user to "
|
1664 |
+
"select only one tag ID and will return that value for use in a custom "
|
1665 |
+
"function or loop."
|
1666 |
+
msgstr ""
|
1667 |
+
"Sildi rippvaliku valikutüüp kuvab loendi siltide ID-dega. See laseb "
|
1668 |
+
"kasutajal märkida ainult ühe sildi ID ning tagastab selle väärtuse enda "
|
1669 |
+
"funktsioonis või tsüklis kasutamiseks."
|
1670 |
+
|
1671 |
+
#: ../includes/ot-functions-docs-page.php:288
|
1672 |
+
msgid ""
|
1673 |
+
"The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows "
|
1674 |
+
"the user to check multiple taxonomy IDs and will return that value as an "
|
1675 |
+
"array for use in a custom function or loop."
|
1676 |
+
msgstr ""
|
1677 |
+
"Taksonoomia valikukasti valikutüüp kuvab loendi taksonoomiate ID-dega. See "
|
1678 |
+
"laseb kasutajal märkida mitu taksonoomia ID-d ning tagastab selle väärtuse "
|
1679 |
+
"massiivina enda funktsioonis või tsüklis kasutamiseks."
|
1680 |
+
|
1681 |
+
#: ../includes/ot-functions-docs-page.php:291
|
1682 |
+
msgid ""
|
1683 |
+
"The Taxonomy Select option type displays a list of taxonomy IDs. It allows "
|
1684 |
+
"the user to select only one taxonomy ID and will return that value for use "
|
1685 |
+
"in a custom function or loop."
|
1686 |
+
msgstr ""
|
1687 |
+
"Taksonoomia rippvaliku valikutüüp kuvab loendi taksonoomiate ID-dega. See "
|
1688 |
+
"laseb kasutajal märkida ainult ühe taksonoomia ID ning tagastab selle "
|
1689 |
+
"väärtuse enda funktsioonis või tsüklis kasutamiseks."
|
1690 |
+
|
1691 |
+
#: ../includes/ot-functions-docs-page.php:294
|
1692 |
+
msgid ""
|
1693 |
+
"The Text option type is used to save string values. For example, any "
|
1694 |
+
"optional or required text that is of reasonably short character length."
|
1695 |
+
msgstr ""
|
1696 |
+
"Teksti valikutüüpi kasutatakse väärtuste salvestamiseks stringi kujul. "
|
1697 |
+
"Näiteks mõni valikuline või nõutud tekst, mis on piisavalt lühike."
|
1698 |
+
|
1699 |
+
#: ../includes/ot-functions-docs-page.php:297
|
1700 |
+
#, php-format
|
1701 |
+
msgid ""
|
1702 |
+
"The Textarea option type is a large string value used for custom code or "
|
1703 |
+
"text in the theme and has a WYSIWYG editor that can be filtered to change "
|
1704 |
+
"the how it is displayed. For example, you can filter %s, %s, %s, and %s."
|
1705 |
+
msgstr ""
|
1706 |
+
"Tekstivälja valikutüüp on suur väärtus stringi kujul salvestamiseks, millel "
|
1707 |
+
"on WYSIWYG toimetaja, mida saab filtreerida muutmaks tema kuvamist. Näiteks "
|
1708 |
+
"saab filtreerida %s, %s, %s ja %s."
|
1709 |
+
|
1710 |
+
#: ../includes/ot-functions-docs-page.php:299
|
1711 |
+
msgid ""
|
1712 |
+
"Example filters to alter the Textarea option type. Added to <code>functions."
|
1713 |
+
"php</code>."
|
1714 |
+
msgstr ""
|
1715 |
+
"Näidisfiltrid, millega muuta tekstivälja valikutüüpi. Lisatakse "
|
1716 |
+
"<code>functions.php</code> faili."
|
1717 |
+
|
1718 |
+
#: ../includes/ot-functions-docs-page.php:301
|
1719 |
+
msgid ""
|
1720 |
+
"This example keeps WordPress from executing the <code>wpautop</code> filter "
|
1721 |
+
"on the line breaks. The default is <code>true</code> which means it wraps "
|
1722 |
+
"line breaks with an HTML <code>p</code> tag."
|
1723 |
+
msgstr ""
|
1724 |
+
"See näide takistab Wordpressil kasutada <code>wpautop</code> filtrit "
|
1725 |
+
"reavahetustel. Vaikeväärtus on <code>true</code>, mis tähendab, et "
|
1726 |
+
"reavahtused mähitakse HTML <code>p</code> elemendiga."
|
1727 |
+
|
1728 |
+
#: ../includes/ot-functions-docs-page.php:314
|
1729 |
+
msgid ""
|
1730 |
+
"This example keeps WordPress from executing the <code>media_buttons</code> "
|
1731 |
+
"filter on the textarea WYSIWYG. The default is <code>true</code> which means "
|
1732 |
+
"show the buttons."
|
1733 |
+
msgstr ""
|
1734 |
+
"See näide takistab Wordpressil kasutada <code>media_buttons</code> filtrit "
|
1735 |
+
"tekstivälja WYSIWYG toimetajas. Vaikeväärtus on <code>true</code>, mis "
|
1736 |
+
"tähendab, et nuppe näidatakse."
|
1737 |
+
|
1738 |
+
#: ../includes/ot-functions-docs-page.php:327
|
1739 |
+
msgid ""
|
1740 |
+
"This example keeps WordPress from executing the <code>tinymce</code> filter "
|
1741 |
+
"on the textarea WYSIWYG. The default is <code>true</code> which means show "
|
1742 |
+
"the tinymce."
|
1743 |
+
msgstr ""
|
1744 |
+
"See näide takistab Wordpressil kasutada <code>tinymce</code> filtrit "
|
1745 |
+
"tekstivälja WYSIWYG toimetajas. Vaikeväärtus on <code>true</code>, mis "
|
1746 |
+
"tähendab, et tinymce on nähtaval."
|
1747 |
+
|
1748 |
+
#: ../includes/ot-functions-docs-page.php:340
|
1749 |
+
msgid ""
|
1750 |
+
"This example alters the <code>quicktags</code> filter on the textarea "
|
1751 |
+
"WYSIWYG. The default is <code>array( 'buttons' => 'strong,em,link,block,del,"
|
1752 |
+
"ins,img,ul,ol,li,code,spell,close' )</code> which means show those "
|
1753 |
+
"quicktags. It also means you can filter in your own custom quicktags."
|
1754 |
+
msgstr ""
|
1755 |
+
"See näide muudab <code>quicktags</code> filtrit tekstivälja WYSIWYG "
|
1756 |
+
"toimetajas. Vaikeväärtus on <code>array('buttons' => 'strong,em,link,block,"
|
1757 |
+
"del,ins,img,ul,ol,li,code,spell,close')</code>, mis tähendab, et neid "
|
1758 |
+
"elemente näidatakse. Siitkaudu saad kaasata endale sobivaid elemente."
|
1759 |
+
|
1760 |
+
#: ../includes/ot-functions-docs-page.php:356
|
1761 |
+
msgid ""
|
1762 |
+
"The Textarea Simple option type is a large string value used for custom code "
|
1763 |
+
"or text in the theme. The Textarea Simple does not have a WYSIWYG editor."
|
1764 |
+
msgstr ""
|
1765 |
+
"Lihtsa tekstivälja valikutüüp on suur string-tüüpi väärtus teemas oleva "
|
1766 |
+
"kohandatud koodi või teksti jaoks. Lihtsal tekstiväljal ei ole WYSIWYG "
|
1767 |
+
"toimetajat."
|
1768 |
+
|
1769 |
+
#: ../includes/ot-functions-docs-page.php:358
|
1770 |
+
#, php-format
|
1771 |
+
msgid ""
|
1772 |
+
"This example tells WordPress to execute the %s filter on the line breaks. "
|
1773 |
+
"The default is %s which means it does not wraps line breaks with an HTML %s "
|
1774 |
+
"tag. Added to %s."
|
1775 |
+
msgstr ""
|
1776 |
+
"See näide ütleb Wordpressile, et reavahetuste korral kasutada %s filtrit. "
|
1777 |
+
"Vaikeväärtus on %s, mis tähendab, et reavahetusi ei mähita HTML %s "
|
1778 |
+
"elemendiga. Lisatakse %s faili."
|
1779 |
+
|
1780 |
+
#: ../includes/ot-functions-docs-page.php:372
|
1781 |
+
msgid ""
|
1782 |
+
"The Textblock option type is used only on the Theme Option page. It will "
|
1783 |
+
"allow you to create & display HTML, but has no title above the text block. "
|
1784 |
+
"You can then use the Textblock to add a more detailed set of instruction on "
|
1785 |
+
"how the options are used in your theme. You would never use this in your "
|
1786 |
+
"themes template files as it does not save a value."
|
1787 |
+
msgstr ""
|
1788 |
+
"Tekstibloki valikutüüpi kasutatakse teema valikute lehel. See võimaldab luua "
|
1789 |
+
"ja kuvada HTML-i, kuid tal puudub pealkiri. Sellega saab lisada detailsemaid "
|
1790 |
+
"kirjeldusi teemas kasutatavate valikute jaoks. Seda ei kasutata teema "
|
1791 |
+
"mallifailides, kuna ta ei salvesta mingit väärtust."
|
1792 |
+
|
1793 |
+
#: ../includes/ot-functions-docs-page.php:375
|
1794 |
+
msgid ""
|
1795 |
+
"The Textblock Titled option type is used only on the Theme Option page. It "
|
1796 |
+
"will allow you to create & display HTML, and has a title above the text "
|
1797 |
+
"block. You can then use the Textblock Titled to add a more detailed set of "
|
1798 |
+
"instruction on how the options are used in your theme. You would never use "
|
1799 |
+
"this in your themes template files as it does not save a value."
|
1800 |
+
msgstr ""
|
1801 |
+
"Pealkirjaga tekstibloki valikutüüpi kasutatakse teema valikute lehel. See "
|
1802 |
+
"võimaldab luua ja kuvada HTML-i ning tema kohal on pealkiri. Sellega saab "
|
1803 |
+
"lisada detailsemaid kirjeldusi teemas kasutatavate valikute jaoks. Seda ei "
|
1804 |
+
"kasutata teema mallifailides, kuna ta ei salvesta mingit väärtust."
|
1805 |
+
|
1806 |
+
#: ../includes/ot-functions-docs-page.php:378
|
1807 |
+
#, php-format
|
1808 |
+
msgid ""
|
1809 |
+
"The Typography option type is for adding typography styles to your theme "
|
1810 |
+
"either dynamically via the CSS option type above or manually with %s. The "
|
1811 |
+
"Typography option type has filters that allow you to remove fields or change "
|
1812 |
+
"the defaults. For example, you can filter %s to remove unwanted fields from "
|
1813 |
+
"all Background options or an individual one. You can also filter %s. These "
|
1814 |
+
"filters allow you to fine tune the select lists for your specific needs."
|
1815 |
+
msgstr ""
|
1816 |
+
"Tüpograafia valikutüübiga saab teemale lisada stiile, kas dünaamiliselt ülal "
|
1817 |
+
"oleva CSS valikutüübiga või käsitsi %s abil. Tüpograafia valikutüübil on "
|
1818 |
+
"filtrid, mis lasevad välju eemaldada või vaikimisi välju muuta. Näiteks saab "
|
1819 |
+
"filtreerida %s, eemaldamaks soovimatuid välju kõikidelt tausta valikutelt "
|
1820 |
+
"või mõnelt neist. Saab filtreerida ka %s. Need filtrid aitavad valikute "
|
1821 |
+
"nimekirja täpselt oma vajaduste järgi häälestada."
|
1822 |
+
|
1823 |
+
#: ../includes/ot-functions-docs-page.php:380
|
1824 |
+
msgid ""
|
1825 |
+
"This example would filter <code>ot_recognized_font_families</code> to build "
|
1826 |
+
"your own font stack. Added to <code>functions.php</code>."
|
1827 |
+
msgstr ""
|
1828 |
+
"See näide filtreerib <code>ot_recognized_font_families</code> loomaks enda "
|
1829 |
+
"fondipinu. Lisatakse <code>functions.php</code> faili."
|
1830 |
+
|
1831 |
+
#: ../includes/ot-functions-docs-page.php:398
|
1832 |
+
#, php-format
|
1833 |
+
msgid ""
|
1834 |
+
"The Upload option type is used to upload any WordPress supported media. "
|
1835 |
+
"After uploading, users are required to press the \"%s\" button in order to "
|
1836 |
+
"populate the input with the URI of that media. There is one caveat of this "
|
1837 |
+
"feature. If you import the theme options and have uploaded media on one site "
|
1838 |
+
"the old URI will not reflect the URI of your new site. You will have to re-"
|
1839 |
+
"upload or %s any media to your new server and change the URIs if necessary."
|
1840 |
+
msgstr ""
|
1841 |
+
"Üleslaadimise valikutüüp kasutatakse suvalise Wordpressi toetatava meedia "
|
1842 |
+
"üles laadimiseks. Peale üleslaadimist peab kasutaja vajutama \"%s\" nuppu, "
|
1843 |
+
"et täita sisend selle meediaelemendi URI-ga. Selle omadusega kaasneb üks "
|
1844 |
+
"probleem - kui importida teema valikuid teistsuguse aadressiga veebilehelt, "
|
1845 |
+
"siis URI-d automaatselt ei uuene. Meediafailid tuleb kas uuesti üles laadida "
|
1846 |
+
"või %s, vajadusel muutes URI-sid."
|
1847 |
+
|
1848 |
+
#: ../includes/ot-functions-docs-page.php:430
|
1849 |
+
msgid ""
|
1850 |
+
"This function returns a value from the \"option_tree\" array of saved values "
|
1851 |
+
"or the default value supplied. The returned value would be mixed. Meaning it "
|
1852 |
+
"could be a string, integer, boolean, or array."
|
1853 |
+
msgstr ""
|
1854 |
+
"See funktsioon tagastab või vajadusel trükib väärtuse \"option_tree\" "
|
1855 |
+
"massiivi salvestatud väärtustest või kaasaantud vaikeväärtuse. Tagastatud "
|
1856 |
+
"väärtus tüüp on segunenud. See tähendab, et ta võib olla string, integer, "
|
1857 |
+
"boolean või massiiv."
|
1858 |
+
|
1859 |
+
#: ../includes/ot-functions-docs-page.php:432
|
1860 |
+
#: ../includes/ot-functions-docs-page.php:482
|
1861 |
+
msgid "Usage"
|
1862 |
+
msgstr "Kasutus"
|
1863 |
+
|
1864 |
+
#: ../includes/ot-functions-docs-page.php:436
|
1865 |
+
#: ../includes/ot-functions-docs-page.php:486
|
1866 |
+
msgid "Parameters"
|
1867 |
+
msgstr "Parameetrid"
|
1868 |
+
|
1869 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1870 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1871 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1872 |
+
msgid "string"
|
1873 |
+
msgstr "string"
|
1874 |
+
|
1875 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1876 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1877 |
+
msgid "required"
|
1878 |
+
msgstr "nõutud"
|
1879 |
+
|
1880 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1881 |
+
msgid "Enter the options unique identifier."
|
1882 |
+
msgstr "Sisesta valikule unikaalne identifikaator."
|
1883 |
+
|
1884 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1885 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1886 |
+
msgid "Default:"
|
1887 |
+
msgstr "Vaikimisi:"
|
1888 |
+
|
1889 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1890 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1891 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1892 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1893 |
+
msgid "None"
|
1894 |
+
msgstr "Puudub"
|
1895 |
+
|
1896 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1897 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1898 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1899 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1900 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1901 |
+
msgid "optional"
|
1902 |
+
msgstr "valikuline"
|
1903 |
+
|
1904 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1905 |
+
msgid ""
|
1906 |
+
"Enter a default return value. This is just incase the request returns null."
|
1907 |
+
msgstr "Sisesta vaikeväärtus. See on vajalik juhul, kui päring tagastab nulli."
|
1908 |
+
|
1909 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1910 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1911 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1912 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1913 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1914 |
+
msgid "Default"
|
1915 |
+
msgstr "Vaikimisi"
|
1916 |
+
|
1917 |
+
#: ../includes/ot-functions-docs-page.php:474
|
1918 |
+
msgid ""
|
1919 |
+
"This function has been deprecated. That means it has been replaced by a new "
|
1920 |
+
"function or is no longer supported, and may be removed from future versions. "
|
1921 |
+
"All code that uses this function should be converted to use its replacement."
|
1922 |
+
msgstr ""
|
1923 |
+
"Selle funktsiooni kasutamist taunitakse. See tähendab, et ta on asendatud "
|
1924 |
+
"uue funktsiooniga või teda ei toetata enam ning ta võidakse tulevastest "
|
1925 |
+
"versioonidest välja jätta. Kõik seda funktsiooni kasutav kood tuleks ümber "
|
1926 |
+
"muuta kasutamaks tema asendust."
|
1927 |
+
|
1928 |
+
#: ../includes/ot-functions-docs-page.php:476
|
1929 |
+
msgid "Use"
|
1930 |
+
msgstr "Kasuta"
|
1931 |
+
|
1932 |
+
#: ../includes/ot-functions-docs-page.php:476
|
1933 |
+
msgid "instead"
|
1934 |
+
msgstr "asemel"
|
1935 |
+
|
1936 |
+
#: ../includes/ot-functions-docs-page.php:480
|
1937 |
+
msgid ""
|
1938 |
+
"This function returns, or echos if asked, a value from the \"option_tree\" "
|
1939 |
+
"array of saved values."
|
1940 |
+
msgstr ""
|
1941 |
+
"See funktsioon tagastab või vajadusel trükib väärtuse \"option_tree\" "
|
1942 |
+
"massiivi salvestatud väärtustest."
|
1943 |
+
|
1944 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1945 |
+
msgid "Enter a unique Option Key to get a returned value or array."
|
1946 |
+
msgstr "Sisesta unikaalne valiku võti saamaks väärtust või massiivi."
|
1947 |
+
|
1948 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1949 |
+
msgid "array"
|
1950 |
+
msgstr "array"
|
1951 |
+
|
1952 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1953 |
+
msgid "Used to cut down on database queries in template files."
|
1954 |
+
msgstr "Kasutatakse andmebaasi päringute vähendamiseks mallifailides."
|
1955 |
+
|
1956 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1957 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1958 |
+
msgid "boolean"
|
1959 |
+
msgstr "boolean"
|
1960 |
+
|
1961 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1962 |
+
msgid "Echo the output."
|
1963 |
+
msgstr "Trüki väljund."
|
1964 |
+
|
1965 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1966 |
+
msgid "Used to indicate the $item_id is an array of values."
|
1967 |
+
msgstr "Kasutatakse märkimaks, et $item_id on väärtuste massiiv."
|
1968 |
+
|
1969 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1970 |
+
msgid "integer"
|
1971 |
+
msgstr "integer"
|
1972 |
+
|
1973 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1974 |
+
msgid ""
|
1975 |
+
"Numeric offset key for the $item_id array, -1 will return all values (an "
|
1976 |
+
"array starts at 0)."
|
1977 |
+
msgstr ""
|
1978 |
+
"Numbriline nihkevõti $item_id massiivi jaoks, -1 tagastab kõik väärtused "
|
1979 |
+
"( massiiv algab 0-st )."
|
1980 |
+
|
1981 |
+
#: ../includes/ot-functions-docs-page.php:534
|
1982 |
+
msgid ""
|
1983 |
+
"If you're using the plugin version of OptionTree it is highly recommended to "
|
1984 |
+
"include a <code>function_exists</code> check in your code, as described in "
|
1985 |
+
"the examples below. If you've integrated OptionTree directly into your "
|
1986 |
+
"themes root directory, you will <strong>not</strong> need to wrap your code "
|
1987 |
+
"with <code>function_exists</code>, as you're guaranteed to have the "
|
1988 |
+
"<code>ot_get_option()</code> function available."
|
1989 |
+
msgstr ""
|
1990 |
+
"Kui kasutate OptionTree mooduli versiooni, siis on soovitatav oma koodi "
|
1991 |
+
"lisada <code>function_exists</code> kontroll, nagu kirjeldatud allpool "
|
1992 |
+
"toodud näidetes. Kui olete OptionTree otse oma teema juurkataloogi sisse "
|
1993 |
+
"ehitanud, siis teil <strong>ei ole</strong> vaja mähkida oma koodi "
|
1994 |
+
"<code>function_exists</code> kontrolliga, sest teil on "
|
1995 |
+
"<code>ot_get_option()</code> funktsiooni saadavus garanteeritud."
|
1996 |
+
|
1997 |
+
#: ../includes/ot-functions-docs-page.php:536
|
1998 |
+
msgid "String Examples"
|
1999 |
+
msgstr "<em>String-i</em> näited"
|
2000 |
+
|
2001 |
+
#: ../includes/ot-functions-docs-page.php:538
|
2002 |
+
msgid "Returns the value of <code>test_input</code>."
|
2003 |
+
msgstr "Tagastab <code>test_input</code> väärtuse."
|
2004 |
+
|
2005 |
+
#: ../includes/ot-functions-docs-page.php:544
|
2006 |
+
msgid ""
|
2007 |
+
"Returns the value of <code>test_input</code>, but also has a default value "
|
2008 |
+
"if it returns empty."
|
2009 |
+
msgstr ""
|
2010 |
+
"Tagastab <code>test_input</code> väärtuse või vaikeväärtuse, kui tagastatud "
|
2011 |
+
"väärtus on tühi."
|
2012 |
+
|
2013 |
+
#: ../includes/ot-functions-docs-page.php:550
|
2014 |
+
msgid "Array Examples"
|
2015 |
+
msgstr "<em>Array</em> näited"
|
2016 |
+
|
2017 |
+
#: ../includes/ot-functions-docs-page.php:552
|
2018 |
+
msgid ""
|
2019 |
+
"Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</"
|
2020 |
+
"code>. It then echos an unordered list of links (navigation) using "
|
2021 |
+
"<code>wp_list_pages()</code>."
|
2022 |
+
msgstr ""
|
2023 |
+
"Omistab <code>navigation_ids</code> väärtuse <code>$ids</code> muutujale. "
|
2024 |
+
"See trükib välja järjestamata loetelu ( navigatsiooni ) linkidest, kasutades "
|
2025 |
+
"<code>wp_list_pages()</code>."
|
2026 |
+
|
2027 |
+
#: ../includes/ot-functions-docs-page.php:572
|
2028 |
+
msgid ""
|
2029 |
+
"The next two examples demonstrate how to use the <strong>Measurement</"
|
2030 |
+
"strong> option type. The Measurement option type is an array with two key/"
|
2031 |
+
"value pairs. The first is the value of measurement and the second is the "
|
2032 |
+
"unit of measurement."
|
2033 |
+
msgstr ""
|
2034 |
+
"Järgnevad kaks näidet demonstreerivad, kuidas kasutada <strong>mõõdu</"
|
2035 |
+
"strong> valikutüüpi. Mõõdu valikutüüp on massiiv kahe võti-väärtus paariga. "
|
2036 |
+
"Esimene on mõõdu väärtus ning teine on mõõduühik."
|
2037 |
+
|
2038 |
+
#: ../includes/ot-functions-docs-page.php:598
|
2039 |
+
msgid "This example displays a very basic slider loop."
|
2040 |
+
msgstr "See näide kuvab väga algelise slaidi esitleja tsükli."
|
2041 |
+
|
2042 |
+
#: ../includes/ot-functions-docs-page.php:643
|
2043 |
+
msgid "It's Super Simple"
|
2044 |
+
msgstr "See on imelihtne"
|
2045 |
+
|
2046 |
+
#: ../includes/ot-functions-docs-page.php:645
|
2047 |
+
msgid ""
|
2048 |
+
"Layouts make your theme awesome! With theme options data that you can save/"
|
2049 |
+
"import/export you can package themes with different color variations, or "
|
2050 |
+
"make it easy to do A/B testing on text and so much more. Basically, you save "
|
2051 |
+
"a snapshot of your data as a layout."
|
2052 |
+
msgstr ""
|
2053 |
+
"Paigutused teevad su teema aukartust äratavaks! Teema valikute infoga, mida "
|
2054 |
+
"saad salvestada/importida/eksportida, saad pakendada teemasid erinevate "
|
2055 |
+
"värvivariatsioonidega või kergelt teostada A/B testimist tekstiosadel ning "
|
2056 |
+
"palju muud. Põhimõtteliselt on paigutus sinu andmete ülesvõtte salvestus."
|
2057 |
+
|
2058 |
+
#: ../includes/ot-functions-docs-page.php:647
|
2059 |
+
msgid ""
|
2060 |
+
"Once you have created all your different layouts, or theme variations, you "
|
2061 |
+
"can save them to a separate text file for repackaging with your theme. "
|
2062 |
+
"Alternatively, you could just make different variations for yourself and "
|
2063 |
+
"change your theme with the click of a button, all without deleting your "
|
2064 |
+
"previous options data."
|
2065 |
+
msgstr ""
|
2066 |
+
"Peale kõikide erinevate paigutuste või teema variatsioonide loomist saab nad "
|
2067 |
+
"salvestada eraldi tekstifaili, mida teemaga kaasa pakendada. Teine "
|
2068 |
+
"kasutusviis oleks teha enda jaoks erinevad variatsioonid ja muuta oma teemat "
|
2069 |
+
"ainsa nupuvajutusega, ilma eelnevate andmete kustutamiseta."
|
2070 |
+
|
2071 |
+
#: ../includes/ot-functions-docs-page.php:649
|
2072 |
+
msgid ""
|
2073 |
+
" Adding a layout is ridiculously easy, follow these steps and you'll be on "
|
2074 |
+
"your way to having a WordPress super theme."
|
2075 |
+
msgstr ""
|
2076 |
+
"Paigutuse lisamine on naeruväärselt lihtne. Järgi neid samme ning oled teel "
|
2077 |
+
"WordPressi superteema omamisele."
|
2078 |
+
|
2079 |
+
#: ../includes/ot-functions-docs-page.php:651
|
2080 |
+
msgid "For Developers"
|
2081 |
+
msgstr "Arendajatele"
|
2082 |
+
|
2083 |
+
#: ../includes/ot-functions-docs-page.php:653
|
2084 |
+
#: ../includes/ot-functions-docs-page.php:682
|
2085 |
+
msgid "Creating a Layout"
|
2086 |
+
msgstr "Paigutuse loomine"
|
2087 |
+
|
2088 |
+
#: ../includes/ot-functions-docs-page.php:655
|
2089 |
+
#: ../includes/ot-functions-docs-page.php:662
|
2090 |
+
#: ../includes/ot-functions-docs-page.php:668
|
2091 |
+
msgid "Go to the <code>OptionTre->Settings->Layouts</code> tab."
|
2092 |
+
msgstr "Mine <code>OptionTree->Sätted->Paigutused</code> sakile."
|
2093 |
+
|
2094 |
+
#: ../includes/ot-functions-docs-page.php:656
|
2095 |
+
msgid ""
|
2096 |
+
"Enter a name for your layout in the text field and hit \"Save Layouts\", "
|
2097 |
+
"you've created your first layout."
|
2098 |
+
msgstr ""
|
2099 |
+
"Sisesta tekstivälja oma paigutuse nimi ja vajuta \"Salvesta paigutused\" "
|
2100 |
+
"nuppu. Oled loonud oma esimese paigutuse."
|
2101 |
+
|
2102 |
+
#: ../includes/ot-functions-docs-page.php:657
|
2103 |
+
#: ../includes/ot-functions-docs-page.php:686
|
2104 |
+
msgid "Adding a new layout is as easy as repeating the steps above."
|
2105 |
+
msgstr "Uue paigutuse lisamine on lihtne, kui järgid ülaltoodud samme."
|
2106 |
+
|
2107 |
+
#: ../includes/ot-functions-docs-page.php:660
|
2108 |
+
#: ../includes/ot-functions-docs-page.php:689
|
2109 |
+
msgid "Activating a Layout"
|
2110 |
+
msgstr "Paigutuse aktiveerimine"
|
2111 |
+
|
2112 |
+
#: ../includes/ot-functions-docs-page.php:663
|
2113 |
+
msgid "Click on the activate layout button in the actions list."
|
2114 |
+
msgstr "Vajuta paigutuse aktiveerimise nupul tegevuste nimekirjas."
|
2115 |
+
|
2116 |
+
#: ../includes/ot-functions-docs-page.php:666
|
2117 |
+
#: ../includes/ot-functions-docs-page.php:695
|
2118 |
+
msgid "Deleting a Layout"
|
2119 |
+
msgstr "Paigutuse kustutamine"
|
2120 |
+
|
2121 |
+
#: ../includes/ot-functions-docs-page.php:669
|
2122 |
+
msgid "Click on the delete layout button in the actions list."
|
2123 |
+
msgstr "Vajuta paigutuse kustutamise nupul tegevuste nimekirjas."
|
2124 |
+
|
2125 |
+
#: ../includes/ot-functions-docs-page.php:672
|
2126 |
+
#: ../includes/ot-functions-docs-page.php:700
|
2127 |
+
msgid "Edit Layout Data"
|
2128 |
+
msgstr "Muuda paigutuse andmeid"
|
2129 |
+
|
2130 |
+
#: ../includes/ot-functions-docs-page.php:674
|
2131 |
+
#: ../includes/ot-functions-docs-page.php:684
|
2132 |
+
#: ../includes/ot-functions-docs-page.php:691
|
2133 |
+
msgid "Go to the <code>Appearance->Theme Options</code> page."
|
2134 |
+
msgstr "Mine <code>Välimus->Teema valikud</code> lehele."
|
2135 |
+
|
2136 |
+
#: ../includes/ot-functions-docs-page.php:675
|
2137 |
+
#: ../includes/ot-functions-docs-page.php:703
|
2138 |
+
msgid ""
|
2139 |
+
"Modify and save your theme options and the layout will be updated "
|
2140 |
+
"automatically."
|
2141 |
+
msgstr ""
|
2142 |
+
"Muuda ja salvesta oma teema valikuid ning paigutust uuendatakse automaatselt."
|
2143 |
+
|
2144 |
+
#: ../includes/ot-functions-docs-page.php:676
|
2145 |
+
#: ../includes/ot-functions-docs-page.php:704
|
2146 |
+
msgid ""
|
2147 |
+
"Saving theme options data will update the currently active layout, so before "
|
2148 |
+
"you start saving make sure you want to modify the current layout."
|
2149 |
+
msgstr ""
|
2150 |
+
"Teema valikute andmete salvestamine uuendab hetkel aktiivset paigutust, "
|
2151 |
+
"seega enne salvestamist veendu, et soovid muuta hetkel kasutuses olevat "
|
2152 |
+
"paigutust."
|
2153 |
+
|
2154 |
+
#: ../includes/ot-functions-docs-page.php:677
|
2155 |
+
msgid ""
|
2156 |
+
"If you want to edit a new layout, first create it then save your theme "
|
2157 |
+
"options."
|
2158 |
+
msgstr ""
|
2159 |
+
"Kui soovid muuta uut paigutust, tuleb see kõigepealt luua ja seejärel teema "
|
2160 |
+
"valikud salvestada."
|
2161 |
+
|
2162 |
+
#: ../includes/ot-functions-docs-page.php:680
|
2163 |
+
msgid "End-Users Mode"
|
2164 |
+
msgstr "Lõppkasutaja režiim"
|
2165 |
+
|
2166 |
+
#: ../includes/ot-functions-docs-page.php:685
|
2167 |
+
msgid ""
|
2168 |
+
"Enter a name for your layout in the text field and hit \"New Layout\", "
|
2169 |
+
"you've created your first layout."
|
2170 |
+
msgstr ""
|
2171 |
+
"Sisesta tekstivälja oma uue paigutuse nimi ja vajuta nuppu \"Uus paigutus\". "
|
2172 |
+
"Oled loonud oma esimese paigutuse."
|
2173 |
+
|
2174 |
+
#: ../includes/ot-functions-docs-page.php:692
|
2175 |
+
msgid ""
|
2176 |
+
"Choose a layout from the select list and click the \"Activate Layout\" "
|
2177 |
+
"button."
|
2178 |
+
msgstr "Vali rippmenüüst paigutus ja vajuta \"Aktiveeri paigutus\" nuppu."
|
2179 |
+
|
2180 |
+
#: ../includes/ot-functions-docs-page.php:697
|
2181 |
+
msgid "End-Users mode does not allow deleting layouts."
|
2182 |
+
msgstr "Lõppkasutaja režiim ei luba paigutusi kustutada."
|
2183 |
+
|
2184 |
+
#: ../includes/ot-functions-docs-page.php:702
|
2185 |
+
msgid "Go to the <code>Appearance->Theme Options</code> tab."
|
2186 |
+
msgstr "Mine <code>Välimus->Teema valikud</code> sakile."
|
2187 |
+
|
2188 |
+
#: ../includes/ot-functions-docs-page.php:733
|
2189 |
+
#: ../includes/ot-functions-docs-page.php:815
|
2190 |
+
msgid "How-to-guide"
|
2191 |
+
msgstr "Õpetus"
|
2192 |
+
|
2193 |
+
#: ../includes/ot-functions-docs-page.php:735
|
2194 |
+
msgid ""
|
2195 |
+
"There are a few simple steps you need to take in order to use OptionTree's "
|
2196 |
+
"built in Meta Box API. In the code below I'll show you a basic demo of how "
|
2197 |
+
"to create your very own custom meta box using any number of the option types "
|
2198 |
+
"you have at your disposal. If you would like to see some demo code, there is "
|
2199 |
+
"a directory named <code>theme-mode</code> inside the <code>assets</code> "
|
2200 |
+
"directory that contains a file named <code>demo-meta-boxes.php</code> you "
|
2201 |
+
"can reference."
|
2202 |
+
msgstr ""
|
2203 |
+
"OptionTreele sisse ehitatud Meta Box API kasutamiseks on vaja paari lihtsat "
|
2204 |
+
"toimingut. Allolevas koodis demonstreeritakse meta kasti loomist suvalise "
|
2205 |
+
"hulga saadaolevate valikutüüpidega. Koodinäiteid leiab ka failist <code>demo-"
|
2206 |
+
"meta-boxes.php</code>, mis asub kaustas <code>theme-mode</code>, mis "
|
2207 |
+
"omakorda asub kaustas <code>assets</code>."
|
2208 |
+
|
2209 |
+
#: ../includes/ot-functions-docs-page.php:737
|
2210 |
+
msgid ""
|
2211 |
+
"It's important to note that Meta Boxes do not support WYSIWYG editors at "
|
2212 |
+
"this time and if you set one of your options to Textarea it will "
|
2213 |
+
"automatically revert to a Textarea Simple until a valid solution is found. "
|
2214 |
+
"WordPress released this statement regarding the wp_editor() function:"
|
2215 |
+
msgstr ""
|
2216 |
+
"Tähtis märkus: meta kastid ei toeta hetkel WYSIWYG redaktoreid. Kui määrata "
|
2217 |
+
"mõne valiku tüübiks tekstiala, muudetakse see automaatselt lihtsustatud "
|
2218 |
+
"tekstialaks, kuni leitakse töötav lahendus. Wordpress väljastas järgneva "
|
2219 |
+
"teadaande wp_editor() funktsiooni kohta:"
|
2220 |
+
|
2221 |
+
#: ../includes/ot-functions-docs-page.php:739
|
2222 |
+
msgid ""
|
2223 |
+
"Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. "
|
2224 |
+
"What this means in practical terms, is that you cannot put it in meta-boxes "
|
2225 |
+
"that can be dragged and placed elsewhere on the page."
|
2226 |
+
msgstr ""
|
2227 |
+
"Korra loodud WYSIWYG toimetajat ei saa DOM-is ringi liigutada. Praktikas "
|
2228 |
+
"tähendab see, et teda ei saa panna meta-kastidesse, mida on võimalik "
|
2229 |
+
"leheküljel ringi liigutada."
|
2230 |
+
|
2231 |
+
#: ../includes/ot-functions-docs-page.php:741
|
2232 |
+
msgid "Create and include your custom meta boxes file."
|
2233 |
+
msgstr "Loo ja kaasa oma kohandatud meta kastide fail."
|
2234 |
+
|
2235 |
+
#: ../includes/ot-functions-docs-page.php:743
|
2236 |
+
msgid ""
|
2237 |
+
"Create a file and name it anything you want, maybe <code>meta-boxes.php</"
|
2238 |
+
"code>."
|
2239 |
+
msgstr ""
|
2240 |
+
"Loo fail ja anna talle meelepärane nimi, näiteks <code>meta-boxes.php</code>."
|
2241 |
+
|
2242 |
+
#: ../includes/ot-functions-docs-page.php:744
|
2243 |
+
msgid ""
|
2244 |
+
"As well, you'll probably want to create a directory named <code>includes</"
|
2245 |
+
"code> to put your <code>meta-boxes.php</code> into which will help keep you "
|
2246 |
+
"file structure nice and tidy."
|
2247 |
+
msgstr ""
|
2248 |
+
"Tõenäoliselt soovid luua kausta nimega <code>includes</code>, kuhu panna oma "
|
2249 |
+
"<code>meta-boxes.php</code> fail, hoidmaks oma failistruktuuri ilusa ja "
|
2250 |
+
"puhtana."
|
2251 |
+
|
2252 |
+
#: ../includes/ot-functions-docs-page.php:745
|
2253 |
+
#: ../includes/ot-functions-docs-page.php:845
|
2254 |
+
msgid "Add the following code to your <code>functions.php</code>."
|
2255 |
+
msgstr "Lisa järgnev kood oma <code>functions.php</code> faili."
|
2256 |
+
|
2257 |
+
#: ../includes/ot-functions-docs-page.php:755
|
2258 |
+
msgid ""
|
2259 |
+
"Add a variation of the following code to your <code>meta-boxes.php</code>. "
|
2260 |
+
"You'll obviously need to fill it in with all your custom array values. It's "
|
2261 |
+
"important to note here that we use the <code>admin_init</code> filter "
|
2262 |
+
"because if you were to call the <code>ot_register_meta_box</code> function "
|
2263 |
+
"before OptionTree was loaded the sky would fall on your head."
|
2264 |
+
msgstr ""
|
2265 |
+
"Lisa variatsioon järgnevast koodist oma <code>meta-boxes.php</code> faili. "
|
2266 |
+
"Loomulikult tuleb see täita enda kohandatud massiivi väärtustega. Oluline "
|
2267 |
+
"märkus: kasutame <code>admin_init</code> filtrit, sest kui kutsuda "
|
2268 |
+
"<code>ot_register_meta_box</code> funktsiooni enne OptionTree laadimist, "
|
2269 |
+
"kukuks taevas kaela."
|
2270 |
+
|
2271 |
+
#: ../includes/ot-functions-docs-page.php:817
|
2272 |
+
msgid ""
|
2273 |
+
"There are a few simple steps you need to take in order to use OptionTree as "
|
2274 |
+
"a theme included module. In the code below I'll show you a basic demo of how "
|
2275 |
+
"to include the entire plugin as a module, which will allow you to have the "
|
2276 |
+
"most up-to-date version of OptionTree without ever needing to hack the core "
|
2277 |
+
"of the plugin. If you would like to see some demo code, there is a directory "
|
2278 |
+
"named <code>theme-mode</code> inside the <code>assets</code> directory that "
|
2279 |
+
"contains a file named <code>demo-theme-options.php</code> you can reference."
|
2280 |
+
msgstr ""
|
2281 |
+
"Paari lihtsa sammuga saab Optiontreed kasutada teemasse kaasatud moodulina. "
|
2282 |
+
"Allolevas koodis näidatakse lihtsat demonstratsiooni, kuidas kaasata terve "
|
2283 |
+
"moodul moodulina. Sellisel moel on sul kõige uuem versioon OptionTreest, "
|
2284 |
+
"ilma et peaks mooduli tuuma häkkima. Näidiskoodi leiab failist <code>demo-"
|
2285 |
+
"theme-options.php</code>, mis asub kaustas <code>theme-mode</code>, mis "
|
2286 |
+
"omakorda asub kaustas <code>assets</code>."
|
2287 |
+
|
2288 |
+
#: ../includes/ot-functions-docs-page.php:819
|
2289 |
+
msgid "Step 1: Include the plugin & turn on theme mode."
|
2290 |
+
msgstr "Samm 1: kaasa moodul ja lülita sisse teemarežiim."
|
2291 |
+
|
2292 |
+
#: ../includes/ot-functions-docs-page.php:821
|
2293 |
+
#, php-format
|
2294 |
+
msgid "Download the latest version of %s and unarchive the %s directory."
|
2295 |
+
msgstr "Lae alla viimane %s versioon ja paki ta lahti %s kausta."
|
2296 |
+
|
2297 |
+
#: ../includes/ot-functions-docs-page.php:822
|
2298 |
+
#, php-format
|
2299 |
+
msgid ""
|
2300 |
+
"Put the %s directory in the root of your theme. For example, the server path "
|
2301 |
+
"would be %s."
|
2302 |
+
msgstr "Pane %s kaust oma teema juurkausta. Serveri rada oleks näiteks %s."
|
2303 |
+
|
2304 |
+
#: ../includes/ot-functions-docs-page.php:823
|
2305 |
+
#, php-format
|
2306 |
+
msgid "Add the following code to the beginning of your %s."
|
2307 |
+
msgstr "Lisa järgnev kood oma %s algusesse."
|
2308 |
+
|
2309 |
+
#: ../includes/ot-functions-docs-page.php:837
|
2310 |
+
#, php-format
|
2311 |
+
msgid ""
|
2312 |
+
"For a list of all the OptionTree UI display filters refer to the %s file "
|
2313 |
+
"found in the %s directory of this plugin. This file is the starting point "
|
2314 |
+
"for developing themes with Theme Mode."
|
2315 |
+
msgstr ""
|
2316 |
+
"Täieliku OptionTree UI kuvamise filtrite nimekirja leiad selle plugina %s "
|
2317 |
+
"failist %s kaustast. See fail on teemarežiimis teemade arenduse "
|
2318 |
+
"alguspunktiks."
|
2319 |
+
|
2320 |
+
#: ../includes/ot-functions-docs-page.php:839
|
2321 |
+
msgid ""
|
2322 |
+
"You now have OptionTree built into your theme and anytime an update is "
|
2323 |
+
"available replace the old version with the new one."
|
2324 |
+
msgstr ""
|
2325 |
+
"Sul on nüüd OptionTree teemasse sisse ehitatud. Iga kord, kui saadaval on "
|
2326 |
+
"uus versioon, vaheta oma vana versioon uue vastu välja."
|
2327 |
+
|
2328 |
+
#: ../includes/ot-functions-docs-page.php:841
|
2329 |
+
msgid "Step 2: Create Theme Options without using the UI Builder."
|
2330 |
+
msgstr "Samm 2: loo teema valikud ilma UI ehitajata."
|
2331 |
+
|
2332 |
+
#: ../includes/ot-functions-docs-page.php:843
|
2333 |
+
msgid ""
|
2334 |
+
"Create a file and name it anything you want, maybe <code>theme-options.php</"
|
2335 |
+
"code>, or use the built in file export to create it for you. Remember, you "
|
2336 |
+
"should always check the file for errors before including it in your theme."
|
2337 |
+
msgstr ""
|
2338 |
+
"Loo fail ja anna talle suvaline nimi, näiteks <code>theme-options.php</"
|
2339 |
+
"code>, või kasuta selle loomiseks sisse ehitatud faili eksporti. Enne teemas "
|
2340 |
+
"kasutamist tuleks failile kindlasti vigade kontroll teha."
|
2341 |
+
|
2342 |
+
#: ../includes/ot-functions-docs-page.php:844
|
2343 |
+
msgid ""
|
2344 |
+
"As well, you'll probably want to create a directory named <code>includes</"
|
2345 |
+
"code> to put your <code>theme-options.php</code> into which will help keep "
|
2346 |
+
"you file structure nice and tidy."
|
2347 |
+
msgstr ""
|
2348 |
+
"Tõenäoliselt soovid luua ka kausta <code>includes</code>, kuhu oma "
|
2349 |
+
"<code>theme-options.php</code> fail panna. See hoiab failistruktuuri ilusa "
|
2350 |
+
"ja puhtana."
|
2351 |
+
|
2352 |
+
#: ../includes/ot-functions-docs-page.php:855
|
2353 |
+
msgid ""
|
2354 |
+
"Add a variation of the following code to your <code>theme-options.php</"
|
2355 |
+
"code>. You'll obviously need to fill it in with all your custom array values "
|
2356 |
+
"for contextual help (optional), sections (required), and settings (required)."
|
2357 |
+
msgstr ""
|
2358 |
+
"Lisa oma <code>theme-options.php</code> faili mingi variatsioon järgnevast "
|
2359 |
+
"koodist. Loomulikult tuleb see täita enda massiiviväärtustega "
|
2360 |
+
"kontekstipõhise abi ( valikuline ), sektsioonide ( nõutud ) ja sätete "
|
2361 |
+
"( nõutud ) jaoks."
|
2362 |
+
|
2363 |
+
#: ../includes/ot-functions-docs-page.php:858
|
2364 |
+
msgid ""
|
2365 |
+
"The code below is a boilerplate to get your started. For a full list of the "
|
2366 |
+
"available option types click the \"Option Types\" tab above. Also a quick "
|
2367 |
+
"note, you don't need to put OptionTree in theme mode to manually create "
|
2368 |
+
"options but you will want to hide the docs and settings as each time you "
|
2369 |
+
"load the admin area the settings be written over with the code below if "
|
2370 |
+
"they've changed in any way. However, this ensures your settings do not get "
|
2371 |
+
"tampered with by the end-user."
|
2372 |
+
msgstr ""
|
2373 |
+
"Allolev kood on stereotüüp, millega saad alustada. Saadaolevate "
|
2374 |
+
"valikutüüpide täieliku nimekirja saad ülalolevast \"Valikutüübid\" sakist. "
|
2375 |
+
"Kiire vahemärkus: käsitsi valikute loomiseks ei pea OptionTree olema "
|
2376 |
+
"teemarežiimis, kuid sel juhul tuleks peita ära dokumentatsioon ja sätted, "
|
2377 |
+
"sest iga kord kui haldusliides laaditakse kirjutatakse sätted üle alloleva "
|
2378 |
+
"koodiga. Samas see kindlustab, et lõppkasutaja ei saa sätteid näppida."
|
2379 |
+
|
2380 |
+
#: ../includes/ot-functions-option-types.php:46
|
2381 |
+
msgid "Sorry, this function does not exist"
|
2382 |
+
msgstr "Kahjuks sellist funktsiooni pole."
|
2383 |
+
|
2384 |
+
#: ../includes/ot-functions-option-types.php:134
|
2385 |
+
msgid "background-repeat"
|
2386 |
+
msgstr "background-repeat"
|
2387 |
+
|
2388 |
+
#: ../includes/ot-functions-option-types.php:152
|
2389 |
+
msgid "background-attachment"
|
2390 |
+
msgstr "background-attachment"
|
2391 |
+
|
2392 |
+
#: ../includes/ot-functions-option-types.php:171
|
2393 |
+
msgid "background-position"
|
2394 |
+
msgstr "background-position"
|
2395 |
+
|
2396 |
+
#: ../includes/ot-functions-option-types.php:224
|
2397 |
+
msgid "background-size"
|
2398 |
+
msgstr "background-size"
|
2399 |
+
|
2400 |
+
#: ../includes/ot-functions-option-types.php:238
|
2401 |
+
msgid "background-image"
|
2402 |
+
msgstr "background-image"
|
2403 |
+
|
2404 |
+
#: ../includes/ot-functions-option-types.php:241
|
2405 |
+
#: ../includes/ot-functions-option-types.php:3227
|
2406 |
+
msgid "Add Media"
|
2407 |
+
msgstr "Lisa meediat"
|
2408 |
+
|
2409 |
+
#: ../includes/ot-functions-option-types.php:316
|
2410 |
+
#: ../includes/ot-functions-option-types.php:1094
|
2411 |
+
msgid "width"
|
2412 |
+
msgstr "width"
|
2413 |
+
|
2414 |
+
#: ../includes/ot-functions-option-types.php:327
|
2415 |
+
#: ../includes/ot-functions-option-types.php:1114
|
2416 |
+
#: ../includes/ot-functions-option-types.php:1586
|
2417 |
+
#: ../includes/ot-functions-option-types.php:2531
|
2418 |
+
msgid "unit"
|
2419 |
+
msgstr "ühik"
|
2420 |
+
|
2421 |
+
#: ../includes/ot-functions-option-types.php:346
|
2422 |
+
msgid "style"
|
2423 |
+
msgstr "style"
|
2424 |
+
|
2425 |
+
#: ../includes/ot-functions-option-types.php:439
|
2426 |
+
msgid "offset-x"
|
2427 |
+
msgstr "offset-x"
|
2428 |
+
|
2429 |
+
#: ../includes/ot-functions-option-types.php:448
|
2430 |
+
msgid "offset-y"
|
2431 |
+
msgstr "offset-y"
|
2432 |
+
|
2433 |
+
#: ../includes/ot-functions-option-types.php:457
|
2434 |
+
msgid "blur-radius"
|
2435 |
+
msgstr "blur-radius"
|
2436 |
+
|
2437 |
+
#: ../includes/ot-functions-option-types.php:466
|
2438 |
+
msgid "spread-radius"
|
2439 |
+
msgstr "spread-radius"
|
2440 |
+
|
2441 |
+
#: ../includes/ot-functions-option-types.php:538
|
2442 |
+
#: ../includes/ot-functions-option-types.php:592
|
2443 |
+
msgid "No Categories Found"
|
2444 |
+
msgstr "Kategooriaid ei leitud"
|
2445 |
+
|
2446 |
+
#: ../includes/ot-functions-option-types.php:587
|
2447 |
+
#: ../includes/ot-functions-option-types.php:919
|
2448 |
+
#: ../includes/ot-functions-option-types.php:1855
|
2449 |
+
#: ../includes/ot-functions-option-types.php:1966
|
2450 |
+
#: ../includes/ot-functions-option-types.php:2671
|
2451 |
+
#: ../includes/ot-functions-option-types.php:2786
|
2452 |
+
msgid "Choose One"
|
2453 |
+
msgstr "Valik üks"
|
2454 |
+
|
2455 |
+
#: ../includes/ot-functions-option-types.php:867
|
2456 |
+
#: ../includes/ot-functions-option-types.php:925
|
2457 |
+
#: ../includes/ot-functions-option-types.php:1917
|
2458 |
+
#: ../includes/ot-functions-option-types.php:1972
|
2459 |
+
msgid "No Posts Found"
|
2460 |
+
msgstr "Postitusi ei leitud"
|
2461 |
+
|
2462 |
+
#: ../includes/ot-functions-option-types.php:1103
|
2463 |
+
msgid "height"
|
2464 |
+
msgstr "height"
|
2465 |
+
|
2466 |
+
#: ../includes/ot-functions-option-types.php:1281
|
2467 |
+
#: ../includes/ot-functions-option-types.php:1324
|
2468 |
+
msgid "Remove Google Font"
|
2469 |
+
msgstr "Eemalda Google Font"
|
2470 |
+
|
2471 |
+
#: ../includes/ot-functions-option-types.php:1283
|
2472 |
+
#: ../includes/ot-functions-option-types.php:1326
|
2473 |
+
msgid "-- Choose One --"
|
2474 |
+
msgstr "-- Vali üks --"
|
2475 |
+
|
2476 |
+
#: ../includes/ot-functions-option-types.php:1347
|
2477 |
+
msgid "Add Google Font"
|
2478 |
+
msgstr "Lisa Google Font"
|
2479 |
+
|
2480 |
+
#: ../includes/ot-functions-option-types.php:1433
|
2481 |
+
msgctxt "color picker"
|
2482 |
+
msgid "Standard"
|
2483 |
+
msgstr "Standard"
|
2484 |
+
|
2485 |
+
#: ../includes/ot-functions-option-types.php:1434
|
2486 |
+
msgctxt "color picker"
|
2487 |
+
msgid "Hover"
|
2488 |
+
msgstr "Hõljudes"
|
2489 |
+
|
2490 |
+
#: ../includes/ot-functions-option-types.php:1435
|
2491 |
+
msgctxt "color picker"
|
2492 |
+
msgid "Active"
|
2493 |
+
msgstr "Aktiivne"
|
2494 |
+
|
2495 |
+
#: ../includes/ot-functions-option-types.php:1436
|
2496 |
+
msgctxt "color picker"
|
2497 |
+
msgid "Visited"
|
2498 |
+
msgstr "Külastatud"
|
2499 |
+
|
2500 |
+
#: ../includes/ot-functions-option-types.php:1437
|
2501 |
+
msgctxt "color picker"
|
2502 |
+
msgid "Focus"
|
2503 |
+
msgstr "Fookus"
|
2504 |
+
|
2505 |
+
#: ../includes/ot-functions-option-types.php:1534
|
2506 |
+
#: ../includes/ot-functions-option-types.php:2271
|
2507 |
+
#: ../includes/ot-functions-option-types.php:2436
|
2508 |
+
msgid "Add New"
|
2509 |
+
msgstr "Lisa uus"
|
2510 |
+
|
2511 |
+
#: ../includes/ot-functions-option-types.php:1537
|
2512 |
+
#: ../includes/ot-functions-option-types.php:2274
|
2513 |
+
#: ../includes/ot-functions-option-types.php:2439
|
2514 |
+
msgid "You can re-order with drag & drop, the order will update after saving."
|
2515 |
+
msgstr ""
|
2516 |
+
"Lohistades saab elemente ümber paigutada. Järjekord uueneb peale "
|
2517 |
+
"salvestamist."
|
2518 |
+
|
2519 |
+
#: ../includes/ot-functions-option-types.php:1706
|
2520 |
+
msgid "On"
|
2521 |
+
msgstr "Sees"
|
2522 |
+
|
2523 |
+
#: ../includes/ot-functions-option-types.php:1728
|
2524 |
+
msgid "Off"
|
2525 |
+
msgstr "Väljas"
|
2526 |
+
|
2527 |
+
#: ../includes/ot-functions-option-types.php:1806
|
2528 |
+
#: ../includes/ot-functions-option-types.php:1861
|
2529 |
+
msgid "No Pages Found"
|
2530 |
+
msgstr "Lehekülgi ei leitud"
|
2531 |
+
|
2532 |
+
#: ../includes/ot-functions-option-types.php:2194
|
2533 |
+
msgid "Choose Sidebar"
|
2534 |
+
msgstr "Vali küljendusmenüü"
|
2535 |
+
|
2536 |
+
#: ../includes/ot-functions-option-types.php:2199
|
2537 |
+
msgid "No Sidebars"
|
2538 |
+
msgstr "Küljendusmenüüd puuduvad"
|
2539 |
+
|
2540 |
+
#: ../includes/ot-functions-option-types.php:2307
|
2541 |
+
msgid "Facebook"
|
2542 |
+
msgstr "Facebook"
|
2543 |
+
|
2544 |
+
#: ../includes/ot-functions-option-types.php:2312
|
2545 |
+
msgid "Twitter"
|
2546 |
+
msgstr "Twitter"
|
2547 |
+
|
2548 |
+
#: ../includes/ot-functions-option-types.php:2317
|
2549 |
+
msgid "Google+"
|
2550 |
+
msgstr "Google+"
|
2551 |
+
|
2552 |
+
#: ../includes/ot-functions-option-types.php:2322
|
2553 |
+
msgid "LinkedIn"
|
2554 |
+
msgstr "LinkedIn"
|
2555 |
+
|
2556 |
+
#: ../includes/ot-functions-option-types.php:2327
|
2557 |
+
msgid "Pinterest"
|
2558 |
+
msgstr "Pinterest"
|
2559 |
+
|
2560 |
+
#: ../includes/ot-functions-option-types.php:2332
|
2561 |
+
msgid "Youtube"
|
2562 |
+
msgstr "Youtube"
|
2563 |
+
|
2564 |
+
#: ../includes/ot-functions-option-types.php:2337
|
2565 |
+
msgid "Dribbble"
|
2566 |
+
msgstr "Dribbble"
|
2567 |
+
|
2568 |
+
#: ../includes/ot-functions-option-types.php:2342
|
2569 |
+
msgid "Github"
|
2570 |
+
msgstr "Github"
|
2571 |
+
|
2572 |
+
#: ../includes/ot-functions-option-types.php:2347
|
2573 |
+
msgid "Forrst"
|
2574 |
+
msgstr "Forrst"
|
2575 |
+
|
2576 |
+
#: ../includes/ot-functions-option-types.php:2352
|
2577 |
+
msgid "Digg"
|
2578 |
+
msgstr "Digg"
|
2579 |
+
|
2580 |
+
#: ../includes/ot-functions-option-types.php:2357
|
2581 |
+
msgid "Delicious"
|
2582 |
+
msgstr "Delicious"
|
2583 |
+
|
2584 |
+
#: ../includes/ot-functions-option-types.php:2362
|
2585 |
+
msgid "Tumblr"
|
2586 |
+
msgstr "Tumblr"
|
2587 |
+
|
2588 |
+
#: ../includes/ot-functions-option-types.php:2367
|
2589 |
+
msgid "Skype"
|
2590 |
+
msgstr "Skype"
|
2591 |
+
|
2592 |
+
#: ../includes/ot-functions-option-types.php:2372
|
2593 |
+
msgid "SoundCloud"
|
2594 |
+
msgstr "SoundCloud"
|
2595 |
+
|
2596 |
+
#: ../includes/ot-functions-option-types.php:2377
|
2597 |
+
msgid "Vimeo"
|
2598 |
+
msgstr "Vimeo"
|
2599 |
+
|
2600 |
+
#: ../includes/ot-functions-option-types.php:2382
|
2601 |
+
msgid "Flickr"
|
2602 |
+
msgstr "Flickr"
|
2603 |
+
|
2604 |
+
#: ../includes/ot-functions-option-types.php:2387
|
2605 |
+
msgid "VK.com"
|
2606 |
+
msgstr "VK.com"
|
2607 |
+
|
2608 |
+
#: ../includes/ot-functions-option-types.php:2493
|
2609 |
+
msgid "top"
|
2610 |
+
msgstr "top"
|
2611 |
+
|
2612 |
+
#: ../includes/ot-functions-option-types.php:2502
|
2613 |
+
msgid "right"
|
2614 |
+
msgstr "right"
|
2615 |
+
|
2616 |
+
#: ../includes/ot-functions-option-types.php:2511
|
2617 |
+
msgid "bottom"
|
2618 |
+
msgstr "bottom"
|
2619 |
+
|
2620 |
+
#: ../includes/ot-functions-option-types.php:2520
|
2621 |
+
msgid "left"
|
2622 |
+
msgstr "left"
|
2623 |
+
|
2624 |
+
#: ../includes/ot-functions-option-types.php:2622
|
2625 |
+
#: ../includes/ot-functions-option-types.php:2676
|
2626 |
+
msgid "No Tags Found"
|
2627 |
+
msgstr "Märksõnu ei leitud"
|
2628 |
+
|
2629 |
+
#: ../includes/ot-functions-option-types.php:2734
|
2630 |
+
#: ../includes/ot-functions-option-types.php:2791
|
2631 |
+
msgid "No Taxonomies Found"
|
2632 |
+
msgstr "Taksonoomiaid ei leitud"
|
2633 |
+
|
2634 |
+
#: ../includes/ot-functions-settings-page.php:35
|
2635 |
+
msgid "Warning!"
|
2636 |
+
msgstr "Hoiatus!"
|
2637 |
+
|
2638 |
+
#: ../includes/ot-functions-settings-page.php:36
|
2639 |
+
#, php-format
|
2640 |
+
msgid ""
|
2641 |
+
"Go to the %s page if you want to save data, this page is for adding settings."
|
2642 |
+
msgstr "Info salvestamiseks on %s leht, see leht siin on sätete lisamiseks."
|
2643 |
+
|
2644 |
+
#: ../includes/ot-functions-settings-page.php:37
|
2645 |
+
#, php-format
|
2646 |
+
msgid ""
|
2647 |
+
"If you're unsure or not completely positive that you should be editing these "
|
2648 |
+
"settings, you should read the %s first."
|
2649 |
+
msgstr "Kui kahtled, kas peaksid neid sätteid muutma, loe kõigepealt %s."
|
2650 |
+
|
2651 |
+
#: ../includes/ot-functions-settings-page.php:38
|
2652 |
+
msgid ""
|
2653 |
+
"Things could break or be improperly displayed to the end-user if you do one "
|
2654 |
+
"of the following:"
|
2655 |
+
msgstr ""
|
2656 |
+
"Kui teed ühte järgnevatest, võivad asjad katki minna või olla lõpp-"
|
2657 |
+
"kasutajale valesti kuvatud:"
|
2658 |
+
|
2659 |
+
#: ../includes/ot-functions-settings-page.php:39
|
2660 |
+
msgid ""
|
2661 |
+
"Give two sections the same ID, give two settings the same ID, give two "
|
2662 |
+
"contextual help content areas the same ID, don't create any settings, or "
|
2663 |
+
"have a section at the end of the settings list."
|
2664 |
+
msgstr ""
|
2665 |
+
"annad kahele sektsioonile sama ID, annad kahele sättele sama ID, annad "
|
2666 |
+
"kahele kontekstipõhise abi alale sama ID, ei loo ühtegi sätet või jätad "
|
2667 |
+
"sektsiooni sätete nimekirja lõppu."
|
2668 |
+
|
2669 |
+
#: ../includes/ot-functions-settings-page.php:40
|
2670 |
+
msgid ""
|
2671 |
+
"You can create as many settings as your project requires and use them how "
|
2672 |
+
"you see fit. When you add a setting here, it will be available on the Theme "
|
2673 |
+
"Options page for use in your theme. To separate your settings into sections, "
|
2674 |
+
"click the \"Add Section\" button, fill in the input fields, and a new "
|
2675 |
+
"navigation menu item will be created."
|
2676 |
+
msgstr ""
|
2677 |
+
"Sätteid saab luua nii palju kui vaja ning kasutada oma parema äranägemise "
|
2678 |
+
"järgi. Siia sätte lisamisel tekib see teema valikute lehele oma teemas "
|
2679 |
+
"kasutamiseks. Sätete sektsioonidesse eraldamiseks vajuta \"Lisa sektsioon\" "
|
2680 |
+
"nupule, täida sisendväljad ning uus navigatsioonimenüü element on loodud."
|
2681 |
+
|
2682 |
+
#: ../includes/ot-functions-settings-page.php:41
|
2683 |
+
msgid ""
|
2684 |
+
"All of the settings can be sorted and rearranged to your liking with Drag & "
|
2685 |
+
"Drop. Don't worry about the order in which you create your settings, you can "
|
2686 |
+
"always reorder them."
|
2687 |
+
msgstr ""
|
2688 |
+
"Kõiki sätteid saab sorteerida ja ümber paigutada lohistamise abil. Sätete "
|
2689 |
+
"loomise järjekorra üle ei pea muretsema, sest neid saab alati ümber "
|
2690 |
+
"järjestada."
|
2691 |
+
|
2692 |
+
#: ../includes/ot-functions-settings-page.php:92
|
2693 |
+
msgid "Add Section"
|
2694 |
+
msgstr "Lisa sektsioon"
|
2695 |
+
|
2696 |
+
#: ../includes/ot-functions-settings-page.php:99
|
2697 |
+
msgid "Contextual Help"
|
2698 |
+
msgstr "Konteksti põhine abi"
|
2699 |
+
|
2700 |
+
#: ../includes/ot-functions-settings-page.php:103
|
2701 |
+
msgid "Contextual Help Sidebar"
|
2702 |
+
msgstr "Konteksti põhise abi küljeriba"
|
2703 |
+
|
2704 |
+
#: ../includes/ot-functions-settings-page.php:103
|
2705 |
+
msgid ""
|
2706 |
+
"If you decide to add contextual help to the Theme Option page, enter the "
|
2707 |
+
"optional \"Sidebar\" HTML here. This would be an extremely useful place to "
|
2708 |
+
"add links to your themes documentation or support forum. Only after you've "
|
2709 |
+
"added some content below will this display to the user."
|
2710 |
+
msgstr ""
|
2711 |
+
"Kui soovida lisada kontekstipõhist abiteksti, sisesta \"Küljeriba\" HTML "
|
2712 |
+
"siia. See oleks väga hea koht, kuhu lisada linke oma teema "
|
2713 |
+
"dokumentatsioonile või kasutajatoe foorumile. Seda näidatakse kasutajale "
|
2714 |
+
"vaid juhul, kui allpool on mingi sisu lisatud."
|
2715 |
+
|
2716 |
+
#: ../includes/ot-functions-settings-page.php:132
|
2717 |
+
msgid "Add Contextual Help Content"
|
2718 |
+
msgstr "Lisa konteksti põhine abitekst"
|
2719 |
+
|
2720 |
+
#: ../includes/ot-functions-settings-page.php:168
|
2721 |
+
msgid ""
|
2722 |
+
"This import method has been deprecated. That means it has been replaced by a "
|
2723 |
+
"new method and is no longer supported, and may be removed from future "
|
2724 |
+
"versions. All themes that use this import method should be converted to use "
|
2725 |
+
"its replacement below."
|
2726 |
+
msgstr ""
|
2727 |
+
"Impordi meetodit taunitakse. See tähendab, et teda asendab uuem meetod ja "
|
2728 |
+
"enam teda ei toetata. Ta võidakse tulevastes versioonides eemaldada. Kõik "
|
2729 |
+
"teemad, mis seda impordi meetodit kasutavad, tuleks ümber muuta allolevat "
|
2730 |
+
"asendust kasutama."
|
2731 |
+
|
2732 |
+
#: ../includes/ot-functions-settings-page.php:170
|
2733 |
+
#, php-format
|
2734 |
+
msgid ""
|
2735 |
+
"If you were given a Theme Options XML file with a premium or free theme, "
|
2736 |
+
"locate it on your hard drive and upload that file by clicking the upload "
|
2737 |
+
"button. A popup window will appear, upload the XML file and click \"%s\". "
|
2738 |
+
"The file URL should be in the upload input, if it is click \"Import XML\"."
|
2739 |
+
msgstr ""
|
2740 |
+
"Kui sulle anti teemaga kaasa valikute XML fail, leia see oma kõvakettalt "
|
2741 |
+
"ning vajuta üleslaadimise nuppu. Avanevas aknas lae üles XML fail ja vajuta "
|
2742 |
+
"\"%s\". Faili URL peaks olema üleslaadimise sisendis. Kui see seal on, "
|
2743 |
+
"vajuta nuppu \"Impordi XML\"."
|
2744 |
+
|
2745 |
+
#: ../includes/ot-functions-settings-page.php:173
|
2746 |
+
msgid "Import XML"
|
2747 |
+
msgstr "Impordi XML"
|
2748 |
+
|
2749 |
+
#: ../includes/ot-functions-settings-page.php:189
|
2750 |
+
msgid "Add XML"
|
2751 |
+
msgstr "Lisa XML"
|
2752 |
+
|
2753 |
+
#: ../includes/ot-functions-settings-page.php:226
|
2754 |
+
msgid ""
|
2755 |
+
"To import your Settings copy and paste what appears to be a random string of "
|
2756 |
+
"alpha numeric characters into this textarea and press the \"Import Settings"
|
2757 |
+
"\" button."
|
2758 |
+
msgstr ""
|
2759 |
+
"Sätete importimiseks kopeeri ja kleebi näiliselt juhuslik string tähtedest "
|
2760 |
+
"ja numbritest siia tekstialasse ning vajuta \"Impordi sätted\" nuppu."
|
2761 |
+
|
2762 |
+
#: ../includes/ot-functions-settings-page.php:229
|
2763 |
+
msgid "Import Settings"
|
2764 |
+
msgstr "Impordi seaded"
|
2765 |
+
|
2766 |
+
#: ../includes/ot-functions-settings-page.php:271
|
2767 |
+
msgid ""
|
2768 |
+
"Only after you've imported the Settings should you try and update your Theme "
|
2769 |
+
"Options."
|
2770 |
+
msgstr "Enne teema valikute uuendamist impordi sätted."
|
2771 |
+
|
2772 |
+
#: ../includes/ot-functions-settings-page.php:273
|
2773 |
+
msgid ""
|
2774 |
+
"To import your Theme Options copy and paste what appears to be a random "
|
2775 |
+
"string of alpha numeric characters into this textarea and press the \"Import "
|
2776 |
+
"Theme Options\" button."
|
2777 |
+
msgstr ""
|
2778 |
+
"Teema valikute importimiseks kopeeri ja kleebi näiliselt juhuslik string "
|
2779 |
+
"tähtedest ja numbritest siia tekstialasse ning vajuta \"Impordi teema valikud"
|
2780 |
+
"\" nuppu."
|
2781 |
+
|
2782 |
+
#: ../includes/ot-functions-settings-page.php:276
|
2783 |
+
msgid "Import Theme Options"
|
2784 |
+
msgstr "Impordi teema valikud"
|
2785 |
+
|
2786 |
+
#: ../includes/ot-functions-settings-page.php:318
|
2787 |
+
msgid ""
|
2788 |
+
"Only after you've imported the Settings should you try and update your "
|
2789 |
+
"Layouts."
|
2790 |
+
msgstr "Enne paigutuste uuendamist impordi sätted."
|
2791 |
+
|
2792 |
+
#: ../includes/ot-functions-settings-page.php:320
|
2793 |
+
msgid ""
|
2794 |
+
"To import your Layouts copy and paste what appears to be a random string of "
|
2795 |
+
"alpha numeric characters into this textarea and press the \"Import Layouts\" "
|
2796 |
+
"button. Keep in mind that when you import your layouts, the active layout's "
|
2797 |
+
"saved data will write over the current data set for your Theme Options."
|
2798 |
+
msgstr ""
|
2799 |
+
"Paigutuste importimiseks kopeeri ja kleebi näiliselt juhuslik string "
|
2800 |
+
"tähtedest ja numbritest siia tekstialasse ning vajuta \"Impordi paigutus\" "
|
2801 |
+
"nuppu. Arvesta, et aktiivse paigutuse salvestatud andmed kirjutavad "
|
2802 |
+
"hetkeandmed üle."
|
2803 |
+
|
2804 |
+
#: ../includes/ot-functions-settings-page.php:323
|
2805 |
+
msgid "Import Layouts"
|
2806 |
+
msgstr "Impordi paigutused"
|
2807 |
+
|
2808 |
+
#: ../includes/ot-functions-settings-page.php:366
|
2809 |
+
#, php-format
|
2810 |
+
msgid ""
|
2811 |
+
"Export your Settings into a fully functional %s file. If you want to add "
|
2812 |
+
"your own custom %s text domain to the file, enter it into the text field "
|
2813 |
+
"before exporting. For more information on how to use this file read the "
|
2814 |
+
"documentation on %s. Remember, you should always check the file for errors "
|
2815 |
+
"before including it in your theme."
|
2816 |
+
msgstr ""
|
2817 |
+
"Ekspordi oma sätted täisfunktsionaalsesse %s faili. Kui soovid failile "
|
2818 |
+
"lisada enda kohandatud %s tekstidomeeni, sisesta see tekstivälja enne "
|
2819 |
+
"eksportimist. Lisainformatsiooni selle faili kasutamise kohta leiad "
|
2820 |
+
"dokumentatsioonis %s. Pea meeles, et failile tuleks teha vigade kontroll "
|
2821 |
+
"enne teemasse kaasamist."
|
2822 |
+
|
2823 |
+
#: ../includes/ot-functions-settings-page.php:375
|
2824 |
+
msgid "Export Settings File"
|
2825 |
+
msgstr "Ekspordi seadete fail"
|
2826 |
+
|
2827 |
+
#: ../includes/ot-functions-settings-page.php:405
|
2828 |
+
msgid ""
|
2829 |
+
"Export your Settings by highlighting this text and doing a copy/paste into a "
|
2830 |
+
"blank .txt file. Then save the file for importing into another install of "
|
2831 |
+
"WordPress later. Alternatively, you could just paste it into the "
|
2832 |
+
"<code>OptionTree->Settings->Import</code> <strong>Settings</strong> textarea "
|
2833 |
+
"on another web site."
|
2834 |
+
msgstr ""
|
2835 |
+
"Ekspordi oma sätted, markeerides see tekst ja kopeerides ta tühja .txt "
|
2836 |
+
"faili. Seejärel salvesta fail hilisemaks importimiseks teise WordPressi "
|
2837 |
+
"installatsiooni. Alternatiivina võib selle kleepida otse teise veebilehe "
|
2838 |
+
"<code>OptionTree->Sätted->Import</code> <strong>Sätted</strong> tekstialasse."
|
2839 |
+
|
2840 |
+
#: ../includes/ot-functions-settings-page.php:441
|
2841 |
+
msgid ""
|
2842 |
+
"Export your Theme Options data by highlighting this text and doing a copy/"
|
2843 |
+
"paste into a blank .txt file. Then save the file for importing into another "
|
2844 |
+
"install of WordPress later. Alternatively, you could just paste it into the "
|
2845 |
+
"<code>OptionTree->Settings->Import</code> <strong>Theme Options</strong> "
|
2846 |
+
"textarea on another web site."
|
2847 |
+
msgstr ""
|
2848 |
+
"Ekspordi oma teema valikud, markeerides see tekst ja kopeerides ta tühja ."
|
2849 |
+
"txt faili. Seejärel salvesta fail hilisemaks importimiseks teise WordPressi "
|
2850 |
+
"installatsiooni. Alternatiivina võib selle kleepida otse teise veebilehe "
|
2851 |
+
"<code>OptionTree->Sätted->Import</code> <strong>Teema valikud</strong> "
|
2852 |
+
"tekstialasse."
|
2853 |
+
|
2854 |
+
#: ../includes/ot-functions-settings-page.php:477
|
2855 |
+
msgid ""
|
2856 |
+
"Export your Layouts by highlighting this text and doing a copy/paste into a "
|
2857 |
+
"blank .txt file. Then save the file for importing into another install of "
|
2858 |
+
"WordPress later. Alternatively, you could just paste it into the "
|
2859 |
+
"<code>OptionTree->Settings->Import</code> <strong>Layouts</strong> textarea "
|
2860 |
+
"on another web site."
|
2861 |
+
msgstr ""
|
2862 |
+
"Ekspordi oma paigutused, markeerides see tekst ja kopeerides ta tühja .txt "
|
2863 |
+
"faili. Seejärel salvesta fail hilisemaks importimiseks teise WordPressi "
|
2864 |
+
"installatsiooni. Alternatiivina võib selle kleepida otse teise veebilehe "
|
2865 |
+
"<code>OptionTree->Sätted->Import</code> <strong>Paigutused</strong> "
|
2866 |
+
"tekstialasse."
|
2867 |
+
|
2868 |
+
#: ../includes/ot-functions-settings-page.php:519
|
2869 |
+
msgid ""
|
2870 |
+
"To add a new layout enter a unique lower case alphanumeric string (dashes "
|
2871 |
+
"allowed) in the text field and click \"Save Layouts\"."
|
2872 |
+
msgstr ""
|
2873 |
+
"Uue paigutuse lisamiseks sisestage tekstivälja unikaalne väiketähtedega "
|
2874 |
+
"alfanumbriline string ( sidekriipsud lubatud ) ning vajutage \"Salvesta "
|
2875 |
+
"paigutused\" nupul."
|
2876 |
+
|
2877 |
+
#: ../includes/ot-functions-settings-page.php:520
|
2878 |
+
msgid ""
|
2879 |
+
"As well, you can activate, remove, and drag & drop the order; all situations "
|
2880 |
+
"require you to click \"Save Layouts\" for the changes to be applied."
|
2881 |
+
msgstr ""
|
2882 |
+
"Saate ka aktiveerida, eemaldada ning lohistades järjekorda muuta. Muudatused "
|
2883 |
+
"ei mõju enne, kui vajutate \"Salvesta paigutused\" nuppu."
|
2884 |
+
|
2885 |
+
#: ../includes/ot-functions-settings-page.php:521
|
2886 |
+
msgid ""
|
2887 |
+
"When you create a new layout it will become active and any changes made to "
|
2888 |
+
"the Theme Options will be applied to it. If you switch back to a different "
|
2889 |
+
"layout immediately after creating a new layout that new layout will have a "
|
2890 |
+
"snapshot of the current Theme Options data attached to it."
|
2891 |
+
msgstr ""
|
2892 |
+
"Uue paigutuse loomisel muudetakse see aktiivseks ning edasised muudatused "
|
2893 |
+
"teema valikutes mõjuvad talle. Kui peale uue paigutuse loomist kohe mõne muu "
|
2894 |
+
"paigutuse peale vahetada, siis uue paigutuse külge jääb teema valikute "
|
2895 |
+
"andmete hetkeseis paigutuse loomisel."
|
2896 |
+
|
2897 |
+
#: ../includes/ot-functions-settings-page.php:522
|
2898 |
+
msgid ""
|
2899 |
+
"Visit <code>OptionTree->Documentation->Layouts Overview</code> to see a more "
|
2900 |
+
"in-depth description of what layouts are and how to use them."
|
2901 |
+
msgstr ""
|
2902 |
+
"Lehel <code>OptionTree->Dokumentatsioon->Paigutuste ülevaade</code> leiad "
|
2903 |
+
"põhjalikuma paigutuste kirjelduse ja kasutusjuhendi."
|
2904 |
+
|
2905 |
+
#: ../includes/ot-functions-settings-page.php:559
|
2906 |
+
msgid "Save Layouts"
|
2907 |
+
msgstr "Salvesta paigutused"
|
2908 |
+
|
2909 |
+
#: ../includes/ot-settings-api.php:364
|
2910 |
+
msgid "Reset Options"
|
2911 |
+
msgstr "Algseadista seaded"
|
2912 |
+
|
2913 |
+
#: ../ot-loader.php:21
|
2914 |
+
msgid ""
|
2915 |
+
"OptionTree is installed as a plugin and also embedded in your current theme. "
|
2916 |
+
"Please deactivate the plugin to load the theme dependent version of "
|
2917 |
+
"OptionTree, and remove this warning."
|
2918 |
+
msgstr ""
|
2919 |
+
"OptionTree on paigaldatud nii moodulina kui ka kaasatud aktiivses teemas. "
|
2920 |
+
"Palun lülita moodul välja, et laetaks teemast sõltuv versioon OptionTreest "
|
2921 |
+
"ja see hoiatus kaoks."
|
2922 |
+
|
2923 |
+
#~ msgid "Congratulations! You have a clean install."
|
2924 |
+
#~ msgstr "Õnnitlused! Sul on puhas paigaldus."
|
2925 |
+
|
2926 |
+
#~ msgid ""
|
2927 |
+
#~ "Your version of OptionTree does not have any outdated data. If there was "
|
2928 |
+
#~ "outdated data, you would be presented with options to clean it up."
|
2929 |
+
#~ msgstr ""
|
2930 |
+
#~ "Sinu OptionTree versioonis ei ole aegunud andmeid. Kui neid oleks, siis "
|
2931 |
+
#~ "pakutaks võimalust puhastamiseks."
|
2932 |
+
|
2933 |
+
#~ msgid "Hide This Page"
|
2934 |
+
#~ msgstr "Peida lehekülg"
|
2935 |
+
|
2936 |
+
#~ msgid "Demo Meta Box"
|
2937 |
+
#~ msgstr "Näidis meta kast"
|
2938 |
+
|
2939 |
+
#~ msgid "Conditions"
|
2940 |
+
#~ msgstr "Tingimused"
|
2941 |
+
|
2942 |
+
#~ msgid "Show Gallery"
|
2943 |
+
#~ msgstr "Näita galeriid"
|
2944 |
+
|
2945 |
+
#~ msgid "Shows the Gallery when set to %s."
|
2946 |
+
#~ msgstr "Näitab galeriid, kui on määratud asendisse %s"
|
2947 |
+
|
2948 |
+
#~ msgid "Congratulations, you created a gallery!"
|
2949 |
+
#~ msgstr "Õnnitlused, lõite just galerii!"
|
2950 |
+
|
2951 |
+
#~ msgid "This is a Gallery option type. It displays when %s."
|
2952 |
+
#~ msgstr "See on galerii valikutüüp. Nähtaval, kui ta on %s"
|
2953 |
+
|
2954 |
+
#~ msgid "More Options"
|
2955 |
+
#~ msgstr "Rohkem seadeid"
|
2956 |
+
|
2957 |
+
#~ msgid "This is a demo Text field."
|
2958 |
+
#~ msgstr "See on näidis tekstisisend."
|
2959 |
+
|
2960 |
+
#~ msgid "This is a demo Textarea field."
|
2961 |
+
#~ msgstr "See on näidis tekstiväli."
|
2962 |
+
|
2963 |
+
#~ msgid "Help content goes here!"
|
2964 |
+
#~ msgstr "Siia lähevad abitekstid!"
|
2965 |
+
|
2966 |
+
#~ msgid "Sidebar content goes here!"
|
2967 |
+
#~ msgstr "Siia läheb küljeriba sisu!"
|
2968 |
+
|
2969 |
+
#~ msgid "No"
|
2970 |
+
#~ msgstr "Ei"
|
2971 |
+
|
2972 |
+
#~ msgid "Yes"
|
2973 |
+
#~ msgstr "Jah"
|
2974 |
+
|
2975 |
+
#~ msgid "Gallery Shortcode"
|
2976 |
+
#~ msgstr "Galerii lühikood"
|
2977 |
+
|
2978 |
+
#~ msgid ""
|
2979 |
+
#~ "The Gallery option type can also be saved as a shortcode by adding %s to "
|
2980 |
+
#~ "the class attribute. Using the Gallery option type in this manner will "
|
2981 |
+
#~ "result in a better user experience as you're able to save the link, "
|
2982 |
+
#~ "column, and order settings."
|
2983 |
+
#~ msgstr ""
|
2984 |
+
#~ "Lisades %s klassiatribuudiks saab galerii valikutüübi salvestada ka "
|
2985 |
+
#~ "lühikoodina. Sellisel moel galerii valikutüüpi kasutades on tulemuseks "
|
2986 |
+
#~ "parem kasutajakogemus, kuna saad salvestada lingi, tulba ja järjekorra "
|
2987 |
+
#~ "sätteid."
|
2988 |
+
|
2989 |
+
#~ msgid ""
|
2990 |
+
#~ "The List Item option type allows for a great deal of customization. You "
|
2991 |
+
#~ "can add settings to the List Item and those settings will be displayed to "
|
2992 |
+
#~ "the user when they add a new List Item. Typical use is for creating "
|
2993 |
+
#~ "sliding content or blocks of code for custom layouts."
|
2994 |
+
#~ msgstr ""
|
2995 |
+
#~ "Nimekirja elemendi valikutüüpi on väga hästi kohandatav. Nimekirja "
|
2996 |
+
#~ "elementidele saab lisada sätteid ning neid näidatakse kasutajale uue "
|
2997 |
+
#~ "elemendi lisamisel. Tüüpiline kasutus on liugleva sisu jaoks või "
|
2998 |
+
#~ "kohandatud paigutuse koodiblokkide tarvis."
|
2999 |
+
|
3000 |
+
#~ msgid "Content"
|
3001 |
+
#~ msgstr "Sisu"
|
3002 |
+
|
3003 |
+
#~ msgid "Maybe"
|
3004 |
+
#~ msgstr "Võib-olla"
|
3005 |
+
|
3006 |
+
#~ msgid "Upload Attachment ID"
|
3007 |
+
#~ msgstr "Üles laetud manuse ID"
|
3008 |
+
|
3009 |
+
#~ msgid ""
|
3010 |
+
#~ "The Upload option type can also be saved as an attachment ID by adding %s "
|
3011 |
+
#~ "to the class attribute."
|
3012 |
+
#~ msgstr ""
|
3013 |
+
#~ "Üleslaadimise valikutüüpi saab salvestada ka manuse ID-na, lisades %s "
|
3014 |
+
#~ "klassi atribuudile."
|
3015 |
+
|
3016 |
+
#~ msgid "Color Picker"
|
3017 |
+
#~ msgstr "Värvi valija"
|
languages/option-tree.po
CHANGED
@@ -1,701 +1,42 @@
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: OptionTree\n"
|
4 |
-
"POT-Creation-Date:
|
5 |
-
"PO-Revision-Date:
|
6 |
"Last-Translator: Derek Herman <derek@valendesigns.com>\n"
|
7 |
"Language-Team: Valen Designs\n"
|
8 |
-
"Language:
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"X-Generator: Poedit 1.
|
13 |
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
14 |
"_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
|
15 |
"esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
|
16 |
"X-Poedit-Basepath: .\n"
|
17 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18 |
"X-Poedit-SearchPath-0: ..\n"
|
|
|
|
|
|
|
19 |
|
20 |
-
#: ../ot-
|
21 |
-
|
22 |
-
"OptionTree is installed as a plugin and also embedded in your current theme. "
|
23 |
-
"Please deactivate the plugin to load the theme dependent version of "
|
24 |
-
"OptionTree, and remove this warning."
|
25 |
-
msgstr ""
|
26 |
-
|
27 |
-
#: ../ot-loader.php:752 ../assets/theme-mode/demo-theme-options.php:639
|
28 |
-
#: ../includes/ot-functions-admin.php:657
|
29 |
-
#: ../includes/ot-functions-docs-page.php:374
|
30 |
-
#: ../includes/ot-functions-settings-page.php:170
|
31 |
-
msgid "Send to OptionTree"
|
32 |
-
msgstr ""
|
33 |
-
|
34 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:23
|
35 |
-
msgid "Demo Meta Box"
|
36 |
-
msgstr ""
|
37 |
-
|
38 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:30
|
39 |
-
msgid "Conditions"
|
40 |
-
msgstr ""
|
41 |
-
|
42 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:35
|
43 |
-
msgid "Show Gallery"
|
44 |
-
msgstr ""
|
45 |
-
|
46 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:38
|
47 |
-
#, php-format
|
48 |
-
msgid "Shows the Gallery when set to %s."
|
49 |
-
msgstr ""
|
50 |
-
|
51 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:45
|
52 |
-
msgid "Congratulations, you created a gallery!"
|
53 |
-
msgstr ""
|
54 |
-
|
55 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:50
|
56 |
-
#: ../assets/theme-mode/demo-theme-options.php:208
|
57 |
-
#: ../includes/ot-functions-admin.php:2235
|
58 |
-
#: ../includes/ot-functions-admin.php:4712
|
59 |
-
#: ../includes/ot-functions-docs-page.php:156
|
60 |
-
msgid "Gallery"
|
61 |
-
msgstr ""
|
62 |
-
|
63 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:53
|
64 |
-
#, php-format
|
65 |
-
msgid "This is a Gallery option type. It displays when %s."
|
66 |
-
msgstr ""
|
67 |
-
|
68 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:57
|
69 |
-
msgid "More Options"
|
70 |
-
msgstr ""
|
71 |
-
|
72 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:62
|
73 |
-
#: ../assets/theme-mode/demo-theme-options.php:548
|
74 |
-
#: ../includes/ot-functions-admin.php:2255
|
75 |
-
#: ../includes/ot-functions-docs-page.php:269
|
76 |
-
msgid "Text"
|
77 |
-
msgstr ""
|
78 |
-
|
79 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:65
|
80 |
-
msgid "This is a demo Text field."
|
81 |
-
msgstr ""
|
82 |
-
|
83 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:68
|
84 |
-
#: ../assets/theme-mode/demo-theme-options.php:563
|
85 |
-
#: ../includes/ot-functions-admin.php:2256
|
86 |
-
#: ../includes/ot-functions-docs-page.php:272
|
87 |
-
msgid "Textarea"
|
88 |
-
msgstr ""
|
89 |
-
|
90 |
-
#: ../assets/theme-mode/demo-meta-boxes.php:71
|
91 |
-
msgid "This is a demo Textarea field."
|
92 |
-
msgstr ""
|
93 |
-
|
94 |
-
#: ../assets/theme-mode/demo-theme-options.php:29
|
95 |
-
#: ../assets/theme-mode/demo-theme-options.php:38
|
96 |
-
#: ../includes/ot-functions-admin.php:231
|
97 |
-
msgid "Option Types"
|
98 |
-
msgstr ""
|
99 |
-
|
100 |
-
#: ../assets/theme-mode/demo-theme-options.php:30
|
101 |
-
msgid "Help content goes here!"
|
102 |
-
msgstr ""
|
103 |
-
|
104 |
-
#: ../assets/theme-mode/demo-theme-options.php:33
|
105 |
-
msgid "Sidebar content goes here!"
|
106 |
-
msgstr ""
|
107 |
-
|
108 |
-
#: ../assets/theme-mode/demo-theme-options.php:44
|
109 |
-
#: ../includes/ot-functions-admin.php:2225
|
110 |
-
#: ../includes/ot-functions-docs-page.php:110
|
111 |
-
msgid "Background"
|
112 |
-
msgstr ""
|
113 |
-
|
114 |
-
#: ../assets/theme-mode/demo-theme-options.php:45
|
115 |
-
#: ../includes/ot-functions-docs-page.php:111
|
116 |
-
#, php-format
|
117 |
-
msgid ""
|
118 |
-
"The Background option type is for adding background styles to your theme "
|
119 |
-
"either dynamically via the CSS option type below or manually with %s. The "
|
120 |
-
"Background option type has filters that allow you to remove fields or change "
|
121 |
-
"the defaults. For example, you can filter %s to remove unwanted fields from "
|
122 |
-
"all Background options or an individual one. You can also filter %s. These "
|
123 |
-
"filters allow you to fine tune the select lists for your specific needs."
|
124 |
-
msgstr ""
|
125 |
-
|
126 |
-
#: ../assets/theme-mode/demo-theme-options.php:45
|
127 |
-
#: ../assets/theme-mode/demo-theme-options.php:624
|
128 |
-
#: ../includes/ot-functions-admin.php:3639
|
129 |
-
#: ../includes/ot-functions-docs-page.php:111
|
130 |
-
#: ../includes/ot-functions-docs-page.php:354
|
131 |
-
msgid "and"
|
132 |
-
msgstr ""
|
133 |
-
|
134 |
-
#: ../assets/theme-mode/demo-theme-options.php:59
|
135 |
-
#: ../includes/ot-functions-admin.php:2226
|
136 |
-
#: ../includes/ot-functions-docs-page.php:113
|
137 |
-
msgid "Category Checkbox"
|
138 |
-
msgstr ""
|
139 |
-
|
140 |
-
#: ../assets/theme-mode/demo-theme-options.php:60
|
141 |
-
#: ../includes/ot-functions-docs-page.php:114
|
142 |
-
msgid ""
|
143 |
-
"The Category Checkbox option type displays a list of category IDs. It allows "
|
144 |
-
"the user to check multiple category IDs and will return that value as an "
|
145 |
-
"array for use in a custom function or loop."
|
146 |
-
msgstr ""
|
147 |
-
|
148 |
-
#: ../assets/theme-mode/demo-theme-options.php:74
|
149 |
-
#: ../includes/ot-functions-admin.php:2227
|
150 |
-
#: ../includes/ot-functions-docs-page.php:116
|
151 |
-
msgid "Category Select"
|
152 |
-
msgstr ""
|
153 |
-
|
154 |
-
#: ../assets/theme-mode/demo-theme-options.php:75
|
155 |
-
#: ../includes/ot-functions-docs-page.php:117
|
156 |
-
msgid ""
|
157 |
-
"The Category Select option type displays a list of category IDs. It allows "
|
158 |
-
"the user to select only one category ID and will return that value for use "
|
159 |
-
"in a custom function or loop."
|
160 |
-
msgstr ""
|
161 |
-
|
162 |
-
#: ../assets/theme-mode/demo-theme-options.php:89
|
163 |
-
#: ../includes/ot-functions-admin.php:2228
|
164 |
-
#: ../includes/ot-functions-docs-page.php:119
|
165 |
-
msgid "Checkbox"
|
166 |
-
msgstr ""
|
167 |
-
|
168 |
-
#: ../assets/theme-mode/demo-theme-options.php:90
|
169 |
-
#: ../includes/ot-functions-docs-page.php:120
|
170 |
-
msgid ""
|
171 |
-
"The Checkbox option type displays a group of choices. It allows the user to "
|
172 |
-
"check multiple choices and will return that value as an array for use in a "
|
173 |
-
"custom function or loop."
|
174 |
-
msgstr ""
|
175 |
-
|
176 |
-
#: ../assets/theme-mode/demo-theme-options.php:104
|
177 |
-
#: ../assets/theme-mode/demo-theme-options.php:394
|
178 |
-
#: ../assets/theme-mode/demo-theme-options.php:446
|
179 |
-
msgid "No"
|
180 |
-
msgstr ""
|
181 |
-
|
182 |
-
#: ../assets/theme-mode/demo-theme-options.php:109
|
183 |
-
#: ../assets/theme-mode/demo-theme-options.php:389
|
184 |
-
#: ../assets/theme-mode/demo-theme-options.php:441
|
185 |
-
msgid "Yes"
|
186 |
-
msgstr ""
|
187 |
-
|
188 |
-
#: ../assets/theme-mode/demo-theme-options.php:116
|
189 |
-
#: ../includes/ot-functions-docs-page.php:122
|
190 |
-
msgid "Colorpicker"
|
191 |
-
msgstr ""
|
192 |
-
|
193 |
-
#: ../assets/theme-mode/demo-theme-options.php:117
|
194 |
-
#: ../includes/ot-functions-docs-page.php:123
|
195 |
-
msgid ""
|
196 |
-
"The Colorpicker option type saves a hexadecimal color code for use in CSS. "
|
197 |
-
"Use it to modify the color of something in your theme."
|
198 |
-
msgstr ""
|
199 |
-
|
200 |
-
#: ../assets/theme-mode/demo-theme-options.php:131
|
201 |
-
#: ../includes/ot-functions-admin.php:2230
|
202 |
-
#: ../includes/ot-functions-docs-page.php:125
|
203 |
-
msgid "CSS"
|
204 |
-
msgstr ""
|
205 |
-
|
206 |
-
#: ../assets/theme-mode/demo-theme-options.php:132
|
207 |
-
#: ../includes/ot-functions-docs-page.php:126
|
208 |
-
#, php-format
|
209 |
-
msgid ""
|
210 |
-
"The CSS option type is a textarea that when used properly can add dynamic "
|
211 |
-
"CSS to your theme from within OptionTree. Unfortunately, due server "
|
212 |
-
"limitations you will need to create a file named %s at the root level of "
|
213 |
-
"your theme and change permissions using %s so the server can write to the "
|
214 |
-
"file. I have had the most success setting this single file to %s but feel "
|
215 |
-
"free to play around with permissions until everything is working. A good "
|
216 |
-
"starting point is %s. When the server can save to the file, CSS will "
|
217 |
-
"automatically be updated when you save your Theme Options."
|
218 |
-
msgstr ""
|
219 |
-
|
220 |
-
#: ../assets/theme-mode/demo-theme-options.php:132
|
221 |
-
#: ../includes/ot-functions-docs-page.php:128
|
222 |
-
#, php-format
|
223 |
-
msgid ""
|
224 |
-
"This example assumes you have an option with the ID of %1$s. Which means "
|
225 |
-
"this option will automatically insert the value of %1$s into the %2$s when "
|
226 |
-
"the Theme Options are saved."
|
227 |
-
msgstr ""
|
228 |
-
|
229 |
-
#: ../assets/theme-mode/demo-theme-options.php:148
|
230 |
-
#: ../includes/ot-functions-admin.php:2231
|
231 |
-
#: ../includes/ot-functions-docs-page.php:144
|
232 |
-
msgid "Custom Post Type Checkbox"
|
233 |
-
msgstr ""
|
234 |
-
|
235 |
-
#: ../assets/theme-mode/demo-theme-options.php:149
|
236 |
-
#: ../includes/ot-functions-docs-page.php:145
|
237 |
-
#, php-format
|
238 |
-
msgid ""
|
239 |
-
"The Custom Post Type Select option type displays a list of IDs from any "
|
240 |
-
"available WordPress post type or custom post type. It allows the user to "
|
241 |
-
"check multiple post IDs for use in a custom function or loop. Requires at "
|
242 |
-
"least one valid %1$s in the %1$s field."
|
243 |
-
msgstr ""
|
244 |
-
|
245 |
-
#: ../assets/theme-mode/demo-theme-options.php:163
|
246 |
-
#: ../includes/ot-functions-admin.php:2232
|
247 |
-
#: ../includes/ot-functions-docs-page.php:147
|
248 |
-
msgid "Custom Post Type Select"
|
249 |
-
msgstr ""
|
250 |
-
|
251 |
-
#: ../assets/theme-mode/demo-theme-options.php:164
|
252 |
-
#: ../includes/ot-functions-docs-page.php:148
|
253 |
-
#, php-format
|
254 |
-
msgid ""
|
255 |
-
"The Custom Post Type Select option type displays a list of IDs from any "
|
256 |
-
"available WordPress post type or custom post type. It will return a single "
|
257 |
-
"post ID for use in a custom function or loop. Requires at least one valid "
|
258 |
-
"%1$s in the %1$s field."
|
259 |
-
msgstr ""
|
260 |
-
|
261 |
-
#: ../assets/theme-mode/demo-theme-options.php:178
|
262 |
-
#: ../includes/ot-functions-admin.php:2233
|
263 |
-
#: ../includes/ot-functions-docs-page.php:150
|
264 |
-
msgid "Date Picker"
|
265 |
-
msgstr ""
|
266 |
-
|
267 |
-
#: ../assets/theme-mode/demo-theme-options.php:179
|
268 |
-
#: ../includes/ot-functions-docs-page.php:151
|
269 |
-
msgid ""
|
270 |
-
"The Date Picker option type is tied to a standard form input field which "
|
271 |
-
"displays a calendar pop-up that allow the user to pick any date when focus "
|
272 |
-
"is given to the input field. The returned value is a date formatted string."
|
273 |
-
msgstr ""
|
274 |
-
|
275 |
-
#: ../assets/theme-mode/demo-theme-options.php:193
|
276 |
-
#: ../includes/ot-functions-admin.php:2234
|
277 |
-
#: ../includes/ot-functions-docs-page.php:153
|
278 |
-
msgid "Date Time Picker"
|
279 |
-
msgstr ""
|
280 |
-
|
281 |
-
#: ../assets/theme-mode/demo-theme-options.php:194
|
282 |
-
#: ../includes/ot-functions-docs-page.php:154
|
283 |
-
msgid ""
|
284 |
-
"The Date Time Picker option type is tied to a standard form input field "
|
285 |
-
"which displays a calendar pop-up that allow the user to pick any date and "
|
286 |
-
"time when focus is given to the input field. The returned value is a date "
|
287 |
-
"and time formatted string."
|
288 |
-
msgstr ""
|
289 |
-
|
290 |
-
#: ../assets/theme-mode/demo-theme-options.php:209
|
291 |
-
#: ../includes/ot-functions-docs-page.php:157
|
292 |
-
msgid ""
|
293 |
-
"The Gallery option type saves a comma separated list of image attachment "
|
294 |
-
"IDs. You will need to create a front-end function to display the images in "
|
295 |
-
"your theme."
|
296 |
-
msgstr ""
|
297 |
-
|
298 |
-
#: ../assets/theme-mode/demo-theme-options.php:223
|
299 |
-
msgid "Gallery Shortcode"
|
300 |
-
msgstr ""
|
301 |
-
|
302 |
-
#: ../assets/theme-mode/demo-theme-options.php:224
|
303 |
-
#, php-format
|
304 |
-
msgid ""
|
305 |
-
"The Gallery option type can also be saved as a shortcode by adding %s to the "
|
306 |
-
"class attribute. Using the Gallery option type in this manner will result in "
|
307 |
-
"a better user experience as you're able to save the link, column, and order "
|
308 |
-
"settings."
|
309 |
-
msgstr ""
|
310 |
-
|
311 |
-
#: ../assets/theme-mode/demo-theme-options.php:238
|
312 |
-
#: ../includes/ot-functions-admin.php:2236
|
313 |
-
#: ../includes/ot-functions-docs-page.php:159
|
314 |
-
msgid "List Item"
|
315 |
-
msgstr ""
|
316 |
-
|
317 |
-
#: ../assets/theme-mode/demo-theme-options.php:239
|
318 |
-
msgid ""
|
319 |
-
"The List Item option type allows for a great deal of customization. You can "
|
320 |
-
"add settings to the List Item and those settings will be displayed to the "
|
321 |
-
"user when they add a new List Item. Typical use is for creating sliding "
|
322 |
-
"content or blocks of code for custom layouts."
|
323 |
-
msgstr ""
|
324 |
-
|
325 |
-
#: ../assets/theme-mode/demo-theme-options.php:253
|
326 |
-
msgid "Content"
|
327 |
-
msgstr ""
|
328 |
-
|
329 |
-
#: ../assets/theme-mode/demo-theme-options.php:269
|
330 |
-
#: ../includes/ot-functions-admin.php:2237
|
331 |
-
#: ../includes/ot-functions-docs-page.php:162
|
332 |
-
msgid "Measurement"
|
333 |
-
msgstr ""
|
334 |
-
|
335 |
-
#: ../assets/theme-mode/demo-theme-options.php:270
|
336 |
-
#: ../includes/ot-functions-docs-page.php:163
|
337 |
-
#, php-format
|
338 |
-
msgid ""
|
339 |
-
"The Measurement option type is a mix of input and select fields. The text "
|
340 |
-
"input excepts a value and the select lets you choose the unit of measurement "
|
341 |
-
"to add to that value. Currently the default units are %s, %s, %s, and %s. "
|
342 |
-
"However, you can change them with the %s filter."
|
343 |
-
msgstr ""
|
344 |
-
|
345 |
-
#: ../assets/theme-mode/demo-theme-options.php:284
|
346 |
-
#: ../includes/ot-functions-admin.php:2238
|
347 |
-
#: ../includes/ot-functions-docs-page.php:193
|
348 |
-
msgid "Numeric Slider"
|
349 |
-
msgstr ""
|
350 |
-
|
351 |
-
#: ../assets/theme-mode/demo-theme-options.php:285
|
352 |
-
#: ../includes/ot-functions-docs-page.php:194
|
353 |
-
msgid ""
|
354 |
-
"The Numeric Slider option type displays a jQuery UI slider. It will return a "
|
355 |
-
"single numerical value for use in a custom function or loop."
|
356 |
-
msgstr ""
|
357 |
-
|
358 |
-
#: ../assets/theme-mode/demo-theme-options.php:299
|
359 |
-
#: ../includes/ot-functions-admin.php:2239
|
360 |
-
#: ../includes/ot-functions-docs-page.php:196
|
361 |
-
msgid "On/Off"
|
362 |
-
msgstr ""
|
363 |
-
|
364 |
-
#: ../assets/theme-mode/demo-theme-options.php:300
|
365 |
-
#: ../includes/ot-functions-docs-page.php:197
|
366 |
-
#, php-format
|
367 |
-
msgid ""
|
368 |
-
"The On/Off option type displays a simple switch that can be used to turn "
|
369 |
-
"things on or off. The saved return value is either %s or %s."
|
370 |
-
msgstr ""
|
371 |
-
|
372 |
-
#: ../assets/theme-mode/demo-theme-options.php:314
|
373 |
-
#: ../includes/ot-functions-admin.php:2240
|
374 |
-
#: ../includes/ot-functions-docs-page.php:199
|
375 |
-
msgid "Page Checkbox"
|
376 |
-
msgstr ""
|
377 |
-
|
378 |
-
#: ../assets/theme-mode/demo-theme-options.php:315
|
379 |
-
#: ../includes/ot-functions-docs-page.php:200
|
380 |
-
msgid ""
|
381 |
-
"The Page Checkbox option type displays a list of page IDs. It allows the "
|
382 |
-
"user to check multiple page IDs for use in a custom function or loop."
|
383 |
-
msgstr ""
|
384 |
-
|
385 |
-
#: ../assets/theme-mode/demo-theme-options.php:329
|
386 |
-
#: ../includes/ot-functions-admin.php:2241
|
387 |
-
#: ../includes/ot-functions-docs-page.php:202
|
388 |
-
msgid "Page Select"
|
389 |
-
msgstr ""
|
390 |
-
|
391 |
-
#: ../assets/theme-mode/demo-theme-options.php:330
|
392 |
-
#: ../includes/ot-functions-docs-page.php:203
|
393 |
-
msgid ""
|
394 |
-
"The Page Select option type displays a list of page IDs. It will return a "
|
395 |
-
"single page ID for use in a custom function or loop."
|
396 |
-
msgstr ""
|
397 |
-
|
398 |
-
#: ../assets/theme-mode/demo-theme-options.php:344
|
399 |
-
#: ../includes/ot-functions-admin.php:2242
|
400 |
-
#: ../includes/ot-functions-docs-page.php:205
|
401 |
-
msgid "Post Checkbox"
|
402 |
-
msgstr ""
|
403 |
-
|
404 |
-
#: ../assets/theme-mode/demo-theme-options.php:345
|
405 |
-
#: ../includes/ot-functions-docs-page.php:206
|
406 |
-
msgid ""
|
407 |
-
"The Post Checkbox option type displays a list of post IDs. It allows the "
|
408 |
-
"user to check multiple post IDs for use in a custom function or loop."
|
409 |
-
msgstr ""
|
410 |
-
|
411 |
-
#: ../assets/theme-mode/demo-theme-options.php:359
|
412 |
-
#: ../includes/ot-functions-admin.php:2243
|
413 |
-
#: ../includes/ot-functions-docs-page.php:208
|
414 |
-
msgid "Post Select"
|
415 |
-
msgstr ""
|
416 |
-
|
417 |
-
#: ../assets/theme-mode/demo-theme-options.php:360
|
418 |
-
#: ../includes/ot-functions-docs-page.php:209
|
419 |
-
msgid ""
|
420 |
-
"The Post Select option type displays a list of post IDs. It will return a "
|
421 |
-
"single post ID for use in a custom function or loop."
|
422 |
-
msgstr ""
|
423 |
-
|
424 |
-
#: ../assets/theme-mode/demo-theme-options.php:374
|
425 |
-
#: ../includes/ot-functions-admin.php:2244
|
426 |
-
#: ../includes/ot-functions-docs-page.php:211
|
427 |
-
msgid "Radio"
|
428 |
-
msgstr ""
|
429 |
-
|
430 |
-
#: ../assets/theme-mode/demo-theme-options.php:375
|
431 |
-
#: ../includes/ot-functions-docs-page.php:212
|
432 |
-
msgid ""
|
433 |
-
"The Radio option type displays a group of choices. It allows the user to "
|
434 |
-
"choose one and will return that value as a string for use in a custom "
|
435 |
-
"function or loop."
|
436 |
-
msgstr ""
|
437 |
-
|
438 |
-
#: ../assets/theme-mode/demo-theme-options.php:399
|
439 |
-
#: ../assets/theme-mode/demo-theme-options.php:451
|
440 |
-
msgid "Maybe"
|
441 |
-
msgstr ""
|
442 |
-
|
443 |
-
#: ../assets/theme-mode/demo-theme-options.php:406
|
444 |
-
#: ../includes/ot-functions-admin.php:2245
|
445 |
-
#: ../includes/ot-functions-docs-page.php:214
|
446 |
-
msgid "Radio Image"
|
447 |
-
msgstr ""
|
448 |
-
|
449 |
-
#: ../assets/theme-mode/demo-theme-options.php:407
|
450 |
-
#: ../includes/ot-functions-docs-page.php:215
|
451 |
-
#, php-format
|
452 |
-
msgid ""
|
453 |
-
"the Radio Images option type is primarily used for layouts. However, you can "
|
454 |
-
"filter the image list using %s. As well, you can add your own custom images "
|
455 |
-
"using the choices array."
|
456 |
-
msgstr ""
|
457 |
-
|
458 |
-
#: ../assets/theme-mode/demo-theme-options.php:421
|
459 |
-
#: ../includes/ot-functions-admin.php:2246
|
460 |
-
#: ../includes/ot-functions-docs-page.php:241
|
461 |
-
msgid "Select"
|
462 |
-
msgstr ""
|
463 |
-
|
464 |
-
#: ../assets/theme-mode/demo-theme-options.php:422
|
465 |
-
#: ../includes/ot-functions-docs-page.php:242
|
466 |
-
msgid ""
|
467 |
-
"The Select option type is used to list anything you want that would be "
|
468 |
-
"chosen from a select list."
|
469 |
-
msgstr ""
|
470 |
-
|
471 |
-
#: ../assets/theme-mode/demo-theme-options.php:436
|
472 |
-
msgid "-- Choose One --"
|
473 |
-
msgstr ""
|
474 |
-
|
475 |
-
#: ../assets/theme-mode/demo-theme-options.php:458
|
476 |
-
#: ../includes/ot-functions-admin.php:2247
|
477 |
-
#: ../includes/ot-functions-docs-page.php:244
|
478 |
-
msgid "Sidebar Select"
|
479 |
-
msgstr ""
|
480 |
-
|
481 |
-
#: ../assets/theme-mode/demo-theme-options.php:459
|
482 |
-
#: ../includes/ot-functions-docs-page.php:245
|
483 |
-
#, php-format
|
484 |
-
msgid ""
|
485 |
-
"This option type makes it possible for users to select a WordPress "
|
486 |
-
"registered sidebar to use on a specific area. By using the two provided "
|
487 |
-
"filters, %s, and %s we can be selective about which sidebars are available "
|
488 |
-
"on a specific content area."
|
489 |
-
msgstr ""
|
490 |
-
|
491 |
-
#: ../assets/theme-mode/demo-theme-options.php:459
|
492 |
-
#: ../includes/ot-functions-docs-page.php:246
|
493 |
-
#, php-format
|
494 |
-
msgid ""
|
495 |
-
"For example, if we create a WordPress theme that provides the ability to "
|
496 |
-
"change the Blog Sidebar and we don't want to have the footer sidebars "
|
497 |
-
"available on this area, we can unset those sidebars either manually or by "
|
498 |
-
"using a regular expression if we have a common name like %s."
|
499 |
-
msgstr ""
|
500 |
-
|
501 |
-
#: ../assets/theme-mode/demo-theme-options.php:473
|
502 |
-
#: ../includes/ot-functions-admin.php:2251
|
503 |
-
#: ../includes/ot-functions-docs-page.php:257
|
504 |
-
msgid "Tag Checkbox"
|
505 |
-
msgstr ""
|
506 |
-
|
507 |
-
#: ../assets/theme-mode/demo-theme-options.php:474
|
508 |
-
#: ../includes/ot-functions-docs-page.php:258
|
509 |
-
msgid ""
|
510 |
-
"The Tag Checkbox option type displays a list of tag IDs. It allows the user "
|
511 |
-
"to check multiple tag IDs and will return that value as an array for use in "
|
512 |
-
"a custom function or loop."
|
513 |
-
msgstr ""
|
514 |
-
|
515 |
-
#: ../assets/theme-mode/demo-theme-options.php:488
|
516 |
-
#: ../includes/ot-functions-admin.php:2252
|
517 |
-
#: ../includes/ot-functions-docs-page.php:260
|
518 |
-
msgid "Tag Select"
|
519 |
-
msgstr ""
|
520 |
-
|
521 |
-
#: ../assets/theme-mode/demo-theme-options.php:489
|
522 |
-
#: ../includes/ot-functions-docs-page.php:261
|
523 |
-
msgid ""
|
524 |
-
"The Tag Select option type displays a list of tag IDs. It allows the user to "
|
525 |
-
"select only one tag ID and will return that value for use in a custom "
|
526 |
-
"function or loop."
|
527 |
-
msgstr ""
|
528 |
-
|
529 |
-
#: ../assets/theme-mode/demo-theme-options.php:503
|
530 |
-
#: ../includes/ot-functions-admin.php:2249
|
531 |
-
#: ../includes/ot-functions-docs-page.php:251
|
532 |
-
msgid "Social Links"
|
533 |
-
msgstr ""
|
534 |
-
|
535 |
-
#: ../assets/theme-mode/demo-theme-options.php:504
|
536 |
-
#: ../includes/ot-functions-docs-page.php:252
|
537 |
-
#, php-format
|
538 |
-
msgid ""
|
539 |
-
"The Social Links option type utilizes a drag & drop interface to create a "
|
540 |
-
"list of social links. There are a few filters that make extending this "
|
541 |
-
"option type easy. You can set the %s filter to %s and turn off loading "
|
542 |
-
"default values. Use the %s filter to change the default values that are "
|
543 |
-
"loaded. To filter the settings array use the %s filter."
|
544 |
-
msgstr ""
|
545 |
-
|
546 |
-
#: ../assets/theme-mode/demo-theme-options.php:518
|
547 |
-
#: ../includes/ot-functions-admin.php:2253
|
548 |
-
#: ../includes/ot-functions-docs-page.php:263
|
549 |
-
msgid "Taxonomy Checkbox"
|
550 |
-
msgstr ""
|
551 |
-
|
552 |
-
#: ../assets/theme-mode/demo-theme-options.php:519
|
553 |
-
#: ../includes/ot-functions-docs-page.php:264
|
554 |
-
msgid ""
|
555 |
-
"The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows "
|
556 |
-
"the user to check multiple taxonomy IDs and will return that value as an "
|
557 |
-
"array for use in a custom function or loop."
|
558 |
-
msgstr ""
|
559 |
-
|
560 |
-
#: ../assets/theme-mode/demo-theme-options.php:533
|
561 |
-
#: ../includes/ot-functions-admin.php:2254
|
562 |
-
#: ../includes/ot-functions-docs-page.php:266
|
563 |
-
msgid "Taxonomy Select"
|
564 |
-
msgstr ""
|
565 |
-
|
566 |
-
#: ../assets/theme-mode/demo-theme-options.php:534
|
567 |
-
#: ../includes/ot-functions-docs-page.php:267
|
568 |
-
msgid ""
|
569 |
-
"The Taxonomy Select option type displays a list of taxonomy IDs. It allows "
|
570 |
-
"the user to select only one taxonomy ID and will return that value for use "
|
571 |
-
"in a custom function or loop."
|
572 |
-
msgstr ""
|
573 |
-
|
574 |
-
#: ../assets/theme-mode/demo-theme-options.php:549
|
575 |
-
#: ../includes/ot-functions-docs-page.php:270
|
576 |
-
msgid ""
|
577 |
-
"The Text option type is used to save string values. For example, any "
|
578 |
-
"optional or required text that is of reasonably short character length."
|
579 |
-
msgstr ""
|
580 |
-
|
581 |
-
#: ../assets/theme-mode/demo-theme-options.php:564
|
582 |
-
#: ../includes/ot-functions-docs-page.php:273
|
583 |
-
#, php-format
|
584 |
-
msgid ""
|
585 |
-
"The Textarea option type is a large string value used for custom code or "
|
586 |
-
"text in the theme and has a WYSIWYG editor that can be filtered to change "
|
587 |
-
"the how it is displayed. For example, you can filter %s, %s, %s, and %s."
|
588 |
-
msgstr ""
|
589 |
-
|
590 |
-
#: ../assets/theme-mode/demo-theme-options.php:578
|
591 |
-
#: ../includes/ot-functions-admin.php:2257
|
592 |
-
#: ../includes/ot-functions-docs-page.php:331
|
593 |
-
msgid "Textarea Simple"
|
594 |
-
msgstr ""
|
595 |
-
|
596 |
-
#: ../assets/theme-mode/demo-theme-options.php:579
|
597 |
-
#: ../includes/ot-functions-docs-page.php:332
|
598 |
-
msgid ""
|
599 |
-
"The Textarea Simple option type is a large string value used for custom code "
|
600 |
-
"or text in the theme. The Textarea Simple does not have a WYSIWYG editor."
|
601 |
-
msgstr ""
|
602 |
-
|
603 |
-
#: ../assets/theme-mode/demo-theme-options.php:593
|
604 |
-
#: ../includes/ot-functions-admin.php:2258
|
605 |
-
#: ../includes/ot-functions-docs-page.php:347
|
606 |
-
msgid "Textblock"
|
607 |
-
msgstr ""
|
608 |
-
|
609 |
-
#: ../assets/theme-mode/demo-theme-options.php:594
|
610 |
-
#: ../includes/ot-functions-docs-page.php:348
|
611 |
-
msgid ""
|
612 |
-
"The Textblock option type is used only on the Theme Option page. It will "
|
613 |
-
"allow you to create & display HTML, but has no title above the text block. "
|
614 |
-
"You can then use the Textblock to add a more detailed set of instruction on "
|
615 |
-
"how the options are used in your theme. You would never use this in your "
|
616 |
-
"themes template files as it does not save a value."
|
617 |
-
msgstr ""
|
618 |
-
|
619 |
-
#: ../assets/theme-mode/demo-theme-options.php:608
|
620 |
-
#: ../includes/ot-functions-admin.php:2259
|
621 |
-
#: ../includes/ot-functions-docs-page.php:350
|
622 |
-
msgid "Textblock Titled"
|
623 |
-
msgstr ""
|
624 |
-
|
625 |
-
#: ../assets/theme-mode/demo-theme-options.php:609
|
626 |
-
#: ../includes/ot-functions-docs-page.php:351
|
627 |
-
msgid ""
|
628 |
-
"The Textblock Titled option type is used only on the Theme Option page. It "
|
629 |
-
"will allow you to create & display HTML, and has a title above the text "
|
630 |
-
"block. You can then use the Textblock Titled to add a more detailed set of "
|
631 |
-
"instruction on how the options are used in your theme. You would never use "
|
632 |
-
"this in your themes template files as it does not save a value."
|
633 |
-
msgstr ""
|
634 |
-
|
635 |
-
#: ../assets/theme-mode/demo-theme-options.php:623
|
636 |
-
#: ../includes/ot-functions-admin.php:2260
|
637 |
-
#: ../includes/ot-functions-docs-page.php:353
|
638 |
-
msgid "Typography"
|
639 |
-
msgstr ""
|
640 |
-
|
641 |
-
#: ../assets/theme-mode/demo-theme-options.php:624
|
642 |
-
#: ../includes/ot-functions-docs-page.php:354
|
643 |
-
#, php-format
|
644 |
-
msgid ""
|
645 |
-
"The Typography option type is for adding typography styles to your theme "
|
646 |
-
"either dynamically via the CSS option type above or manually with %s. The "
|
647 |
-
"Typography option type has filters that allow you to remove fields or change "
|
648 |
-
"the defaults. For example, you can filter %s to remove unwanted fields from "
|
649 |
-
"all Background options or an individual one. You can also filter %s. These "
|
650 |
-
"filters allow you to fine tune the select lists for your specific needs."
|
651 |
-
msgstr ""
|
652 |
-
|
653 |
-
#: ../assets/theme-mode/demo-theme-options.php:638
|
654 |
-
#: ../includes/ot-functions-admin.php:2261
|
655 |
-
#: ../includes/ot-functions-docs-page.php:373
|
656 |
-
msgid "Upload"
|
657 |
-
msgstr ""
|
658 |
-
|
659 |
-
#: ../assets/theme-mode/demo-theme-options.php:639
|
660 |
-
#: ../includes/ot-functions-docs-page.php:374
|
661 |
-
#, php-format
|
662 |
-
msgid ""
|
663 |
-
"The Upload option type is used to upload any WordPress supported media. "
|
664 |
-
"After uploading, users are required to press the \"%s\" button in order to "
|
665 |
-
"populate the input with the URI of that media. There is one caveat of this "
|
666 |
-
"feature. If you import the theme options and have uploaded media on one site "
|
667 |
-
"the old URI will not reflect the URI of your new site. You will have to re-"
|
668 |
-
"upload or %s any media to your new server and change the URIs if necessary."
|
669 |
-
msgstr ""
|
670 |
-
|
671 |
-
#: ../assets/theme-mode/demo-theme-options.php:653
|
672 |
-
msgid "Upload Attachment ID"
|
673 |
-
msgstr ""
|
674 |
-
|
675 |
-
#: ../assets/theme-mode/demo-theme-options.php:654
|
676 |
-
#, php-format
|
677 |
-
msgid ""
|
678 |
-
"The Upload option type can also be saved as an attachment ID by adding %s to "
|
679 |
-
"the class attribute."
|
680 |
-
msgstr ""
|
681 |
-
|
682 |
-
#: ../includes/ot-cleanup-api.php:69 ../includes/ot-cleanup-api.php:84
|
683 |
-
#: ../includes/ot-cleanup-api.php:116
|
684 |
msgid "OptionTree Cleanup"
|
685 |
msgstr ""
|
686 |
|
687 |
-
#: ../includes/ot-cleanup-api.php:
|
688 |
#, php-format
|
689 |
msgid ""
|
690 |
"OptionTree has outdated data that should be removed. Please go to %s for "
|
691 |
"more information."
|
692 |
msgstr ""
|
693 |
|
694 |
-
#: ../includes/ot-cleanup-api.php:
|
695 |
msgid "Multiple Media Posts"
|
696 |
msgstr ""
|
697 |
|
698 |
-
#: ../includes/ot-cleanup-api.php:
|
699 |
#, php-format
|
700 |
msgid ""
|
701 |
"There are currently %s OptionTree media posts in your database. At some "
|
@@ -706,7 +47,7 @@ msgid ""
|
|
706 |
"posts and get your database cleaned up."
|
707 |
msgstr ""
|
708 |
|
709 |
-
#: ../includes/ot-cleanup-api.php:
|
710 |
#, php-format
|
711 |
msgid ""
|
712 |
"By clicking the button below, OptionTree will delete %s records and "
|
@@ -715,14 +56,14 @@ msgid ""
|
|
715 |
"updated to the correct media post."
|
716 |
msgstr ""
|
717 |
|
718 |
-
#: ../includes/ot-cleanup-api.php:
|
719 |
msgid ""
|
720 |
"This could take a while to fully process depending on how many records you "
|
721 |
"have in your database, so please be patient and wait for the script to "
|
722 |
"finish."
|
723 |
msgstr ""
|
724 |
|
725 |
-
#: ../includes/ot-cleanup-api.php:
|
726 |
#, php-format
|
727 |
msgid ""
|
728 |
"%s Your server is running in safe mode. Which means this page will "
|
@@ -730,23 +71,23 @@ msgid ""
|
|
730 |
"using %s if your server is having trouble processing that many at one time."
|
731 |
msgstr ""
|
732 |
|
733 |
-
#: ../includes/ot-cleanup-api.php:
|
734 |
msgid "Consolidate Posts"
|
735 |
msgstr ""
|
736 |
|
737 |
-
#: ../includes/ot-cleanup-api.php:
|
738 |
msgid "Reloading..."
|
739 |
msgstr ""
|
740 |
|
741 |
-
#: ../includes/ot-cleanup-api.php:
|
742 |
msgid "Clean up script has completed, the page will now reload..."
|
743 |
msgstr ""
|
744 |
|
745 |
-
#: ../includes/ot-cleanup-api.php:
|
746 |
msgid "Outdated Table"
|
747 |
msgstr ""
|
748 |
|
749 |
-
#: ../includes/ot-cleanup-api.php:
|
750 |
#, php-format
|
751 |
msgid ""
|
752 |
"If you have upgraded from an old 1.x version of OptionTree at some point, "
|
@@ -755,42 +96,28 @@ msgid ""
|
|
755 |
"Click the button below."
|
756 |
msgstr ""
|
757 |
|
758 |
-
#: ../includes/ot-cleanup-api.php:
|
759 |
msgid "Drop Table"
|
760 |
msgstr ""
|
761 |
|
762 |
-
#: ../includes/ot-cleanup-api.php:
|
763 |
#, php-format
|
764 |
msgid "Deleting the outdated and unused %s table..."
|
765 |
msgstr ""
|
766 |
|
767 |
-
#: ../includes/ot-cleanup-api.php:
|
768 |
#, php-format
|
769 |
msgid "The %s table has been successfully deleted. The page will now reload..."
|
770 |
msgstr ""
|
771 |
|
772 |
-
#: ../includes/ot-cleanup-api.php:
|
773 |
#, php-format
|
774 |
msgid "Something went wrong. The %s table was not deleted."
|
775 |
msgstr ""
|
776 |
|
777 |
-
#: ../includes/ot-cleanup-api.php:254
|
778 |
-
msgid "Congratulations! You have a clean install."
|
779 |
-
msgstr ""
|
780 |
-
|
781 |
-
#: ../includes/ot-cleanup-api.php:256
|
782 |
-
msgid ""
|
783 |
-
"Your version of OptionTree does not have any outdated data. If there was "
|
784 |
-
"outdated data, you would be presented with options to clean it up."
|
785 |
-
msgstr ""
|
786 |
-
|
787 |
-
#: ../includes/ot-cleanup-api.php:258
|
788 |
-
msgid "Hide This Page"
|
789 |
-
msgstr ""
|
790 |
-
|
791 |
#: ../includes/ot-functions-admin.php:50 ../includes/ot-functions-admin.php:51
|
792 |
#: ../includes/ot-functions-admin.php:169
|
793 |
-
#: ../includes/ot-functions-admin.php:193 ../includes/ot-functions.php:
|
794 |
msgid "Theme Options"
|
795 |
msgstr ""
|
796 |
|
@@ -820,7 +147,7 @@ msgstr ""
|
|
820 |
|
821 |
#: ../includes/ot-functions-admin.php:109
|
822 |
#: ../includes/ot-functions-admin.php:110
|
823 |
-
#: ../includes/ot-functions-docs-page.php:
|
824 |
msgid "OptionTree"
|
825 |
msgstr ""
|
826 |
|
@@ -880,6 +207,10 @@ msgstr ""
|
|
880 |
msgid "Creating Options"
|
881 |
msgstr ""
|
882 |
|
|
|
|
|
|
|
|
|
883 |
#: ../includes/ot-functions-admin.php:235
|
884 |
msgid "Function References"
|
885 |
msgstr ""
|
@@ -927,334 +258,564 @@ msgstr ""
|
|
927 |
msgid "What's a layout anyhow?"
|
928 |
msgstr ""
|
929 |
|
930 |
-
#: ../includes/ot-functions-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
931 |
msgid "The Colorpicker only allows valid hexadecimal values."
|
932 |
msgstr ""
|
933 |
|
934 |
-
#: ../includes/ot-functions-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
935 |
#: ../includes/ot-functions-option-types.php:257
|
936 |
-
#: ../includes/ot-functions-option-types.php:
|
937 |
msgid "Remove Media"
|
938 |
msgstr ""
|
939 |
|
940 |
-
#: ../includes/ot-functions-admin.php:
|
941 |
msgid "Are you sure you want to reset back to the defaults?"
|
942 |
msgstr ""
|
943 |
|
944 |
-
#: ../includes/ot-functions-admin.php:
|
945 |
msgid "You can't remove this! But you can edit the values."
|
946 |
msgstr ""
|
947 |
|
948 |
-
#: ../includes/ot-functions-admin.php:
|
949 |
msgid "Are you sure you want to remove this?"
|
950 |
msgstr ""
|
951 |
|
952 |
-
#: ../includes/ot-functions-admin.php:
|
953 |
msgid "Are you sure you want to activate this layout?"
|
954 |
msgstr ""
|
955 |
|
956 |
-
#: ../includes/ot-functions-admin.php:
|
957 |
msgid "Sorry, you can't have settings three levels deep."
|
958 |
msgstr ""
|
959 |
|
960 |
-
#: ../includes/ot-functions-admin.php:
|
961 |
-
#: ../includes/ot-functions-option-types.php:
|
962 |
msgid "Delete Gallery"
|
963 |
msgstr ""
|
964 |
|
965 |
-
#: ../includes/ot-functions-admin.php:
|
966 |
-
#: ../includes/ot-functions-option-types.php:
|
967 |
msgid "Edit Gallery"
|
968 |
msgstr ""
|
969 |
|
970 |
-
#: ../includes/ot-functions-admin.php:
|
971 |
-
#: ../includes/ot-functions-option-types.php:
|
972 |
msgid "Create Gallery"
|
973 |
msgstr ""
|
974 |
|
975 |
-
#: ../includes/ot-functions-admin.php:
|
976 |
msgid "Are you sure you want to delete this Gallery?"
|
977 |
msgstr ""
|
978 |
|
979 |
-
#: ../includes/ot-functions-admin.php:
|
980 |
msgid "Today"
|
981 |
msgstr ""
|
982 |
|
983 |
-
#: ../includes/ot-functions-admin.php:
|
984 |
msgid "Now"
|
985 |
msgstr ""
|
986 |
|
987 |
-
#: ../includes/ot-functions-admin.php:
|
988 |
msgid "Close"
|
989 |
msgstr ""
|
990 |
|
991 |
-
#: ../includes/ot-functions-admin.php:
|
992 |
msgid "Featured Image"
|
993 |
msgstr ""
|
994 |
|
995 |
-
#: ../includes/ot-functions-admin.php:
|
996 |
-
#: ../includes/ot-functions-admin.php:
|
997 |
-
#: ../includes/ot-functions-admin.php:
|
998 |
msgid "Image"
|
999 |
msgstr ""
|
1000 |
|
1001 |
-
#: ../includes/ot-functions-admin.php:
|
1002 |
msgid "Option Tree"
|
1003 |
msgstr ""
|
1004 |
|
1005 |
-
#: ../includes/ot-functions-admin.php:
|
1006 |
msgid "General"
|
1007 |
msgstr ""
|
1008 |
|
1009 |
-
#: ../includes/ot-functions-admin.php:
|
1010 |
msgid "Sample Text Field Label"
|
1011 |
msgstr ""
|
1012 |
|
1013 |
-
#: ../includes/ot-functions-admin.php:
|
1014 |
msgid "Description for the sample text field."
|
1015 |
msgstr ""
|
1016 |
|
1017 |
-
#: ../includes/ot-functions-admin.php:
|
1018 |
msgid "Settings updated."
|
1019 |
msgstr ""
|
1020 |
|
1021 |
-
#: ../includes/ot-functions-admin.php:
|
1022 |
msgid "Settings could not be saved."
|
1023 |
msgstr ""
|
1024 |
|
1025 |
-
#: ../includes/ot-functions-admin.php:
|
1026 |
msgid "Settings Imported."
|
1027 |
msgstr ""
|
1028 |
|
1029 |
-
#: ../includes/ot-functions-admin.php:
|
1030 |
msgid "Settings could not be imported."
|
1031 |
msgstr ""
|
1032 |
|
1033 |
-
#: ../includes/ot-functions-admin.php:
|
1034 |
msgid "Data Imported."
|
1035 |
msgstr ""
|
1036 |
|
1037 |
-
#: ../includes/ot-functions-admin.php:
|
1038 |
msgid "Data could not be imported."
|
1039 |
msgstr ""
|
1040 |
|
1041 |
-
#: ../includes/ot-functions-admin.php:
|
1042 |
msgid "Layouts Imported."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
-
#: ../includes/ot-functions-admin.php:
|
1046 |
-
msgid "Layouts could not be imported."
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1047 |
msgstr ""
|
1048 |
|
1049 |
-
#: ../includes/ot-functions-admin.php:
|
1050 |
-
|
|
|
1051 |
msgstr ""
|
1052 |
|
1053 |
-
#: ../includes/ot-functions-admin.php:
|
1054 |
-
|
|
|
1055 |
msgstr ""
|
1056 |
|
1057 |
-
#: ../includes/ot-functions-admin.php:
|
1058 |
-
|
|
|
1059 |
msgstr ""
|
1060 |
|
1061 |
-
#: ../includes/ot-functions-admin.php:
|
1062 |
-
|
|
|
1063 |
msgstr ""
|
1064 |
|
1065 |
-
#: ../includes/ot-functions-admin.php:
|
1066 |
-
|
|
|
1067 |
msgstr ""
|
1068 |
|
1069 |
-
#: ../includes/ot-functions-admin.php:
|
1070 |
-
#: ../includes/ot-functions-docs-page.php:
|
1071 |
-
msgid "
|
1072 |
msgstr ""
|
1073 |
|
1074 |
-
#: ../includes/ot-functions-admin.php:
|
1075 |
-
#: ../includes/ot-functions-docs-page.php:
|
1076 |
-
msgid "
|
1077 |
msgstr ""
|
1078 |
|
1079 |
-
#: ../includes/ot-functions-admin.php:
|
1080 |
msgid "Left Sidebar"
|
1081 |
msgstr ""
|
1082 |
|
1083 |
-
#: ../includes/ot-functions-admin.php:
|
1084 |
msgid "Right Sidebar"
|
1085 |
msgstr ""
|
1086 |
|
1087 |
-
#: ../includes/ot-functions-admin.php:
|
1088 |
msgid "Full Width (no sidebar)"
|
1089 |
msgstr ""
|
1090 |
|
1091 |
-
#: ../includes/ot-functions-admin.php:
|
1092 |
msgid "Dual Sidebar"
|
1093 |
msgstr ""
|
1094 |
|
1095 |
-
#: ../includes/ot-functions-admin.php:
|
1096 |
msgid "Left Dual Sidebar"
|
1097 |
msgstr ""
|
1098 |
|
1099 |
-
#: ../includes/ot-functions-admin.php:
|
1100 |
msgid "Right Dual Sidebar"
|
1101 |
msgstr ""
|
1102 |
|
1103 |
-
#: ../includes/ot-functions-admin.php:
|
1104 |
-
#: ../includes/ot-functions-admin.php:
|
1105 |
-
#: ../includes/ot-functions-admin.php:
|
1106 |
msgid "Link"
|
1107 |
msgstr ""
|
1108 |
|
1109 |
-
#: ../includes/ot-functions-admin.php:
|
1110 |
-
#: ../includes/ot-functions-admin.php:
|
1111 |
#: ../includes/ot-functions-docs-page.php:43
|
1112 |
-
#: ../includes/ot-functions-docs-page.php:
|
1113 |
-
#: ../includes/ot-functions-docs-page.php:
|
1114 |
msgid "Description"
|
1115 |
msgstr ""
|
1116 |
|
1117 |
-
#: ../includes/ot-functions-admin.php:
|
1118 |
msgid "Name"
|
1119 |
msgstr ""
|
1120 |
|
1121 |
-
#: ../includes/ot-functions-admin.php:
|
1122 |
msgid "Enter the name of the social website."
|
1123 |
msgstr ""
|
1124 |
|
1125 |
-
#: ../includes/ot-functions-admin.php:
|
1126 |
msgid "Enter the text shown in the title attribute of the link."
|
1127 |
msgstr ""
|
1128 |
|
1129 |
-
#: ../includes/ot-functions-admin.php:
|
1130 |
#, php-format
|
1131 |
msgid ""
|
1132 |
"Enter a link to the profile or page on the social website. Remember to add "
|
1133 |
"the %s part to the front of the link."
|
1134 |
msgstr ""
|
1135 |
|
1136 |
-
#: ../includes/ot-functions-admin.php:
|
1137 |
msgid "edit"
|
1138 |
msgstr ""
|
1139 |
|
1140 |
-
#: ../includes/ot-functions-admin.php:
|
1141 |
-
#: ../includes/ot-functions-admin.php:
|
1142 |
-
#: ../includes/ot-functions-admin.php:
|
1143 |
-
#: ../includes/ot-functions-admin.php:
|
1144 |
-
#: ../includes/ot-functions-admin.php:
|
1145 |
-
#: ../includes/ot-functions-admin.php:
|
1146 |
-
#: ../includes/ot-functions-admin.php:
|
1147 |
-
#: ../includes/ot-functions-admin.php:
|
1148 |
-
#: ../includes/ot-functions-admin.php:
|
1149 |
-
#: ../includes/ot-functions-admin.php:
|
1150 |
-
#: ../includes/ot-functions-admin.php:
|
1151 |
msgid "Edit"
|
1152 |
msgstr ""
|
1153 |
|
1154 |
-
#: ../includes/ot-functions-admin.php:
|
1155 |
-
#: ../includes/ot-functions-admin.php:
|
1156 |
-
#: ../includes/ot-functions-admin.php:
|
1157 |
-
#: ../includes/ot-functions-admin.php:
|
1158 |
-
#: ../includes/ot-functions-admin.php:
|
1159 |
-
#: ../includes/ot-functions-admin.php:
|
1160 |
-
#: ../includes/ot-functions-admin.php:
|
1161 |
-
#: ../includes/ot-functions-admin.php:
|
1162 |
-
#: ../includes/ot-functions-admin.php:
|
1163 |
-
#: ../includes/ot-functions-admin.php:
|
1164 |
-
#: ../includes/ot-functions-admin.php:
|
1165 |
-
#: ../includes/ot-functions-admin.php:
|
1166 |
-
#: ../includes/ot-functions-admin.php:
|
1167 |
-
#: ../includes/ot-functions-admin.php:
|
1168 |
msgid "Delete"
|
1169 |
msgstr ""
|
1170 |
|
1171 |
-
#: ../includes/ot-functions-admin.php:
|
1172 |
msgid ""
|
1173 |
"<strong>Section Title</strong>: Displayed as a menu item on the Theme "
|
1174 |
"Options page."
|
1175 |
msgstr ""
|
1176 |
|
1177 |
-
#: ../includes/ot-functions-admin.php:
|
1178 |
msgid ""
|
1179 |
"<strong>Section ID</strong>: A unique lower case alphanumeric string, "
|
1180 |
"underscores allowed."
|
1181 |
msgstr ""
|
1182 |
|
1183 |
-
#: ../includes/ot-functions-admin.php:
|
1184 |
msgid ""
|
1185 |
"<strong>Label</strong>: Displayed as the label of a form element on the "
|
1186 |
"Theme Options page."
|
1187 |
msgstr ""
|
1188 |
|
1189 |
-
#: ../includes/ot-functions-admin.php:
|
1190 |
-
#: ../includes/ot-functions-admin.php:
|
1191 |
msgid ""
|
1192 |
"<strong>ID</strong>: A unique lower case alphanumeric string, underscores "
|
1193 |
"allowed."
|
1194 |
msgstr ""
|
1195 |
|
1196 |
-
#: ../includes/ot-functions-admin.php:
|
1197 |
msgid ""
|
1198 |
"<strong>Type</strong>: Choose one of the available option types from the "
|
1199 |
"dropdown."
|
1200 |
msgstr ""
|
1201 |
|
1202 |
-
#: ../includes/ot-functions-admin.php:
|
1203 |
msgid ""
|
1204 |
"<strong>Description</strong>: Enter a detailed description for the users to "
|
1205 |
"read on the Theme Options page, HTML is allowed. This is also where you "
|
1206 |
"enter content for both the Textblock & Textblock Titled option types."
|
1207 |
msgstr ""
|
1208 |
|
1209 |
-
#: ../includes/ot-functions-admin.php:
|
1210 |
msgid ""
|
1211 |
"<strong>Choices</strong>: This will only affect the following option types: "
|
1212 |
"Checkbox, Radio, Select & Select Image."
|
1213 |
msgstr ""
|
1214 |
|
1215 |
-
#: ../includes/ot-functions-admin.php:
|
1216 |
msgid "Add Choice"
|
1217 |
msgstr ""
|
1218 |
|
1219 |
-
#: ../includes/ot-functions-admin.php:
|
1220 |
msgid ""
|
1221 |
"<strong>Settings</strong>: This will only affect the List Item option type."
|
1222 |
msgstr ""
|
1223 |
|
1224 |
-
#: ../includes/ot-functions-admin.php:
|
1225 |
#: ../includes/ot-functions-settings-page.php:93
|
1226 |
msgid "Add Setting"
|
1227 |
msgstr ""
|
1228 |
|
1229 |
-
#: ../includes/ot-functions-admin.php:
|
1230 |
msgid ""
|
1231 |
"<strong>Standard</strong>: Setting the standard value for your option only "
|
1232 |
"works for some option types. Read the <code>OptionTree->Documentation</code> "
|
1233 |
"for more information on which ones."
|
1234 |
msgstr ""
|
1235 |
|
1236 |
-
#: ../includes/ot-functions-admin.php:
|
1237 |
msgid ""
|
1238 |
"<strong>Rows</strong>: Enter a numeric value for the number of rows in your "
|
1239 |
"textarea. This will only affect the following option types: CSS, Textarea, & "
|
1240 |
"Textarea Simple."
|
1241 |
msgstr ""
|
1242 |
|
1243 |
-
#: ../includes/ot-functions-admin.php:
|
1244 |
msgid ""
|
1245 |
"<strong>Post Type</strong>: Add a comma separated list of post type like "
|
1246 |
"'post,page'. This will only affect the following option types: Custom Post "
|
1247 |
"Type Checkbox, & Custom Post Type Select."
|
1248 |
msgstr ""
|
1249 |
|
1250 |
-
#: ../includes/ot-functions-admin.php:
|
1251 |
msgid ""
|
1252 |
"<strong>Taxonomy</strong>: Add a comma separated list of any registered "
|
1253 |
"taxonomy like 'category,post_tag'. This will only affect the following "
|
1254 |
"option types: Taxonomy Checkbox, & Taxonomy Select."
|
1255 |
msgstr ""
|
1256 |
|
1257 |
-
#: ../includes/ot-functions-admin.php:
|
1258 |
msgid ""
|
1259 |
"<strong>Min, Max, & Step</strong>: Add a comma separated list of options in "
|
1260 |
"the following format <code>0,100,1</code> (slide from <code>0-100</code> in "
|
@@ -1263,11 +824,11 @@ msgid ""
|
|
1263 |
"type."
|
1264 |
msgstr ""
|
1265 |
|
1266 |
-
#: ../includes/ot-functions-admin.php:
|
1267 |
msgid "<strong>CSS Class</strong>: Add and optional class to this option type."
|
1268 |
msgstr ""
|
1269 |
|
1270 |
-
#: ../includes/ot-functions-admin.php:
|
1271 |
#, php-format
|
1272 |
msgid ""
|
1273 |
"<strong>Condition</strong>: Add a comma separated list (no spaces) of "
|
@@ -1276,92 +837,98 @@ msgid ""
|
|
1276 |
"placeholder for your condition, which can be in the form of %s."
|
1277 |
msgstr ""
|
1278 |
|
1279 |
-
#: ../includes/ot-functions-admin.php:
|
1280 |
msgid ""
|
1281 |
"<strong>Operator</strong>: Choose the logical operator to compute the result "
|
1282 |
"of the conditions."
|
1283 |
msgstr ""
|
1284 |
|
1285 |
-
#: ../includes/ot-functions-admin.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1286 |
msgid "or"
|
1287 |
msgstr ""
|
1288 |
|
1289 |
-
#: ../includes/ot-functions-admin.php:
|
1290 |
#: ../includes/ot-functions-docs-page.php:29
|
1291 |
msgid "Label"
|
1292 |
msgstr ""
|
1293 |
|
1294 |
-
#: ../includes/ot-functions-admin.php:
|
1295 |
msgid "Value"
|
1296 |
msgstr ""
|
1297 |
|
1298 |
-
#: ../includes/ot-functions-admin.php:
|
1299 |
msgid "Image Source (Radio Image only)"
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: ../includes/ot-functions-admin.php:
|
1303 |
msgid ""
|
1304 |
"<strong>Title</strong>: Displayed as a contextual help menu item on the "
|
1305 |
"Theme Options page."
|
1306 |
msgstr ""
|
1307 |
|
1308 |
-
#: ../includes/ot-functions-admin.php:
|
1309 |
msgid ""
|
1310 |
"<strong>Content</strong>: Enter the HTML content about this contextual help "
|
1311 |
"item displayed on the Theme Option page for end users to read."
|
1312 |
msgstr ""
|
1313 |
|
1314 |
-
#: ../includes/ot-functions-admin.php:
|
1315 |
msgid "Layout"
|
1316 |
msgstr ""
|
1317 |
|
1318 |
-
#: ../includes/ot-functions-admin.php:
|
1319 |
-
#: ../includes/ot-functions-admin.php:
|
1320 |
msgid "Activate"
|
1321 |
msgstr ""
|
1322 |
|
1323 |
-
#: ../includes/ot-functions-admin.php:
|
1324 |
-
#: ../includes/ot-settings-api.php:
|
1325 |
msgid "Title"
|
1326 |
msgstr ""
|
1327 |
|
1328 |
-
#: ../includes/ot-functions-admin.php:
|
1329 |
msgid "New Layout"
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#: ../includes/ot-functions-admin.php:
|
1333 |
msgid "Link URL"
|
1334 |
msgstr ""
|
1335 |
|
1336 |
-
#: ../includes/ot-functions-admin.php:
|
1337 |
msgid "Link Title"
|
1338 |
msgstr ""
|
1339 |
|
1340 |
-
#: ../includes/ot-functions-admin.php:
|
1341 |
msgid "Quote"
|
1342 |
msgstr ""
|
1343 |
|
1344 |
-
#: ../includes/ot-functions-admin.php:
|
1345 |
msgid "Source Name (ex. author, singer, actor)"
|
1346 |
msgstr ""
|
1347 |
|
1348 |
-
#: ../includes/ot-functions-admin.php:
|
1349 |
msgid "Source URL"
|
1350 |
msgstr ""
|
1351 |
|
1352 |
-
#: ../includes/ot-functions-admin.php:
|
1353 |
msgid "Source Title (ex. book, song, movie)"
|
1354 |
msgstr ""
|
1355 |
|
1356 |
-
#: ../includes/ot-functions-admin.php:
|
1357 |
msgid "Source Date"
|
1358 |
msgstr ""
|
1359 |
|
1360 |
-
#: ../includes/ot-functions-admin.php:
|
1361 |
msgid "Video"
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: ../includes/ot-functions-admin.php:
|
1365 |
#, php-format
|
1366 |
msgid ""
|
1367 |
"Embed video from services like Youtube, Vimeo, or Hulu. You can find a list "
|
@@ -1369,16 +936,16 @@ msgid ""
|
|
1369 |
"built-in %2$s shortcode."
|
1370 |
msgstr ""
|
1371 |
|
1372 |
-
#: ../includes/ot-functions-admin.php:
|
1373 |
-
#: ../includes/ot-functions-admin.php:
|
1374 |
msgid "Wordpress Codex"
|
1375 |
msgstr ""
|
1376 |
|
1377 |
-
#: ../includes/ot-functions-admin.php:
|
1378 |
msgid "Audio"
|
1379 |
msgstr ""
|
1380 |
|
1381 |
-
#: ../includes/ot-functions-admin.php:
|
1382 |
#, php-format
|
1383 |
msgid ""
|
1384 |
"Embed audio from services like SoundCloud and Rdio. You can find a list of "
|
@@ -1475,137 +1042,443 @@ msgid ""
|
|
1475 |
"not seem to return results properly and is something I plan on looking into."
|
1476 |
msgstr ""
|
1477 |
|
1478 |
-
#: ../includes/ot-functions-docs-page.php:67
|
1479 |
-
msgid "Taxonomy"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1480 |
msgstr ""
|
1481 |
|
1482 |
-
#: ../includes/ot-functions-docs-page.php:
|
1483 |
msgid ""
|
1484 |
-
"
|
1485 |
-
"
|
1486 |
-
"Checkbox, & Taxonomy Select."
|
1487 |
msgstr ""
|
1488 |
|
1489 |
-
#: ../includes/ot-functions-docs-page.php:
|
1490 |
-
msgid "
|
|
|
|
|
|
|
1491 |
msgstr ""
|
1492 |
|
1493 |
-
#: ../includes/ot-functions-docs-page.php:
|
|
|
1494 |
msgid ""
|
1495 |
-
"
|
1496 |
-
"
|
1497 |
-
"
|
1498 |
-
"affect the Numeric Slider option type."
|
1499 |
msgstr ""
|
1500 |
|
1501 |
-
#: ../includes/ot-functions-docs-page.php:
|
1502 |
-
msgid "
|
|
|
|
|
|
|
1503 |
msgstr ""
|
1504 |
|
1505 |
-
#: ../includes/ot-functions-docs-page.php:
|
1506 |
-
msgid "
|
|
|
|
|
1507 |
msgstr ""
|
1508 |
|
1509 |
-
#: ../includes/ot-functions-docs-page.php:
|
1510 |
-
|
|
|
|
|
|
|
|
|
|
|
1511 |
msgstr ""
|
1512 |
|
1513 |
-
#: ../includes/ot-functions-docs-page.php:
|
1514 |
#, php-format
|
1515 |
msgid ""
|
1516 |
-
"
|
1517 |
-
"
|
1518 |
-
"
|
1519 |
-
"
|
1520 |
msgstr ""
|
1521 |
|
1522 |
-
#: ../includes/ot-functions-docs-page.php:
|
1523 |
-
msgid "
|
|
|
|
|
|
|
1524 |
msgstr ""
|
1525 |
|
1526 |
-
#: ../includes/ot-functions-docs-page.php:
|
1527 |
#, php-format
|
1528 |
msgid ""
|
1529 |
-
"
|
1530 |
-
"
|
|
|
|
|
|
|
1531 |
msgstr ""
|
1532 |
|
1533 |
-
#: ../includes/ot-functions-docs-page.php:
|
1534 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
1535 |
msgstr ""
|
1536 |
|
1537 |
-
#: ../includes/ot-functions-docs-page.php:
|
1538 |
-
msgid "
|
|
|
1539 |
msgstr ""
|
1540 |
|
1541 |
-
#: ../includes/ot-functions-docs-page.php:
|
1542 |
msgid ""
|
1543 |
-
"The
|
1544 |
-
"
|
1545 |
-
"
|
1546 |
-
"Typical use is for creating sliding content or blocks of code for custom "
|
1547 |
-
"layouts."
|
1548 |
msgstr ""
|
1549 |
|
1550 |
-
#: ../includes/ot-functions-docs-page.php:
|
1551 |
-
#, php-format
|
1552 |
msgid ""
|
1553 |
-
"
|
|
|
|
|
1554 |
msgstr ""
|
1555 |
|
1556 |
-
#: ../includes/ot-functions-docs-page.php:
|
1557 |
msgid ""
|
1558 |
-
"
|
1559 |
-
"
|
|
|
1560 |
msgstr ""
|
1561 |
|
1562 |
-
#: ../includes/ot-functions-docs-page.php:
|
1563 |
msgid ""
|
1564 |
-
"
|
1565 |
-
"
|
1566 |
-
"
|
1567 |
msgstr ""
|
1568 |
|
1569 |
-
#: ../includes/ot-functions-docs-page.php:
|
1570 |
msgid ""
|
1571 |
-
"The
|
1572 |
-
"
|
1573 |
-
"creating sliding image content."
|
1574 |
msgstr ""
|
1575 |
|
1576 |
-
#: ../includes/ot-functions-docs-page.php:
|
|
|
1577 |
msgid ""
|
1578 |
-
"The
|
|
|
|
|
1579 |
msgstr ""
|
1580 |
|
1581 |
-
#: ../includes/ot-functions-docs-page.php:
|
1582 |
msgid ""
|
1583 |
"Example filters to alter the Textarea option type. Added to <code>functions."
|
1584 |
"php</code>."
|
1585 |
msgstr ""
|
1586 |
|
1587 |
-
#: ../includes/ot-functions-docs-page.php:
|
1588 |
msgid ""
|
1589 |
"This example keeps WordPress from executing the <code>wpautop</code> filter "
|
1590 |
"on the line breaks. The default is <code>true</code> which means it wraps "
|
1591 |
"line breaks with an HTML <code>p</code> tag."
|
1592 |
msgstr ""
|
1593 |
|
1594 |
-
#: ../includes/ot-functions-docs-page.php:
|
1595 |
msgid ""
|
1596 |
"This example keeps WordPress from executing the <code>media_buttons</code> "
|
1597 |
"filter on the textarea WYSIWYG. The default is <code>true</code> which means "
|
1598 |
"show the buttons."
|
1599 |
msgstr ""
|
1600 |
|
1601 |
-
#: ../includes/ot-functions-docs-page.php:
|
1602 |
msgid ""
|
1603 |
"This example keeps WordPress from executing the <code>tinymce</code> filter "
|
1604 |
"on the textarea WYSIWYG. The default is <code>true</code> which means show "
|
1605 |
"the tinymce."
|
1606 |
msgstr ""
|
1607 |
|
1608 |
-
#: ../includes/ot-functions-docs-page.php:
|
1609 |
msgid ""
|
1610 |
"This example alters the <code>quicktags</code> filter on the textarea "
|
1611 |
"WYSIWYG. The default is <code>array( 'buttons' => 'strong,em,link,block,del,"
|
@@ -1613,7 +1486,13 @@ msgid ""
|
|
1613 |
"quicktags. It also means you can filter in your own custom quicktags."
|
1614 |
msgstr ""
|
1615 |
|
1616 |
-
#: ../includes/ot-functions-docs-page.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
1617 |
#, php-format
|
1618 |
msgid ""
|
1619 |
"This example tells WordPress to execute the %s filter on the line breaks. "
|
@@ -1621,134 +1500,174 @@ msgid ""
|
|
1621 |
"tag. Added to %s."
|
1622 |
msgstr ""
|
1623 |
|
1624 |
-
#: ../includes/ot-functions-docs-page.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1625 |
msgid ""
|
1626 |
"This example would filter <code>ot_recognized_font_families</code> to build "
|
1627 |
"your own font stack. Added to <code>functions.php</code>."
|
1628 |
msgstr ""
|
1629 |
|
1630 |
-
#: ../includes/ot-functions-docs-page.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1631 |
msgid ""
|
1632 |
"This function returns a value from the \"option_tree\" array of saved values "
|
1633 |
"or the default value supplied. The returned value would be mixed. Meaning it "
|
1634 |
"could be a string, integer, boolean, or array."
|
1635 |
msgstr ""
|
1636 |
|
1637 |
-
#: ../includes/ot-functions-docs-page.php:
|
1638 |
-
#: ../includes/ot-functions-docs-page.php:
|
1639 |
msgid "Usage"
|
1640 |
msgstr ""
|
1641 |
|
1642 |
-
#: ../includes/ot-functions-docs-page.php:
|
1643 |
-
#: ../includes/ot-functions-docs-page.php:
|
1644 |
msgid "Parameters"
|
1645 |
msgstr ""
|
1646 |
|
1647 |
-
#: ../includes/ot-functions-docs-page.php:
|
1648 |
-
#: ../includes/ot-functions-docs-page.php:
|
1649 |
-
#: ../includes/ot-functions-docs-page.php:
|
1650 |
msgid "string"
|
1651 |
msgstr ""
|
1652 |
|
1653 |
-
#: ../includes/ot-functions-docs-page.php:
|
1654 |
-
#: ../includes/ot-functions-docs-page.php:
|
1655 |
msgid "required"
|
1656 |
msgstr ""
|
1657 |
|
1658 |
-
#: ../includes/ot-functions-docs-page.php:
|
1659 |
msgid "Enter the options unique identifier."
|
1660 |
msgstr ""
|
1661 |
|
1662 |
-
#: ../includes/ot-functions-docs-page.php:
|
1663 |
-
#: ../includes/ot-functions-docs-page.php:
|
1664 |
msgid "Default:"
|
1665 |
msgstr ""
|
1666 |
|
1667 |
-
#: ../includes/ot-functions-docs-page.php:
|
1668 |
-
#: ../includes/ot-functions-docs-page.php:
|
1669 |
-
#: ../includes/ot-functions-docs-page.php:
|
1670 |
-
#: ../includes/ot-functions-docs-page.php:
|
1671 |
msgid "None"
|
1672 |
msgstr ""
|
1673 |
|
1674 |
-
#: ../includes/ot-functions-docs-page.php:
|
1675 |
-
#: ../includes/ot-functions-docs-page.php:
|
1676 |
-
#: ../includes/ot-functions-docs-page.php:
|
1677 |
-
#: ../includes/ot-functions-docs-page.php:
|
1678 |
-
#: ../includes/ot-functions-docs-page.php:
|
1679 |
msgid "optional"
|
1680 |
msgstr ""
|
1681 |
|
1682 |
-
#: ../includes/ot-functions-docs-page.php:
|
1683 |
msgid ""
|
1684 |
"Enter a default return value. This is just incase the request returns null."
|
1685 |
msgstr ""
|
1686 |
|
1687 |
-
#: ../includes/ot-functions-docs-page.php:
|
1688 |
-
#: ../includes/ot-functions-docs-page.php:
|
1689 |
-
#: ../includes/ot-functions-docs-page.php:
|
1690 |
-
#: ../includes/ot-functions-docs-page.php:
|
1691 |
-
#: ../includes/ot-functions-docs-page.php:
|
1692 |
msgid "Default"
|
1693 |
msgstr ""
|
1694 |
|
1695 |
-
#: ../includes/ot-functions-docs-page.php:
|
1696 |
msgid ""
|
1697 |
"This function has been deprecated. That means it has been replaced by a new "
|
1698 |
"function or is no longer supported, and may be removed from future versions. "
|
1699 |
"All code that uses this function should be converted to use its replacement."
|
1700 |
msgstr ""
|
1701 |
|
1702 |
-
#: ../includes/ot-functions-docs-page.php:
|
1703 |
msgid "Use"
|
1704 |
msgstr ""
|
1705 |
|
1706 |
-
#: ../includes/ot-functions-docs-page.php:
|
1707 |
msgid "instead"
|
1708 |
msgstr ""
|
1709 |
|
1710 |
-
#: ../includes/ot-functions-docs-page.php:
|
1711 |
msgid ""
|
1712 |
"This function returns, or echos if asked, a value from the \"option_tree\" "
|
1713 |
"array of saved values."
|
1714 |
msgstr ""
|
1715 |
|
1716 |
-
#: ../includes/ot-functions-docs-page.php:
|
1717 |
msgid "Enter a unique Option Key to get a returned value or array."
|
1718 |
msgstr ""
|
1719 |
|
1720 |
-
#: ../includes/ot-functions-docs-page.php:
|
1721 |
msgid "array"
|
1722 |
msgstr ""
|
1723 |
|
1724 |
-
#: ../includes/ot-functions-docs-page.php:
|
1725 |
msgid "Used to cut down on database queries in template files."
|
1726 |
msgstr ""
|
1727 |
|
1728 |
-
#: ../includes/ot-functions-docs-page.php:
|
1729 |
-
#: ../includes/ot-functions-docs-page.php:
|
1730 |
msgid "boolean"
|
1731 |
msgstr ""
|
1732 |
|
1733 |
-
#: ../includes/ot-functions-docs-page.php:
|
1734 |
msgid "Echo the output."
|
1735 |
msgstr ""
|
1736 |
|
1737 |
-
#: ../includes/ot-functions-docs-page.php:
|
1738 |
msgid "Used to indicate the $item_id is an array of values."
|
1739 |
msgstr ""
|
1740 |
|
1741 |
-
#: ../includes/ot-functions-docs-page.php:
|
1742 |
msgid "integer"
|
1743 |
msgstr ""
|
1744 |
|
1745 |
-
#: ../includes/ot-functions-docs-page.php:
|
1746 |
msgid ""
|
1747 |
"Numeric offset key for the $item_id array, -1 will return all values (an "
|
1748 |
"array starts at 0)."
|
1749 |
msgstr ""
|
1750 |
|
1751 |
-
#: ../includes/ot-functions-docs-page.php:
|
1752 |
msgid ""
|
1753 |
"If you're using the plugin version of OptionTree it is highly recommended to "
|
1754 |
"include a <code>function_exists</code> check in your code, as described in "
|
@@ -1758,32 +1677,32 @@ msgid ""
|
|
1758 |
"<code>ot_get_option()</code> function available."
|
1759 |
msgstr ""
|
1760 |
|
1761 |
-
#: ../includes/ot-functions-docs-page.php:
|
1762 |
msgid "String Examples"
|
1763 |
msgstr ""
|
1764 |
|
1765 |
-
#: ../includes/ot-functions-docs-page.php:
|
1766 |
msgid "Returns the value of <code>test_input</code>."
|
1767 |
msgstr ""
|
1768 |
|
1769 |
-
#: ../includes/ot-functions-docs-page.php:
|
1770 |
msgid ""
|
1771 |
"Returns the value of <code>test_input</code>, but also has a default value "
|
1772 |
"if it returns empty."
|
1773 |
msgstr ""
|
1774 |
|
1775 |
-
#: ../includes/ot-functions-docs-page.php:
|
1776 |
msgid "Array Examples"
|
1777 |
msgstr ""
|
1778 |
|
1779 |
-
#: ../includes/ot-functions-docs-page.php:
|
1780 |
msgid ""
|
1781 |
"Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</"
|
1782 |
"code>. It then echos an unordered list of links (navigation) using "
|
1783 |
"<code>wp_list_pages()</code>."
|
1784 |
msgstr ""
|
1785 |
|
1786 |
-
#: ../includes/ot-functions-docs-page.php:
|
1787 |
msgid ""
|
1788 |
"The next two examples demonstrate how to use the <strong>Measurement</"
|
1789 |
"strong> option type. The Measurement option type is an array with two key/"
|
@@ -1791,15 +1710,15 @@ msgid ""
|
|
1791 |
"unit of measurement."
|
1792 |
msgstr ""
|
1793 |
|
1794 |
-
#: ../includes/ot-functions-docs-page.php:
|
1795 |
msgid "This example displays a very basic slider loop."
|
1796 |
msgstr ""
|
1797 |
|
1798 |
-
#: ../includes/ot-functions-docs-page.php:
|
1799 |
msgid "It's Super Simple"
|
1800 |
msgstr ""
|
1801 |
|
1802 |
-
#: ../includes/ot-functions-docs-page.php:
|
1803 |
msgid ""
|
1804 |
"Layouts make your theme awesome! With theme options data that you can save/"
|
1805 |
"import/export you can package themes with different color variations, or "
|
@@ -1807,7 +1726,7 @@ msgid ""
|
|
1807 |
"a snapshot of your data as a layout."
|
1808 |
msgstr ""
|
1809 |
|
1810 |
-
#: ../includes/ot-functions-docs-page.php:
|
1811 |
msgid ""
|
1812 |
"Once you have created all your different layouts, or theme variations, you "
|
1813 |
"can save them to a separate text file for repackaging with your theme. "
|
@@ -1816,117 +1735,117 @@ msgid ""
|
|
1816 |
"previous options data."
|
1817 |
msgstr ""
|
1818 |
|
1819 |
-
#: ../includes/ot-functions-docs-page.php:
|
1820 |
msgid ""
|
1821 |
" Adding a layout is ridiculously easy, follow these steps and you'll be on "
|
1822 |
"your way to having a WordPress super theme."
|
1823 |
msgstr ""
|
1824 |
|
1825 |
-
#: ../includes/ot-functions-docs-page.php:
|
1826 |
msgid "For Developers"
|
1827 |
msgstr ""
|
1828 |
|
1829 |
-
#: ../includes/ot-functions-docs-page.php:
|
1830 |
-
#: ../includes/ot-functions-docs-page.php:
|
1831 |
msgid "Creating a Layout"
|
1832 |
msgstr ""
|
1833 |
|
1834 |
-
#: ../includes/ot-functions-docs-page.php:
|
1835 |
-
#: ../includes/ot-functions-docs-page.php:
|
1836 |
-
#: ../includes/ot-functions-docs-page.php:
|
1837 |
msgid "Go to the <code>OptionTre->Settings->Layouts</code> tab."
|
1838 |
msgstr ""
|
1839 |
|
1840 |
-
#: ../includes/ot-functions-docs-page.php:
|
1841 |
msgid ""
|
1842 |
"Enter a name for your layout in the text field and hit \"Save Layouts\", "
|
1843 |
"you've created your first layout."
|
1844 |
msgstr ""
|
1845 |
|
1846 |
-
#: ../includes/ot-functions-docs-page.php:
|
1847 |
-
#: ../includes/ot-functions-docs-page.php:
|
1848 |
msgid "Adding a new layout is as easy as repeating the steps above."
|
1849 |
msgstr ""
|
1850 |
|
1851 |
-
#: ../includes/ot-functions-docs-page.php:
|
1852 |
-
#: ../includes/ot-functions-docs-page.php:
|
1853 |
msgid "Activating a Layout"
|
1854 |
msgstr ""
|
1855 |
|
1856 |
-
#: ../includes/ot-functions-docs-page.php:
|
1857 |
msgid "Click on the activate layout button in the actions list."
|
1858 |
msgstr ""
|
1859 |
|
1860 |
-
#: ../includes/ot-functions-docs-page.php:
|
1861 |
-
#: ../includes/ot-functions-docs-page.php:
|
1862 |
msgid "Deleting a Layout"
|
1863 |
msgstr ""
|
1864 |
|
1865 |
-
#: ../includes/ot-functions-docs-page.php:
|
1866 |
msgid "Click on the delete layout button in the actions list."
|
1867 |
msgstr ""
|
1868 |
|
1869 |
-
#: ../includes/ot-functions-docs-page.php:
|
1870 |
-
#: ../includes/ot-functions-docs-page.php:
|
1871 |
msgid "Edit Layout Data"
|
1872 |
msgstr ""
|
1873 |
|
1874 |
-
#: ../includes/ot-functions-docs-page.php:
|
1875 |
-
#: ../includes/ot-functions-docs-page.php:
|
1876 |
-
#: ../includes/ot-functions-docs-page.php:
|
1877 |
msgid "Go to the <code>Appearance->Theme Options</code> page."
|
1878 |
msgstr ""
|
1879 |
|
1880 |
-
#: ../includes/ot-functions-docs-page.php:
|
1881 |
-
#: ../includes/ot-functions-docs-page.php:
|
1882 |
msgid ""
|
1883 |
"Modify and save your theme options and the layout will be updated "
|
1884 |
"automatically."
|
1885 |
msgstr ""
|
1886 |
|
1887 |
-
#: ../includes/ot-functions-docs-page.php:
|
1888 |
-
#: ../includes/ot-functions-docs-page.php:
|
1889 |
msgid ""
|
1890 |
"Saving theme options data will update the currently active layout, so before "
|
1891 |
"you start saving make sure you want to modify the current layout."
|
1892 |
msgstr ""
|
1893 |
|
1894 |
-
#: ../includes/ot-functions-docs-page.php:
|
1895 |
msgid ""
|
1896 |
"If you want to edit a new layout, first create it then save your theme "
|
1897 |
"options."
|
1898 |
msgstr ""
|
1899 |
|
1900 |
-
#: ../includes/ot-functions-docs-page.php:
|
1901 |
msgid "End-Users Mode"
|
1902 |
msgstr ""
|
1903 |
|
1904 |
-
#: ../includes/ot-functions-docs-page.php:
|
1905 |
msgid ""
|
1906 |
"Enter a name for your layout in the text field and hit \"New Layout\", "
|
1907 |
"you've created your first layout."
|
1908 |
msgstr ""
|
1909 |
|
1910 |
-
#: ../includes/ot-functions-docs-page.php:
|
1911 |
msgid ""
|
1912 |
"Choose a layout from the select list and click the \"Activate Layout\" "
|
1913 |
"button."
|
1914 |
msgstr ""
|
1915 |
|
1916 |
-
#: ../includes/ot-functions-docs-page.php:
|
1917 |
msgid "End-Users mode does not allow deleting layouts."
|
1918 |
msgstr ""
|
1919 |
|
1920 |
-
#: ../includes/ot-functions-docs-page.php:
|
1921 |
msgid "Go to the <code>Appearance->Theme Options</code> tab."
|
1922 |
msgstr ""
|
1923 |
|
1924 |
-
#: ../includes/ot-functions-docs-page.php:
|
1925 |
-
#: ../includes/ot-functions-docs-page.php:
|
1926 |
msgid "How-to-guide"
|
1927 |
msgstr ""
|
1928 |
|
1929 |
-
#: ../includes/ot-functions-docs-page.php:
|
1930 |
msgid ""
|
1931 |
"There are a few simple steps you need to take in order to use OptionTree's "
|
1932 |
"built in Meta Box API. In the code below I'll show you a basic demo of how "
|
@@ -1937,7 +1856,7 @@ msgid ""
|
|
1937 |
"can reference."
|
1938 |
msgstr ""
|
1939 |
|
1940 |
-
#: ../includes/ot-functions-docs-page.php:
|
1941 |
msgid ""
|
1942 |
"It's important to note that Meta Boxes do not support WYSIWYG editors at "
|
1943 |
"this time and if you set one of your options to Textarea it will "
|
@@ -1945,36 +1864,36 @@ msgid ""
|
|
1945 |
"WordPress released this statement regarding the wp_editor() function:"
|
1946 |
msgstr ""
|
1947 |
|
1948 |
-
#: ../includes/ot-functions-docs-page.php:
|
1949 |
msgid ""
|
1950 |
"Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. "
|
1951 |
"What this means in practical terms, is that you cannot put it in meta-boxes "
|
1952 |
"that can be dragged and placed elsewhere on the page."
|
1953 |
msgstr ""
|
1954 |
|
1955 |
-
#: ../includes/ot-functions-docs-page.php:
|
1956 |
msgid "Create and include your custom meta boxes file."
|
1957 |
msgstr ""
|
1958 |
|
1959 |
-
#: ../includes/ot-functions-docs-page.php:
|
1960 |
msgid ""
|
1961 |
"Create a file and name it anything you want, maybe <code>meta-boxes.php</"
|
1962 |
"code>."
|
1963 |
msgstr ""
|
1964 |
|
1965 |
-
#: ../includes/ot-functions-docs-page.php:
|
1966 |
msgid ""
|
1967 |
"As well, you'll probably want to create a directory named <code>includes</"
|
1968 |
"code> to put your <code>meta-boxes.php</code> into which will help keep you "
|
1969 |
"file structure nice and tidy."
|
1970 |
msgstr ""
|
1971 |
|
1972 |
-
#: ../includes/ot-functions-docs-page.php:
|
1973 |
-
#: ../includes/ot-functions-docs-page.php:
|
1974 |
msgid "Add the following code to your <code>functions.php</code>."
|
1975 |
msgstr ""
|
1976 |
|
1977 |
-
#: ../includes/ot-functions-docs-page.php:
|
1978 |
msgid ""
|
1979 |
"Add a variation of the following code to your <code>meta-boxes.php</code>. "
|
1980 |
"You'll obviously need to fill it in with all your custom array values. It's "
|
@@ -1983,7 +1902,7 @@ msgid ""
|
|
1983 |
"before OptionTree was loaded the sky would fall on your head."
|
1984 |
msgstr ""
|
1985 |
|
1986 |
-
#: ../includes/ot-functions-docs-page.php:
|
1987 |
msgid ""
|
1988 |
"There are a few simple steps you need to take in order to use OptionTree as "
|
1989 |
"a theme included module. In the code below I'll show you a basic demo of how "
|
@@ -1994,28 +1913,28 @@ msgid ""
|
|
1994 |
"contains a file named <code>demo-theme-options.php</code> you can reference."
|
1995 |
msgstr ""
|
1996 |
|
1997 |
-
#: ../includes/ot-functions-docs-page.php:
|
1998 |
msgid "Step 1: Include the plugin & turn on theme mode."
|
1999 |
msgstr ""
|
2000 |
|
2001 |
-
#: ../includes/ot-functions-docs-page.php:
|
2002 |
#, php-format
|
2003 |
msgid "Download the latest version of %s and unarchive the %s directory."
|
2004 |
msgstr ""
|
2005 |
|
2006 |
-
#: ../includes/ot-functions-docs-page.php:
|
2007 |
#, php-format
|
2008 |
msgid ""
|
2009 |
"Put the %s directory in the root of your theme. For example, the server path "
|
2010 |
"would be %s."
|
2011 |
msgstr ""
|
2012 |
|
2013 |
-
#: ../includes/ot-functions-docs-page.php:
|
2014 |
#, php-format
|
2015 |
msgid "Add the following code to the beginning of your %s."
|
2016 |
msgstr ""
|
2017 |
|
2018 |
-
#: ../includes/ot-functions-docs-page.php:
|
2019 |
#, php-format
|
2020 |
msgid ""
|
2021 |
"For a list of all the OptionTree UI display filters refer to the %s file "
|
@@ -2023,38 +1942,38 @@ msgid ""
|
|
2023 |
"for developing themes with Theme Mode."
|
2024 |
msgstr ""
|
2025 |
|
2026 |
-
#: ../includes/ot-functions-docs-page.php:
|
2027 |
msgid ""
|
2028 |
"You now have OptionTree built into your theme and anytime an update is "
|
2029 |
"available replace the old version with the new one."
|
2030 |
msgstr ""
|
2031 |
|
2032 |
-
#: ../includes/ot-functions-docs-page.php:
|
2033 |
msgid "Step 2: Create Theme Options without using the UI Builder."
|
2034 |
msgstr ""
|
2035 |
|
2036 |
-
#: ../includes/ot-functions-docs-page.php:
|
2037 |
msgid ""
|
2038 |
"Create a file and name it anything you want, maybe <code>theme-options.php</"
|
2039 |
"code>, or use the built in file export to create it for you. Remember, you "
|
2040 |
"should always check the file for errors before including it in your theme."
|
2041 |
msgstr ""
|
2042 |
|
2043 |
-
#: ../includes/ot-functions-docs-page.php:
|
2044 |
msgid ""
|
2045 |
"As well, you'll probably want to create a directory named <code>includes</"
|
2046 |
"code> to put your <code>theme-options.php</code> into which will help keep "
|
2047 |
"you file structure nice and tidy."
|
2048 |
msgstr ""
|
2049 |
|
2050 |
-
#: ../includes/ot-functions-docs-page.php:
|
2051 |
msgid ""
|
2052 |
"Add a variation of the following code to your <code>theme-options.php</"
|
2053 |
"code>. You'll obviously need to fill it in with all your custom array values "
|
2054 |
"for contextual help (optional), sections (required), and settings (required)."
|
2055 |
msgstr ""
|
2056 |
|
2057 |
-
#: ../includes/ot-functions-docs-page.php:
|
2058 |
msgid ""
|
2059 |
"The code below is a boilerplate to get your started. For a full list of the "
|
2060 |
"available option types click the \"Option Types\" tab above. Also a quick "
|
@@ -2090,139 +2009,230 @@ msgid "background-image"
|
|
2090 |
msgstr ""
|
2091 |
|
2092 |
#: ../includes/ot-functions-option-types.php:241
|
2093 |
-
#: ../includes/ot-functions-option-types.php:
|
2094 |
msgid "Add Media"
|
2095 |
msgstr ""
|
2096 |
|
2097 |
-
#: ../includes/ot-functions-option-types.php:
|
2098 |
-
#: ../includes/ot-functions-option-types.php:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2099 |
msgid "No Categories Found"
|
2100 |
msgstr ""
|
2101 |
|
2102 |
-
#: ../includes/ot-functions-option-types.php:
|
2103 |
-
#: ../includes/ot-functions-option-types.php:
|
2104 |
-
#: ../includes/ot-functions-option-types.php:
|
2105 |
-
#: ../includes/ot-functions-option-types.php:
|
2106 |
-
#: ../includes/ot-functions-option-types.php:
|
2107 |
-
#: ../includes/ot-functions-option-types.php:
|
2108 |
msgid "Choose One"
|
2109 |
msgstr ""
|
2110 |
|
2111 |
-
#: ../includes/ot-functions-option-types.php:
|
2112 |
-
#: ../includes/ot-functions-option-types.php:
|
2113 |
-
#: ../includes/ot-functions-option-types.php:
|
2114 |
-
#: ../includes/ot-functions-option-types.php:
|
2115 |
msgid "No Posts Found"
|
2116 |
msgstr ""
|
2117 |
|
2118 |
-
#: ../includes/ot-functions-option-types.php:
|
2119 |
-
|
2120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2121 |
msgid "Add New"
|
2122 |
msgstr ""
|
2123 |
|
2124 |
-
#: ../includes/ot-functions-option-types.php:
|
2125 |
-
#: ../includes/ot-functions-option-types.php:
|
2126 |
-
#: ../includes/ot-functions-option-types.php:
|
2127 |
msgid "You can re-order with drag & drop, the order will update after saving."
|
2128 |
msgstr ""
|
2129 |
|
2130 |
-
#: ../includes/ot-functions-option-types.php:
|
2131 |
msgid "On"
|
2132 |
msgstr ""
|
2133 |
|
2134 |
-
#: ../includes/ot-functions-option-types.php:
|
2135 |
msgid "Off"
|
2136 |
msgstr ""
|
2137 |
|
2138 |
-
#: ../includes/ot-functions-option-types.php:
|
2139 |
-
#: ../includes/ot-functions-option-types.php:
|
2140 |
msgid "No Pages Found"
|
2141 |
msgstr ""
|
2142 |
|
2143 |
-
#: ../includes/ot-functions-option-types.php:
|
2144 |
msgid "Choose Sidebar"
|
2145 |
msgstr ""
|
2146 |
|
2147 |
-
#: ../includes/ot-functions-option-types.php:
|
2148 |
msgid "No Sidebars"
|
2149 |
msgstr ""
|
2150 |
|
2151 |
-
#: ../includes/ot-functions-option-types.php:
|
2152 |
msgid "Facebook"
|
2153 |
msgstr ""
|
2154 |
|
2155 |
-
#: ../includes/ot-functions-option-types.php:
|
2156 |
msgid "Twitter"
|
2157 |
msgstr ""
|
2158 |
|
2159 |
-
#: ../includes/ot-functions-option-types.php:
|
2160 |
msgid "Google+"
|
2161 |
msgstr ""
|
2162 |
|
2163 |
-
#: ../includes/ot-functions-option-types.php:
|
2164 |
msgid "LinkedIn"
|
2165 |
msgstr ""
|
2166 |
|
2167 |
-
#: ../includes/ot-functions-option-types.php:
|
2168 |
msgid "Pinterest"
|
2169 |
msgstr ""
|
2170 |
|
2171 |
-
#: ../includes/ot-functions-option-types.php:
|
2172 |
msgid "Youtube"
|
2173 |
msgstr ""
|
2174 |
|
2175 |
-
#: ../includes/ot-functions-option-types.php:
|
2176 |
msgid "Dribbble"
|
2177 |
msgstr ""
|
2178 |
|
2179 |
-
#: ../includes/ot-functions-option-types.php:
|
2180 |
msgid "Github"
|
2181 |
msgstr ""
|
2182 |
|
2183 |
-
#: ../includes/ot-functions-option-types.php:
|
2184 |
msgid "Forrst"
|
2185 |
msgstr ""
|
2186 |
|
2187 |
-
#: ../includes/ot-functions-option-types.php:
|
2188 |
msgid "Digg"
|
2189 |
msgstr ""
|
2190 |
|
2191 |
-
#: ../includes/ot-functions-option-types.php:
|
2192 |
msgid "Delicious"
|
2193 |
msgstr ""
|
2194 |
|
2195 |
-
#: ../includes/ot-functions-option-types.php:
|
2196 |
msgid "Tumblr"
|
2197 |
msgstr ""
|
2198 |
|
2199 |
-
#: ../includes/ot-functions-option-types.php:
|
2200 |
msgid "Skype"
|
2201 |
msgstr ""
|
2202 |
|
2203 |
-
#: ../includes/ot-functions-option-types.php:
|
2204 |
msgid "SoundCloud"
|
2205 |
msgstr ""
|
2206 |
|
2207 |
-
#: ../includes/ot-functions-option-types.php:
|
2208 |
msgid "Vimeo"
|
2209 |
msgstr ""
|
2210 |
|
2211 |
-
#: ../includes/ot-functions-option-types.php:
|
2212 |
msgid "Flickr"
|
2213 |
msgstr ""
|
2214 |
|
2215 |
-
#: ../includes/ot-functions-option-types.php:
|
2216 |
msgid "VK.com"
|
2217 |
msgstr ""
|
2218 |
|
2219 |
-
#: ../includes/ot-functions-option-types.php:
|
2220 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2221 |
msgid "No Tags Found"
|
2222 |
msgstr ""
|
2223 |
|
2224 |
-
#: ../includes/ot-functions-option-types.php:
|
2225 |
-
#: ../includes/ot-functions-option-types.php:
|
2226 |
msgid "No Taxonomies Found"
|
2227 |
msgstr ""
|
2228 |
|
@@ -2438,6 +2448,13 @@ msgstr ""
|
|
2438 |
msgid "Save Layouts"
|
2439 |
msgstr ""
|
2440 |
|
2441 |
-
#: ../includes/ot-settings-api.php:
|
2442 |
msgid "Reset Options"
|
2443 |
msgstr ""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
msgid ""
|
2 |
msgstr ""
|
3 |
"Project-Id-Version: OptionTree\n"
|
4 |
+
"POT-Creation-Date: 2015-02-09 08:02-0800\n"
|
5 |
+
"PO-Revision-Date: 2015-02-09 08:03-0800\n"
|
6 |
"Last-Translator: Derek Herman <derek@valendesigns.com>\n"
|
7 |
"Language-Team: Valen Designs\n"
|
8 |
+
"Language: en\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.7.4\n"
|
13 |
"X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;"
|
14 |
"_n_noop:1,2;_c;_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2;_ex:1,2c;"
|
15 |
"esc_attr__;esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c\n"
|
16 |
"X-Poedit-Basepath: .\n"
|
17 |
"Plural-Forms: nplurals=2; plural=n != 1;\n"
|
18 |
"X-Poedit-SearchPath-0: ..\n"
|
19 |
+
"X-Poedit-SearchPathExcluded-0: ../.git\n"
|
20 |
+
"X-Poedit-SearchPathExcluded-1: ../composer.json\n"
|
21 |
+
"X-Poedit-SearchPathExcluded-2: ../assets\n"
|
22 |
|
23 |
+
#: ../includes/ot-cleanup-api.php:84 ../includes/ot-cleanup-api.php:101
|
24 |
+
#: ../includes/ot-cleanup-api.php:130
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
25 |
msgid "OptionTree Cleanup"
|
26 |
msgstr ""
|
27 |
|
28 |
+
#: ../includes/ot-cleanup-api.php:101
|
29 |
#, php-format
|
30 |
msgid ""
|
31 |
"OptionTree has outdated data that should be removed. Please go to %s for "
|
32 |
"more information."
|
33 |
msgstr ""
|
34 |
|
35 |
+
#: ../includes/ot-cleanup-api.php:136
|
36 |
msgid "Multiple Media Posts"
|
37 |
msgstr ""
|
38 |
|
39 |
+
#: ../includes/ot-cleanup-api.php:138
|
40 |
#, php-format
|
41 |
msgid ""
|
42 |
"There are currently %s OptionTree media posts in your database. At some "
|
47 |
"posts and get your database cleaned up."
|
48 |
msgstr ""
|
49 |
|
50 |
+
#: ../includes/ot-cleanup-api.php:140
|
51 |
#, php-format
|
52 |
msgid ""
|
53 |
"By clicking the button below, OptionTree will delete %s records and "
|
56 |
"updated to the correct media post."
|
57 |
msgstr ""
|
58 |
|
59 |
+
#: ../includes/ot-cleanup-api.php:142
|
60 |
msgid ""
|
61 |
"This could take a while to fully process depending on how many records you "
|
62 |
"have in your database, so please be patient and wait for the script to "
|
63 |
"finish."
|
64 |
msgstr ""
|
65 |
|
66 |
+
#: ../includes/ot-cleanup-api.php:144
|
67 |
#, php-format
|
68 |
msgid ""
|
69 |
"%s Your server is running in safe mode. Which means this page will "
|
71 |
"using %s if your server is having trouble processing that many at one time."
|
72 |
msgstr ""
|
73 |
|
74 |
+
#: ../includes/ot-cleanup-api.php:146
|
75 |
msgid "Consolidate Posts"
|
76 |
msgstr ""
|
77 |
|
78 |
+
#: ../includes/ot-cleanup-api.php:174
|
79 |
msgid "Reloading..."
|
80 |
msgstr ""
|
81 |
|
82 |
+
#: ../includes/ot-cleanup-api.php:210
|
83 |
msgid "Clean up script has completed, the page will now reload..."
|
84 |
msgstr ""
|
85 |
|
86 |
+
#: ../includes/ot-cleanup-api.php:230
|
87 |
msgid "Outdated Table"
|
88 |
msgstr ""
|
89 |
|
90 |
+
#: ../includes/ot-cleanup-api.php:232
|
91 |
#, php-format
|
92 |
msgid ""
|
93 |
"If you have upgraded from an old 1.x version of OptionTree at some point, "
|
96 |
"Click the button below."
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: ../includes/ot-cleanup-api.php:234
|
100 |
msgid "Drop Table"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: ../includes/ot-cleanup-api.php:238
|
104 |
#, php-format
|
105 |
msgid "Deleting the outdated and unused %s table..."
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: ../includes/ot-cleanup-api.php:244
|
109 |
#, php-format
|
110 |
msgid "The %s table has been successfully deleted. The page will now reload..."
|
111 |
msgstr ""
|
112 |
|
113 |
+
#: ../includes/ot-cleanup-api.php:256
|
114 |
#, php-format
|
115 |
msgid "Something went wrong. The %s table was not deleted."
|
116 |
msgstr ""
|
117 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
#: ../includes/ot-functions-admin.php:50 ../includes/ot-functions-admin.php:51
|
119 |
#: ../includes/ot-functions-admin.php:169
|
120 |
+
#: ../includes/ot-functions-admin.php:193 ../includes/ot-functions.php:361
|
121 |
msgid "Theme Options"
|
122 |
msgstr ""
|
123 |
|
147 |
|
148 |
#: ../includes/ot-functions-admin.php:109
|
149 |
#: ../includes/ot-functions-admin.php:110
|
150 |
+
#: ../includes/ot-functions-docs-page.php:821
|
151 |
msgid "OptionTree"
|
152 |
msgstr ""
|
153 |
|
207 |
msgid "Creating Options"
|
208 |
msgstr ""
|
209 |
|
210 |
+
#: ../includes/ot-functions-admin.php:231
|
211 |
+
msgid "Option Types"
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
#: ../includes/ot-functions-admin.php:235
|
215 |
msgid "Function References"
|
216 |
msgstr ""
|
258 |
msgid "What's a layout anyhow?"
|
259 |
msgstr ""
|
260 |
|
261 |
+
#: ../includes/ot-functions-admin.php:502
|
262 |
+
#: ../includes/ot-functions-admin.php:614
|
263 |
+
#: ../includes/ot-functions-admin.php:683
|
264 |
+
#, php-format
|
265 |
+
msgid "The %s input field for %s only allows numeric values."
|
266 |
+
msgstr ""
|
267 |
+
|
268 |
+
#: ../includes/ot-functions-admin.php:512
|
269 |
msgid "The Colorpicker only allows valid hexadecimal values."
|
270 |
msgstr ""
|
271 |
|
272 |
+
#: ../includes/ot-functions-admin.php:566
|
273 |
+
#, php-format
|
274 |
+
msgid "The %s Colorpicker only allows valid hexadecimal values."
|
275 |
+
msgstr ""
|
276 |
+
|
277 |
+
#: ../includes/ot-functions-admin.php:849
|
278 |
+
#: ../includes/ot-functions-docs-page.php:398
|
279 |
+
#: ../includes/ot-functions-settings-page.php:170 ../ot-loader.php:782
|
280 |
+
msgid "Send to OptionTree"
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: ../includes/ot-functions-admin.php:850
|
284 |
#: ../includes/ot-functions-option-types.php:257
|
285 |
+
#: ../includes/ot-functions-option-types.php:3243
|
286 |
msgid "Remove Media"
|
287 |
msgstr ""
|
288 |
|
289 |
+
#: ../includes/ot-functions-admin.php:851
|
290 |
msgid "Are you sure you want to reset back to the defaults?"
|
291 |
msgstr ""
|
292 |
|
293 |
+
#: ../includes/ot-functions-admin.php:852
|
294 |
msgid "You can't remove this! But you can edit the values."
|
295 |
msgstr ""
|
296 |
|
297 |
+
#: ../includes/ot-functions-admin.php:853
|
298 |
msgid "Are you sure you want to remove this?"
|
299 |
msgstr ""
|
300 |
|
301 |
+
#: ../includes/ot-functions-admin.php:854
|
302 |
msgid "Are you sure you want to activate this layout?"
|
303 |
msgstr ""
|
304 |
|
305 |
+
#: ../includes/ot-functions-admin.php:855
|
306 |
msgid "Sorry, you can't have settings three levels deep."
|
307 |
msgstr ""
|
308 |
|
309 |
+
#: ../includes/ot-functions-admin.php:856
|
310 |
+
#: ../includes/ot-functions-option-types.php:1208
|
311 |
msgid "Delete Gallery"
|
312 |
msgstr ""
|
313 |
|
314 |
+
#: ../includes/ot-functions-admin.php:857
|
315 |
+
#: ../includes/ot-functions-option-types.php:1209
|
316 |
msgid "Edit Gallery"
|
317 |
msgstr ""
|
318 |
|
319 |
+
#: ../includes/ot-functions-admin.php:858
|
320 |
+
#: ../includes/ot-functions-option-types.php:1216
|
321 |
msgid "Create Gallery"
|
322 |
msgstr ""
|
323 |
|
324 |
+
#: ../includes/ot-functions-admin.php:859
|
325 |
msgid "Are you sure you want to delete this Gallery?"
|
326 |
msgstr ""
|
327 |
|
328 |
+
#: ../includes/ot-functions-admin.php:860
|
329 |
msgid "Today"
|
330 |
msgstr ""
|
331 |
|
332 |
+
#: ../includes/ot-functions-admin.php:861
|
333 |
msgid "Now"
|
334 |
msgstr ""
|
335 |
|
336 |
+
#: ../includes/ot-functions-admin.php:862
|
337 |
msgid "Close"
|
338 |
msgstr ""
|
339 |
|
340 |
+
#: ../includes/ot-functions-admin.php:863
|
341 |
msgid "Featured Image"
|
342 |
msgstr ""
|
343 |
|
344 |
+
#: ../includes/ot-functions-admin.php:864
|
345 |
+
#: ../includes/ot-functions-admin.php:3247
|
346 |
+
#: ../includes/ot-functions-admin.php:3308
|
347 |
msgid "Image"
|
348 |
msgstr ""
|
349 |
|
350 |
+
#: ../includes/ot-functions-admin.php:932
|
351 |
msgid "Option Tree"
|
352 |
msgstr ""
|
353 |
|
354 |
+
#: ../includes/ot-functions-admin.php:1069
|
355 |
msgid "General"
|
356 |
msgstr ""
|
357 |
|
358 |
+
#: ../includes/ot-functions-admin.php:1075
|
359 |
msgid "Sample Text Field Label"
|
360 |
msgstr ""
|
361 |
|
362 |
+
#: ../includes/ot-functions-admin.php:1076
|
363 |
msgid "Description for the sample text field."
|
364 |
msgstr ""
|
365 |
|
366 |
+
#: ../includes/ot-functions-admin.php:2318
|
367 |
msgid "Settings updated."
|
368 |
msgstr ""
|
369 |
|
370 |
+
#: ../includes/ot-functions-admin.php:2322
|
371 |
msgid "Settings could not be saved."
|
372 |
msgstr ""
|
373 |
|
374 |
+
#: ../includes/ot-functions-admin.php:2330
|
375 |
msgid "Settings Imported."
|
376 |
msgstr ""
|
377 |
|
378 |
+
#: ../includes/ot-functions-admin.php:2334
|
379 |
msgid "Settings could not be imported."
|
380 |
msgstr ""
|
381 |
|
382 |
+
#: ../includes/ot-functions-admin.php:2341
|
383 |
msgid "Data Imported."
|
384 |
msgstr ""
|
385 |
|
386 |
+
#: ../includes/ot-functions-admin.php:2345
|
387 |
msgid "Data could not be imported."
|
388 |
msgstr ""
|
389 |
|
390 |
+
#: ../includes/ot-functions-admin.php:2353
|
391 |
msgid "Layouts Imported."
|
392 |
msgstr ""
|
393 |
|
394 |
+
#: ../includes/ot-functions-admin.php:2357
|
395 |
+
msgid "Layouts could not be imported."
|
396 |
+
msgstr ""
|
397 |
+
|
398 |
+
#: ../includes/ot-functions-admin.php:2365
|
399 |
+
msgid "Layouts Updated."
|
400 |
+
msgstr ""
|
401 |
+
|
402 |
+
#: ../includes/ot-functions-admin.php:2369
|
403 |
+
msgid "Layouts could not be updated."
|
404 |
+
msgstr ""
|
405 |
+
|
406 |
+
#: ../includes/ot-functions-admin.php:2373
|
407 |
+
msgid "Layouts have been deleted."
|
408 |
+
msgstr ""
|
409 |
+
|
410 |
+
#: ../includes/ot-functions-admin.php:2379
|
411 |
+
msgid "Layout activated."
|
412 |
+
msgstr ""
|
413 |
+
|
414 |
+
#: ../includes/ot-functions-admin.php:2418
|
415 |
+
#: ../includes/ot-functions-docs-page.php:110
|
416 |
+
msgid "Background"
|
417 |
+
msgstr ""
|
418 |
+
|
419 |
+
#: ../includes/ot-functions-admin.php:2419
|
420 |
+
#: ../includes/ot-functions-docs-page.php:113
|
421 |
+
msgid "Border"
|
422 |
+
msgstr ""
|
423 |
+
|
424 |
+
#: ../includes/ot-functions-admin.php:2420
|
425 |
+
#: ../includes/ot-functions-docs-page.php:116
|
426 |
+
msgid "Box Shadow"
|
427 |
+
msgstr ""
|
428 |
+
|
429 |
+
#: ../includes/ot-functions-admin.php:2421
|
430 |
+
#: ../includes/ot-functions-docs-page.php:119
|
431 |
+
msgid "Category Checkbox"
|
432 |
+
msgstr ""
|
433 |
+
|
434 |
+
#: ../includes/ot-functions-admin.php:2422
|
435 |
+
#: ../includes/ot-functions-docs-page.php:122
|
436 |
+
msgid "Category Select"
|
437 |
+
msgstr ""
|
438 |
+
|
439 |
+
#: ../includes/ot-functions-admin.php:2423
|
440 |
+
#: ../includes/ot-functions-docs-page.php:125
|
441 |
+
msgid "Checkbox"
|
442 |
+
msgstr ""
|
443 |
+
|
444 |
+
#: ../includes/ot-functions-admin.php:2424
|
445 |
+
#: ../includes/ot-functions-docs-page.php:128
|
446 |
+
msgid "Colorpicker"
|
447 |
+
msgstr ""
|
448 |
+
|
449 |
+
#: ../includes/ot-functions-admin.php:2425
|
450 |
+
#: ../includes/ot-functions-docs-page.php:131
|
451 |
+
msgid "Colorpicker Opacity"
|
452 |
+
msgstr ""
|
453 |
+
|
454 |
+
#: ../includes/ot-functions-admin.php:2426
|
455 |
+
#: ../includes/ot-functions-docs-page.php:134
|
456 |
+
msgid "CSS"
|
457 |
+
msgstr ""
|
458 |
+
|
459 |
+
#: ../includes/ot-functions-admin.php:2427
|
460 |
+
#: ../includes/ot-functions-docs-page.php:153
|
461 |
+
msgid "Custom Post Type Checkbox"
|
462 |
+
msgstr ""
|
463 |
+
|
464 |
+
#: ../includes/ot-functions-admin.php:2428
|
465 |
+
#: ../includes/ot-functions-docs-page.php:156
|
466 |
+
msgid "Custom Post Type Select"
|
467 |
+
msgstr ""
|
468 |
+
|
469 |
+
#: ../includes/ot-functions-admin.php:2429
|
470 |
+
#: ../includes/ot-functions-docs-page.php:159
|
471 |
+
msgid "Date Picker"
|
472 |
+
msgstr ""
|
473 |
+
|
474 |
+
#: ../includes/ot-functions-admin.php:2430
|
475 |
+
#: ../includes/ot-functions-docs-page.php:162
|
476 |
+
msgid "Date Time Picker"
|
477 |
+
msgstr ""
|
478 |
+
|
479 |
+
#: ../includes/ot-functions-admin.php:2431
|
480 |
+
#: ../includes/ot-functions-docs-page.php:165
|
481 |
+
msgid "Dimension"
|
482 |
+
msgstr ""
|
483 |
+
|
484 |
+
#: ../includes/ot-functions-admin.php:2432
|
485 |
+
#: ../includes/ot-functions-admin.php:5406
|
486 |
+
#: ../includes/ot-functions-docs-page.php:168
|
487 |
+
msgid "Gallery"
|
488 |
+
msgstr ""
|
489 |
+
|
490 |
+
#: ../includes/ot-functions-admin.php:2433
|
491 |
+
#: ../includes/ot-functions-docs-page.php:171
|
492 |
+
msgid "Google Fonts"
|
493 |
+
msgstr ""
|
494 |
+
|
495 |
+
#: ../includes/ot-functions-admin.php:2434
|
496 |
+
#: ../includes/ot-functions-docs-page.php:174
|
497 |
+
msgid "JavaScript"
|
498 |
+
msgstr ""
|
499 |
+
|
500 |
+
#: ../includes/ot-functions-admin.php:2435
|
501 |
+
#: ../includes/ot-functions-docs-page.php:177
|
502 |
+
msgid "Link Color"
|
503 |
+
msgstr ""
|
504 |
+
|
505 |
+
#: ../includes/ot-functions-admin.php:2436
|
506 |
+
#: ../includes/ot-functions-docs-page.php:180
|
507 |
+
msgid "List Item"
|
508 |
+
msgstr ""
|
509 |
+
|
510 |
+
#: ../includes/ot-functions-admin.php:2437
|
511 |
+
#: ../includes/ot-functions-docs-page.php:183
|
512 |
+
msgid "Measurement"
|
513 |
+
msgstr ""
|
514 |
+
|
515 |
+
#: ../includes/ot-functions-admin.php:2438
|
516 |
+
#: ../includes/ot-functions-docs-page.php:214
|
517 |
+
msgid "Numeric Slider"
|
518 |
+
msgstr ""
|
519 |
+
|
520 |
+
#: ../includes/ot-functions-admin.php:2439
|
521 |
+
#: ../includes/ot-functions-docs-page.php:217
|
522 |
+
msgid "On/Off"
|
523 |
+
msgstr ""
|
524 |
+
|
525 |
+
#: ../includes/ot-functions-admin.php:2440
|
526 |
+
#: ../includes/ot-functions-docs-page.php:220
|
527 |
+
msgid "Page Checkbox"
|
528 |
+
msgstr ""
|
529 |
+
|
530 |
+
#: ../includes/ot-functions-admin.php:2441
|
531 |
+
#: ../includes/ot-functions-docs-page.php:223
|
532 |
+
msgid "Page Select"
|
533 |
+
msgstr ""
|
534 |
+
|
535 |
+
#: ../includes/ot-functions-admin.php:2442
|
536 |
+
#: ../includes/ot-functions-docs-page.php:226
|
537 |
+
msgid "Post Checkbox"
|
538 |
+
msgstr ""
|
539 |
+
|
540 |
+
#: ../includes/ot-functions-admin.php:2443
|
541 |
+
#: ../includes/ot-functions-docs-page.php:229
|
542 |
+
msgid "Post Select"
|
543 |
+
msgstr ""
|
544 |
+
|
545 |
+
#: ../includes/ot-functions-admin.php:2444
|
546 |
+
#: ../includes/ot-functions-docs-page.php:232
|
547 |
+
msgid "Radio"
|
548 |
+
msgstr ""
|
549 |
+
|
550 |
+
#: ../includes/ot-functions-admin.php:2445
|
551 |
+
#: ../includes/ot-functions-docs-page.php:235
|
552 |
+
msgid "Radio Image"
|
553 |
+
msgstr ""
|
554 |
+
|
555 |
+
#: ../includes/ot-functions-admin.php:2446
|
556 |
+
#: ../includes/ot-functions-docs-page.php:262
|
557 |
+
msgid "Select"
|
558 |
+
msgstr ""
|
559 |
+
|
560 |
+
#: ../includes/ot-functions-admin.php:2447
|
561 |
+
#: ../includes/ot-functions-docs-page.php:265
|
562 |
+
msgid "Sidebar Select"
|
563 |
+
msgstr ""
|
564 |
+
|
565 |
+
#: ../includes/ot-functions-admin.php:2448
|
566 |
+
#: ../includes/ot-functions-docs-page.php:269
|
567 |
+
msgid "Slider"
|
568 |
+
msgstr ""
|
569 |
+
|
570 |
+
#: ../includes/ot-functions-admin.php:2449
|
571 |
+
#: ../includes/ot-functions-docs-page.php:272
|
572 |
+
msgid "Social Links"
|
573 |
+
msgstr ""
|
574 |
+
|
575 |
+
#: ../includes/ot-functions-admin.php:2450
|
576 |
+
#: ../includes/ot-functions-docs-page.php:275
|
577 |
+
msgid "Spacing"
|
578 |
+
msgstr ""
|
579 |
+
|
580 |
+
#: ../includes/ot-functions-admin.php:2451
|
581 |
+
#: ../includes/ot-functions-docs-page.php:278
|
582 |
+
msgid "Tab"
|
583 |
+
msgstr ""
|
584 |
+
|
585 |
+
#: ../includes/ot-functions-admin.php:2452
|
586 |
+
#: ../includes/ot-functions-docs-page.php:281
|
587 |
+
msgid "Tag Checkbox"
|
588 |
+
msgstr ""
|
589 |
+
|
590 |
+
#: ../includes/ot-functions-admin.php:2453
|
591 |
+
#: ../includes/ot-functions-docs-page.php:284
|
592 |
+
msgid "Tag Select"
|
593 |
+
msgstr ""
|
594 |
+
|
595 |
+
#: ../includes/ot-functions-admin.php:2454
|
596 |
+
#: ../includes/ot-functions-docs-page.php:287
|
597 |
+
msgid "Taxonomy Checkbox"
|
598 |
+
msgstr ""
|
599 |
+
|
600 |
+
#: ../includes/ot-functions-admin.php:2455
|
601 |
+
#: ../includes/ot-functions-docs-page.php:290
|
602 |
+
msgid "Taxonomy Select"
|
603 |
msgstr ""
|
604 |
|
605 |
+
#: ../includes/ot-functions-admin.php:2456
|
606 |
+
#: ../includes/ot-functions-docs-page.php:293
|
607 |
+
msgid "Text"
|
608 |
msgstr ""
|
609 |
|
610 |
+
#: ../includes/ot-functions-admin.php:2457
|
611 |
+
#: ../includes/ot-functions-docs-page.php:296
|
612 |
+
msgid "Textarea"
|
613 |
msgstr ""
|
614 |
|
615 |
+
#: ../includes/ot-functions-admin.php:2458
|
616 |
+
#: ../includes/ot-functions-docs-page.php:355
|
617 |
+
msgid "Textarea Simple"
|
618 |
msgstr ""
|
619 |
|
620 |
+
#: ../includes/ot-functions-admin.php:2459
|
621 |
+
#: ../includes/ot-functions-docs-page.php:371
|
622 |
+
msgid "Textblock"
|
623 |
msgstr ""
|
624 |
|
625 |
+
#: ../includes/ot-functions-admin.php:2460
|
626 |
+
#: ../includes/ot-functions-docs-page.php:374
|
627 |
+
msgid "Textblock Titled"
|
628 |
msgstr ""
|
629 |
|
630 |
+
#: ../includes/ot-functions-admin.php:2461
|
631 |
+
#: ../includes/ot-functions-docs-page.php:377
|
632 |
+
msgid "Typography"
|
633 |
msgstr ""
|
634 |
|
635 |
+
#: ../includes/ot-functions-admin.php:2462
|
636 |
+
#: ../includes/ot-functions-docs-page.php:397
|
637 |
+
msgid "Upload"
|
638 |
msgstr ""
|
639 |
|
640 |
+
#: ../includes/ot-functions-admin.php:3192
|
641 |
msgid "Left Sidebar"
|
642 |
msgstr ""
|
643 |
|
644 |
+
#: ../includes/ot-functions-admin.php:3197
|
645 |
msgid "Right Sidebar"
|
646 |
msgstr ""
|
647 |
|
648 |
+
#: ../includes/ot-functions-admin.php:3202
|
649 |
msgid "Full Width (no sidebar)"
|
650 |
msgstr ""
|
651 |
|
652 |
+
#: ../includes/ot-functions-admin.php:3207
|
653 |
msgid "Dual Sidebar"
|
654 |
msgstr ""
|
655 |
|
656 |
+
#: ../includes/ot-functions-admin.php:3212
|
657 |
msgid "Left Dual Sidebar"
|
658 |
msgstr ""
|
659 |
|
660 |
+
#: ../includes/ot-functions-admin.php:3217
|
661 |
msgid "Right Dual Sidebar"
|
662 |
msgstr ""
|
663 |
|
664 |
+
#: ../includes/ot-functions-admin.php:3258
|
665 |
+
#: ../includes/ot-functions-admin.php:3314
|
666 |
+
#: ../includes/ot-functions-admin.php:5446
|
667 |
msgid "Link"
|
668 |
msgstr ""
|
669 |
|
670 |
+
#: ../includes/ot-functions-admin.php:3269
|
671 |
+
#: ../includes/ot-functions-admin.php:3320
|
672 |
#: ../includes/ot-functions-docs-page.php:43
|
673 |
+
#: ../includes/ot-functions-docs-page.php:428
|
674 |
+
#: ../includes/ot-functions-docs-page.php:478
|
675 |
msgid "Description"
|
676 |
msgstr ""
|
677 |
|
678 |
+
#: ../includes/ot-functions-admin.php:3384
|
679 |
msgid "Name"
|
680 |
msgstr ""
|
681 |
|
682 |
+
#: ../includes/ot-functions-admin.php:3385
|
683 |
msgid "Enter the name of the social website."
|
684 |
msgstr ""
|
685 |
|
686 |
+
#: ../includes/ot-functions-admin.php:3393
|
687 |
msgid "Enter the text shown in the title attribute of the link."
|
688 |
msgstr ""
|
689 |
|
690 |
+
#: ../includes/ot-functions-admin.php:3399
|
691 |
#, php-format
|
692 |
msgid ""
|
693 |
"Enter a link to the profile or page on the social website. Remember to add "
|
694 |
"the %s part to the front of the link."
|
695 |
msgstr ""
|
696 |
|
697 |
+
#: ../includes/ot-functions-admin.php:3967
|
698 |
msgid "edit"
|
699 |
msgstr ""
|
700 |
|
701 |
+
#: ../includes/ot-functions-admin.php:3968
|
702 |
+
#: ../includes/ot-functions-admin.php:4036
|
703 |
+
#: ../includes/ot-functions-admin.php:4037
|
704 |
+
#: ../includes/ot-functions-admin.php:4199
|
705 |
+
#: ../includes/ot-functions-admin.php:4200
|
706 |
+
#: ../includes/ot-functions-admin.php:4265
|
707 |
+
#: ../includes/ot-functions-admin.php:4266
|
708 |
+
#: ../includes/ot-functions-admin.php:4393
|
709 |
+
#: ../includes/ot-functions-admin.php:4394
|
710 |
+
#: ../includes/ot-functions-admin.php:4546
|
711 |
+
#: ../includes/ot-functions-admin.php:4547
|
712 |
msgid "Edit"
|
713 |
msgstr ""
|
714 |
|
715 |
+
#: ../includes/ot-functions-admin.php:3970
|
716 |
+
#: ../includes/ot-functions-admin.php:3971
|
717 |
+
#: ../includes/ot-functions-admin.php:4039
|
718 |
+
#: ../includes/ot-functions-admin.php:4040
|
719 |
+
#: ../includes/ot-functions-admin.php:4202
|
720 |
+
#: ../includes/ot-functions-admin.php:4203
|
721 |
+
#: ../includes/ot-functions-admin.php:4268
|
722 |
+
#: ../includes/ot-functions-admin.php:4269
|
723 |
+
#: ../includes/ot-functions-admin.php:4327
|
724 |
+
#: ../includes/ot-functions-admin.php:4328
|
725 |
+
#: ../includes/ot-functions-admin.php:4396
|
726 |
+
#: ../includes/ot-functions-admin.php:4397
|
727 |
+
#: ../includes/ot-functions-admin.php:4549
|
728 |
+
#: ../includes/ot-functions-admin.php:4550
|
729 |
msgid "Delete"
|
730 |
msgstr ""
|
731 |
|
732 |
+
#: ../includes/ot-functions-admin.php:3977
|
733 |
msgid ""
|
734 |
"<strong>Section Title</strong>: Displayed as a menu item on the Theme "
|
735 |
"Options page."
|
736 |
msgstr ""
|
737 |
|
738 |
+
#: ../includes/ot-functions-admin.php:3985
|
739 |
msgid ""
|
740 |
"<strong>Section ID</strong>: A unique lower case alphanumeric string, "
|
741 |
"underscores allowed."
|
742 |
msgstr ""
|
743 |
|
744 |
+
#: ../includes/ot-functions-admin.php:4046
|
745 |
msgid ""
|
746 |
"<strong>Label</strong>: Displayed as the label of a form element on the "
|
747 |
"Theme Options page."
|
748 |
msgstr ""
|
749 |
|
750 |
+
#: ../includes/ot-functions-admin.php:4054
|
751 |
+
#: ../includes/ot-functions-admin.php:4283
|
752 |
msgid ""
|
753 |
"<strong>ID</strong>: A unique lower case alphanumeric string, underscores "
|
754 |
"allowed."
|
755 |
msgstr ""
|
756 |
|
757 |
+
#: ../includes/ot-functions-admin.php:4062
|
758 |
msgid ""
|
759 |
"<strong>Type</strong>: Choose one of the available option types from the "
|
760 |
"dropdown."
|
761 |
msgstr ""
|
762 |
|
763 |
+
#: ../includes/ot-functions-admin.php:4073
|
764 |
msgid ""
|
765 |
"<strong>Description</strong>: Enter a detailed description for the users to "
|
766 |
"read on the Theme Options page, HTML is allowed. This is also where you "
|
767 |
"enter content for both the Textblock & Textblock Titled option types."
|
768 |
msgstr ""
|
769 |
|
770 |
+
#: ../includes/ot-functions-admin.php:4081
|
771 |
msgid ""
|
772 |
"<strong>Choices</strong>: This will only affect the following option types: "
|
773 |
"Checkbox, Radio, Select & Select Image."
|
774 |
msgstr ""
|
775 |
|
776 |
+
#: ../includes/ot-functions-admin.php:4086
|
777 |
msgid "Add Choice"
|
778 |
msgstr ""
|
779 |
|
780 |
+
#: ../includes/ot-functions-admin.php:4092
|
781 |
msgid ""
|
782 |
"<strong>Settings</strong>: This will only affect the List Item option type."
|
783 |
msgstr ""
|
784 |
|
785 |
+
#: ../includes/ot-functions-admin.php:4097
|
786 |
#: ../includes/ot-functions-settings-page.php:93
|
787 |
msgid "Add Setting"
|
788 |
msgstr ""
|
789 |
|
790 |
+
#: ../includes/ot-functions-admin.php:4103
|
791 |
msgid ""
|
792 |
"<strong>Standard</strong>: Setting the standard value for your option only "
|
793 |
"works for some option types. Read the <code>OptionTree->Documentation</code> "
|
794 |
"for more information on which ones."
|
795 |
msgstr ""
|
796 |
|
797 |
+
#: ../includes/ot-functions-admin.php:4111
|
798 |
msgid ""
|
799 |
"<strong>Rows</strong>: Enter a numeric value for the number of rows in your "
|
800 |
"textarea. This will only affect the following option types: CSS, Textarea, & "
|
801 |
"Textarea Simple."
|
802 |
msgstr ""
|
803 |
|
804 |
+
#: ../includes/ot-functions-admin.php:4119
|
805 |
msgid ""
|
806 |
"<strong>Post Type</strong>: Add a comma separated list of post type like "
|
807 |
"'post,page'. This will only affect the following option types: Custom Post "
|
808 |
"Type Checkbox, & Custom Post Type Select."
|
809 |
msgstr ""
|
810 |
|
811 |
+
#: ../includes/ot-functions-admin.php:4127
|
812 |
msgid ""
|
813 |
"<strong>Taxonomy</strong>: Add a comma separated list of any registered "
|
814 |
"taxonomy like 'category,post_tag'. This will only affect the following "
|
815 |
"option types: Taxonomy Checkbox, & Taxonomy Select."
|
816 |
msgstr ""
|
817 |
|
818 |
+
#: ../includes/ot-functions-admin.php:4135
|
819 |
msgid ""
|
820 |
"<strong>Min, Max, & Step</strong>: Add a comma separated list of options in "
|
821 |
"the following format <code>0,100,1</code> (slide from <code>0-100</code> in "
|
824 |
"type."
|
825 |
msgstr ""
|
826 |
|
827 |
+
#: ../includes/ot-functions-admin.php:4143
|
828 |
msgid "<strong>CSS Class</strong>: Add and optional class to this option type."
|
829 |
msgstr ""
|
830 |
|
831 |
+
#: ../includes/ot-functions-admin.php:4151
|
832 |
#, php-format
|
833 |
msgid ""
|
834 |
"<strong>Condition</strong>: Add a comma separated list (no spaces) of "
|
837 |
"placeholder for your condition, which can be in the form of %s."
|
838 |
msgstr ""
|
839 |
|
840 |
+
#: ../includes/ot-functions-admin.php:4159
|
841 |
msgid ""
|
842 |
"<strong>Operator</strong>: Choose the logical operator to compute the result "
|
843 |
"of the conditions."
|
844 |
msgstr ""
|
845 |
|
846 |
+
#: ../includes/ot-functions-admin.php:4162
|
847 |
+
#: ../includes/ot-functions-docs-page.php:111
|
848 |
+
#: ../includes/ot-functions-docs-page.php:378
|
849 |
+
msgid "and"
|
850 |
+
msgstr ""
|
851 |
+
|
852 |
+
#: ../includes/ot-functions-admin.php:4163
|
853 |
msgid "or"
|
854 |
msgstr ""
|
855 |
|
856 |
+
#: ../includes/ot-functions-admin.php:4209
|
857 |
#: ../includes/ot-functions-docs-page.php:29
|
858 |
msgid "Label"
|
859 |
msgstr ""
|
860 |
|
861 |
+
#: ../includes/ot-functions-admin.php:4219
|
862 |
msgid "Value"
|
863 |
msgstr ""
|
864 |
|
865 |
+
#: ../includes/ot-functions-admin.php:4229
|
866 |
msgid "Image Source (Radio Image only)"
|
867 |
msgstr ""
|
868 |
|
869 |
+
#: ../includes/ot-functions-admin.php:4275
|
870 |
msgid ""
|
871 |
"<strong>Title</strong>: Displayed as a contextual help menu item on the "
|
872 |
"Theme Options page."
|
873 |
msgstr ""
|
874 |
|
875 |
+
#: ../includes/ot-functions-admin.php:4291
|
876 |
msgid ""
|
877 |
"<strong>Content</strong>: Enter the HTML content about this contextual help "
|
878 |
"item displayed on the Theme Option page for end users to read."
|
879 |
msgstr ""
|
880 |
|
881 |
+
#: ../includes/ot-functions-admin.php:4322
|
882 |
msgid "Layout"
|
883 |
msgstr ""
|
884 |
|
885 |
+
#: ../includes/ot-functions-admin.php:4324
|
886 |
+
#: ../includes/ot-functions-admin.php:4325
|
887 |
msgid "Activate"
|
888 |
msgstr ""
|
889 |
|
890 |
+
#: ../includes/ot-functions-admin.php:4361 ../includes/ot-meta-box-api.php:223
|
891 |
+
#: ../includes/ot-settings-api.php:610
|
892 |
msgid "Title"
|
893 |
msgstr ""
|
894 |
|
895 |
+
#: ../includes/ot-functions-admin.php:4701
|
896 |
msgid "New Layout"
|
897 |
msgstr ""
|
898 |
|
899 |
+
#: ../includes/ot-functions-admin.php:5455
|
900 |
msgid "Link URL"
|
901 |
msgstr ""
|
902 |
|
903 |
+
#: ../includes/ot-functions-admin.php:5462
|
904 |
msgid "Link Title"
|
905 |
msgstr ""
|
906 |
|
907 |
+
#: ../includes/ot-functions-admin.php:5492
|
908 |
msgid "Quote"
|
909 |
msgstr ""
|
910 |
|
911 |
+
#: ../includes/ot-functions-admin.php:5501
|
912 |
msgid "Source Name (ex. author, singer, actor)"
|
913 |
msgstr ""
|
914 |
|
915 |
+
#: ../includes/ot-functions-admin.php:5508
|
916 |
msgid "Source URL"
|
917 |
msgstr ""
|
918 |
|
919 |
+
#: ../includes/ot-functions-admin.php:5515
|
920 |
msgid "Source Title (ex. book, song, movie)"
|
921 |
msgstr ""
|
922 |
|
923 |
+
#: ../includes/ot-functions-admin.php:5522
|
924 |
msgid "Source Date"
|
925 |
msgstr ""
|
926 |
|
927 |
+
#: ../includes/ot-functions-admin.php:5552
|
928 |
msgid "Video"
|
929 |
msgstr ""
|
930 |
|
931 |
+
#: ../includes/ot-functions-admin.php:5561
|
932 |
#, php-format
|
933 |
msgid ""
|
934 |
"Embed video from services like Youtube, Vimeo, or Hulu. You can find a list "
|
936 |
"built-in %2$s shortcode."
|
937 |
msgstr ""
|
938 |
|
939 |
+
#: ../includes/ot-functions-admin.php:5561
|
940 |
+
#: ../includes/ot-functions-admin.php:5600
|
941 |
msgid "Wordpress Codex"
|
942 |
msgstr ""
|
943 |
|
944 |
+
#: ../includes/ot-functions-admin.php:5591
|
945 |
msgid "Audio"
|
946 |
msgstr ""
|
947 |
|
948 |
+
#: ../includes/ot-functions-admin.php:5600
|
949 |
#, php-format
|
950 |
msgid ""
|
951 |
"Embed audio from services like SoundCloud and Rdio. You can find a list of "
|
1042 |
"not seem to return results properly and is something I plan on looking into."
|
1043 |
msgstr ""
|
1044 |
|
1045 |
+
#: ../includes/ot-functions-docs-page.php:67
|
1046 |
+
msgid "Taxonomy"
|
1047 |
+
msgstr ""
|
1048 |
+
|
1049 |
+
#: ../includes/ot-functions-docs-page.php:68
|
1050 |
+
msgid ""
|
1051 |
+
"Add a comma separated list of any registered taxonomy like <code>category,"
|
1052 |
+
"post_tag</code>. This will only affect the following option types: Taxonomy "
|
1053 |
+
"Checkbox, & Taxonomy Select."
|
1054 |
+
msgstr ""
|
1055 |
+
|
1056 |
+
#: ../includes/ot-functions-docs-page.php:70
|
1057 |
+
msgid "Min, Max, & Step"
|
1058 |
+
msgstr ""
|
1059 |
+
|
1060 |
+
#: ../includes/ot-functions-docs-page.php:71
|
1061 |
+
msgid ""
|
1062 |
+
"Add a comma separated list of options in the following format <code>0,100,1</"
|
1063 |
+
"code> (slide from <code>0-100</code> in intervals of <code>1</code>). The "
|
1064 |
+
"three values represent the minimum, maximum, and step options and will only "
|
1065 |
+
"affect the Numeric Slider option type."
|
1066 |
+
msgstr ""
|
1067 |
+
|
1068 |
+
#: ../includes/ot-functions-docs-page.php:73
|
1069 |
+
msgid "CSS Class"
|
1070 |
+
msgstr ""
|
1071 |
+
|
1072 |
+
#: ../includes/ot-functions-docs-page.php:74
|
1073 |
+
msgid "Add and optional class to any option type."
|
1074 |
+
msgstr ""
|
1075 |
+
|
1076 |
+
#: ../includes/ot-functions-docs-page.php:76
|
1077 |
+
msgid "Condition"
|
1078 |
+
msgstr ""
|
1079 |
+
|
1080 |
+
#: ../includes/ot-functions-docs-page.php:77
|
1081 |
+
#, php-format
|
1082 |
+
msgid ""
|
1083 |
+
"Add a comma separated list (no spaces) of conditions in which the field will "
|
1084 |
+
"be visible, leave this setting empty to always show the field. In these "
|
1085 |
+
"examples, %s is a placeholder for your condition, which can be in the form "
|
1086 |
+
"of %s."
|
1087 |
+
msgstr ""
|
1088 |
+
|
1089 |
+
#: ../includes/ot-functions-docs-page.php:79
|
1090 |
+
msgid "Operator"
|
1091 |
+
msgstr ""
|
1092 |
+
|
1093 |
+
#: ../includes/ot-functions-docs-page.php:80
|
1094 |
+
#, php-format
|
1095 |
+
msgid ""
|
1096 |
+
"Choose the logical operator to compute the result of the conditions. Your "
|
1097 |
+
"options are %s and %s."
|
1098 |
+
msgstr ""
|
1099 |
+
|
1100 |
+
#: ../includes/ot-functions-docs-page.php:111
|
1101 |
+
#, php-format
|
1102 |
+
msgid ""
|
1103 |
+
"The Background option type is for adding background styles to your theme "
|
1104 |
+
"either dynamically via the CSS option type below or manually with %s. The "
|
1105 |
+
"Background option type has filters that allow you to remove fields or change "
|
1106 |
+
"the defaults. For example, you can filter %s to remove unwanted fields from "
|
1107 |
+
"all Background options or an individual one. You can also filter %s. These "
|
1108 |
+
"filters allow you to fine tune the select lists for your specific needs."
|
1109 |
+
msgstr ""
|
1110 |
+
|
1111 |
+
#: ../includes/ot-functions-docs-page.php:114
|
1112 |
+
#, php-format
|
1113 |
+
msgid ""
|
1114 |
+
"The Border option type is used to set width, unit, style, and color values. "
|
1115 |
+
"The text input excepts a numerical value and the unit select lets you choose "
|
1116 |
+
"the unit of measurement to add to that value. Currently the default units "
|
1117 |
+
"are %s, %s, %s, and %s. However, you can change them with the %s filter. The "
|
1118 |
+
"style select lets you choose the border style. The default styles are %s, "
|
1119 |
+
"%s, %s, %s, %s, %s, %s, and %s. However, you can change them with the %s "
|
1120 |
+
"filter. The colorpicker saves a hexadecimal color code."
|
1121 |
+
msgstr ""
|
1122 |
+
|
1123 |
+
#: ../includes/ot-functions-docs-page.php:117
|
1124 |
+
#, php-format
|
1125 |
+
msgid ""
|
1126 |
+
"The Box Shadow option type is used to set %s, %s, %s, %s, %s, and %s values."
|
1127 |
+
msgstr ""
|
1128 |
+
|
1129 |
+
#: ../includes/ot-functions-docs-page.php:120
|
1130 |
+
msgid ""
|
1131 |
+
"The Category Checkbox option type displays a list of category IDs. It allows "
|
1132 |
+
"the user to check multiple category IDs and will return that value as an "
|
1133 |
+
"array for use in a custom function or loop."
|
1134 |
+
msgstr ""
|
1135 |
+
|
1136 |
+
#: ../includes/ot-functions-docs-page.php:123
|
1137 |
+
msgid ""
|
1138 |
+
"The Category Select option type displays a list of category IDs. It allows "
|
1139 |
+
"the user to select only one category ID and will return that value for use "
|
1140 |
+
"in a custom function or loop."
|
1141 |
+
msgstr ""
|
1142 |
+
|
1143 |
+
#: ../includes/ot-functions-docs-page.php:126
|
1144 |
+
msgid ""
|
1145 |
+
"The Checkbox option type displays a group of choices. It allows the user to "
|
1146 |
+
"check multiple choices and will return that value as an array for use in a "
|
1147 |
+
"custom function or loop."
|
1148 |
+
msgstr ""
|
1149 |
+
|
1150 |
+
#: ../includes/ot-functions-docs-page.php:129
|
1151 |
+
msgid ""
|
1152 |
+
"The Colorpicker option type saves a hexadecimal color code for use in CSS. "
|
1153 |
+
"Use it to modify the color of something in your theme."
|
1154 |
+
msgstr ""
|
1155 |
+
|
1156 |
+
#: ../includes/ot-functions-docs-page.php:132
|
1157 |
+
#, php-format
|
1158 |
+
msgid ""
|
1159 |
+
"The Colorpicker Opacity option type saves a hexadecimal color code with an "
|
1160 |
+
"opacity value from %s to %s in increments of %s. Though the value is saved "
|
1161 |
+
"as hexadecimal, if used within the CSS option type the color and opacity "
|
1162 |
+
"values will be converted into a valid RGBA CSS value."
|
1163 |
+
msgstr ""
|
1164 |
+
|
1165 |
+
#: ../includes/ot-functions-docs-page.php:135
|
1166 |
+
#, php-format
|
1167 |
+
msgid ""
|
1168 |
+
"The CSS option type is a textarea that when used properly can add dynamic "
|
1169 |
+
"CSS to your theme from within OptionTree. Unfortunately, due server "
|
1170 |
+
"limitations you will need to create a file named %s at the root level of "
|
1171 |
+
"your theme and change permissions using %s so the server can write to the "
|
1172 |
+
"file. I have had the most success setting this single file to %s but feel "
|
1173 |
+
"free to play around with permissions until everything is working. A good "
|
1174 |
+
"starting point is %s. When the server can save to the file, CSS will "
|
1175 |
+
"automatically be updated when you save your Theme Options."
|
1176 |
+
msgstr ""
|
1177 |
+
|
1178 |
+
#: ../includes/ot-functions-docs-page.php:137
|
1179 |
+
#, php-format
|
1180 |
+
msgid ""
|
1181 |
+
"This example assumes you have an option with the ID of %1$s. Which means "
|
1182 |
+
"this option will automatically insert the value of %1$s into the %2$s when "
|
1183 |
+
"the Theme Options are saved."
|
1184 |
+
msgstr ""
|
1185 |
+
|
1186 |
+
#: ../includes/ot-functions-docs-page.php:139
|
1187 |
+
msgid "Input"
|
1188 |
+
msgstr ""
|
1189 |
+
|
1190 |
+
#: ../includes/ot-functions-docs-page.php:145
|
1191 |
+
msgid "Output"
|
1192 |
+
msgstr ""
|
1193 |
+
|
1194 |
+
#: ../includes/ot-functions-docs-page.php:154
|
1195 |
+
#, php-format
|
1196 |
+
msgid ""
|
1197 |
+
"The Custom Post Type Select option type displays a list of IDs from any "
|
1198 |
+
"available WordPress post type or custom post type. It allows the user to "
|
1199 |
+
"check multiple post IDs for use in a custom function or loop. Requires at "
|
1200 |
+
"least one valid %1$s in the %1$s field."
|
1201 |
+
msgstr ""
|
1202 |
+
|
1203 |
+
#: ../includes/ot-functions-docs-page.php:157
|
1204 |
+
#, php-format
|
1205 |
+
msgid ""
|
1206 |
+
"The Custom Post Type Select option type displays a list of IDs from any "
|
1207 |
+
"available WordPress post type or custom post type. It will return a single "
|
1208 |
+
"post ID for use in a custom function or loop. Requires at least one valid "
|
1209 |
+
"%1$s in the %1$s field."
|
1210 |
+
msgstr ""
|
1211 |
+
|
1212 |
+
#: ../includes/ot-functions-docs-page.php:160
|
1213 |
+
msgid ""
|
1214 |
+
"The Date Picker option type is tied to a standard form input field which "
|
1215 |
+
"displays a calendar pop-up that allow the user to pick any date when focus "
|
1216 |
+
"is given to the input field. The returned value is a date formatted string."
|
1217 |
+
msgstr ""
|
1218 |
+
|
1219 |
+
#: ../includes/ot-functions-docs-page.php:163
|
1220 |
+
msgid ""
|
1221 |
+
"The Date Time Picker option type is tied to a standard form input field "
|
1222 |
+
"which displays a calendar pop-up that allow the user to pick any date and "
|
1223 |
+
"time when focus is given to the input field. The returned value is a date "
|
1224 |
+
"and time formatted string."
|
1225 |
+
msgstr ""
|
1226 |
+
|
1227 |
+
#: ../includes/ot-functions-docs-page.php:166
|
1228 |
+
#, php-format
|
1229 |
+
msgid ""
|
1230 |
+
"The Dimension option type is used to set width and height values. The text "
|
1231 |
+
"inputs except numerical values and the select lets you choose the unit of "
|
1232 |
+
"measurement to add to that value. Currently the default units are %s, %s, "
|
1233 |
+
"%s, and %s. However, you can change them with the %s filter."
|
1234 |
+
msgstr ""
|
1235 |
+
|
1236 |
+
#: ../includes/ot-functions-docs-page.php:169
|
1237 |
+
msgid ""
|
1238 |
+
"The Gallery option type saves a comma separated list of image attachment "
|
1239 |
+
"IDs. You will need to create a front-end function to display the images in "
|
1240 |
+
"your theme."
|
1241 |
+
msgstr ""
|
1242 |
+
|
1243 |
+
#: ../includes/ot-functions-docs-page.php:172
|
1244 |
+
#, php-format
|
1245 |
+
msgid ""
|
1246 |
+
"The Google Fonts option type will dynamically enqueue any number of Google "
|
1247 |
+
"Web Fonts into the document %1$s. As well, once the option has been saved "
|
1248 |
+
"each font family will automatically be inserted into the %2$s array for the "
|
1249 |
+
"Typography option type. You can further modify the font stack by using the "
|
1250 |
+
"%3$s filter, which is passed the %4$s, %5$s, and %6$s parameters. The %6$s "
|
1251 |
+
"parameter is being passed from %7$s, so it will be the ID of a Typography "
|
1252 |
+
"option type. This will allow you to add additional web safe fonts to "
|
1253 |
+
"individual font families on an as-need basis."
|
1254 |
+
msgstr ""
|
1255 |
+
|
1256 |
+
#: ../includes/ot-functions-docs-page.php:175
|
1257 |
+
#, php-format
|
1258 |
+
msgid ""
|
1259 |
+
"The JavaScript option type is a textarea that uses the %s code editor to "
|
1260 |
+
"highlight your JavaScript and display errors as you type."
|
1261 |
+
msgstr ""
|
1262 |
+
|
1263 |
+
#: ../includes/ot-functions-docs-page.php:178
|
1264 |
+
msgid "The Link Color option type is used to set all link color states."
|
1265 |
+
msgstr ""
|
1266 |
+
|
1267 |
+
#: ../includes/ot-functions-docs-page.php:181
|
1268 |
+
msgid ""
|
1269 |
+
"The List Item option type replaced the Slider option type and allows for a "
|
1270 |
+
"great deal of customization. You can add settings to the List Item and those "
|
1271 |
+
"settings will be displayed to the user when they add a new List Item. "
|
1272 |
+
"Typical use is for creating sliding content or blocks of code for custom "
|
1273 |
+
"layouts."
|
1274 |
+
msgstr ""
|
1275 |
+
|
1276 |
+
#: ../includes/ot-functions-docs-page.php:184
|
1277 |
+
#, php-format
|
1278 |
+
msgid ""
|
1279 |
+
"The Measurement option type is a mix of input and select fields. The text "
|
1280 |
+
"input excepts a value and the select lets you choose the unit of measurement "
|
1281 |
+
"to add to that value. Currently the default units are %s, %s, %s, and %s. "
|
1282 |
+
"However, you can change them with the %s filter."
|
1283 |
+
msgstr ""
|
1284 |
+
|
1285 |
+
#: ../includes/ot-functions-docs-page.php:186
|
1286 |
+
#, php-format
|
1287 |
+
msgid ""
|
1288 |
+
"Example filter to add new units to the Measurement option type. Added to %s."
|
1289 |
+
msgstr ""
|
1290 |
+
|
1291 |
+
#: ../includes/ot-functions-docs-page.php:199
|
1292 |
+
msgid ""
|
1293 |
+
"Example filter to completely change the units in the Measurement option "
|
1294 |
+
"type. Added to <code>functions.php</code>."
|
1295 |
+
msgstr ""
|
1296 |
+
|
1297 |
+
#: ../includes/ot-functions-docs-page.php:215
|
1298 |
+
msgid ""
|
1299 |
+
"The Numeric Slider option type displays a jQuery UI slider. It will return a "
|
1300 |
+
"single numerical value for use in a custom function or loop."
|
1301 |
+
msgstr ""
|
1302 |
+
|
1303 |
+
#: ../includes/ot-functions-docs-page.php:218
|
1304 |
+
#, php-format
|
1305 |
+
msgid ""
|
1306 |
+
"The On/Off option type displays a simple switch that can be used to turn "
|
1307 |
+
"things on or off. The saved return value is either %s or %s."
|
1308 |
+
msgstr ""
|
1309 |
+
|
1310 |
+
#: ../includes/ot-functions-docs-page.php:221
|
1311 |
+
msgid ""
|
1312 |
+
"The Page Checkbox option type displays a list of page IDs. It allows the "
|
1313 |
+
"user to check multiple page IDs for use in a custom function or loop."
|
1314 |
+
msgstr ""
|
1315 |
+
|
1316 |
+
#: ../includes/ot-functions-docs-page.php:224
|
1317 |
+
msgid ""
|
1318 |
+
"The Page Select option type displays a list of page IDs. It will return a "
|
1319 |
+
"single page ID for use in a custom function or loop."
|
1320 |
+
msgstr ""
|
1321 |
+
|
1322 |
+
#: ../includes/ot-functions-docs-page.php:227
|
1323 |
+
msgid ""
|
1324 |
+
"The Post Checkbox option type displays a list of post IDs. It allows the "
|
1325 |
+
"user to check multiple post IDs for use in a custom function or loop."
|
1326 |
msgstr ""
|
1327 |
|
1328 |
+
#: ../includes/ot-functions-docs-page.php:230
|
1329 |
msgid ""
|
1330 |
+
"The Post Select option type displays a list of post IDs. It will return a "
|
1331 |
+
"single post ID for use in a custom function or loop."
|
|
|
1332 |
msgstr ""
|
1333 |
|
1334 |
+
#: ../includes/ot-functions-docs-page.php:233
|
1335 |
+
msgid ""
|
1336 |
+
"The Radio option type displays a group of choices. It allows the user to "
|
1337 |
+
"choose one and will return that value as a string for use in a custom "
|
1338 |
+
"function or loop."
|
1339 |
msgstr ""
|
1340 |
|
1341 |
+
#: ../includes/ot-functions-docs-page.php:236
|
1342 |
+
#, php-format
|
1343 |
msgid ""
|
1344 |
+
"the Radio Images option type is primarily used for layouts. However, you can "
|
1345 |
+
"filter the image list using %s. As well, you can add your own custom images "
|
1346 |
+
"using the choices array."
|
|
|
1347 |
msgstr ""
|
1348 |
|
1349 |
+
#: ../includes/ot-functions-docs-page.php:238
|
1350 |
+
msgid ""
|
1351 |
+
"This example executes the <code>ot_radio_images</code> filter on layout "
|
1352 |
+
"images attached to the <code>my_radio_images</code> field. Added to "
|
1353 |
+
"<code>functions.php</code>."
|
1354 |
msgstr ""
|
1355 |
|
1356 |
+
#: ../includes/ot-functions-docs-page.php:263
|
1357 |
+
msgid ""
|
1358 |
+
"The Select option type is used to list anything you want that would be "
|
1359 |
+
"chosen from a select list."
|
1360 |
msgstr ""
|
1361 |
|
1362 |
+
#: ../includes/ot-functions-docs-page.php:266
|
1363 |
+
#, php-format
|
1364 |
+
msgid ""
|
1365 |
+
"This option type makes it possible for users to select a WordPress "
|
1366 |
+
"registered sidebar to use on a specific area. By using the two provided "
|
1367 |
+
"filters, %s, and %s we can be selective about which sidebars are available "
|
1368 |
+
"on a specific content area."
|
1369 |
msgstr ""
|
1370 |
|
1371 |
+
#: ../includes/ot-functions-docs-page.php:267
|
1372 |
#, php-format
|
1373 |
msgid ""
|
1374 |
+
"For example, if we create a WordPress theme that provides the ability to "
|
1375 |
+
"change the Blog Sidebar and we don't want to have the footer sidebars "
|
1376 |
+
"available on this area, we can unset those sidebars either manually or by "
|
1377 |
+
"using a regular expression if we have a common name like %s."
|
1378 |
msgstr ""
|
1379 |
|
1380 |
+
#: ../includes/ot-functions-docs-page.php:270
|
1381 |
+
msgid ""
|
1382 |
+
"The Slider option type is technically deprecated. Use the List Item option "
|
1383 |
+
"type instead, as it's infinitely more customizable. Typical use is for "
|
1384 |
+
"creating sliding image content."
|
1385 |
msgstr ""
|
1386 |
|
1387 |
+
#: ../includes/ot-functions-docs-page.php:273
|
1388 |
#, php-format
|
1389 |
msgid ""
|
1390 |
+
"The Social Links option type utilizes a drag & drop interface to create a "
|
1391 |
+
"list of social links. There are a few filters that make extending this "
|
1392 |
+
"option type easy. You can set the %s filter to %s and turn off loading "
|
1393 |
+
"default values. Use the %s filter to change the default values that are "
|
1394 |
+
"loaded. To filter the settings array use the %s filter."
|
1395 |
msgstr ""
|
1396 |
|
1397 |
+
#: ../includes/ot-functions-docs-page.php:276
|
1398 |
+
#, php-format
|
1399 |
+
msgid ""
|
1400 |
+
"The Spacing option type is used to set spacing values such as padding or "
|
1401 |
+
"margin in the form of top, right, bottom, and left. The text inputs except "
|
1402 |
+
"numerical values and the select lets you choose the unit of measurement to "
|
1403 |
+
"add to that value. Currently the default units are %s, %s, %s, and %s. "
|
1404 |
+
"However, you can change them with the %s filter."
|
1405 |
msgstr ""
|
1406 |
|
1407 |
+
#: ../includes/ot-functions-docs-page.php:279
|
1408 |
+
msgid ""
|
1409 |
+
"The Tab option type will break a section or metabox into tabbed content."
|
1410 |
msgstr ""
|
1411 |
|
1412 |
+
#: ../includes/ot-functions-docs-page.php:282
|
1413 |
msgid ""
|
1414 |
+
"The Tag Checkbox option type displays a list of tag IDs. It allows the user "
|
1415 |
+
"to check multiple tag IDs and will return that value as an array for use in "
|
1416 |
+
"a custom function or loop."
|
|
|
|
|
1417 |
msgstr ""
|
1418 |
|
1419 |
+
#: ../includes/ot-functions-docs-page.php:285
|
|
|
1420 |
msgid ""
|
1421 |
+
"The Tag Select option type displays a list of tag IDs. It allows the user to "
|
1422 |
+
"select only one tag ID and will return that value for use in a custom "
|
1423 |
+
"function or loop."
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: ../includes/ot-functions-docs-page.php:288
|
1427 |
msgid ""
|
1428 |
+
"The Taxonomy Checkbox option type displays a list of taxonomy IDs. It allows "
|
1429 |
+
"the user to check multiple taxonomy IDs and will return that value as an "
|
1430 |
+
"array for use in a custom function or loop."
|
1431 |
msgstr ""
|
1432 |
|
1433 |
+
#: ../includes/ot-functions-docs-page.php:291
|
1434 |
msgid ""
|
1435 |
+
"The Taxonomy Select option type displays a list of taxonomy IDs. It allows "
|
1436 |
+
"the user to select only one taxonomy ID and will return that value for use "
|
1437 |
+
"in a custom function or loop."
|
1438 |
msgstr ""
|
1439 |
|
1440 |
+
#: ../includes/ot-functions-docs-page.php:294
|
1441 |
msgid ""
|
1442 |
+
"The Text option type is used to save string values. For example, any "
|
1443 |
+
"optional or required text that is of reasonably short character length."
|
|
|
1444 |
msgstr ""
|
1445 |
|
1446 |
+
#: ../includes/ot-functions-docs-page.php:297
|
1447 |
+
#, php-format
|
1448 |
msgid ""
|
1449 |
+
"The Textarea option type is a large string value used for custom code or "
|
1450 |
+
"text in the theme and has a WYSIWYG editor that can be filtered to change "
|
1451 |
+
"the how it is displayed. For example, you can filter %s, %s, %s, and %s."
|
1452 |
msgstr ""
|
1453 |
|
1454 |
+
#: ../includes/ot-functions-docs-page.php:299
|
1455 |
msgid ""
|
1456 |
"Example filters to alter the Textarea option type. Added to <code>functions."
|
1457 |
"php</code>."
|
1458 |
msgstr ""
|
1459 |
|
1460 |
+
#: ../includes/ot-functions-docs-page.php:301
|
1461 |
msgid ""
|
1462 |
"This example keeps WordPress from executing the <code>wpautop</code> filter "
|
1463 |
"on the line breaks. The default is <code>true</code> which means it wraps "
|
1464 |
"line breaks with an HTML <code>p</code> tag."
|
1465 |
msgstr ""
|
1466 |
|
1467 |
+
#: ../includes/ot-functions-docs-page.php:314
|
1468 |
msgid ""
|
1469 |
"This example keeps WordPress from executing the <code>media_buttons</code> "
|
1470 |
"filter on the textarea WYSIWYG. The default is <code>true</code> which means "
|
1471 |
"show the buttons."
|
1472 |
msgstr ""
|
1473 |
|
1474 |
+
#: ../includes/ot-functions-docs-page.php:327
|
1475 |
msgid ""
|
1476 |
"This example keeps WordPress from executing the <code>tinymce</code> filter "
|
1477 |
"on the textarea WYSIWYG. The default is <code>true</code> which means show "
|
1478 |
"the tinymce."
|
1479 |
msgstr ""
|
1480 |
|
1481 |
+
#: ../includes/ot-functions-docs-page.php:340
|
1482 |
msgid ""
|
1483 |
"This example alters the <code>quicktags</code> filter on the textarea "
|
1484 |
"WYSIWYG. The default is <code>array( 'buttons' => 'strong,em,link,block,del,"
|
1486 |
"quicktags. It also means you can filter in your own custom quicktags."
|
1487 |
msgstr ""
|
1488 |
|
1489 |
+
#: ../includes/ot-functions-docs-page.php:356
|
1490 |
+
msgid ""
|
1491 |
+
"The Textarea Simple option type is a large string value used for custom code "
|
1492 |
+
"or text in the theme. The Textarea Simple does not have a WYSIWYG editor."
|
1493 |
+
msgstr ""
|
1494 |
+
|
1495 |
+
#: ../includes/ot-functions-docs-page.php:358
|
1496 |
#, php-format
|
1497 |
msgid ""
|
1498 |
"This example tells WordPress to execute the %s filter on the line breaks. "
|
1500 |
"tag. Added to %s."
|
1501 |
msgstr ""
|
1502 |
|
1503 |
+
#: ../includes/ot-functions-docs-page.php:372
|
1504 |
+
msgid ""
|
1505 |
+
"The Textblock option type is used only on the Theme Option page. It will "
|
1506 |
+
"allow you to create & display HTML, but has no title above the text block. "
|
1507 |
+
"You can then use the Textblock to add a more detailed set of instruction on "
|
1508 |
+
"how the options are used in your theme. You would never use this in your "
|
1509 |
+
"themes template files as it does not save a value."
|
1510 |
+
msgstr ""
|
1511 |
+
|
1512 |
+
#: ../includes/ot-functions-docs-page.php:375
|
1513 |
+
msgid ""
|
1514 |
+
"The Textblock Titled option type is used only on the Theme Option page. It "
|
1515 |
+
"will allow you to create & display HTML, and has a title above the text "
|
1516 |
+
"block. You can then use the Textblock Titled to add a more detailed set of "
|
1517 |
+
"instruction on how the options are used in your theme. You would never use "
|
1518 |
+
"this in your themes template files as it does not save a value."
|
1519 |
+
msgstr ""
|
1520 |
+
|
1521 |
+
#: ../includes/ot-functions-docs-page.php:378
|
1522 |
+
#, php-format
|
1523 |
+
msgid ""
|
1524 |
+
"The Typography option type is for adding typography styles to your theme "
|
1525 |
+
"either dynamically via the CSS option type above or manually with %s. The "
|
1526 |
+
"Typography option type has filters that allow you to remove fields or change "
|
1527 |
+
"the defaults. For example, you can filter %s to remove unwanted fields from "
|
1528 |
+
"all Background options or an individual one. You can also filter %s. These "
|
1529 |
+
"filters allow you to fine tune the select lists for your specific needs."
|
1530 |
+
msgstr ""
|
1531 |
+
|
1532 |
+
#: ../includes/ot-functions-docs-page.php:380
|
1533 |
msgid ""
|
1534 |
"This example would filter <code>ot_recognized_font_families</code> to build "
|
1535 |
"your own font stack. Added to <code>functions.php</code>."
|
1536 |
msgstr ""
|
1537 |
|
1538 |
+
#: ../includes/ot-functions-docs-page.php:398
|
1539 |
+
#, php-format
|
1540 |
+
msgid ""
|
1541 |
+
"The Upload option type is used to upload any WordPress supported media. "
|
1542 |
+
"After uploading, users are required to press the \"%s\" button in order to "
|
1543 |
+
"populate the input with the URI of that media. There is one caveat of this "
|
1544 |
+
"feature. If you import the theme options and have uploaded media on one site "
|
1545 |
+
"the old URI will not reflect the URI of your new site. You will have to re-"
|
1546 |
+
"upload or %s any media to your new server and change the URIs if necessary."
|
1547 |
+
msgstr ""
|
1548 |
+
|
1549 |
+
#: ../includes/ot-functions-docs-page.php:430
|
1550 |
msgid ""
|
1551 |
"This function returns a value from the \"option_tree\" array of saved values "
|
1552 |
"or the default value supplied. The returned value would be mixed. Meaning it "
|
1553 |
"could be a string, integer, boolean, or array."
|
1554 |
msgstr ""
|
1555 |
|
1556 |
+
#: ../includes/ot-functions-docs-page.php:432
|
1557 |
+
#: ../includes/ot-functions-docs-page.php:482
|
1558 |
msgid "Usage"
|
1559 |
msgstr ""
|
1560 |
|
1561 |
+
#: ../includes/ot-functions-docs-page.php:436
|
1562 |
+
#: ../includes/ot-functions-docs-page.php:486
|
1563 |
msgid "Parameters"
|
1564 |
msgstr ""
|
1565 |
|
1566 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1567 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1568 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1569 |
msgid "string"
|
1570 |
msgstr ""
|
1571 |
|
1572 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1573 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1574 |
msgid "required"
|
1575 |
msgstr ""
|
1576 |
|
1577 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1578 |
msgid "Enter the options unique identifier."
|
1579 |
msgstr ""
|
1580 |
|
1581 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1582 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1583 |
msgid "Default:"
|
1584 |
msgstr ""
|
1585 |
|
1586 |
+
#: ../includes/ot-functions-docs-page.php:440
|
1587 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1588 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1589 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1590 |
msgid "None"
|
1591 |
msgstr ""
|
1592 |
|
1593 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1594 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1595 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1596 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1597 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1598 |
msgid "optional"
|
1599 |
msgstr ""
|
1600 |
|
1601 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1602 |
msgid ""
|
1603 |
"Enter a default return value. This is just incase the request returns null."
|
1604 |
msgstr ""
|
1605 |
|
1606 |
+
#: ../includes/ot-functions-docs-page.php:444
|
1607 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1608 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1609 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1610 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1611 |
msgid "Default"
|
1612 |
msgstr ""
|
1613 |
|
1614 |
+
#: ../includes/ot-functions-docs-page.php:474
|
1615 |
msgid ""
|
1616 |
"This function has been deprecated. That means it has been replaced by a new "
|
1617 |
"function or is no longer supported, and may be removed from future versions. "
|
1618 |
"All code that uses this function should be converted to use its replacement."
|
1619 |
msgstr ""
|
1620 |
|
1621 |
+
#: ../includes/ot-functions-docs-page.php:476
|
1622 |
msgid "Use"
|
1623 |
msgstr ""
|
1624 |
|
1625 |
+
#: ../includes/ot-functions-docs-page.php:476
|
1626 |
msgid "instead"
|
1627 |
msgstr ""
|
1628 |
|
1629 |
+
#: ../includes/ot-functions-docs-page.php:480
|
1630 |
msgid ""
|
1631 |
"This function returns, or echos if asked, a value from the \"option_tree\" "
|
1632 |
"array of saved values."
|
1633 |
msgstr ""
|
1634 |
|
1635 |
+
#: ../includes/ot-functions-docs-page.php:490
|
1636 |
msgid "Enter a unique Option Key to get a returned value or array."
|
1637 |
msgstr ""
|
1638 |
|
1639 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1640 |
msgid "array"
|
1641 |
msgstr ""
|
1642 |
|
1643 |
+
#: ../includes/ot-functions-docs-page.php:494
|
1644 |
msgid "Used to cut down on database queries in template files."
|
1645 |
msgstr ""
|
1646 |
|
1647 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1648 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1649 |
msgid "boolean"
|
1650 |
msgstr ""
|
1651 |
|
1652 |
+
#: ../includes/ot-functions-docs-page.php:498
|
1653 |
msgid "Echo the output."
|
1654 |
msgstr ""
|
1655 |
|
1656 |
+
#: ../includes/ot-functions-docs-page.php:502
|
1657 |
msgid "Used to indicate the $item_id is an array of values."
|
1658 |
msgstr ""
|
1659 |
|
1660 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1661 |
msgid "integer"
|
1662 |
msgstr ""
|
1663 |
|
1664 |
+
#: ../includes/ot-functions-docs-page.php:506
|
1665 |
msgid ""
|
1666 |
"Numeric offset key for the $item_id array, -1 will return all values (an "
|
1667 |
"array starts at 0)."
|
1668 |
msgstr ""
|
1669 |
|
1670 |
+
#: ../includes/ot-functions-docs-page.php:534
|
1671 |
msgid ""
|
1672 |
"If you're using the plugin version of OptionTree it is highly recommended to "
|
1673 |
"include a <code>function_exists</code> check in your code, as described in "
|
1677 |
"<code>ot_get_option()</code> function available."
|
1678 |
msgstr ""
|
1679 |
|
1680 |
+
#: ../includes/ot-functions-docs-page.php:536
|
1681 |
msgid "String Examples"
|
1682 |
msgstr ""
|
1683 |
|
1684 |
+
#: ../includes/ot-functions-docs-page.php:538
|
1685 |
msgid "Returns the value of <code>test_input</code>."
|
1686 |
msgstr ""
|
1687 |
|
1688 |
+
#: ../includes/ot-functions-docs-page.php:544
|
1689 |
msgid ""
|
1690 |
"Returns the value of <code>test_input</code>, but also has a default value "
|
1691 |
"if it returns empty."
|
1692 |
msgstr ""
|
1693 |
|
1694 |
+
#: ../includes/ot-functions-docs-page.php:550
|
1695 |
msgid "Array Examples"
|
1696 |
msgstr ""
|
1697 |
|
1698 |
+
#: ../includes/ot-functions-docs-page.php:552
|
1699 |
msgid ""
|
1700 |
"Assigns the value of <code>navigation_ids</code> to the variable <code>$ids</"
|
1701 |
"code>. It then echos an unordered list of links (navigation) using "
|
1702 |
"<code>wp_list_pages()</code>."
|
1703 |
msgstr ""
|
1704 |
|
1705 |
+
#: ../includes/ot-functions-docs-page.php:572
|
1706 |
msgid ""
|
1707 |
"The next two examples demonstrate how to use the <strong>Measurement</"
|
1708 |
"strong> option type. The Measurement option type is an array with two key/"
|
1710 |
"unit of measurement."
|
1711 |
msgstr ""
|
1712 |
|
1713 |
+
#: ../includes/ot-functions-docs-page.php:598
|
1714 |
msgid "This example displays a very basic slider loop."
|
1715 |
msgstr ""
|
1716 |
|
1717 |
+
#: ../includes/ot-functions-docs-page.php:643
|
1718 |
msgid "It's Super Simple"
|
1719 |
msgstr ""
|
1720 |
|
1721 |
+
#: ../includes/ot-functions-docs-page.php:645
|
1722 |
msgid ""
|
1723 |
"Layouts make your theme awesome! With theme options data that you can save/"
|
1724 |
"import/export you can package themes with different color variations, or "
|
1726 |
"a snapshot of your data as a layout."
|
1727 |
msgstr ""
|
1728 |
|
1729 |
+
#: ../includes/ot-functions-docs-page.php:647
|
1730 |
msgid ""
|
1731 |
"Once you have created all your different layouts, or theme variations, you "
|
1732 |
"can save them to a separate text file for repackaging with your theme. "
|
1735 |
"previous options data."
|
1736 |
msgstr ""
|
1737 |
|
1738 |
+
#: ../includes/ot-functions-docs-page.php:649
|
1739 |
msgid ""
|
1740 |
" Adding a layout is ridiculously easy, follow these steps and you'll be on "
|
1741 |
"your way to having a WordPress super theme."
|
1742 |
msgstr ""
|
1743 |
|
1744 |
+
#: ../includes/ot-functions-docs-page.php:651
|
1745 |
msgid "For Developers"
|
1746 |
msgstr ""
|
1747 |
|
1748 |
+
#: ../includes/ot-functions-docs-page.php:653
|
1749 |
+
#: ../includes/ot-functions-docs-page.php:682
|
1750 |
msgid "Creating a Layout"
|
1751 |
msgstr ""
|
1752 |
|
1753 |
+
#: ../includes/ot-functions-docs-page.php:655
|
1754 |
+
#: ../includes/ot-functions-docs-page.php:662
|
1755 |
+
#: ../includes/ot-functions-docs-page.php:668
|
1756 |
msgid "Go to the <code>OptionTre->Settings->Layouts</code> tab."
|
1757 |
msgstr ""
|
1758 |
|
1759 |
+
#: ../includes/ot-functions-docs-page.php:656
|
1760 |
msgid ""
|
1761 |
"Enter a name for your layout in the text field and hit \"Save Layouts\", "
|
1762 |
"you've created your first layout."
|
1763 |
msgstr ""
|
1764 |
|
1765 |
+
#: ../includes/ot-functions-docs-page.php:657
|
1766 |
+
#: ../includes/ot-functions-docs-page.php:686
|
1767 |
msgid "Adding a new layout is as easy as repeating the steps above."
|
1768 |
msgstr ""
|
1769 |
|
1770 |
+
#: ../includes/ot-functions-docs-page.php:660
|
1771 |
+
#: ../includes/ot-functions-docs-page.php:689
|
1772 |
msgid "Activating a Layout"
|
1773 |
msgstr ""
|
1774 |
|
1775 |
+
#: ../includes/ot-functions-docs-page.php:663
|
1776 |
msgid "Click on the activate layout button in the actions list."
|
1777 |
msgstr ""
|
1778 |
|
1779 |
+
#: ../includes/ot-functions-docs-page.php:666
|
1780 |
+
#: ../includes/ot-functions-docs-page.php:695
|
1781 |
msgid "Deleting a Layout"
|
1782 |
msgstr ""
|
1783 |
|
1784 |
+
#: ../includes/ot-functions-docs-page.php:669
|
1785 |
msgid "Click on the delete layout button in the actions list."
|
1786 |
msgstr ""
|
1787 |
|
1788 |
+
#: ../includes/ot-functions-docs-page.php:672
|
1789 |
+
#: ../includes/ot-functions-docs-page.php:700
|
1790 |
msgid "Edit Layout Data"
|
1791 |
msgstr ""
|
1792 |
|
1793 |
+
#: ../includes/ot-functions-docs-page.php:674
|
1794 |
+
#: ../includes/ot-functions-docs-page.php:684
|
1795 |
+
#: ../includes/ot-functions-docs-page.php:691
|
1796 |
msgid "Go to the <code>Appearance->Theme Options</code> page."
|
1797 |
msgstr ""
|
1798 |
|
1799 |
+
#: ../includes/ot-functions-docs-page.php:675
|
1800 |
+
#: ../includes/ot-functions-docs-page.php:703
|
1801 |
msgid ""
|
1802 |
"Modify and save your theme options and the layout will be updated "
|
1803 |
"automatically."
|
1804 |
msgstr ""
|
1805 |
|
1806 |
+
#: ../includes/ot-functions-docs-page.php:676
|
1807 |
+
#: ../includes/ot-functions-docs-page.php:704
|
1808 |
msgid ""
|
1809 |
"Saving theme options data will update the currently active layout, so before "
|
1810 |
"you start saving make sure you want to modify the current layout."
|
1811 |
msgstr ""
|
1812 |
|
1813 |
+
#: ../includes/ot-functions-docs-page.php:677
|
1814 |
msgid ""
|
1815 |
"If you want to edit a new layout, first create it then save your theme "
|
1816 |
"options."
|
1817 |
msgstr ""
|
1818 |
|
1819 |
+
#: ../includes/ot-functions-docs-page.php:680
|
1820 |
msgid "End-Users Mode"
|
1821 |
msgstr ""
|
1822 |
|
1823 |
+
#: ../includes/ot-functions-docs-page.php:685
|
1824 |
msgid ""
|
1825 |
"Enter a name for your layout in the text field and hit \"New Layout\", "
|
1826 |
"you've created your first layout."
|
1827 |
msgstr ""
|
1828 |
|
1829 |
+
#: ../includes/ot-functions-docs-page.php:692
|
1830 |
msgid ""
|
1831 |
"Choose a layout from the select list and click the \"Activate Layout\" "
|
1832 |
"button."
|
1833 |
msgstr ""
|
1834 |
|
1835 |
+
#: ../includes/ot-functions-docs-page.php:697
|
1836 |
msgid "End-Users mode does not allow deleting layouts."
|
1837 |
msgstr ""
|
1838 |
|
1839 |
+
#: ../includes/ot-functions-docs-page.php:702
|
1840 |
msgid "Go to the <code>Appearance->Theme Options</code> tab."
|
1841 |
msgstr ""
|
1842 |
|
1843 |
+
#: ../includes/ot-functions-docs-page.php:733
|
1844 |
+
#: ../includes/ot-functions-docs-page.php:815
|
1845 |
msgid "How-to-guide"
|
1846 |
msgstr ""
|
1847 |
|
1848 |
+
#: ../includes/ot-functions-docs-page.php:735
|
1849 |
msgid ""
|
1850 |
"There are a few simple steps you need to take in order to use OptionTree's "
|
1851 |
"built in Meta Box API. In the code below I'll show you a basic demo of how "
|
1856 |
"can reference."
|
1857 |
msgstr ""
|
1858 |
|
1859 |
+
#: ../includes/ot-functions-docs-page.php:737
|
1860 |
msgid ""
|
1861 |
"It's important to note that Meta Boxes do not support WYSIWYG editors at "
|
1862 |
"this time and if you set one of your options to Textarea it will "
|
1864 |
"WordPress released this statement regarding the wp_editor() function:"
|
1865 |
msgstr ""
|
1866 |
|
1867 |
+
#: ../includes/ot-functions-docs-page.php:739
|
1868 |
msgid ""
|
1869 |
"Once instantiated, the WYSIWYG editor cannot be moved around in the DOM. "
|
1870 |
"What this means in practical terms, is that you cannot put it in meta-boxes "
|
1871 |
"that can be dragged and placed elsewhere on the page."
|
1872 |
msgstr ""
|
1873 |
|
1874 |
+
#: ../includes/ot-functions-docs-page.php:741
|
1875 |
msgid "Create and include your custom meta boxes file."
|
1876 |
msgstr ""
|
1877 |
|
1878 |
+
#: ../includes/ot-functions-docs-page.php:743
|
1879 |
msgid ""
|
1880 |
"Create a file and name it anything you want, maybe <code>meta-boxes.php</"
|
1881 |
"code>."
|
1882 |
msgstr ""
|
1883 |
|
1884 |
+
#: ../includes/ot-functions-docs-page.php:744
|
1885 |
msgid ""
|
1886 |
"As well, you'll probably want to create a directory named <code>includes</"
|
1887 |
"code> to put your <code>meta-boxes.php</code> into which will help keep you "
|
1888 |
"file structure nice and tidy."
|
1889 |
msgstr ""
|
1890 |
|
1891 |
+
#: ../includes/ot-functions-docs-page.php:745
|
1892 |
+
#: ../includes/ot-functions-docs-page.php:845
|
1893 |
msgid "Add the following code to your <code>functions.php</code>."
|
1894 |
msgstr ""
|
1895 |
|
1896 |
+
#: ../includes/ot-functions-docs-page.php:755
|
1897 |
msgid ""
|
1898 |
"Add a variation of the following code to your <code>meta-boxes.php</code>. "
|
1899 |
"You'll obviously need to fill it in with all your custom array values. It's "
|
1902 |
"before OptionTree was loaded the sky would fall on your head."
|
1903 |
msgstr ""
|
1904 |
|
1905 |
+
#: ../includes/ot-functions-docs-page.php:817
|
1906 |
msgid ""
|
1907 |
"There are a few simple steps you need to take in order to use OptionTree as "
|
1908 |
"a theme included module. In the code below I'll show you a basic demo of how "
|
1913 |
"contains a file named <code>demo-theme-options.php</code> you can reference."
|
1914 |
msgstr ""
|
1915 |
|
1916 |
+
#: ../includes/ot-functions-docs-page.php:819
|
1917 |
msgid "Step 1: Include the plugin & turn on theme mode."
|
1918 |
msgstr ""
|
1919 |
|
1920 |
+
#: ../includes/ot-functions-docs-page.php:821
|
1921 |
#, php-format
|
1922 |
msgid "Download the latest version of %s and unarchive the %s directory."
|
1923 |
msgstr ""
|
1924 |
|
1925 |
+
#: ../includes/ot-functions-docs-page.php:822
|
1926 |
#, php-format
|
1927 |
msgid ""
|
1928 |
"Put the %s directory in the root of your theme. For example, the server path "
|
1929 |
"would be %s."
|
1930 |
msgstr ""
|
1931 |
|
1932 |
+
#: ../includes/ot-functions-docs-page.php:823
|
1933 |
#, php-format
|
1934 |
msgid "Add the following code to the beginning of your %s."
|
1935 |
msgstr ""
|
1936 |
|
1937 |
+
#: ../includes/ot-functions-docs-page.php:837
|
1938 |
#, php-format
|
1939 |
msgid ""
|
1940 |
"For a list of all the OptionTree UI display filters refer to the %s file "
|
1942 |
"for developing themes with Theme Mode."
|
1943 |
msgstr ""
|
1944 |
|
1945 |
+
#: ../includes/ot-functions-docs-page.php:839
|
1946 |
msgid ""
|
1947 |
"You now have OptionTree built into your theme and anytime an update is "
|
1948 |
"available replace the old version with the new one."
|
1949 |
msgstr ""
|
1950 |
|
1951 |
+
#: ../includes/ot-functions-docs-page.php:841
|
1952 |
msgid "Step 2: Create Theme Options without using the UI Builder."
|
1953 |
msgstr ""
|
1954 |
|
1955 |
+
#: ../includes/ot-functions-docs-page.php:843
|
1956 |
msgid ""
|
1957 |
"Create a file and name it anything you want, maybe <code>theme-options.php</"
|
1958 |
"code>, or use the built in file export to create it for you. Remember, you "
|
1959 |
"should always check the file for errors before including it in your theme."
|
1960 |
msgstr ""
|
1961 |
|
1962 |
+
#: ../includes/ot-functions-docs-page.php:844
|
1963 |
msgid ""
|
1964 |
"As well, you'll probably want to create a directory named <code>includes</"
|
1965 |
"code> to put your <code>theme-options.php</code> into which will help keep "
|
1966 |
"you file structure nice and tidy."
|
1967 |
msgstr ""
|
1968 |
|
1969 |
+
#: ../includes/ot-functions-docs-page.php:855
|
1970 |
msgid ""
|
1971 |
"Add a variation of the following code to your <code>theme-options.php</"
|
1972 |
"code>. You'll obviously need to fill it in with all your custom array values "
|
1973 |
"for contextual help (optional), sections (required), and settings (required)."
|
1974 |
msgstr ""
|
1975 |
|
1976 |
+
#: ../includes/ot-functions-docs-page.php:858
|
1977 |
msgid ""
|
1978 |
"The code below is a boilerplate to get your started. For a full list of the "
|
1979 |
"available option types click the \"Option Types\" tab above. Also a quick "
|
2009 |
msgstr ""
|
2010 |
|
2011 |
#: ../includes/ot-functions-option-types.php:241
|
2012 |
+
#: ../includes/ot-functions-option-types.php:3227
|
2013 |
msgid "Add Media"
|
2014 |
msgstr ""
|
2015 |
|
2016 |
+
#: ../includes/ot-functions-option-types.php:316
|
2017 |
+
#: ../includes/ot-functions-option-types.php:1094
|
2018 |
+
msgid "width"
|
2019 |
+
msgstr ""
|
2020 |
+
|
2021 |
+
#: ../includes/ot-functions-option-types.php:327
|
2022 |
+
#: ../includes/ot-functions-option-types.php:1114
|
2023 |
+
#: ../includes/ot-functions-option-types.php:1586
|
2024 |
+
#: ../includes/ot-functions-option-types.php:2531
|
2025 |
+
msgid "unit"
|
2026 |
+
msgstr ""
|
2027 |
+
|
2028 |
+
#: ../includes/ot-functions-option-types.php:346
|
2029 |
+
msgid "style"
|
2030 |
+
msgstr ""
|
2031 |
+
|
2032 |
+
#: ../includes/ot-functions-option-types.php:439
|
2033 |
+
msgid "offset-x"
|
2034 |
+
msgstr ""
|
2035 |
+
|
2036 |
+
#: ../includes/ot-functions-option-types.php:448
|
2037 |
+
msgid "offset-y"
|
2038 |
+
msgstr ""
|
2039 |
+
|
2040 |
+
#: ../includes/ot-functions-option-types.php:457
|
2041 |
+
msgid "blur-radius"
|
2042 |
+
msgstr ""
|
2043 |
+
|
2044 |
+
#: ../includes/ot-functions-option-types.php:466
|
2045 |
+
msgid "spread-radius"
|
2046 |
+
msgstr ""
|
2047 |
+
|
2048 |
+
#: ../includes/ot-functions-option-types.php:538
|
2049 |
+
#: ../includes/ot-functions-option-types.php:592
|
2050 |
msgid "No Categories Found"
|
2051 |
msgstr ""
|
2052 |
|
2053 |
+
#: ../includes/ot-functions-option-types.php:587
|
2054 |
+
#: ../includes/ot-functions-option-types.php:919
|
2055 |
+
#: ../includes/ot-functions-option-types.php:1855
|
2056 |
+
#: ../includes/ot-functions-option-types.php:1966
|
2057 |
+
#: ../includes/ot-functions-option-types.php:2671
|
2058 |
+
#: ../includes/ot-functions-option-types.php:2786
|
2059 |
msgid "Choose One"
|
2060 |
msgstr ""
|
2061 |
|
2062 |
+
#: ../includes/ot-functions-option-types.php:867
|
2063 |
+
#: ../includes/ot-functions-option-types.php:925
|
2064 |
+
#: ../includes/ot-functions-option-types.php:1917
|
2065 |
+
#: ../includes/ot-functions-option-types.php:1972
|
2066 |
msgid "No Posts Found"
|
2067 |
msgstr ""
|
2068 |
|
2069 |
+
#: ../includes/ot-functions-option-types.php:1103
|
2070 |
+
msgid "height"
|
2071 |
+
msgstr ""
|
2072 |
+
|
2073 |
+
#: ../includes/ot-functions-option-types.php:1281
|
2074 |
+
#: ../includes/ot-functions-option-types.php:1324
|
2075 |
+
msgid "Remove Google Font"
|
2076 |
+
msgstr ""
|
2077 |
+
|
2078 |
+
#: ../includes/ot-functions-option-types.php:1283
|
2079 |
+
#: ../includes/ot-functions-option-types.php:1326
|
2080 |
+
msgid "-- Choose One --"
|
2081 |
+
msgstr ""
|
2082 |
+
|
2083 |
+
#: ../includes/ot-functions-option-types.php:1347
|
2084 |
+
msgid "Add Google Font"
|
2085 |
+
msgstr ""
|
2086 |
+
|
2087 |
+
#: ../includes/ot-functions-option-types.php:1433
|
2088 |
+
msgctxt "color picker"
|
2089 |
+
msgid "Standard"
|
2090 |
+
msgstr ""
|
2091 |
+
|
2092 |
+
#: ../includes/ot-functions-option-types.php:1434
|
2093 |
+
msgctxt "color picker"
|
2094 |
+
msgid "Hover"
|
2095 |
+
msgstr ""
|
2096 |
+
|
2097 |
+
#: ../includes/ot-functions-option-types.php:1435
|
2098 |
+
msgctxt "color picker"
|
2099 |
+
msgid "Active"
|
2100 |
+
msgstr ""
|
2101 |
+
|
2102 |
+
#: ../includes/ot-functions-option-types.php:1436
|
2103 |
+
msgctxt "color picker"
|
2104 |
+
msgid "Visited"
|
2105 |
+
msgstr ""
|
2106 |
+
|
2107 |
+
#: ../includes/ot-functions-option-types.php:1437
|
2108 |
+
msgctxt "color picker"
|
2109 |
+
msgid "Focus"
|
2110 |
+
msgstr ""
|
2111 |
+
|
2112 |
+
#: ../includes/ot-functions-option-types.php:1534
|
2113 |
+
#: ../includes/ot-functions-option-types.php:2271
|
2114 |
+
#: ../includes/ot-functions-option-types.php:2436
|
2115 |
msgid "Add New"
|
2116 |
msgstr ""
|
2117 |
|
2118 |
+
#: ../includes/ot-functions-option-types.php:1537
|
2119 |
+
#: ../includes/ot-functions-option-types.php:2274
|
2120 |
+
#: ../includes/ot-functions-option-types.php:2439
|
2121 |
msgid "You can re-order with drag & drop, the order will update after saving."
|
2122 |
msgstr ""
|
2123 |
|
2124 |
+
#: ../includes/ot-functions-option-types.php:1706
|
2125 |
msgid "On"
|
2126 |
msgstr ""
|
2127 |
|
2128 |
+
#: ../includes/ot-functions-option-types.php:1728
|
2129 |
msgid "Off"
|
2130 |
msgstr ""
|
2131 |
|
2132 |
+
#: ../includes/ot-functions-option-types.php:1806
|
2133 |
+
#: ../includes/ot-functions-option-types.php:1861
|
2134 |
msgid "No Pages Found"
|
2135 |
msgstr ""
|
2136 |
|
2137 |
+
#: ../includes/ot-functions-option-types.php:2194
|
2138 |
msgid "Choose Sidebar"
|
2139 |
msgstr ""
|
2140 |
|
2141 |
+
#: ../includes/ot-functions-option-types.php:2199
|
2142 |
msgid "No Sidebars"
|
2143 |
msgstr ""
|
2144 |
|
2145 |
+
#: ../includes/ot-functions-option-types.php:2307
|
2146 |
msgid "Facebook"
|
2147 |
msgstr ""
|
2148 |
|
2149 |
+
#: ../includes/ot-functions-option-types.php:2312
|
2150 |
msgid "Twitter"
|
2151 |
msgstr ""
|
2152 |
|
2153 |
+
#: ../includes/ot-functions-option-types.php:2317
|
2154 |
msgid "Google+"
|
2155 |
msgstr ""
|
2156 |
|
2157 |
+
#: ../includes/ot-functions-option-types.php:2322
|
2158 |
msgid "LinkedIn"
|
2159 |
msgstr ""
|
2160 |
|
2161 |
+
#: ../includes/ot-functions-option-types.php:2327
|
2162 |
msgid "Pinterest"
|
2163 |
msgstr ""
|
2164 |
|
2165 |
+
#: ../includes/ot-functions-option-types.php:2332
|
2166 |
msgid "Youtube"
|
2167 |
msgstr ""
|
2168 |
|
2169 |
+
#: ../includes/ot-functions-option-types.php:2337
|
2170 |
msgid "Dribbble"
|
2171 |
msgstr ""
|
2172 |
|
2173 |
+
#: ../includes/ot-functions-option-types.php:2342
|
2174 |
msgid "Github"
|
2175 |
msgstr ""
|
2176 |
|
2177 |
+
#: ../includes/ot-functions-option-types.php:2347
|
2178 |
msgid "Forrst"
|
2179 |
msgstr ""
|
2180 |
|
2181 |
+
#: ../includes/ot-functions-option-types.php:2352
|
2182 |
msgid "Digg"
|
2183 |
msgstr ""
|
2184 |
|
2185 |
+
#: ../includes/ot-functions-option-types.php:2357
|
2186 |
msgid "Delicious"
|
2187 |
msgstr ""
|
2188 |
|
2189 |
+
#: ../includes/ot-functions-option-types.php:2362
|
2190 |
msgid "Tumblr"
|
2191 |
msgstr ""
|
2192 |
|
2193 |
+
#: ../includes/ot-functions-option-types.php:2367
|
2194 |
msgid "Skype"
|
2195 |
msgstr ""
|
2196 |
|
2197 |
+
#: ../includes/ot-functions-option-types.php:2372
|
2198 |
msgid "SoundCloud"
|
2199 |
msgstr ""
|
2200 |
|
2201 |
+
#: ../includes/ot-functions-option-types.php:2377
|
2202 |
msgid "Vimeo"
|
2203 |
msgstr ""
|
2204 |
|
2205 |
+
#: ../includes/ot-functions-option-types.php:2382
|
2206 |
msgid "Flickr"
|
2207 |
msgstr ""
|
2208 |
|
2209 |
+
#: ../includes/ot-functions-option-types.php:2387
|
2210 |
msgid "VK.com"
|
2211 |
msgstr ""
|
2212 |
|
2213 |
+
#: ../includes/ot-functions-option-types.php:2493
|
2214 |
+
msgid "top"
|
2215 |
+
msgstr ""
|
2216 |
+
|
2217 |
+
#: ../includes/ot-functions-option-types.php:2502
|
2218 |
+
msgid "right"
|
2219 |
+
msgstr ""
|
2220 |
+
|
2221 |
+
#: ../includes/ot-functions-option-types.php:2511
|
2222 |
+
msgid "bottom"
|
2223 |
+
msgstr ""
|
2224 |
+
|
2225 |
+
#: ../includes/ot-functions-option-types.php:2520
|
2226 |
+
msgid "left"
|
2227 |
+
msgstr ""
|
2228 |
+
|
2229 |
+
#: ../includes/ot-functions-option-types.php:2622
|
2230 |
+
#: ../includes/ot-functions-option-types.php:2676
|
2231 |
msgid "No Tags Found"
|
2232 |
msgstr ""
|
2233 |
|
2234 |
+
#: ../includes/ot-functions-option-types.php:2734
|
2235 |
+
#: ../includes/ot-functions-option-types.php:2791
|
2236 |
msgid "No Taxonomies Found"
|
2237 |
msgstr ""
|
2238 |
|
2448 |
msgid "Save Layouts"
|
2449 |
msgstr ""
|
2450 |
|
2451 |
+
#: ../includes/ot-settings-api.php:364
|
2452 |
msgid "Reset Options"
|
2453 |
msgstr ""
|
2454 |
+
|
2455 |
+
#: ../ot-loader.php:21
|
2456 |
+
msgid ""
|
2457 |
+
"OptionTree is installed as a plugin and also embedded in your current theme. "
|
2458 |
+
"Please deactivate the plugin to load the theme dependent version of "
|
2459 |
+
"OptionTree, and remove this warning."
|
2460 |
+
msgstr ""
|
ot-loader.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: OptionTree
|
4 |
* Plugin URI: https://github.com/valendesigns/option-tree/
|
5 |
* Description: Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
|
6 |
-
* Version: 2.
|
7 |
* Author: Derek Herman
|
8 |
* Author URI: http://valendesigns.com
|
9 |
* License: GPLv3
|
@@ -178,7 +178,7 @@ if ( ! class_exists( 'OT_Loader' ) ) {
|
|
178 |
/**
|
179 |
* Current Version number.
|
180 |
*/
|
181 |
-
define( 'OT_VERSION', '2.
|
182 |
|
183 |
/**
|
184 |
* For developers: Theme mode.
|
@@ -489,7 +489,10 @@ if ( ! class_exists( 'OT_Loader' ) ) {
|
|
489 |
|
490 |
/* global CSS */
|
491 |
add_action( 'admin_head', array( $this, 'global_admin_css' ) );
|
492 |
-
|
|
|
|
|
|
|
493 |
/* dynamic front-end CSS */
|
494 |
add_action( 'wp_enqueue_scripts', 'ot_load_dynamic_css', 999 );
|
495 |
|
@@ -519,6 +522,9 @@ if ( ! class_exists( 'OT_Loader' ) ) {
|
|
519 |
|
520 |
/* AJAX call to create a new social link */
|
521 |
add_action( 'wp_ajax_add_social_links', array( $this, 'add_social_links' ) );
|
|
|
|
|
|
|
522 |
|
523 |
// Adds the temporary hacktastic shortcode
|
524 |
add_filter( 'media_view_settings', array( $this, 'shortcode' ), 10, 2 );
|
@@ -733,6 +739,30 @@ if ( ! class_exists( 'OT_Loader' ) ) {
|
|
733 |
}
|
734 |
|
735 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
736 |
|
737 |
/**
|
738 |
* Filters the media uploader button.
|
@@ -745,7 +775,7 @@ if ( ! class_exists( 'OT_Loader' ) ) {
|
|
745 |
public function change_image_button( $translation, $text, $domain ) {
|
746 |
global $pagenow;
|
747 |
|
748 |
-
if ( $pagenow == 'themes.php' && 'default' == $domain && 'Insert into post' == $text ) {
|
749 |
|
750 |
// Once is enough.
|
751 |
remove_filter( 'gettext', array( $this, 'ot_change_image_button' ) );
|
@@ -770,4 +800,4 @@ if ( ! class_exists( 'OT_Loader' ) ) {
|
|
770 |
}
|
771 |
|
772 |
/* End of file ot-loader.php */
|
773 |
-
/* Location: ./ot-loader.php */
|
3 |
* Plugin Name: OptionTree
|
4 |
* Plugin URI: https://github.com/valendesigns/option-tree/
|
5 |
* Description: Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
|
6 |
+
* Version: 2.5.0
|
7 |
* Author: Derek Herman
|
8 |
* Author URI: http://valendesigns.com
|
9 |
* License: GPLv3
|
178 |
/**
|
179 |
* Current Version number.
|
180 |
*/
|
181 |
+
define( 'OT_VERSION', '2.5.0' );
|
182 |
|
183 |
/**
|
184 |
* For developers: Theme mode.
|
489 |
|
490 |
/* global CSS */
|
491 |
add_action( 'admin_head', array( $this, 'global_admin_css' ) );
|
492 |
+
|
493 |
+
/* Google Fonts front-end CSS */
|
494 |
+
add_action( 'wp_enqueue_scripts', 'ot_load_google_fonts_css', 1 );
|
495 |
+
|
496 |
/* dynamic front-end CSS */
|
497 |
add_action( 'wp_enqueue_scripts', 'ot_load_dynamic_css', 999 );
|
498 |
|
522 |
|
523 |
/* AJAX call to create a new social link */
|
524 |
add_action( 'wp_ajax_add_social_links', array( $this, 'add_social_links' ) );
|
525 |
+
|
526 |
+
/* AJAX call to retrieve Google Font data */
|
527 |
+
add_action( 'wp_ajax_ot_google_font', array( $this, 'retrieve_google_font' ) );
|
528 |
|
529 |
// Adds the temporary hacktastic shortcode
|
530 |
add_filter( 'media_view_settings', array( $this, 'shortcode' ), 10, 2 );
|
739 |
}
|
740 |
|
741 |
}
|
742 |
+
|
743 |
+
/**
|
744 |
+
* Returns a JSON encoded Google fonts array.
|
745 |
+
*
|
746 |
+
* @return array
|
747 |
+
*
|
748 |
+
* @access public
|
749 |
+
* @since 2.5.0
|
750 |
+
*/
|
751 |
+
public function retrieve_google_font() {
|
752 |
+
|
753 |
+
if ( isset( $_POST['field_id'], $_POST['family'] ) ) {
|
754 |
+
|
755 |
+
ot_fetch_google_fonts();
|
756 |
+
|
757 |
+
echo json_encode( array(
|
758 |
+
'variants' => ot_recognized_google_font_variants( $_POST['field_id'], $_POST['family'] ),
|
759 |
+
'subsets' => ot_recognized_google_font_subsets( $_POST['field_id'], $_POST['family'] )
|
760 |
+
) );
|
761 |
+
exit();
|
762 |
+
|
763 |
+
}
|
764 |
+
|
765 |
+
}
|
766 |
|
767 |
/**
|
768 |
* Filters the media uploader button.
|
775 |
public function change_image_button( $translation, $text, $domain ) {
|
776 |
global $pagenow;
|
777 |
|
778 |
+
if ( $pagenow == apply_filters( 'ot_theme_options_parent_slug', 'themes.php' ) && 'default' == $domain && 'Insert into post' == $text ) {
|
779 |
|
780 |
// Once is enough.
|
781 |
remove_filter( 'gettext', array( $this, 'ot_change_image_button' ) );
|
800 |
}
|
801 |
|
802 |
/* End of file ot-loader.php */
|
803 |
+
/* Location: ./ot-loader.php */
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: valendesigns
|
3 |
Donate link: http://bit.ly/NuXI3T
|
4 |
Tags: options, theme options, meta boxes
|
5 |
-
Requires at least: 3.
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag: 2.
|
8 |
License: GPLv3
|
9 |
|
10 |
Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
|
@@ -32,16 +32,23 @@ OptionTree is a project partly sponsored by <a href="http://themeforest.net/?ref
|
|
32 |
This is a complete list of all the available option types that come shipped with OptionTree.
|
33 |
|
34 |
* Background
|
|
|
|
|
35 |
* Category Checkbox
|
36 |
* Category Select
|
37 |
* Checkbox
|
38 |
-
*
|
|
|
39 |
* CSS
|
40 |
* Custom Post Type Checkbox
|
41 |
* Custom Post Type Select
|
42 |
* Date Picker
|
43 |
* Date Time Picker
|
|
|
44 |
* Gallery
|
|
|
|
|
|
|
45 |
* List Item
|
46 |
* Measurement
|
47 |
* Numeric Slider
|
@@ -56,6 +63,7 @@ This is a complete list of all the available option types that come shipped with
|
|
56 |
* Sidebar Select
|
57 |
* Slider
|
58 |
* Social Links
|
|
|
59 |
* Tab
|
60 |
* Tag Checkbox
|
61 |
* Tag Select
|
@@ -118,6 +126,39 @@ The most likely scenario is your theme already has OptionTree installed in Theme
|
|
118 |
|
119 |
== Changelog ==
|
120 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121 |
= 2.4.6 =
|
122 |
* Hotfix - Added a clean up script to consolidate orphaned media posts and remove the old and unused `wp_option_tree` table.
|
123 |
* Hotfix - Fixed an issue where `ot_get_media_post_ID()` was never able to set the value of the `ot_media_post_ID` option because it was already set to empty. Causing the `ot_create_media_post()` function to create multiple media posts.
|
2 |
Contributors: valendesigns
|
3 |
Donate link: http://bit.ly/NuXI3T
|
4 |
Tags: options, theme options, meta boxes
|
5 |
+
Requires at least: 3.8
|
6 |
+
Tested up to: 4.2-alpha
|
7 |
+
Stable tag: 2.5.0
|
8 |
License: GPLv3
|
9 |
|
10 |
Theme Options UI Builder for WordPress. A simple way to create & save Theme Options and Meta Boxes for free or premium themes.
|
32 |
This is a complete list of all the available option types that come shipped with OptionTree.
|
33 |
|
34 |
* Background
|
35 |
+
* Border
|
36 |
+
* Box Shadow
|
37 |
* Category Checkbox
|
38 |
* Category Select
|
39 |
* Checkbox
|
40 |
+
* Colorpicker
|
41 |
+
* Colorpicker Opacity
|
42 |
* CSS
|
43 |
* Custom Post Type Checkbox
|
44 |
* Custom Post Type Select
|
45 |
* Date Picker
|
46 |
* Date Time Picker
|
47 |
+
* Dimension
|
48 |
* Gallery
|
49 |
+
* Google Fonts
|
50 |
+
* JavaScript
|
51 |
+
* Link Color
|
52 |
* List Item
|
53 |
* Measurement
|
54 |
* Numeric Slider
|
63 |
* Sidebar Select
|
64 |
* Slider
|
65 |
* Social Links
|
66 |
+
* Spacing
|
67 |
* Tab
|
68 |
* Tag Checkbox
|
69 |
* Tag Select
|
126 |
|
127 |
== Changelog ==
|
128 |
|
129 |
+
= 2.5.0 =
|
130 |
+
* Added the Google Fonts option type. Contributors via github @maimairel, and @valendesigns.
|
131 |
+
* Added the Border option type. Contributors via github @doitmax, and @valendesigns.
|
132 |
+
* Added the Box Shadow option type. Contributors via github @doitmax, and @valendesigns.
|
133 |
+
* Added the Colorpicker Opacity option type. Contributors via github @doitmax, and @valendesigns.
|
134 |
+
* Added the Dimension option type. Contributors via github @doitmax, and @valendesigns.
|
135 |
+
* Added the JavaScript option type.
|
136 |
+
* Added the Link Color option type. Contributors via github @doitmax, and @valendesigns.
|
137 |
+
* Added the Spacing option type. Contributors via github @doitmax, and @valendesigns.
|
138 |
+
* Fixed an issue where the Colorpicker was not parsing conditions on `change` or `clear`.
|
139 |
+
* Fixed the Colorpicker styles on mobile devices.
|
140 |
+
* Show the Colorpicker setting ID inside the error message string when the value is invalid.
|
141 |
+
* Added an 'on change' trigger to the Numeric Slider's hidden input. Contributors via github @cubell.
|
142 |
+
* Stop Theme Check from complaining about the `register_post_type()` function being used in Theme Mode.
|
143 |
+
* Added styles that clean up the appearance of the included Font Awesome icons in section tabs.
|
144 |
+
* Fixed jQuery UI style conflicts created by the WP Review plugin.
|
145 |
+
* Changed the sanitization function from `sanitize_text_field` to `esc_url_raw` for the Upload option type.
|
146 |
+
* Added filter `ot_dequeue_jquery_ui_css_screen_ids` to dequeue `jquery-ui-css` by screen ID.
|
147 |
+
* Added filter `ot_on_off_switch_on_value` to filter the value of the On button. Contributors via github @BassemN, and @valendesigns.
|
148 |
+
* Added filter `ot_on_off_switch_on_label` to filter the label of the On button. Contributors via github @BassemN, and @valendesigns.
|
149 |
+
* Added filter `ot_on_off_switch_off_value` to filter the value of the Off button. Contributors via github @BassemN, and @valendesigns.
|
150 |
+
* Added filter `ot_on_off_switch_off_label` to filter the label of the Off button. Contributors via github @BassemN, and @valendesigns.
|
151 |
+
* Added filter `ot_on_off_switch_width` to filter the width of the On/Off switch.
|
152 |
+
* Added filter `ot_type_date_picker_readonly` to filter the addition of the readonly attribute.
|
153 |
+
* Added filter `ot_type_date_time_picker_readonly` to filter the addition of the readonly attribute.
|
154 |
+
* Added filter `ot_admin_menu_priority` to filter the `admin_menu` action hook priority.
|
155 |
+
* Added Estonian translation. Contributors via github @tjuris, and @RistoNiinemets.
|
156 |
+
* Fixed an issue where changes to `theme-options.php` required a second page load.
|
157 |
+
* Fixed the clean up script, it only displays when there's something to clean up. No more menu item!
|
158 |
+
* Update demo files with the latest option types.
|
159 |
+
* Changed where `ot_css_file_paths` is saved when `is_multisite` for better `dynamic.css` file support.
|
160 |
+
* Changed the default `dynamic.css` file path in multisite to be `dynamic-{current-blog-id}.css`.
|
161 |
+
|
162 |
= 2.4.6 =
|
163 |
* Hotfix - Added a clean up script to consolidate orphaned media posts and remove the old and unused `wp_option_tree` table.
|
164 |
* Hotfix - Fixed an issue where `ot_get_media_post_ID()` was never able to set the value of the `ot_media_post_ID` option because it was already set to empty. Causing the `ot_create_media_post()` function to create multiple media posts.
|