diff --git a/admin/assets/css/um-admin-builder.css b/admin/assets/css/um-admin-builder.css new file mode 100644 index 00000000..2a406ba9 --- /dev/null +++ b/admin/assets/css/um-admin-builder.css @@ -0,0 +1,295 @@ +/* + - General +*/ + +.um-admin-builder * { + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale; +} + +.um-admin-builder i { + font-size: 15px !important; + height: 100% !important;line-height: 100% !important;vertical-align: middle !important; + margin: 0 5px 0 0 !important; +} + +.um-admin-builder .um-admin-drag {margin-top: 40px} + +/* + - Add field +*/ +.um-admin-drag-add-field { + display: block; + width: 100%; + height: 30px; + line-height: 30px; + text-align: center; + color: #aaa; + text-decoration: none; +} + +.um-admin-drag-add-field:hover {color: #3ba1da} + +.um-admin-drag-add-field i { + font-size: 23px !important; + margin: 0 !important; +} + +/* + - Drag controls +*/ + +.um-admin-drag-ctrls-demo.um-admin-drag-ctrls { + position: absolute; + right: 7px; + top: -30px; + left: auto; +} + +.um-admin-drag-ctrls { + position: absolute; + top: -30px; + left: 0; +} + +.um-admin-drag-ctrls a { + float: left; + margin: 0 5px 0 0; + height: 30px; + line-height: 30px; + background: #eee; + color: #888; + padding: 0 8px; + text-decoration: none; + border-radius: 2px 2px 0 0; +} + +.um-admin-drag-ctrls a:hover {background-color: #e5e5e5} + +.um-admin-drag-ctrls a.active, +.um-admin-drag-ctrls a.active:hover { + background-color: #3ba1da; + color: #fff; +} + +.um-admin-drag-ctrls.columns a {width: 30px !important;background-image: url(../img/1-column.gif); background-repeat: no-repeat; background-position: center;} +.um-admin-drag-ctrls.columns a:nth-child(2) {background-image: url(../img/2-columns.gif);} +.um-admin-drag-ctrls.columns a:last-child {background-image: url(../img/3-columns.gif);} + +.um-admin-drag-ctrls.columns a.active {background-image: url(../img/1-column-active.gif)} +.um-admin-drag-ctrls.columns a.active:nth-child(2) {background-image: url(../img/2-columns-active.gif);} +.um-admin-drag-ctrls.columns a.active:last-child {background-image: url(../img/3-columns-active.gif);} + +/* + - Drag Area +*/ + +.um-admin-drag { + width: 100%; + background: #f1f1f1; + box-sizing: border-box; + position: relative; + padding: 60px 20px 20px 20px; +} + +.um-admin-drag-row { + width: 100%; + background: #fefefe; + box-sizing: border-box; + position: relative; + padding: 60px 20px 20px 20px; + margin: 0 0 60px 0; +} +.um-admin-drag-row:last-child {margin-bottom: 0} + +.um-admin-drag-row-icons { + position: absolute; + right: 0; + top: -30px; + height: 30px; +} + +.um-admin-drag-rowsub { + position: relative; + box-sizing: border-box; + background: #f1f1f1; + padding: 20px; + margin: 0 0 60px 0; +} +.um-admin-drag-rowsub:last-child {margin-bottom: 0} + +.um-admin-drag-rowsub-icons { + position: absolute; + right: 0; + top: -30px; + height: 30px; +} + +.um-admin-drag-col { + float: left; + width: 100%; + background: #fff; + border: 1px dashed #bbb; + box-sizing: border-box; + padding: 20px; +} + +.um-admin-drag-col.cols-3 {width: 32%;} +.um-admin-drag-col.cols-3.cols-last {width: 32%;} +.um-admin-drag-col.cols-3.cols-middle {width: 32%;margin: 0 2%;} + +.um-admin-drag-col.cols-1 {width: 100%;} +.um-admin-drag-col.cols-1.cols-last {width: 100%;} +.um-admin-drag-col.cols-1.cols-middle {} + +.um-admin-drag-col.cols-2 {width: 49%;margin: 0 1% 0 0} +.um-admin-drag-col.cols-2.cols-last {width: 49%;margin: 0 0 0 1%;} +.um-admin-drag-col.cols-2.cols-middle {} + +.um-admin-drag-addrow { + text-align: center; + font-size: 14px; + color: #888; + cursor: pointer; + border: 1px dashed #bbb; + padding: 10px 0; + margin: 20px 0 0 0; +} +.um-admin-drag-addrow i { + font-size: 23px !important; + margin: 0 !important; +} +.um-admin-drag-addrow:hover {color: #3ba1da} + +/* + - Fields +*/ + +.um-admin-drag-fld { + display: block; + position: relative; + border: 1px solid #dddddd; + margin: 0 0 15px 0; + background: #F5F5F5; + cursor: move !important; +} + +.um-admin-drag-fld.um-field-type-group {background: #555;border: 0} +.um-admin-drag-fld-title.um-field-type-group,.um-admin-drag-fld-type.um-field-type-group {color: #fff} +.um-admin-drag-group {background: #FCFCFC;cursor: default;padding: 20px;border: 1px dashed #bbb;} +.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons.um-field-type-group{float: left;position: relative;bottom: auto;right: auto;height: 30px;display: block;} +.um-admin-drag-fld-icons.um-field-type-group a.um_admin_duplicate_field {display: none !important} + +.um-admin-drag-fld-title, +.um-admin-drag-fld-type { + float: left; + font-weight: bold; + font-size: 13px; + color: #666; + height: 30px; + line-height: 30px; + margin: 0 0 0 20px; +} + +.um-admin-drag-fld-type { + font-weight: 400; + color: #999; +} + +.um-admin-drag-fld-icons { + float: right; +} + +/* + - Responsive cols appearance +*/ + +.um-admin-drag-col.cols-3 .um-admin-drag-fld-title, +.um-admin-drag-col.cols-3 .um-admin-drag-fld-type { + height: auto; + line-height: 18px; + margin: 10px; + margin-bottom: 0; +} + +.um-admin-drag-col.cols-3 .um-admin-drag-fld-type { + margin: 10px; +} + +.um-admin-drag-col.cols-3 .um-admin-drag-fld-icons { + float: none; + position: absolute; + bottom: 0; + right: 0; + height: 30px; + display: none; +} + +.um-admin-drag-col.cols-3 .um-admin-drag-fld:hover .um-admin-drag-fld-icons{display: block;} + +/* + - Icons +*/ + +.um-admin-drag-row-icons a, +.um-admin-drag-row-icons span, +.um-admin-drag-rowsub-icons a, +.um-admin-drag-rowsub-icons span, +.um-admin-drag-fld-icons a{ + text-decoration: none; + color: #fff; + width: 40px; + height: 30px; + line-height: 30px; + text-align: center; + display: block !important; + float: left; + background: #44b0ec; + padding: 0 4px; + transition: all .2s linear; + border-left: 1px solid #379dd5; +} + +.um-admin-drag-row-icons span, +.um-admin-drag-rowsub-icons span +{cursor: move!important} + +.um-admin-drag-row-icons a:hover, +.um-admin-drag-row-icons span:hover, +.um-admin-drag-rowsub-icons a:hover, +.um-admin-drag-rowsub-icons span:hover, +.um-admin-drag-fld-icons a:hover {background: #3396cd;} + +.um-admin-drag-row-icons i, +.um-admin-drag-rowsub-icons i, +.um-admin-drag-fld-icons i{ + font-size: 16px !important; + margin: 0 !important; + top: 1px; + position: relative; +} + +/* + - UI Placeholders +*/ + +.um-row-placeholder { + width: 100%; + border: 2px dashed #aaa; + box-sizing: border-box; +} + +.um-rowsub-placeholder { + width: 100%; + border: 2px dashed #ccc; + box-sizing: border-box; + display: block; +} + +.um-fld-placeholder { + display: block; + border: 1px dashed #dddddd; + background: #fff; + box-sizing: border-box; + width: 100%; +} \ No newline at end of file diff --git a/admin/assets/css/um-admin-columns.css b/admin/assets/css/um-admin-columns.css new file mode 100644 index 00000000..6f0f02d7 --- /dev/null +++ b/admin/assets/css/um-admin-columns.css @@ -0,0 +1,64 @@ +.um-admin td, .um-admin th { + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale; +} + +.um-admin.post-type-um_form .manage-column.column-id {width: 40px} +.um-admin.post-type-um_form .manage-column.column-mode {width: 100px} +.um-admin.post-type-um_form .manage-column.column-title {width: 200px} +.um-admin.post-type-um_form .manage-column.column-shortcode {width: 200px} +.um-admin.post-type-um_form .manage-column.column-impressions {width: 100px} +.um-admin.post-type-um_form .manage-column.column-conversions {width: 100px} + +.um-admin.post-type-um_directory .manage-column.column-id {width: 60px} +.um-admin.post-type-um_directory .manage-column.column-title {width: 250px} + +.um-admin.post-type-um_role .manage-column.column-title {width: 200px} +.um-admin.post-type-um_role .manage-column.column-count {width: 150px} +.um-admin.post-type-um_role .manage-column.column-core {width: 150px} + +.um-admin.users-php .manage-column.column-username {width: 220px} +.um-admin.users-php .manage-column.column-role {width: 150px} +.um-admin.users-php .manage-column.column-name {width: 180px} +.um-admin.users-php .manage-column.column-um_role {width: 150px} +.um-admin.users-php .manage-column.column-um_status {width: 200px} +.um-admin.users-php .manage-column.column-um_info {width: 80px} + +.um-admin.users-php .tablenav.top .bulkactions, + .um-admin.users-php .tablenav.bottom .bulkactions{display:none} + +.um-admin.post-type-um_form td.column-shortcode, +.um-admin.post-type-um_form td.column-id, +.um-admin.post-type-um_directory td.column-shortcode, +.um-admin.post-type-um_directory td.column-id, +.um-admin.post-type-um_role td.column-count +{color: #aaa;font-size: 14px;} + +.um-admin.users-php td.column-um_actions {padding-top: 12px} + +.um-admin.users-php td.column-um_actions a.button { + height: 29px !important; + margin: 0 0 0 2px !important; + position: relative; +} + +.um-admin-tag { + display: inline-block; + border-radius: 2px; + width: 100%; + box-sizing: border-box; + text-align: center; + background: #3ba1da; + color: #fff; + font-size: 14px; + height: 34px; + line-height: 34px; +} +.um-admin-tag.small {font-size: 13px;height:28px;line-height: 28px;display:inline;padding: 4px 10px;background: transparent;color: #666;border-radius:0;} +.um-admin-tag.ok {border-left: 2px solid #93ba37} +.um-admin-tag.pending {border-left: 2px solid #b76767} + +.um-admin-txtspace {margin: 0 0 0 10px;} + +.um-adm-ico {font-size: 20px;margin-top: 5px;display:inline-block;color:#3ba1da} +.um-adm-ico.pointer {cursor: pointer} \ No newline at end of file diff --git a/admin/assets/css/um-admin-dashboard.css b/admin/assets/css/um-admin-dashboard.css new file mode 100644 index 00000000..1f0e84d2 --- /dev/null +++ b/admin/assets/css/um-admin-dashboard.css @@ -0,0 +1,156 @@ +/* + - General +*/ + +.um-admin-dash-container { + box-sizing: border-box; + border-radius: 3px; + margin: 18px 20px 20px 2px !important; + background-color: #F5F5F5; + background-repeat: repeat-x; + background-image: -moz-linear-gradient(center top , #F2F2F2 0px, #F5F5F5 100%); + border: 1px solid #DEDEDE; + box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.04); + overflow: hidden; +} + +.um-admin-dash-container *{ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.um-admin-dash-head { + background: #3ba1da; + border-radius: 3px 3px 0 0; + padding: 0 0 0 20px; + border-bottom: 3px solid #3ba1da; +} + +.um-admin-dash-nav { + float: left; + width: 202px; +} + +.um-admin-dash-nav, +.um-admin-dash-main + { + min-height: 300px; +} + +.um-admin-dash-main { + background: none repeat scroll 0% 0% #FCFCFC; + margin-left: 201px; + border-left: 1px solid #D8D8D8; + padding: 10px 20px; + box-shadow: 0px 1px 0px #FFF inset; +} + +.um-admin-dash-foot { + background: none repeat scroll 0% 0% #EEE; + height: 60px; + border-radius: 0 0 3px 3px; + border-top: 1px solid #E7E7E7; + z-index: 9999; +} + +/* + - Header +*/ + +.um-admin-dash-head-logo { + float: left; + margin: 20px 10px; +} + +.um-admin-dash-head h2 { + color: #fff; + font-size: 24px !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background: url(../img/logo-header.png) no-repeat left 8px; + padding: 10px 10px 10px 80px; + margin: 0 !important; + display: inline-block; + font-style: normal; + padding-right: 5px; + line-height: 29px; +} + +.um-admin-dash-head span { + color: #fff !important; + font-size: 14px; + position: relative; + top: -10px; + font-weight: 600; + padding-left: 4px; +} + +/* + - Nav +*/ + +.um-admin-dash-nav a { + font-family: Open Sans; + font-size: 13px; + position: relative; + display: block; + padding: 10px 4px 10px 14px; + background: none repeat scroll 0px 0px transparent; + border-width: 1px 0px; + border-style: solid; + border-bottom: 1px solid #E7E7E7; + border-top: 0px none; + opacity: 0.7; + color: #555; + font-weight: 700; + text-decoration: none; + transition: none 0s ease 0s; +} + +.um-admin-dash-nav-title { + padding-left: 30px; +} + +.um-admin-dash-nav a:hover { + color: #777; + opacity: 1; + background: none repeat scroll 0px 0px #e5e5e5; +} + +.um-admin-dash-nav a i{ + vertical-align: middle; + font-size: 1.35em; + position: absolute; + color: #555; +} + +/* + - Misc +*/ + +.um-admin-dash-count { + background: #7ACE5A; + color: #fff; + padding: 2px 6px; + border-radius: 3px; + font-family: Open Sans; + font-weight: 700; + position: absolute; + right: 10px; + top: 8px; + font-size: 11px; +} + +.um-admin-dash-count.red {background:#cb3838} + +/* + - Main +*/ + +.um-admin-dash-main h3{ + color: #888; + font-weight: 500; + border-bottom: 1px solid #eee; + padding: 0 0 10px 0; + margin-bottom: 0 !important; +} \ No newline at end of file diff --git a/admin/assets/css/um-admin-form.css b/admin/assets/css/um-admin-form.css new file mode 100644 index 00000000..7a2dba68 --- /dev/null +++ b/admin/assets/css/um-admin-form.css @@ -0,0 +1,56 @@ +/* + - General +*/ + +.um-admin-metabox * { + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale !important; +} + +/* + - Metabox layout +*/ + +.um-admin.post-type-um_form div#submitdiv, +.um-admin.post-type-um_form div#side-sortables +{display:none} + +/* + - Boxed Links +*/ + +.um-admin-boxed-links { + width: 100%; + text-align: center; +} + +.um-admin-boxed-links a { + width: 33.3%; + float: left; + border-left: 1px solid #fff; + border-right: 1px solid #fff; + padding: 30px 25px !important; + background: #f8f8f8; + text-align: center; + display: inline-block !important; + font-size: 14px; + transition: all .2s linear; + text-decoration: none; + color: #666; + margin: 0 !important; + box-sizing: border-box !important; + border-radius: 2px; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + font-weight: 600; +} + +.um-admin-boxed-links i { + font-size: 28px; + vertical-align: middle; + margin: 0 10px 0 0; +} + +.um-admin-boxed-links a:hover { + background: #eee; +} \ No newline at end of file diff --git a/admin/assets/css/um-admin-global.css b/admin/assets/css/um-admin-global.css new file mode 100644 index 00000000..37d2458a --- /dev/null +++ b/admin/assets/css/um-admin-global.css @@ -0,0 +1,98 @@ +/* + - General metabox styling +*/ + +#um-admin-access-control h3 { + padding: 10px 20px 10px 60px; + color: #fff; + background: #3ba1da url(../img/logo-small.png) no-repeat 12px center; + font-weight: bold; + font-size: 14px !important; + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale !important; +} + +#um-admin-access-control h4 {margin:10px 0 4px 0!important} + +#um-admin-access-control div.handlediv { + color: #fff !important; + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale !important; +} + +#um-admin-access-control * {vertical-align: middle} + +#um-admin-access-control p {font-size: 13px} + +#um-admin-access-control input[type=text] {font-size: 13px} + +/* + - Nav Menu +*/ + +.um-nav-edit * { + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale !important; +} + +.um-nav-edit-h2 { + padding: 10px 20px 10px 60px; + margin: 14px 12px 0 0; + border-radius: 3px; + color: #fff; + background: #3ba1da url(../img/logo-small.png) no-repeat 12px center; + font-weight: bold; +} + +.um-nav-mode {margin-top:10px} +.um-nav-roles {display: none;margin-top:5px} + +/* + - Admin notice +*/ + +.um-admin-notice { + font-size: 14px !important; + color: #fff; + border-radius: 0; + margin: 40px 30px 0 0; + padding: 20px; + background: #3ba1da url(../img/logo-header.png) no-repeat 20px center; + border-radius: 5px; +} + +.um-admin-notice div { + padding: 0 0 0 80px; +} + +.um-admin-notice a { + text-decoration: none; + color: #3ba1da; + background: #fff; + margin: 0 0 0 10px; + border-radius: 5px; + display: inline-block; + padding: 8px 15px; +} +.um-admin-notice a:hover {color:#356e8e} + +.um-admin-notice a.um-admin-notice-alt { + background: #356e8e; + color: #8bbbd5; +} +.um-admin-notice a.um-admin-notice-alt:hover {color: #fff} + +/* + - jQuery Tooltips +*/ + +.um-admin-tip { + margin: 0 0 0 2px; + color: #3ba1da !important; + vertical-align: middle; + position: relative; + top: -3px; + opacity: 0.8; +} +.um-admin-tip.n {margin-left: 5px} +.um-admin-tip i {cursor: pointer; vertical-align: middle; font-size: 20px; line-height: 20px;color: #3ba1da !important;} \ No newline at end of file diff --git a/admin/assets/css/um-admin-menu.css b/admin/assets/css/um-admin-menu.css new file mode 100644 index 00000000..3c8c8d14 --- /dev/null +++ b/admin/assets/css/um-admin-menu.css @@ -0,0 +1,3 @@ +ul#adminmenu a.wp-has-current-submenu:after,ul#adminmenu>li.current>a.current:after {display: none !important} + +ul#adminmenu li.wp-has-submenu.wp-not-current-submenu:hover:after{right:-9999999px} \ No newline at end of file diff --git a/admin/assets/css/um-admin-misc.css b/admin/assets/css/um-admin-misc.css new file mode 100644 index 00000000..48d22ab8 --- /dev/null +++ b/admin/assets/css/um-admin-misc.css @@ -0,0 +1,304 @@ +/* + - Columns +*/ + +body.um-admin-modal-open { + overflow: hidden; +} + +.um-admin #major-publishing-actions{background-color: #fff !important;border-top:0} + +.um-admin .postbox h3 { +background: #f9f9f9; +} +.um-admin .postbox h3 i { + font-size: 1.3em !important; + vertical-align: middle !important; + margin: 0 10px 0 0; + line-height: 16px !important; + height: 16px !important; + position: relative; + top: 1px; + color: #3ba1da; +} + +.um-admin-hide {display: none} + +.um-admin-field { + display: block; + width: 100%; + margin-top: 10px; +} + +.um-admin-field a.button { + position: relative; + top: 1px; + height: 29px !important; +} + +.um-admin-half { + float: left; + width: 48%; +} + +.um-admin-tri { + float: left; + width: 33%; +} + +.um-admin-left{float: left} +.um-admin-right {float: right} +.um-admin-clear {clear: both} + +.um-admin a.um-admin-activebg, +.um-admin a.um-admin-activebg:hover{ + background: #3ba1da; + color: #fff; +} + +.um-admin a.button, +.um-admin input.button { + background: #f9f9f9 !important; + box-shadow: none !important; + color: #777; + border-radius: 2px; +} + +.um-admin a.button i, +.um-admin a.button-primary i { + font-size: 15px !important; + height: 15px !important; + vertical-align: middle !important; + margin: 0 5px 0 0 !important; +} + +.um-admin a.button i:before, +.um-admin a.button-primary i:before { + position: relative; + top: 1px; +} + +.um-admin a.button-primary, +.um-admin input.button-primary { + background: #3ba1da !important; + box-shadow: none !important; + border-radius: 2px; + color: #fff; +} +.um-admin a.button-primary:hover, +.um-admin input.button-primary:hover {background: #44b0ec !important;} + +/* + - Form Inputs +*/ + +.um-admin-metabox p {margin: 10px 0 0 0} + +.um-admin-metabox label{ + display: block; + cursor: default; + margin: 0 0 8px 0 !important; + padding: 0!important; + font-size: 13px; + color: #888; +} + +.um-admin-metabox input[type=text]:disabled{ + opacity: 0.7 !important; + color: #aaa !important; +} + +.um-admin-metabox input[type=text], +.um-admin-metabox textarea{ + width: 100%; + max-width: 100%; + display: block; + color: #666 !important; + background: #fff; + border: 1px solid #ddd; + border-radius: 2px; + outline: none !important; + box-sizing: border-box !important; + box-shadow: none !important; + + font-size: 13px !important; + height: auto !important; + line-height: 1.4em !important; + padding: 4px 10px !important; +} + +.um-admin-metabox input[type=text].um-admin-error, +.um-admin-metabox textarea.um-admin-error +{border-color: #C74A4A!important} + +.um-admin-metabox input[type=text]:focus, +.um-admin-metabox textarea:focus{ + border-color: #ccc; + background-color: #fff !important; +} + +.um-admin-metabox input[type=text].small {width: 50px} + +.um-admin-metabox textarea {min-height: 100px;height: 100px} + +.wp-picker-container input.wp-color-picker[type="text"] { + width: 68px !important; + float: left !important; + padding: 2px 4px !important; + border-width: 1px !important; +} + +/* + - Error blocks +*/ + +.um-admin-error-block, .um-admin-success-block{ + display: none; + width: 100%; + background: #C74A4A; + border-radius: 3px; + color: #fff; + box-sizing: border-box; + position: relative; + padding: 12px; + font-size: 13px; + line-height: 1em !important; + margin: 0 0 16px 0; +} + +.um-admin-success-block { + background: #7ACE5A; +} + +/* + - Yes or NO UI +*/ + +p.disabled-on-off .um-admin-yesno { + opacity: 0.5!important; + cursor: default !important; +} +p.disabled-on-off .um-admin-yesno *{ + cursor: default !important; +} + +.um-admin-yesno { + border-radius: 3px; + width: 120px; + height: 26px; + background: #aaa; + display: block; + color: #fff; + position: relative; +} + +.um-admin-yesno span.btn { + position: absolute; + left: 0; + top: 0; + width: 60px; + height: 26px; + text-align: center; + background: #f9f9f9; + z-index: 101; + border-radius: 1px; + cursor: pointer; + border: solid 1px #cccccc; +} + +.um-admin-yesno span.btn.pos-1 {left: 60px} + +.um-admin-yesno span.btn i { + position: relative; + top: 4px; + font-size: 18px; + line-height: 18px !important; + color: #B1B1B1; +} + +.um-admin-yesno span.yes, .um-admin-yesno span.no { + width: 60px; + float: left; + line-height: 28px; + height: 28px; + text-align: right; + cursor: default; + font-size: 13px; + color: #fff; + text-align: center; +} + +.um-admin-yesno span.no {float: right} +.um-admin-yesno .yes {background: #7ACE5A;border-radius: 3px 0 0 3px;} +.um-admin-yesno .no {background: #cb3838;border-radius: 0 3px 3px 0} + +/* + - SelectJS +*/ + +body.um-admin .actions, +body.um-admin .bulkactions { + float: left; + margin: 0!important; + padding:0!important; + top: 0!important; +} + +body.um-admin .actions .button { + height: 29px !important; + margin: 0 12px 0 0 !important; + display: inline !important; + position: relative; +} + +body.um-admin .select2-container {margin-right: 2px!important;} + +body.um-admin .select2-drop, +body.um-admin .select2-drop.select2-drop-above, +body.um-admin .select2-drop-active, +body.um-admin .select2-container-multi .select2-choices +{border: 1px solid #ddd !important} + +body.um-admin .select2-container .select2-choice +{ + height: 27px !important; + line-height: 27px !important; + border: 1px solid #ddd !important; + color: #888 !important; +} + +body.um-admin .select2-container .select2-choice { + font-size: 13px !important; +} + +body.um-admin .select2-container .select2-choice .select2-arrow:before { + font-size: 25px !important; +} + +body.um-admin .select2-search-choice-close:before { + font-size: 15px !important; + color: #aaa; +} + +body.um-admin .select2-container-multi .select2-search-choice-close:before { + font-size: 13px !important; +} + +body.um-admin .select2-search input[type=text] { + font-size: 13px !important; +} + +body.um-admin .select2-results li { + font-size: 13px !important; +} + +body.um-admin .select2-results .select2-no-results, +body.um-admin .select2-results .select2-searching, +body.um-admin .select2-results .select2-selection-limit { + font-size: 13px !important; +} + +body.um-admin .select2-container-multi .select2-choices .select2-search-choice { + line-height: 13px !important; + font-size: 13px !important; +} \ No newline at end of file diff --git a/admin/assets/css/um-admin-modal.css b/admin/assets/css/um-admin-modal.css new file mode 100644 index 00000000..9ed26661 --- /dev/null +++ b/admin/assets/css/um-admin-modal.css @@ -0,0 +1,259 @@ +/* + - Overlay +*/ + +.um-admin-overlay { + background: rgba(0,0,0, .7); + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + z-index: 100000; +} + +/* + - modal +*/ + +.um-admin-modal * { + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale; +} + +.um-admin-modal input[type=submit].button-primary, +.um-admin-modal a.button-primary, +.um-admin-modal a.button { + padding: 0 12px !important; + vertical-align: middle !important; +} + +.um-admin-modal input[type=submit].button-primary { + line-height: 24px !important; +} + +.um-admin-modal { + border-radius: 3px; + background: #fff; + box-shadow: 0 4px 10px #111; + position: fixed; + top: 50% !important; + left: 50% !important; + display: none; + z-index: 100010; + box-sizing: border-box; + + width: 730px; + margin-left: -365px; +} + +.um-admin-modal.normal {width: 730px;margin-left: -365px;} +.um-admin-modal.smaller {width: 500px;margin-left: -250px;} +.um-admin-modal.small {width: 400px;margin-left: -200px;} + +.um-admin-modal-close { + position: absolute; + color: #fff !important; + right: 16px; + top: 13px; + font-size: 22px; + text-decoration: none; + opacity: 0.4; +} +.um-admin-modal-close:hover{opacity:1} + +.um-admin-modal-head { + padding: 4px 20px; + background: #3ba1da; + position: relative; + border-radius: 3px 3px 0 0; +} + +.um-admin-modal-body { + padding: 20px 20px 10px 20px; + max-height: 500px; + overflow: auto; +} + +.um-admin-modal-body.um-admin-metabox label {margin: 0!important} + +.um-admin-modal.loading .um-admin-modal-body { + height: 200px; + background: url(../img/ajax-loader.gif) no-repeat center; +} + +.um-admin-modal-foot { + padding: 20px 0 !important; + border-top: 1px solid #ddd; + text-align: center; + background: #eee; + border-radius: 0 0 3px 3px; +} + +.um-admin-modal-foot a, +.um-admin-modal-foot input{ + margin: 0 10px !important; + font-size: 14px !important; +} + +.um-admin-modal h3 { + font-size: 14px; + line-height: 14px; + font-weight: normal; + color: #fff; +} + +.um-admin-modal h4 { + margin: 0 0 10px 0 !important; +} + +.um-admin-modal label, +.um-admin-modal p { + font-size: 13px; + color: #aaa; +} + +/* + - Conditional fields +*/ + +.um-admin-btn-toggle { + padding: 10px 0; +} + +.um-admin-btn-toggle a { + text-decoration: none; + color: #999; +} + +.um-admin-btn-toggle a.active, .um-admin-btn-toggle a.active:hover { + color: #3ba1da; +} + +.um-admin-btn-toggle i { + vertical-align: middle !important; + margin: 0 5px 0 0 !important; + height: 100%; + color: #666; +} + +.um-admin-btn-content { + display: none; + padding: 10px 0 0 0; +} + +.um-admin-btn-content p { + float: left; + margin-right: 10px !important; + padding: 0 !important; +} + +.dynamic-mce-content {display: none} + +/* + - Buttons and Links +*/ + +.um-admin-btns { + line-height: 1.5em; + margin: 0 0 5px 0; +} + +.um-admin-btns a { + margin: 0 3px 8px 0!important; + font-size: 12px !important; + display: inline-block !important; + position: relative; +} + +.um-admin-btns a.button.with-icon { + padding-right: 25px !important; +} +.um-admin-btns a span { + color: #bbb; + position: absolute !important; + width: 25px; + text-align: center; + right: 0; + top: 0; + font-size: 15px !important; +} + +.um-admin-btns a span.remove:before{ + font-family: "ultimatemember" !important; + content: "\e483"; +} +.um-admin-btns a span:hover{color: #cb3838} + +/* + - WP Editor +*/ + +.um-admin-modal-body.um-admin-metabox .um-admin-editor-h label, +.um-admin-modal-body.um-admin-metabox .wp-editor-wrap +{margin: 0 0 10px 0 !important} + +.um-admin-modal-body.um-admin-metabox .wp-editor-wrap textarea { + border: 0 !important; +} + +/* + - Boxes / Icons +*/ + +#UM_fonticons div.um-admin-metabox { + padding-bottom: 22px !important; +} + +p._icon_search{ + position: relative; + width: 85% !important; + margin: 0 auto !important; + padding: 12px 0 0 0 !important; +} + +p._icon_search:before { + position: absolute; + right: 6px; + top: 13px; + font-size: 18px; + content: "\ebe1"; + font-family: "ultimatemember"; + color: #aaa; +} +p._icon_search input[type=text]{padding-right: 40px!important} + +.um-admin-icons { + padding: 0 0 15px 12px; + float: left; +} + +.um-admin-icons span { + cursor: pointer; + float: left; + margin: 5px; + color: #bbb; + border: 4px solid #eee; + border-radius: 3px; +} +.um-admin-icons span:hover, +.um-admin-icons span.highlighted +{color: #3ba1da;border-color: #3ba1da} + +.um-admin-icons i{vertical-align: middle !important;font-size: 24px;padding: 15px 20px;display: inline-block;} + +span.um-admin-icon-value { + margin: 0 10px; + font-size: 13px; +} +span.um-admin-icon-value i {font-size: 28px;vertical-align: middle;} + +span.um-admin-icon-clear{ + display: none; + cursor: pointer; + position: relative; + color: #ccc; +} +span.um-admin-icon-clear.show {display: inline-block} +span.um-admin-icon-clear:hover {color: #777} +span.um-admin-icon-clear i {font-size: 20px;vertical-align: middle;} \ No newline at end of file diff --git a/admin/assets/css/um-admin-redux.css b/admin/assets/css/um-admin-redux.css new file mode 100644 index 00000000..32bbac04 --- /dev/null +++ b/admin/assets/css/um-admin-redux.css @@ -0,0 +1,157 @@ +/* + - ReduxPanel +*/ + +.redux-container { + border-radius: 0 !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background: none !important; + box-shadow: none !important; + border: 0 !important; +} + +.redux-sidebar .redux-group-menu li.active a, .redux-sidebar .redux-group-menu li.active a:hover, .redux-sidebar .redux-group-menu li.activeChild a, .redux-sidebar .redux-group-menu li.activeChild a:hover { + background: transparent; +} + +.redux-container #info_bar { + display: none; +} + +.redux-sidebar .redux-group-menu { + font-size: 14px; +} + +.redux-sidebar .redux-group-menu li.active a, .admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a { + color: #3ba1da !important; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections a { + color: #fff !important; +} + +.redux-container .redux_field_th { + font-size: 14px; + font-weight: 600; + color: #222; +} + +.redux-main { + background: none !important; +} + +#redux-header { + background: #3ba1da !important; + border-color: #3ba1da !important; + border-radius: 0 !important; + padding: 0 0 0 20px !important; + border-bottom: 0 !important; +} + +#redux-header .display_header span { + color: #fff !important; + font-size: 14px; + position: relative; + top: -10px; + font-weight: 600; + padding-left: 4px; +} + +#redux-header h2 { + color: #fff; + font-size: 24px !important; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background: url(../img/logo-header.png) no-repeat left 8px; + padding: 10px 10px 10px 80px; +} + +#redux-share {margin-top: 11px !important} + +#redux-share a { + color: #777 !important; + font-size: 22px !important; + margin: 0 15px 0 0 !important; +} +#redux-share a:hover {color: #3ba1da !important} + +.redux-main .form-table tr { + border-bottom: 0; +} + +.redux-container #redux-footer { + border-radius: 0; + background: none !important; + padding: 10px 0; + border-top: 1px solid #D8D8D8; +} + +.redux-container #redux-footer .redux-action_bar { + padding-top: 9px !important; +} + +.redux-container textarea, .redux-container input[type=text], .redux-container ul.data-full li { + font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; + font-size: 13px; + line-height: 19px; + color: #333; +} + +.redux-container ul.data-full{padding:0!important;margin:0!important} + +.redux-container .description { + color: #666 !important; + font-size: 14px !important; + font-style: italic !important; + margin-top: 10px !important; +} + +.redux-container .redux-group-tab h3 { + border-bottom: 0; +} + +.redux-container-switch {font-size: 13px} + +.redux-sidebar .redux-group-menu li a { + color: #555; + opacity: 1 !important; + padding: 10px 4px 10px 14px; +} + +.redux-sidebar .redux-group-menu li a:hover { + background: #ddd; + color: #555; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections a { + background: #3ba1da !important; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active { + border-right: 0; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li { + border-right: 1px solid #DEDEDE; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a { + background: transparent !important; + color: #555 !important; + border-bottom: 1px solid #E7E7E7; + padding: 10px 4px 10px 14px !important; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover { + background: #ddd !important; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a { + background: #555 !important; + color: #fff !important; +} + +.redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after { + border: none !important; +} \ No newline at end of file diff --git a/admin/assets/img/1-column-active.gif b/admin/assets/img/1-column-active.gif new file mode 100644 index 00000000..2f60b393 Binary files /dev/null and b/admin/assets/img/1-column-active.gif differ diff --git a/admin/assets/img/1-column.gif b/admin/assets/img/1-column.gif new file mode 100644 index 00000000..d9be98c6 Binary files /dev/null and b/admin/assets/img/1-column.gif differ diff --git a/admin/assets/img/2-columns-active.gif b/admin/assets/img/2-columns-active.gif new file mode 100644 index 00000000..f7dd37f4 Binary files /dev/null and b/admin/assets/img/2-columns-active.gif differ diff --git a/admin/assets/img/2-columns.gif b/admin/assets/img/2-columns.gif new file mode 100644 index 00000000..5617a33a Binary files /dev/null and b/admin/assets/img/2-columns.gif differ diff --git a/admin/assets/img/3-columns-active.gif b/admin/assets/img/3-columns-active.gif new file mode 100644 index 00000000..47126dc5 Binary files /dev/null and b/admin/assets/img/3-columns-active.gif differ diff --git a/admin/assets/img/3-columns.gif b/admin/assets/img/3-columns.gif new file mode 100644 index 00000000..11db5513 Binary files /dev/null and b/admin/assets/img/3-columns.gif differ diff --git a/admin/assets/img/ajax-loader.gif b/admin/assets/img/ajax-loader.gif new file mode 100644 index 00000000..1455a255 Binary files /dev/null and b/admin/assets/img/ajax-loader.gif differ diff --git a/admin/assets/img/logo-header.png b/admin/assets/img/logo-header.png new file mode 100644 index 00000000..10d690c0 Binary files /dev/null and b/admin/assets/img/logo-header.png differ diff --git a/admin/assets/img/logo-small.png b/admin/assets/img/logo-small.png new file mode 100644 index 00000000..26634685 Binary files /dev/null and b/admin/assets/img/logo-small.png differ diff --git a/admin/assets/js/um-admin-ajax.js b/admin/assets/js/um-admin-ajax.js new file mode 100644 index 00000000..e990f420 --- /dev/null +++ b/admin/assets/js/um-admin-ajax.js @@ -0,0 +1,53 @@ +jQuery(document).ready(function() { + + jQuery(document).ajaxStart(function(){ + jQuery('.tipsy').hide(); + }); + + jQuery(document).on('click', 'a[data-silent_action^="um_"]',function(){ + + in_row = ''; + in_sub_row = ''; + in_column = ''; + in_group = ''; + + if ( jQuery('.um-col-demon-settings').data('in_column') ) { + in_row = jQuery('.um-col-demon-settings').data('in_row'); + in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row'); + in_column = jQuery('.um-col-demon-settings').data('in_column'); + in_group = jQuery('.um-col-demon-settings').data('in_group'); + } + + act_id = jQuery(this).data('silent_action'); + arg1 = jQuery(this).data('arg1'); + arg2 = jQuery(this).data('arg2'); + + jQuery('.tipsy').hide(); + + um_admin_remove_modal(); + + jQuery.ajax({ + url: ultimatemember_ajax_url, + type: 'POST', + data: {action: 'ultimatemember_do_ajax_action', act_id : act_id, arg1 : arg1, arg2 : arg2, in_row: in_row, in_sub_row: in_sub_row, in_column: in_column, in_group: in_group }, + success: function(data){ + + jQuery('.um-col-demon-settings').data('in_row', ''); + jQuery('.um-col-demon-settings').data('in_sub_row', ''); + jQuery('.um-col-demon-settings').data('in_column', ''); + jQuery('.um-col-demon-settings').data('in_group', ''); + + um_admin_modal_responsive(); + um_admin_update_builder(); + + }, + error: function(data){ + + } + }); + + return false; + + }); + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-builder.js b/admin/assets/js/um-admin-builder.js new file mode 100644 index 00000000..5d7c22fc --- /dev/null +++ b/admin/assets/js/um-admin-builder.js @@ -0,0 +1,42 @@ +/** + This function updates the + builder area with fields +**/ + +function um_admin_update_builder(){ + + form_id = jQuery('.um-admin-builder').data('form_id'); + + jQuery('.tipsy').hide(); + + jQuery.ajax({ + url: ultimatemember_ajax_url, + type: 'POST', + data: {action: 'update_builder', form_id: form_id }, + success: function(data){ + + jQuery('.um-admin-drag-ajax').html(data); + + jQuery('.tipsy').hide(); + + /* trigger columns at start */ + allow_update_via_col_click = false; + jQuery('.um-admin-drag-ctrls.columns a.active').each(function(){ + jQuery(this).trigger('click'); + }).promise().done( function(){ allow_update_via_col_click = true; } ); + + UM_Rows_Refresh(); + + }, + error: function(data){ + + } + }); + + return false; + +} + +jQuery(document).ready(function() { + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-dragdrop.js b/admin/assets/js/um-admin-dragdrop.js new file mode 100644 index 00000000..79631006 --- /dev/null +++ b/admin/assets/js/um-admin-dragdrop.js @@ -0,0 +1,388 @@ +function UM_Drag_and_Drop(){ + + jQuery('.um-admin-drag-col,.um-admin-drag-group').sortable({ + items: '.um-admin-drag-fld', + connectWith: '.um-admin-drag-col,.um-admin-drag-group', + placeholder: "um-fld-placeholder", + forcePlaceholderSize:true, + update: function(event, ui){ + + if ( ui.item.hasClass('um-field-type-group') && ui.item.parents('.um-field-type-group').length > 0 ) { + jQuery('.um-admin-drag-col,.um-admin-drag-group').sortable('cancel'); + } else { + UM_Change_Field_Col(); + + UM_Change_Field_Grp(); + + UM_Rows_Refresh(); + } + + } + }); + + jQuery('.um-admin-drag-rowsubs').sortable({ + items: '.um-admin-drag-rowsub', + placeholder: "um-rowsub-placeholder", + forcePlaceholderSize:true, + zIndex: 9999999999, + update: function(){ + + UM_update_subrows(); + + UM_Rows_Refresh(); + + } + }).disableSelection(); + + jQuery('.um-admin-drag-rowsub').sortable({ + items: '.um-admin-drag-col', + zIndex: 9999999999, + update: function(){ + + row = jQuery(this); + row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle'); + row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col').length ); + row.find('.um-admin-drag-col:last').addClass('cols-last'); + if ( row.find('.um-admin-drag-col').length == 3 ) {row.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');} + + UM_Change_Field_Col(); + + UM_Change_Field_Grp(); + + UM_Rows_Refresh(); + + } + }).disableSelection(); + + jQuery('.um-admin-drag-ajax').sortable({ + items: '.um-admin-drag-row', + handle: ".um-admin-drag-row-start", + zIndex: 9999999999, + placeholder: "um-row-placeholder", + forcePlaceholderSize:true, + out: function(){ + jQuery('.tipsy').remove(); + }, + update: function(){ + + UM_update_rows(); + + UM_Change_Field_Col(); + + UM_Change_Field_Grp(); + + UM_Rows_Refresh(); + + } + }).disableSelection(); + +} + +function UM_update_rows(){ + var c = 0; + jQuery('a[data-remove_element="um-admin-drag-row"]').remove(); + jQuery('.um-admin-drag-row').each(function(){ + c++; + row = jQuery(this); + if ( c != 1 ) { + row.find('.um-admin-drag-row-icons').append( '' ); + } + }); +} + +function UM_update_subrows(){ + jQuery('a[data-remove_element="um-admin-drag-rowsub"]').remove(); + jQuery('.um-admin-drag-row').each(function(){ + c = 0; + jQuery(this).find('.um-admin-drag-rowsub').each(function(){ + c++; + row = jQuery(this); + if ( c != 1 ) { + row.find('.um-admin-drag-rowsub-icons').append( '' ); + } + }); + }); +} + +function UM_Change_Field_Col(){ + jQuery('.um-admin-drag-col .um-admin-drag-fld').each(function(){ + cols = jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length; + col = jQuery(this).parents('.um-admin-drag-col'); + if ( col.hasClass('cols-last') ) { + if ( cols == 1 ) { + saved_col = 1; + } + if ( cols == 3 ) { + saved_col = 3; + } else if ( cols == 2 ) { + saved_col = 2; + } + } else if ( col.hasClass('cols-middle') && cols == 3 ) { + saved_col = 2; + } else { + saved_col = 1; + } + + jQuery(this).data('column', saved_col); + }); +} + +function UM_Change_Field_Grp(){ + jQuery('.um-admin-drag-col .um-admin-drag-fld:not(.um-field-type-group)').each(function(){ + if ( jQuery(this).parents('.um-admin-drag-group').length == 0 ){ + jQuery(this).data('group', ''); + } else { + jQuery(this).data('group', jQuery(this).parents('.um-admin-drag-fld.um-field-type-group').data('key') ); + } + }); +} + +function UM_Rows_Refresh(){ + + jQuery('.um_update_order_fields').empty(); + + /* ROWS */ + var c = 0; + jQuery('.um-admin-drag-row').each(function(){ + c++; + + row = jQuery(this); + + col_num = ''; + row.find('.um-admin-drag-rowsub').each(function(){ + + subrow = jQuery(this); + + subrow.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle'); + subrow.find('.um-admin-drag-col').addClass('cols-' + subrow.find('.um-admin-drag-col').length ); + subrow.find('.um-admin-drag-col:last').addClass('cols-last'); + if ( subrow.find('.um-admin-drag-col').length == 3 ) {subrow.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');} + + if ( !col_num ) { + col_num = subrow.find('.um-admin-drag-col').length; + } else { + col_num = col_num + ':' + subrow.find('.um-admin-drag-col').length; + } + + }); + + jQuery('.um_update_order_fields').append(''); + + sub_rows_count = row.find('.um-admin-drag-rowsub').length; + + jQuery('.um_update_order_fields').append(''); + jQuery('.um_update_order_fields').append(''); + + }); + + /* FIELDS */ + jQuery('.um-admin-drag-col .um-admin-drag-fld').each(function(){ + + if ( !jQuery(this).hasClass('group') ) { + var group = jQuery(this).data('group'); + if ( group != '' ) { + if ( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group').find( jQuery(this) ).length == 0 ) { + jQuery(this).appendTo( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group') ); + } else { + //jQuery(this).prependTo( jQuery('.um-admin-drag-fld.um-field-type-group.' + group ).find('.um-admin-drag-group') ); + } + jQuery('.um_update_order_fields').append(''); + } else { + jQuery('.um_update_order_fields').append(''); + } + } + + order = jQuery(this).index()+1; + + row = jQuery(this).parents('.um-admin-drag-row').index()+1; + row = '_um_row_'+row; + + saved_col = jQuery(this).data('column'); + + if ( saved_col == 3 ){ + jQuery(this).appendTo( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col:eq(2)') ); + } + if ( saved_col == 2 ){ + jQuery(this).appendTo( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col:eq(1)') ); + } + + sub_row = jQuery(this).parents('.um-admin-drag-rowsub').index(); + + jQuery('.um_update_order_fields').append(''); + + jQuery('.um_update_order_fields').append(''); + + jQuery('.um_update_order_fields').append(''); + + jQuery('.um_update_order_fields').append(''); + + }); + + UM_Drag_and_Drop(); + + UM_Add_Icon(); + + jQuery.ajax({ + url: ultimatemember_ajax_url, + type: 'POST', + data: jQuery('.um_update_order').serialize(), + success: function(){ + + } + }); + +} + +function UM_Add_Icon(){ + + var add_icon_html = ''; + + jQuery('.um-admin-drag-col').each(function(){ + if ( jQuery(this).find('.um-admin-drag-add-field').length == 0 ) { + jQuery(this).append(add_icon_html); + } else { + jQuery(this).find('.um-admin-drag-add-field').remove(); + jQuery(this).append(add_icon_html); + } + }); + + jQuery('.um-admin-drag-group').each(function(){ + if ( jQuery(this).find('.um-admin-drag-add-field').length == 0 ) { + jQuery(this).append(add_icon_html); + } else { + jQuery(this).find('.um-admin-drag-add-field').remove(); + jQuery(this).append(add_icon_html); + } + }); + +} + +jQuery(document).ready(function() { + + if ( !jQuery('.um-admin-drag').length ) return false; + + UM_Drag_and_Drop(); + + /* add field to respected area */ + jQuery(document).on('click', 'a.um-admin-drag-add-field', function(){ + in_row = jQuery(this).parents('.um-admin-drag-row').index(); + in_sub_row = jQuery(this).parents('.um-admin-drag-rowsub').index(); + if ( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length == 1 ) { + in_column = 1; + } else { + if ( jQuery(this).parents('.um-admin-drag-col').hasClass('cols-middle')){ + in_column = 2; + } else if ( jQuery(this).parents('.um-admin-drag-col').hasClass('cols-last') ) { + if ( jQuery(this).parents('.um-admin-drag-rowsub').find('.um-admin-drag-col').length == 3 ) { + in_column = 3; + } else { + in_column = 2; + } + } else { + in_column = 1; + } + } + + if ( jQuery(this).parents('.um-admin-drag-group').length ) { + in_group = jQuery(this).parents('.um-admin-drag-fld.um-field-type-group').data('key'); + } else { + in_group = ''; + } + + jQuery('.um-col-demon-settings').data('in_row', in_row); + jQuery('.um-col-demon-settings').data('in_sub_row', in_sub_row); + jQuery('.um-col-demon-settings').data('in_column', in_column); + jQuery('.um-col-demon-settings').data('in_group', in_group); + }); + + /* add row */ + jQuery(document).on('click', '*[data-row_action="add_row"]', function(){ + var dragg = jQuery('.um-admin-drag-ajax'); + dragg.append( '
' + jQuery('.um-col-demon-row').html() + '
' ); + dragg.find('.um-admin-drag-row:last').find('.um-admin-drag-row-icons').find('a.um-admin-drag-row-edit').attr('data-arg3', '_um_row_' + ( dragg.find('.um-admin-drag-row').length ) ); + UM_update_rows(); + UM_update_subrows(); + UM_Rows_Refresh(); + }); + + /* add sub row */ + jQuery(document).on('click', '*[data-row_action="add_subrow"]', function(){ + var dragg = jQuery(this).parents('.um-admin-drag-row').find('.um-admin-drag-rowsubs'); + dragg.append( '
' + jQuery('.um-col-demon-subrow').html() + '
' ); + UM_update_subrows(); + UM_Rows_Refresh(); + }); + + /* remove element */ + jQuery(document).on('click', 'a[data-remove_element^="um-"]',function(){ + element = jQuery(this).data('remove_element'); + + jQuery(this).parents('.' +element).find('.um-admin-drag-fld').each(function(){ + jQuery(this).find('a[data-silent_action="um_admin_remove_field"]').trigger('click'); + }); + + jQuery(this).parents('.' +element).remove(); + jQuery('.tipsy').remove(); + UM_Rows_Refresh(); + }); + + /* dynamically change columns */ + jQuery(document).on('click', '.um-admin-drag-ctrls.columns a', function(){ + + var row = jQuery(this).parents('.um-admin-drag-rowsub'); + var tab = jQuery(this); + var tabs = jQuery(this).parent(); + tabs.find('a').removeClass('active'); + tab.addClass('active'); + var existing_cols = row.find('.um-admin-drag-col').length; + var required_cols = tab.data('cols'); + var needed_cols = required_cols - existing_cols; + + if ( needed_cols > 0 ) { + + for (i = 0; i < needed_cols; i++){ + row.find('.um-admin-drag-col-dynamic').append('
'); + } + + row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle'); + row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col').length ); + row.find('.um-admin-drag-col:last').addClass('cols-last'); + + if ( row.find('.um-admin-drag-col').length == 3 ) {row.find('.um-admin-drag-col:eq(1)').addClass('cols-middle');} + + } else if ( needed_cols < 0 ) { + + needed_cols = needed_cols + 3; + if ( needed_cols == 2 ) { + row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-last').html() ); + row.find('.um-admin-drag-col.cols-last').remove(); + } + if ( needed_cols == 1 ) { + row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-last').html() ); + row.find('.um-admin-drag-col:first').append( row.find('.um-admin-drag-col.cols-middle').html() ); + row.find('.um-admin-drag-col.cols-last').remove(); + row.find('.um-admin-drag-col.cols-middle').remove(); + } + + row.find('.um-admin-drag-col').removeClass('cols-1 cols-2 cols-3 cols-last cols-middle'); + row.find('.um-admin-drag-col').addClass('cols-' + row.find('.um-admin-drag-col:visible').length ); + row.find('.um-admin-drag-col:last').addClass('cols-last'); + + } + + if ( allow_update_via_col_click == true ) { + UM_Change_Field_Col(); + UM_Rows_Refresh(); + } + + }); + + /* trigger columns at start */ + allow_update_via_col_click = false; + jQuery('.um-admin-drag-ctrls.columns a.active').each(function(){ + jQuery(this).trigger('click'); + }).promise().done( function(){ allow_update_via_col_click = true; } ); + + UM_Rows_Refresh(); + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-field.js b/admin/assets/js/um-admin-field.js new file mode 100644 index 00000000..e6a32cb4 --- /dev/null +++ b/admin/assets/js/um-admin-field.js @@ -0,0 +1,89 @@ +jQuery(document).ready(function() { + + /* Remove field permanently */ + jQuery(document).on('click', '.um-admin-btns a span.remove', function(e){ + e.preventDefault(); + + if (confirm('This will permanently delete this custom field from database')) { + + jQuery(this).parents('a').remove(); + + arg1 = jQuery(this).parents('a').data('arg1'); + + jQuery.ajax({ + url: ultimatemember_ajax_url, + type: 'POST', + data: {action: 'ultimatemember_do_ajax_action', act_id : 'um_admin_remove_field_global', arg1 : arg1 }, + success: function(data){ + + }, + error: function(data){ + + } + }); + + + } + + return false; + }); + + /* Add a Field */ + jQuery(document).on('submit', 'form.um_add_field', function(e){ + + e.preventDefault(); + + var form = jQuery(this); + + jQuery.ajax({ + url: ultimatemember_ajax_url, + type: 'POST', + dataType: 'json', + data: form.serialize(), + beforeSend: function(){ + form.css({'opacity': 0.5}); + jQuery('.um-admin-error').removeClass('um-admin-error'); + form.find('.um-admin-error-block').hide(); + form.find('.um-admin-success-block').hide(); + }, + complete: function(){ + form.css({'opacity': 1}); + }, + success: function(data){ + + if (data.error){ + + c = 0; + jQuery.each(data.error, function(i, v){ + c++; + if ( c == 1 ) { + form.find('#'+i).addClass('um-admin-error').focus(); + form.find('.um-admin-error-block').show().html(v); + } + }); + + um_admin_modal_responsive(); + + } else { + + jQuery('.um-col-demon-settings').data('in_row', ''); + jQuery('.um-col-demon-settings').data('in_sub_row', ''); + jQuery('.um-col-demon-settings').data('in_column', ''); + jQuery('.um-col-demon-settings').data('in_group', ''); + + um_admin_remove_modal(); + um_admin_update_builder(); + + } + + }, + error: function(data){ + + } + }); + + return false; + + }); + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-form.js b/admin/assets/js/um-admin-form.js new file mode 100644 index 00000000..f674c3c5 --- /dev/null +++ b/admin/assets/js/um-admin-form.js @@ -0,0 +1,38 @@ +jQuery(document).ready(function() { + + /* Default form tab */ + if ( jQuery('.um-admin-boxed-links').length > 0 ) { + + var tab = jQuery('.um-admin-boxed-links a[data-role="'+jQuery('input#_um_mode').val()+'"]'); + + tab.parents('.um-admin-boxed-links').find('a').removeClass('um-admin-activebg'); + tab.addClass('um-admin-activebg'); + jQuery('.um-admin div#side-sortables').show(); + jQuery('div[id^="um-admin-form"]').hide(); + jQuery('#submitdiv').show(); + jQuery('div#um-admin-form-mode,div#um-admin-form-title,div#um-admin-form-builder,div#um-admin-form-shortcode').show(); + jQuery('div[id^="um-admin-form-'+tab.data('role')+'"]').show(); + jQuery('.empty-container').css({'border' : 'none'}); + jQuery('.um-admin-builder').removeClass().addClass( 'um-admin-builder ' + jQuery('input#_um_mode').val() ); + + } + + /* Creating new form button */ + jQuery('.um-admin-boxed-links a').click(function(){ + + var tab = jQuery(this); + + tab.parents('.um-admin-boxed-links').find('a').removeClass('um-admin-activebg'); + tab.addClass('um-admin-activebg'); + jQuery('.um-admin div#side-sortables').show(); + jQuery('div[id^="um-admin-form"]').hide(); + jQuery('#submitdiv').show(); + jQuery('div#um-admin-form-mode,div#um-admin-form-title,div#um-admin-form-builder,div#um-admin-form-shortcode').show(); + jQuery('div[id^="um-admin-form-'+tab.data('role')+'"]').show(); + jQuery('input#_um_mode').val( tab.data('role') ); + jQuery('.empty-container').css({'border' : 'none'}); + jQuery('.um-admin-builder').removeClass().addClass( 'um-admin-builder ' + jQuery('input#_um_mode').val() ); + + }); + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-modal.js b/admin/assets/js/um-admin-modal.js new file mode 100644 index 00000000..27d85020 --- /dev/null +++ b/admin/assets/js/um-admin-modal.js @@ -0,0 +1,269 @@ +function um_admin_new_modal( id, ajax, size ){ + + var modal = jQuery('body').find('.um-admin-overlay'); + + jQuery('.tipsy').hide(); + + um_admin_remove_modal(); + + jQuery('body').addClass('um-admin-modal-open').append('
'); + jQuery('#' + id).prependTo('.um-admin-modal'); + jQuery('#' + id).show(); + jQuery('.um-admin-modal').show(); + + jQuery('.um-admin-modal-head').append(''); + + if ( ajax == true ) { + um_admin_modal_size( size ); + um_admin_modal_preload(); + um_admin_modal_responsive(); + } else { + um_admin_modal_responsive(); + } + +} + +function um_admin_modal_ajaxcall( act_id, arg1, arg2, arg3 ) { + + in_row = ''; + in_sub_row = ''; + in_column = ''; + in_group = ''; + + if ( jQuery('.um-col-demon-settings').data('in_column') ) { + in_row = jQuery('.um-col-demon-settings').data('in_row'); + in_sub_row = jQuery('.um-col-demon-settings').data('in_sub_row'); + in_column = jQuery('.um-col-demon-settings').data('in_column'); + in_group = jQuery('.um-col-demon-settings').data('in_group'); + } + + jQuery.ajax({ + url: ultimatemember_ajax_url, + type: 'POST', + data: {action: 'ultimatemember_dynamic_modal_content', act_id: act_id, arg1 : arg1, arg2 : arg2, arg3: arg3, in_row: in_row, in_sub_row: in_sub_row, in_column: in_column, in_group: in_group }, + complete: function(){ + um_admin_modal_loaded(); + um_admin_modal_responsive(); + }, + success: function(data){ + + jQuery('.um-admin-modal').find('.um-admin-modal-body').html( data ); + + um_responsive(); + + um_admin_live_update_scripts(); + + if ( jQuery('.um-admin-editor:visible').length > 0 ) { + + tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor'); + jQuery('.um-admin-editor').html( jQuery('.um-hidden-editor-container').contents() ); + tinyMCE.execCommand('mceAddEditor', true, 'um_editor'); + + jQuery('.switch-html').trigger('click'); + jQuery('.switch-html').trigger('click'); + jQuery('.switch-tmce').trigger('click'); + + jQuery('#um_editor_ifr').height(200); + + } + + if ( jQuery('.dynamic-mce-content').length > 0 ) { + var editor = tinyMCE.get('um_editor'); + var content = editor.getContent(); + editor.setContent( jQuery('.dynamic-mce-content').html() ); + } + + }, + error: function(data){ + + } + }); + return false; +} + +function um_admin_modal_responsive() { + var required_margin = jQuery('.um-admin-modal:visible').innerHeight() / 2 + 'px'; + jQuery('.um-admin-modal:visible').css({'margin-top': '-' + required_margin }); +} + +function um_admin_remove_modal(){ + + if ( jQuery('.um-admin-editor:visible').length > 0 ) { + + tinyMCE.execCommand('mceRemoveEditor', true, 'um_editor'); + jQuery('.um-hidden-editor-container').html( jQuery('.um-admin-editor').contents() ); + tinyMCE.execCommand('mceAddEditor', true, 'um_editor'); + + } + + jQuery('body').removeClass('um-admin-modal-open'); + jQuery('.um-admin-modal div[id^="UM_"]').hide().appendTo('body'); + jQuery('.um-admin-modal,.um-admin-overlay').remove(); +} + +function um_admin_modal_preload() { + jQuery('.um-admin-modal:visible').addClass('loading'); + jQuery('.um-admin-modal-body:visible').empty(); +} + +function um_admin_modal_loaded() { + jQuery('.um-admin-modal:visible').removeClass('loading'); +} + +function um_admin_modal_size( aclass ) { + jQuery('.um-admin-modal:visible').addClass(aclass); +} + +function um_admin_modal_add_attr( id, value ) { + jQuery('.um-admin-modal:visible').data( id, value ); +} + +/** + Custom modal scripting starts +**/ + +jQuery(document).ready(function() { + + /** + disable link + **/ + jQuery(document).on('click', '.um-admin-builder a, .um-admin-modal a', function(e){ + e.preventDefault(); + return false; + }); + + /** + toggle area + **/ + jQuery(document).on('click', '.um-admin-btn-toggle a', function(e){ + var content = jQuery(this).parent().find('.um-admin-btn-content'); + var link = jQuery(this); + if ( content.is(':hidden') ) { + content.show(); + link.find('i').removeClass().addClass('um-icon-minus'); + link.addClass('active'); + } else { + content.hide(); + link.find('i').removeClass().addClass('um-icon-plus-add'); + link.removeClass('active'); + } + um_admin_modal_responsive(); + }); + + /** + clone a condition + **/ + jQuery(document).on('click', '.um-admin-new-condition', function(){ + var content = jQuery(this).parents('.um-admin-btn-content'); + content.find('select').select2('destroy'); + var length = content.find('.um-admin-cur-condition').length; + if ( length < 5 ) { + var cloned = jQuery(this).parents('.um-admin-cur-condition').clone(); + cloned.find('input[type=text],select').each(function(){ + jQuery(this).attr('id', jQuery(this).attr('id') + length ); + jQuery(this).attr('name', jQuery(this).attr('name') + length ); + }); + cloned.find('input[type=text]').val(''); + cloned.find('.um-admin-new-condition').replaceWith('

'); + + cloned.appendTo( content ); + cloned.find('select').val(''); + um_admin_live_update_scripts(); + um_admin_modal_responsive(); + } else { + alert('You already have 5 rules'); + } + }); + + /** + remove a condition + **/ + jQuery(document).on('click', '.um-admin-remove-condition', function(){ + var condition = jQuery(this).parents('.um-admin-cur-condition'); + jQuery('.tipsy').remove(); + condition.remove(); + um_admin_live_update_scripts(); + um_admin_modal_responsive(); + }); + + /** + remove modal via action + **/ + jQuery(document).on('click', '.um-admin-overlay, a[data-action="UM_remove_modal"]', function(){ + um_admin_remove_modal(); + }); + + /** + fire new modal + **/ + jQuery(document).on('click', 'a[data-modal^="UM_"], span[data-modal^="UM_"]', function(){ + + var modal_id = jQuery(this).attr('data-modal'); + + if ( jQuery(this).attr('data-back') ) { + + jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-modal", jQuery(this).attr('data-back') ); + var current_icon = jQuery( '#' + jQuery(this).attr('data-back') ).find('input#_icon').val(); + if ( current_icon == '' ) { + jQuery('#UM_fonticons').find('.um-admin-icons span').removeClass('highlighted'); + } + + } + + if ( jQuery(this).data('dynamic-content') ) { + um_admin_new_modal( modal_id, true, jQuery(this).data('modal-size') ); + um_admin_modal_ajaxcall( jQuery(this).data('dynamic-content'), jQuery(this).data('arg1'), jQuery(this).data('arg2'), jQuery(this).data('arg3') ); + } else { + um_admin_new_modal( modal_id ); + } + + }); + + /** + choose font icon + **/ + jQuery(document).on('click', '.um-admin-icons span', function(){ + var icon = jQuery(this).attr('data-code'); + jQuery(this).parent().find('span').removeClass('highlighted'); + jQuery(this).addClass('highlighted'); + jQuery('#UM_fonticons').find('a.um-admin-modal-back').attr("data-code", icon); + }); + + /** + submit font icon + **/ + jQuery(document).on('click', '#UM_fonticons a.um-admin-modal-back:not(.um-admin-modal-cancel)', function(){ + var icon_selected = jQuery(this).attr('data-code'); + if (icon_selected != ''){ + jQuery('#' + jQuery(this).attr('data-modal') ).find('input#_icon').val( icon_selected ); + jQuery('#' + jQuery(this).attr('data-modal') ).find('span.um-admin-icon-value').html(''); + jQuery('#' + jQuery(this).attr('data-modal') ).find('.um-admin-icon-clear').show(); + } + jQuery(this).attr('data-code', ''); + }); + + /** + restore font icon + **/ + jQuery(document).on('click', 'span.um-admin-icon-clear', function(){ + var element = jQuery(this).parents('p'); + jQuery('#UM_fonticons a.um-admin-modal-back').attr('data-code', ''); + element.find('input[type=hidden]').val(''); + element.find('.um-admin-icon-value').html('No icon selected.'); + jQuery(this).hide(); + }); + + /** + search font icons + **/ + jQuery(document).on('keyup blur', '#_icon_search', function(){ + if ( jQuery(this).val().toLowerCase() != '' ) { + jQuery('.um-admin-icons span').hide(); + jQuery('.um-admin-icons span[data-code*="'+jQuery(this).val().toLowerCase()+'"]').show(); + } else { + jQuery('.um-admin-icons span:hidden').show(); + } + um_admin_modal_responsive(); + }); + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-scripts.js b/admin/assets/js/um-admin-scripts.js new file mode 100644 index 00000000..20c35c72 --- /dev/null +++ b/admin/assets/js/um-admin-scripts.js @@ -0,0 +1,202 @@ +function um_admin_live_update_scripts() { + + jQuery('.um-admin-modal-body:visible select').select2({ + allowClear: false, + minimumResultsForSearch: 10 + }); + + jQuery('.um-adm-conditional').each(function(){jQuery(this).trigger('change');}); + + jQuery('.um-admin-colorpicker').wpColorPicker(); + +} + +jQuery(document).ready(function() { + + /** + clone a field dropdown + **/ + jQuery(document).on('click', '.um-admin-clone', function(e){ + e.preventDefault(); + var container = jQuery(this).parents('.um-admin-field'); + var parent = jQuery(this).parents('p').find('.um-admin-field:last-child'); + container.find('select').select2('destroy'); + var cloned = container.clone(); + cloned.find('.um-admin-clone').replaceWith(''); + cloned.insertAfter( parent ); + cloned.find('select').val(''); + jQuery('.um-admin-field select').select2({ + allowClear: true, + minimumResultsForSearch: 10 + }); + return false; + }); + + /** + remove a field dropdown + **/ + jQuery(document).on('click', '.um-admin-clone-remove', function(e){ + e.preventDefault(); + var container = jQuery(this).parents('.um-admin-field'); + jQuery('.tipsy').remove(); + container.remove(); + jQuery('.um-admin-field select').select2({ + allowClear: true, + minimumResultsForSearch: 10 + }); + return false; + }); + + /** + Ajax link + **/ + + jQuery('.um-admin-ajaxlink').click(function(e){ + e.preventDefault(); + return false; + }); + + /** + On/Off Buttons + **/ + + jQuery(document).on('click', '.um-admin-yesno span.btn', function(){ + if (!jQuery(this).parents('p').hasClass('disabled-on-off')){ + if ( jQuery(this).parent().find('input[type=hidden]').val() == 0 ){ + update_val = 1; + jQuery(this).animate({'left': '60px'}, 200); + jQuery(this).parent().find('input[type=hidden]').val( update_val ).trigger('change'); + } else { + update_val = 0; + jQuery(this).animate({'left': '0'}, 200); + jQuery(this).parent().find('input[type=hidden]').val( update_val ).trigger('change'); + } + } + }); + + /** + WP Color Picker + **/ + + jQuery('.um-admin-colorpicker').wpColorPicker(); + + /** + Select Dropdowns + **/ + + jQuery(".umaf-selectjs").select2({ + allowClear: false, + minimumResultsForSearch: 10 + }); + + jQuery('.um-admin-field select').select2({ + allowClear: true, + minimumResultsForSearch: 10 + }); + + jQuery("body.um-admin .actions select:not('.umaf-selectjs')").select2({ + allowClear: false, + minimumResultsForSearch: 10, + width: '160px' + }); + + /** + Tooltips + **/ + + jQuery('.um-admin-tipsy-n').tipsy({gravity: 'n', opacity: 1, live: true }); + jQuery('.um-admin-tipsy-w').tipsy({gravity: 'w', opacity: 1, live: true }); + jQuery('.um-admin-tipsy-e').tipsy({gravity: 'e', opacity: 1, live: true }); + jQuery('.um-admin-tipsy-s').tipsy({gravity: 's', opacity: 1, live: true }); + + /** + Conditional fields + **/ + + jQuery(document).on('change', '.um-adm-conditional', function(){ + + if ( jQuery(this).data('cond1') ) { + if (jQuery(this).val() == jQuery(this).data('cond1') ){ + jQuery('.' + jQuery(this).data('cond1-show') ).show(); + jQuery('.' + jQuery(this).data('cond1-hide') ).hide(); + } else { + jQuery('.' + jQuery(this).data('cond1-show') ).hide(); + jQuery('.' + jQuery(this).data('cond1-hide') ).show(); + } + } + + if ( jQuery(this).data('cond2') ) { + if (jQuery(this).val() == jQuery(this).data('cond2') ){ + jQuery('.' + jQuery(this).data('cond2-show') ).show(); + jQuery('.' + jQuery(this).data('cond2-hide') ).hide(); + } else { + jQuery('.' + jQuery(this).data('cond2-show') ).hide(); + jQuery('.' + jQuery(this).data('cond2-hide') ).show(); + } + } + + if ( jQuery(this).data('cond3') ) { + if (jQuery(this).val() == jQuery(this).data('cond3') ){ + jQuery('.' + jQuery(this).data('cond3-show') ).show(); + jQuery('.' + jQuery(this).data('cond3-hide') ).hide(); + } else { + jQuery('.' + jQuery(this).data('cond3-show') ).hide(); + jQuery('.' + jQuery(this).data('cond3-hide') ).show(); + } + } + + });jQuery('.um-adm-conditional').each(function(){jQuery(this).trigger('change');}); + + /** + Conditional fields for + Radio Group + **/ + jQuery('.um-conditional-radio-group input[type=radio]').click(function(){ + var holder = jQuery('.um-conditional-radio-group'); + + var val = jQuery(this).val(); + var cond1 = holder.data('cond1'); + var show1 = holder.data('cond1-show'); + if ( val == cond1 ) { // condition met + jQuery('.' + show1).show(); + } else { + jQuery('.' + show1).hide(); + } + + var val2 = jQuery(this).val(); + var cond2 = holder.data('cond2'); + var show2 = holder.data('cond2-show'); + if ( val2 == cond2 ) { // condition met + jQuery('.' + show2).show(); + } else { + jQuery('.' + show2).hide(); + } + + });jQuery('.um-conditional-radio-group input[type=radio]:checked').each(function(){jQuery(this).trigger('click');}); + + /** + Conditional fields for + nav-menu editor options + **/ + + jQuery('.um-nav-mode').each(function(){ + + if ( jQuery(this).find('input[type=radio]:checked').val() ) { + if ( jQuery(this).find('input[type=radio]:checked').val() == 2 ) { + jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').show(); + } else { + jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').hide(); + } + } + + }); + + jQuery(document).on('click', '.um-nav-mode input[type=radio]', function(){ + if ( jQuery(this).val() == 2 ) { + jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').show(); + } else { + jQuery(this).parents('.um-nav-edit').find('.um-nav-roles').hide(); + } + }); + +}); \ No newline at end of file diff --git a/admin/assets/js/um-admin-users.js b/admin/assets/js/um-admin-users.js new file mode 100644 index 00000000..28952b94 --- /dev/null +++ b/admin/assets/js/um-admin-users.js @@ -0,0 +1,19 @@ +jQuery(document).ready(function() { + + jQuery('.um_single_user_action').each(function(){ + + jQuery(this).change(function(){ + + val = jQuery(this).val(); + + if ( val != '' ){ + var href= jQuery(this).parents('tr').find('a.button').attr('href'); + var new_href = href + '&um_single_user_action=' + val; + jQuery(this).parents('tr').find('a.button').attr('href',new_href); + } + + }); + + }); + +}); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/.gitignore b/admin/core/lib/ReduxFramework/.gitignore new file mode 100644 index 00000000..b393926d --- /dev/null +++ b/admin/core/lib/ReduxFramework/.gitignore @@ -0,0 +1,26 @@ +# Editors +project.xml +project.properties +/nbproject/private/ +.buildpath +.project +.settings* +sftp-config.json +codekit-config.json +.idea + +# Grunt +md5 +/docs/ +/redux/ +/output/ +/node_modules/ +/grunt-phplint/ +/tmp-wp-dev/ +npm-debug.log + +# OS X metadata +.DS_Store + +# Windows junk +Thumbs.db diff --git a/admin/core/lib/ReduxFramework/.jshintrc b/admin/core/lib/ReduxFramework/.jshintrc new file mode 100644 index 00000000..d8e6cb82 --- /dev/null +++ b/admin/core/lib/ReduxFramework/.jshintrc @@ -0,0 +1,19 @@ +{ + "boss": true, + "immed": true, + "noarg": true, + "onevar": true, + + "browser": true, + + "globals": { + "_": false, + "jQuery": true, + "module": true, + "console": true, + "document": true, + "window": true, + "redux_change": true, + "redux": true + } +} diff --git a/admin/core/lib/ReduxFramework/.travis.yml b/admin/core/lib/ReduxFramework/.travis.yml new file mode 100644 index 00000000..3e844011 --- /dev/null +++ b/admin/core/lib/ReduxFramework/.travis.yml @@ -0,0 +1,54 @@ +language: php +php: +#- 5.2 +- 5.3 +#- 5.4 +env: + global: + #secure: "HxNuZO2wWngETP4ZAJN/IA4SCG9C3yw8hV4laJOrb9xXRv8w1YI4xLKUTDEK8H1tg3f0Yh4943f22aDPoXUu8oG913yljbrjMPXM+30FkbxPLOu4rViepjV1ZPJ0+aw+fGvNfDWBfeNx32Ooi9BeK5cpGTKeLgzAJCeG2mROPpo=" + #secure: "vLqv9UpmPontcizx0ncbiaV0CJ6C54sFcJw1g4Csnwz7q3DJyHtGtjZLysKzyUzbXLzcSGWZfkeqbYXIuI7fdtIfBTSb9Zw39tPDItVzq9T+wyzkCv98F+LI4Py2UJR+dQNOzB+2s0IrAQZt3vsKnJbELKwQ1LWVkNXOu7eCIOo=" + #secure: "N1TGV9fQSoXhWD0AUMLF4PEWE99ZHA3ypjARJZX3fsycRD4YUbCcIdnKld5rM/4meeVN4kULDci5bcwAv3GrZY0l4lYNFpnInoyOU6B8PFG0795feacUtj8T8GBs9C4P/9ikLkK9BBXEacQ+i/E2Lvv50QJ17RDAbmvXB3gWDvc=" + #secure: "qZjPMjuQN2a4H2fQ9SSSfgAYRIoRmSTOxMF06CjeTQfIgimwmCayQYVVSKrXQorxpzHPjjg4vEs92oFuBE2nXDN0J4fA8u/E3Qvm4Mr9qWFn/JoOX+/xsYurPw9+rIjr75lT/b8cK38tdgqm7TmMIfsNY4RxHtOhXjt6hWGhUlY=" + secure: "aDIYEmgxoF/+2vwPdvmbxFKMoz8pA9vtvemehyLNvH3LF05RgFiwNNv+7Lvy127p4Fxp3VBK+ZLKUEEL1gdpevzgni9EigpK8YZbIVHXRL3U+1eP9rcnjuGF9pKuB4kB2ivzoprcalg1ZDI9PnRYRDE4YUTHJiEN2MmLys1QWdc=" + cache: + directories: + - node_modules + matrix: + - WP_VERSION=latest WP_MULTISITE=0 + - WP_VERSION=latest WP_MULTISITE=1 +install: +- npm install -g grunt-cli +- npm install +- find ReduxCore -type f | sort -u | xargs cat | md5sum > md5 +before_script: bash bin/install-wp-tests.sh wordpress_test root '' localhost $WP_VERSION +script: +- phpunit +- grunt jshint +- grunt lintPHP +after_success: + # Install the Heroku gem (or the Heroku toolbelt) + - gem install heroku + # Add your Heroku git repo: + - git remote add heroku git@heroku.com:redux-premium.git + # Turn off warnings about SSH keys: + - echo "Host heroku.com" >> ~/.ssh/config + - echo " StrictHostKeyChecking no" >> ~/.ssh/config + - echo " CheckHostIP no" >> ~/.ssh/config + - echo " UserKnownHostsFile=/dev/null" >> ~/.ssh/config + # Clear your current Heroku SSH keys: + - heroku keys:clear + # Add a new SSH key to Heroku + - yes | heroku keys:add +after_script: + #- ./bin/commit-uncompressed-files.sh + - ./bin/update-mirrors-docs.sh +notifications: + email: + recipients: + - dovy@reduxframework.com + - kevin.provance@gmail.com + on_failure: always +branches: + except: + - gh-pages + - setup \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/.tx/config b/admin/core/lib/ReduxFramework/.tx/config new file mode 100644 index 00000000..71fa6def --- /dev/null +++ b/admin/core/lib/ReduxFramework/.tx/config @@ -0,0 +1,8 @@ +[main] +host = https://www.transifex.com + +[redux-framework.redux-framework] +file_filter = ReduxCore/languages/.po +source_file = ReduxCore/languages/redux-framework.pot +source_lang = en_US +type = PO diff --git a/admin/core/lib/ReduxFramework/CHANGELOG.md b/admin/core/lib/ReduxFramework/CHANGELOG.md new file mode 100644 index 00000000..e9fb86df --- /dev/null +++ b/admin/core/lib/ReduxFramework/CHANGELOG.md @@ -0,0 +1,1235 @@ +# Redux Framework Changelog + +## 3.3.8.5 +* Modified: Added the "redux/options/{$this->args['opt_name']}/compiler/advanced" hook for more advanced compiling. +* Added: Suggestions as per #1709. Thanks @echo1consulting. + +## 3.3.8.4 +* Modified: Removed a cURL instance from the core and fixed the developer ad resizing. +* Fixed: PHP 5.2 issues. *sigh* + +## 3.3.8.3 +* Added: #1593 - Great pull request by @JonasDoebertin. Now you can enqueue dynamic output to the login screen or admin backend. + +## 3.3.8.2 +* Fixed: Customizer wasn't saving at all! That's been like 4 months. No one's reported it. Hmm. +* Fixed: #1702 - Customizer only fields were being erased on panel save. + +## 3.3.8.1 +* Fixed: Various Theme-Check errors with languages. +* Added: Theme-Check class to help devs know what is what. +* Fixed: The way we include files from include_once to require_once everywhere. +* Modified: Language files to reflect new strings. +* Modified: Formatted a bunch of old class files. +* Added: Notice on the updates for non-devs to use the new dev_mode disabler plugin and notify their developer. ;) + +## 3.3.8 +* Modified: Updated potomo, thanks @shivapoudel. +* Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel. + +## 3.3.7.11 +* Modified: #1685 - Specifying no default argument for image_select caused errors on reset. + +## 3.3.7.10 +* Fixed: #1667 - Slides Upload button causing JS error. + +## 3.3.7.9 +* Fixed: #1670 - Fix for Theme Check -> `add_setting() method needs to have a sanitization callback function passed.` + +## 3.3.7.8 +* Fixed: #1661 - Fix for undefined index in some versions of PHP. Thanks @gianbalex! +* Modified: #1658 - Improvements from @shivapoudel, including: + * Removed makepot and used grunt-wp-i18n instead. + * Added a jshintrc file + * Added a `grunt addtextdomain` to correct any bad textdomains in the core. + * Updated .gitignore for better readability + * Updates to a few other files including package.json. + * Updated language files. + * Update codestyles/.editorconfig to reflect the project's standards. + +## 3.3.7.7 +* Modified: #1653 - Better admin bar with external links: Admin bar menu priority, icon, and external links. Thanks @shivapoudel! + +## 3.3.7.6 +* Added: #1651 - `library_filter` argument. Allows specification of what files to display in the media library. +* Modified: #1651 - `mode` argument accepts either file type or mime type (but not both). + +## 3.3.7.5 +* Fixed: #1650 - Toogle error with responsive CSS. + +## 3.3.7.4 +* Fixed: #1643 - Slight border issue (2px) on sticky footer. + +## 3.3.7.3 +* Fixed: #1642 - Added `font_family_clear` arg, enabling the clear option for font-family. +* Fixed: #1638 - Spacing field not outputting when units values attached to default values. +* Modified #1644 - `import_icon` argument now accepts wordpress dashicons + +## 3.3.7.2 +* Fixed: #1634 - Double border for sections field. Thanks @AlexandruDoda +* Modified: Changelog location to now Changelog.md. + +## 3.3.7.1 +* Fixed: #1632 - Sortable with no defaults set revert to false (instead of options values). +* Fixed: Labels for sortable in text mode updated to match framework. + +## 3.3.7 +* Added: #1586 - Class-level declaration for callbacks and validation. Thanks @echo1consulting. +* Modified: Typography field now fully dynamic. +* Modified: No longer require a google_api_key for the typography module. :) +* Fixed: FTP credentials screen giving a "undefined submit_button function". Resolved. +* Modified: #1628 - Spacing and dimensions now only output 0 if the entry is a 0, not empty. + Thanks @Webcreations907 +* Modified: CSS for menu items when active (no hover). +* Added: Visual feedback to left menu if active. + +## 3.3.6.9 +* Fixed: #1623 - Registered older noUISlider JS under a new name to avoid conflicts. +* Modified: #1622 - Removed googlefonts.js dependency. + +## 3.3.6.8 +* Fixed: #1600 - ACE Editor bombing in PHP 5.2 environments. + +## 3.3.6.7 +* Fixed: #1591 - Erroneous outputting of font-weight and font-style when no font-family selected. +* Updated: #1569 - Improved submenu highlighting. +* Added: #1487 - Added `get_default_value` function into the framework.php + +## 3.3.6.6 +* Fixed: Framework URI errors when using child themes. Some restructuring. + +## 3.3.6.5 +* Fixed: Framework URI errors when embedded in theme with Windows. + +## 3.3.6.4 +* Added: image_size as an option for the data argument. Thanks @Gyroscopic! + +## 3.3.6.3 +* Modified: How Redux paths are run. Should cover all use cases now. Child themes can also embed + Redux properly now. Thanks @cfoellmann for the suggestions. Fix for issue #1566. + +## 3.3.6.2 +* Modified: How we declare the uploads directory and URL. Using core WP functions now. + +## 3.3.6.1 +* Modified: Now if a section is empty, but has subsections, that section will be "skipped" when + clicked and the first subsection will then be shown. + +## 3.3.6 +* Modified: Language files. +* Fixed: #1560 - IE8 RGBA fallack + +## 3.3.5.12 +* Fixed: #1543 - Hint icon not changing when set in args. + +## 3.3.5.11 +* Fixed: #1537 - Media field not accepting images with mode set to false. + +## 3.3.5.10 +* Fixed: #1529 - ACE Editor conflict with Visual Composer. +* Added: #1530 - Added argument to specify admin bar icon, `admin_bar_icon`. Thanks Ninos! +* Fixed: #1532 - Media field not accepting any mime type when `'mode' => false`. + +## 3.3.5.9 +* Fixed: #1520 - Checkbox field not displaying Wordpress data when using data argument. + +## 3.3.5.8 +* Fixed: #1516 - Invalid index and foreach when using compiler and async_typography. + +## 3.3.5.7 +* Fixed: #1509 - Sorter adding unnecessary bits on some items. +* Fixed: #1514 - Customizer and multisite not getting on properly. +* Fixed: #1512 - Slides 'Upload' button not showing or saving selected image. + +## 3.3.5.6 +* Fixed: Checkboxes with required were working in reverse. + +## 3.3.5.5 +* Fixed: ASync Typography now works! No more flashing fonts. + +## 3.3.5.4 +* Fixed: #1489 - Color picker UI lining up improperly. +* Fixed: #1497 - dev_mode spinner issue. + +## 3.3.5.3 +* Fixed: Spelling error in tracking dialog. +* Modified: Updated ace_editor. +* Modified: Many MANY fields for the group field. +* Fixed: Some CSS bugs. + +## 3.3.5.2 +* Fixed: #1481 - Custom fonts loading in google font CSS. +* Fixed: #1485 - Customizer 'invalid argument' error. Thanks @rnlmedia. + +## 3.3.5.1 +* Fixed: #1472 - font style not displaying saved valie with no font-family argument set. +* Fixed: #1471 - raw field and required not playing nice together. + +## 3.3.5 +* Added: An annoying notice at the top so our devs don't ship with dev_mode on. ;) + +## 3.3.4.9 +* Fixed: #1462 - Google fonts not loading in font drop down. + +## 3.3.4.8 +* Fixed: More WP FileSystem tanking. Did PHP fallback before FTP. Works 99.9% of the time without credentials. + +## 3.3.4.7 +* Fixed: Incorrect folder CHMOD in filesystem class. + +## 3.3.4.6 +* Fixed: #1454 - Chmod permissions for redux folder. + +## 3.3.4.5 +* Fixed: #1451 - Googlefonts not loading due to failing copy function. + +## 3.3.4.4 +* Fixed: #1450 - Saves witch values with no `on` or `off` args make the core unhappy. + +## 3.3.4.3 +* Fixed: #1444, again, due to filesystem growing pains. +* Fixed: #1449 - Restoring `options` argument over a lousy attempt to fix placeholder. + +## 3.3.4.2 +* Fixed: More file permission issues. + +## 3.3.4.1 +* Fixed: Font debug was left from last commit. Sorry all. + +## 3.3.3.8 +* Fixed: Issues with file writing. Basically many users don't install WordPress with all the permissions correct. + So... Had to move it back to /uploads/. Sorry Otto, that's just how it is. +* Fixed: #1444 - output of typography all_styles when font_style UI was hidden. + +## 3.3.3.7 +* Fixed: #1440 - flaw in new cleanFilePath logic. + +## 3.3.3.6 +* Fixed: #1432 - Theme check failing when double-slashes existed in get_template_directory() return. +* Removed: curlRead from helper class. + +## 3.3.3.5 +* Fixed: #1426 - menu_name not appearing on front end admin bar. +* Added: #1427 - button_set added to customizer UI. Thanks @wpexplorer. + +## 3.3.3.4 +* Fixed: #1429 - ACE Editor erroring with no default value set. +* Fixed: wp_filesystem now initialized with credentials in an effort to combat the tmp file issue. + +## 3.3.3.3 +* Modified: Code purification. + +## 3.3.3.2 +* Modified: How section tabs work. Isolated within the redux-container class. + +## 3.3.3 +* Modified: #1412 - Redesigned text label, placeholder fix. + +## 3.3.2.10 +* Fixed: #1408 & #1357 - Typography subsets losing value after multiple saves + on other panels. + +## 3.3.2.9 +* Fixed: #1403 - unit value no longer prints after empty typography values +* Modified: Typography: Backup font no longer appends to `font-family` variable. + Please use the `backup-font` variable to specify backup fonts. This + does not apply to output/compiler strings. + +## 3.3.2.8 +* Fixed: #1403 - Backup font not appearing in font-family variable. + +## 3.3.2.7 +* Modified: Customizer now supports section and field `permissions` argument. +* Fixed: #1399 - Customizer respects `page_permissions` argument. + +## 3.3.2.6 +* Fixed: #1400 - output/compiler string incomplete using multiple selectors. + +## 3.3.2.5 +* Fixed: #1396 - Custom fonts cutting off multiple families in selector, after save. +* Fixed: Typography attempting to queue up non google fonts on backend. +* Added: #1395 - Display of child theme status in sysinfo, thanks @SiR-DanieL. + +## 3.3.2.4 +* Fixed: #1387 - Page jump when clicking "Options Object". Thanks @rrikesh. +* Added: #1392 - Filters to change the following localized strings: + redux/{opt_name}/localize/reset + redux/{opt_name}/localize/reset_all + redux/{opt_name}/localize/save_pending + redux/{opt_name}/localize/preset + +## 3.3.2.3 +* Fixed: #1376 - checkbox.min.js missing. + +## 3.3.2.2 +* Fixed: Static variable changes for instances and basic comment cleanup + +## 3.3.2.1 +* Fixed: #1361 - Raw field not hiding with required. +* Fixed: Datepicker not formatting properly. Still needs some work. + +## 3.3.1.9 +* Fixed: #1357 - Preview not rendering font on page load. + +## 3.3.1.8 +* Fixed: #1356 - Color fields and transparency not syncing due to new JS. + +## 3.3.1.7 +* Fixed: #1354 - Add class check for W3_ObjectCache. + +## 3.3.1.6 +* Fixed: #1341 - JS not initializing properly in import_export. + +## 3.3.1.5 +* Fixed: #1339 - Typography would lose Font Weight and Style. value was + named val in the HTML, so it would be destroyed on the next save + if not initialized. + +## 3.3.1.4 +* Fixed: #1226 - W3 Total Cache was affecting validation and compiler hooks. +* Fixed: Menu errors weren't showing properly for non-subsectioned items. + +## 3.3.1.3 +* Fixed: #1341 - Import/Export buttons not functioning. Also fixed sortable somehow. + +## 3.3.1.2 +* Fixed: Slides not initializing with the last fix. + +## 3.3.1.1 +* Fixed: Slides field was not properly initialized for the media elements. Fixed. + +## 3.3.0.6 +* Fixed: #1337 - `redux` JS dependency loading issue. Many thanks @tpaksu + +## 3.3.0.5 +* Modified: Drastically changed the way JavaScript is used in the panel. Forced as-needed + initialization of fields. Thus reducing dramatically the overall load time of + the panel. The effects have been seen up to 300% speed improvement. The only + time a field will be initialized is if it's visible, thus reducing the processing + needed in DOM overall. + +## 3.3.0.4 +* Fixed: #1336 - fixed default font in preview. + +## 3.3.0.3 +* Fixed: #1334 - Typography not un-saving italics. + +## 3.3.0.2 +* Added: #1332 - New validation: numeric_not_empty. + +## 3.3.0.1 +* Fixed: #1330 - Required not working on all fields. + +## 3.3.0 +* Added: #1329 - `'preview' = array('always_display' => true)` argument to typography, to determine if preview field show always be shown. + +## 3.2.9.38 +* Fixed: #1322 - Sections not folding with required argument. +* Modified: Portions of core javascript rewritten into object code. + +## 3.2.9.37 +* Fixed: #1270 - Editor field compiler hook not firing in visual mode. + +## 3.2.9.36 +* Added: `hide_reset` argument, to hide the Reset All and Reset Section buttons. + +## 3.2.9.35 +* Fixed: select2 dependency in select_image, and other fields. + +## 3.2.9.34 +* Fixed: Filter out `@eaDir` directories in extensions folder. +* Added: `content_title` argument to slides field. Thanks @psaikali! + +## 3.2.9.33 +* Fixed: Fixed the image_select presets to work again. Also now will function even if import/export is disabled. + +## 3.2.9.32 +* Fixed: Minor tweaks for metabox update. + +## 3.2.9.31 +* Fixed: #1297 - Missing space in image_select class. +* Fixed: Slider field tweaked for metaboxes. + +## 3.2.9.30 +* Fixed: #1291 - Change of font-family would not trigger preview, or show in open preview. + +## 3.2.9.29 +* Fixed: #1289 - Typography not retaining size/height/spacing/word/letter spacing settings. + +## 3.2.9.28 +* Fixed: #1288 - Background color-picker dependency missing. Thanks @farhanwazir. + +## 3.2.9.27 +* Fixed: Search extension failed do to dependency issue from the core. + +## 3.2.9.26 +* Fixed: #1281 - color field output/compiler outputting incorrect selector when only one array present. + +## 3.2.9.25 +* Fixed: Update check only appears once if multiple instances of Redux are loaded in the same wordpress instance. + +## 3.2.9.24 +* Fixed: Changing font-family in typography didn't trigger 'save changes' notification. +* Fixed: More typography: Back up font appearing in font-family when opening selector. +* Fixed: Typography: undefined message when NOT using google fonts. Thanks @farhanwazir + +## 3.2.9.23 +* Added: `customizer_only` argument for fields & sections, contributed by @andreilupu. + +## 3.2.9.22 +* Fixed: Typography font backup not in sync with font-family. +* Fixed: Typography not saving font-family after switching back and forth between standard + and google fonts. +* Fixed: Background field selects not properly aligned. + +## 3.2.9.21 +* Added: select2 args for spacing field. +* Modified: All field javascript rewritten using jQuery objects (versus standard function). + Prepping for another crack at group field. + +## 3.2.9.20 +* Added: select2 args for the following fields: typography, background, border, dimensions and slider. +* Fixed: Removed select field dependency from background field. + +## 3.2.9.19 +* Fixed: #1264 - Color-picker/transparent checkbox functionality. +* Fixed: Typography fine-tuning. + +## 3.2.9.18 +* Modified: Typography field rewritten to fill out font-family field dynamically, versus on page load. +* Fixed: All typography select fields render as select2. + +## 3.2.9.17 +* Fixed: Switching between transparency on and off now restores the last chosen color in + all color fields. + +## 3.2.9.16 +* Fixed: Redux uploads dir should NOT be ~/wp-content/uploads, but just wp-content. + As per Otto. +* Fixed: Navigation no longer has that annoying outline around the links. Yuk. + +## 3.2.9.15 +* Fixed: #1218 - Select2 multi select not accepting any keyboard input. + +## 3.2.9.14 +* Fixed: #1228 - CSS fixes + +## 3.2.9.13 +* Fixed: #1255 - button_set multi field not saving when all buttons not selected. + +## 3.2.9.12 +* Fixed: #1254 - Border field with 0px not outputting properly. +* Fixed: #1250 - Typography preview font-size not set in preview. +* Fixed: #1247 - Spacing field not outputting properly in `absolute` mode. +* Modified: Typography previewing hidden until font inputs are changed. + +## 3.2.9.11 +* Fixed: Vendor js not loading properly when dev_mode = true +* Fixed: Border field not outputting properly. + +## 3.2.9.10 +* Modified: Centralized import/export code in anticipation of new builder features. +* Fixed: Removed rogue echo statement. + +## 3.2.9.9 +* Modified: select2 loads only when a field requires it. + +## 3.2.9.8 +* Modified: More code to load JS on demand for fields require it. + +## 3.2.9.7 +* Modified: Field specific JS only loads with active field. +* Fixed: Hints stopped working due to classname change. + +## 3.2.9.6 +* Fixed: Permissions argument on section array not filtering out raw field. + +## 3.2.9.5 +* Fixed: Too many CSS tweaks to list, due to last build. +* Fixed: Sortable and Sorter fields now sort without page scroll when page size is + under 782px. +* Fixed: Hint icon defaults to left position when screen size is under 782px. +* Fixed: `permissions` argument for fields and sections erasing saved field data. See #1231 + +## 3.2.9.4 +* Modified: Woohoo! Nearly fully responsive. Yanked out all SMOF and NHP field customizations. + Lots of little fixes on all browser screens. This will also greatly benefit Metaboxes + and other areas of Redux. +* Fixed: In dev_mode panel CSS was being loaded 2x. + +## 3.2.9.3 +* Fixed: Typography color picker bleeding under other elements. #1225 +* Fixed: Hint icon_color index error from builder. #1222 + +## 3.2.9.2 +* Fixed: Tracking. It was... odd. Also started our support hooks, UI to come. +* Fixed: Now import/export supports multiple instances. I can't believe this has been this way for so long. + +## 3.2.9.1 +* Fixed: Spacing field not outputting proper CSS when `mode` was set to absolute, and `all` was set to true. +* Fixed: CSS fix for typography. Color picker would interfere with save/reset bar. + +## 3.2.8.21 +* Added: Network admin support! Set argument 'database' to network and data will be saved site-wide. + Also two new arguments: network_admin & network_sites for where to show the panel. + +## 3.2.8.20 +* Fixed: Redux now ignores any directories that begin with `.` in the extension folder. See #1213. + +## 3.2.8.19 +* Fixed: Redux not saving when validating uploads. +* Modified: Dimension field default now accepts either `units` or `unit`. + +## 3.2.8.18 +* Fixed: Border field output/compiler formatting. Removed 'inherit' in place of default values. See #1208. +* Fixed: Trim() warning in framework.php when saving. See #1209, #1201. + +## 3.2.8.17 +* Fixed: Typography not outputting all styles when `all_styles` set to true. + +## 3.2.8.16 +* Added: `output` argument for `color` and `color_rgba` fields accepts key/pairs for different modes. Example: +``` + 'output' => array('color' => '.site-title, .site-header', 'background-color' => '.site-background') +``` + +## 3.2.8.15 +* Added: Customizer hook that can be used to simulate the customizer for live preview in the customizer. + `redux/customizer/live_preview` + +## 3.2.8.14 +* Fixed: 'Cannot send header' issues with typography. +* Modified: Google CSS moved into HEAD via WP enqueue. + +## 3.2.8.13 +* Added: `class` argument to the Redux Arguments, section array, and metabox array. If set, a class will be + appended to whichever level is used. This allows further customization for our users. + +## 3.2.8.12 +* Fixed: Small fix for validation if subsection parent is free of errors, remove the red highlight when + not expanded. +* Fixed: Small CSS classes for flashing fonts where web-font-loader. +* Fixed: ASync Flash on fonts. FINALLY. What a pain. +* Modified: Now do a trim on all fields before validating. No need to alert because of a space... + +## 3.2.8.11 +* Modified: Typography field CSS completely rewritten. All thanks to @eplanetdesign! +* Modified: Validation now works in metaboxes as well as updates numbers as changes occur. Validation for + subsections is SO hot now. +* Modified: Various CSS fixes and improvements. +* Fixed: 3+ JavaScript errors found in the background field. Now works flawlessly. +* Added: disable_save_warn flags to the arguments to disable the "you should save" slidedown. + +## 3.2.8.10 +* Fixed: PHP warnings in background field. #1173. Thanks, @abossola. +* Fixed: CSS validation not respecting child selector symbol. #1162 + +## 3.2.8.9 +* Modified: Turned of mod_rewrite check. + +## 3.2.8.8 +* Modified: How errors are displayed, no longer dependent on the ID, now proper classes. +* Fixed: Extra check for typography bug. +* Fixed: Error css alignment issue with subsections. +* Modified: Error notice stays until all errors are gone. Also updates it's number as errors fixed! + +## 3.2.8.7 +* Modified: Moved google font files to proprietary folder in upload to help with permission issues. + +## 3.2.8.6 +* Fixed: javascript error in typography field. + +## 3.2.8.5 +* Fixed: Added a title to the google fonts stylesheet to fix validation errors. + +## 3.2.8.4 +* Fixed: One more slides field error check, and an extra JS goodie for an extension. + +## 3.2.8.3 +* Fixed: Leftover debug code messing up slides field. + +## 3.2.8.2 +* Fixed: More reliable saved action hook. +* Added: Actions hooks for errors and warnings. + +## 3.2.8.1 +* Fixed: Removed erroneous debug output in link_color field. + +## 3.2.7.3 +* Added: is_empty / empty / !isset AND not_empty / !empty / isset as required operations + +## 3.2.7.2 +* Fixed: Reset defaults error. +* Added: `show` argument to turn on and off input boxes in slider. + +## 3.2.7.1 +* Fixed: Required now works with muti-check fields and button set when set to multi. + +## 3.2.7 +* Fixed: Import works again. A single line was missed... + +## 3.2.6.2 +* Fixed: link_color field not outputting CSS properly via compiler or output. Thanks @vertigo7x +* Fixed: Sorter field CSS. Buttons were all smushed together. + +## 3.2.6.1 +* Fixed: 'undefined' error in typography.js. Thanks @ksere. + +## 3.2.6 +* Fixed: Another stray undefined index. Oy. + +## 3.2.5.1 +* Added: `open_expanded` argument to start the panel completely expanded initially. + +## 3.2.5 +* Fixed: Various bad mistakes. Oy. + +## 3.2.4 +* Fixed: Slight typography speed improvement. Less HTML hopefully faster page loads. +* Fixed: Unload error on first load if the typography defaults are not set. + +## 3.2.3.5 +* Modified: Moved update check functions to class file and out of the core. +* Fixed: Errors pertaining to mod_rewrite check. + +## 3.2.3.4 +* Fixed: All those headers already set errors. + +## 3.2.3.3 +* Added: $changed_values variable to save hooks denoting the old values on a save. +* Added: Pointers to Extensions on load. +* Modified: CSS Output for the background field. + +## 3.2.3.2 +* Fixed: Validation error messages not appearing on save. +* Modified: Speed boost on validation types. +* Added: Apache mod_rewrite check. This should solve many issues we've been seeing regarding mod_rewrite noe being enabled. + +## 3.2.3.1 +* Fixed: Sortable field not saving properly. +* Fixed: Erroneous data in admin.less +* Updated: sample-config.php. Sortable checkbox field example now uses true/false instead of text + meant for textbox example. + +## 3.2.3 +* Fixed: Responsive issues with spacing and dimension fields. + +## 3.2.2.16 +* Fixed: Style conflicts with WP 3.9. Added register filter to fields via id. + +## 3.2.2.15 +* Fixed: Metaboxes issues. + +## 3.2.2.14 +* Modified: Some admin panel stylings. Now perfect with mobile hover. Also fixed an issue + with the slidedown width for sections. No more 2 empty pixels. + +## 3.2.2.13 +* Added: Tick mark if section has sub sections. Hidden when subsections expanded. + +## 3.2.2.12 +* Fixed: Compiler hook in the customizer now passes the CSS. + +## 3.2.2.11 +* Fixed: Compiler hook now properly fires in the customizer. + +## 3.2.2.10 +* Fixed: Validation error with headers already being set. + +## 3.2.2.9 +* Fixed: Added mode for width/height to override dimensions css output. + +## 3.2.2.8 +* Fixed: Restoring lost formatting from multiple merges. + +## 3.2.2.7 +* Fixed: New sorter default values get set properly now. ;) + +## 3.2.2.6 +* Added: `data` and `args` can now be set to sorter! Just make sure to have it be a key based on what + you want it to display as. IE: `array('Main'=>'sidebars')` + +## 3.2.2.5 +* Added: Prevent Redux from firing on AJAX heartbeat, but added hook for it 'redux/ajax/heartbeat'. +* Fixed: Removed erroneous 's' character from HTML. + +## 3.2.2.4 +* Added: Check to make sure a field isn't empty after the filter. If it is empty, skip over it. + +## 3.2.2.3 +* Added: Subsections now show icon if they have it. Show text only (without indent) if they do not. + +## 3.2.2.2 +* Added: Set a section or field argument of `'panel' => false` to skip over that field or panel and + hide it. It will still be registered with defaults saved, but not display. This can be useful + for things like the customizer. + +## 3.2.2.1 +* Added: SUBSECTIONS! Just add `'subsection' => true` to any section that isn't a divide/callback and + isn't the first section in your panel. ;) + +## 3.2.1.2 +* Fixed: Info field didn't intend within section. + +## 3.2.1.1 +* Fixed: Compiler hook wasn't running. + + +## 3.1.9.44 +* Fixed: Small bug in image_select javascript. + +## 3.1.9.43 +* Added: Import hook, just because we can. :) + +## 3.1.9.42 +* Fixed: Customizer now TRULY outputting CSS if output_tag is set to false. + +## 3.1.9.41 +* Fixed: Reset section, etc. Discovered an odd WordPress thing. + +## 3.1.9.40 +* Fixed: Image_select size override. +* Fixed: Customizer save not firing the compiler hook. +* Fixed: Customizer not outputting CSS if output_tag is set to false. +* Fixed: Small empty variable check. Undefined index in the defaults generating function. + +## 3.1.9.39 +* Fixed: WP 3.9 update made editor field button look ugly. +* Fixed: Save hook not firing when save_default set to false. + +## 3.1.9.38 +* Fixed: Reset section anomalies. Maybe. + +## 3.1.9.37 +* Fixed: Array of values in required not recognized. + +## 3.1.9.36 +* Fixed: Updated hint defaults to prevent index warning. + +## 3.1.9.35 +* Fixed: Removed leftover debug code. + +## 3.1.9.34 +* Added: New readonly argument for text field. + +## 3.1.9.33 +* Fixed: Reset/Reset section actions hooks now fire properly. + +## 3.1.9.32 +* Fixed: When developer uses section field but does not specify an indent argument. + +## 3.1.9.31 +* Fixed: Dynamic URL for slides +* Fixed: Accidently removed reset action on section reset. Restored. + +## 3.1.9.30 +* Fixed: Section defaults bug for certain field types. + +## 3.1.9.29 +* Fixed: Dynamic URL if site URL changed now updates media properly if attachement exists. + +## 3.1.9.28 +* Fixed: Customizer now correctly does live preview. + +## 3.1.9.27 +* Fixed: Special enqueue case fix. + +## 3.1.9.26 +* Added: A few more hooks for defaults and options. +* Fixed: Small undefined index error. +* Added: Section key generation via title. +* Modified: File intending. + +## 3.1.9.25 +* Fixed: Custom menus not displaying options panel. + +## 3.1.9.24 +* Fixed: Single checkbox option not retaining checked value. +* Fixed: Border field returning bad CSS in CSS compiler. + +## 3.1.9.23 +* Fixed: Import/Export fix. Thanks, CGlingener! + +## 3.1.9.22 +* Added: Save warning now is sticky to the top and responsive. +* Fixed: Mobile fixes for Redux. Looks great on small screens how. +* Fixed: Slight CSS fixes. +* Fixed: Compiler fixes and added notices. +* Added: Import/Export more reasonable text. + +## 3.1.9.21 +* Added: `force_output` are on the field level to bypass the required check that removes the output + if the field is hidden. Thanks @rffaguiar. + +## 3.1.9.20 +* Fixed: Rare case (mediatemple grid server) when file_get_contents won't work outside of the + uploads dir. Used curl to grab the font HTML. ;) + +## 3.1.9.19 +* Fixed: Undefined index for admin bar. + +## 3.1.9.18 +* Fixed: SMALL issue with WordPress 3.9. Now it works. ;) + +## 3.1.9.17 +* Fixed: Info and divide field now work with required. + +## 3.1.9.16 +* Added: Fallback. Now if the media, slides, or background URL doesn't match the site URL, but the + attachment ID is present, the data is updated. + +## 3.1.9.15 +* Fixed: Last tab not properly set. Slow rendering. + +## 3.1.9.14 +* Modified: Replaced transients with cookies. + +## 3.1.9.13 +* Fixed: Undefined variable issues for new required methods. + +## 3.1.9.12 +* Fixed: Default_show display error with a non-array being steralized. +* Added: Multiple required parent value checking! Booya! +* Fixed: Sections now fold with required. + +## 3.1.9.11 +* Fixed: select2 not rendering properly when dev_mode = false, because of ace_editor fix. +* Fixed: Removed mistakenly compiled test code from redux.js. + +## 3.1.9.10 +* Fixed: ace_editor not rendering properly in certain instances. +* Modified: Small change to import_export field in checking for existing instance of itself. + +## 3.1.9.9 +* Fixed: import_export not rendering when the menutype argument was set to menu + +## 3.1.9.8 +* Fixed: Ace_editor not enqueued unless used. MEMORY HOG. + +## 3.1.9.7 +* Fixed: Color_Gradient transparency to was being auto-selected if from way transparent. +* Fixed: Enqueue select with slider for local dev. + +## 3.1.9.6 +* Modified: removed add_submenu_page when creating a submenu for us in the WP admin area. WP + approved API is used in it's place to being Redux up to wp.org theme check standards. + +## 3.1.9.5 +* Fixed: Massive speed issue with button_set. Resolved. +* Fixed: Issue where default values throws an error if ID is not set. + +## 3.1.9.4 +* Fixed: Continuing effort to ensure proper loading of config from child themes. + +## 3.1.9.3 +* Fixed: Import/Export array search bug if section['fields'] is not defined. + +## 3.1.9.2 +* Fixed: Inconsistencies in import/export across different versions of PHP. + +## 3.1.9.1 +* Fixed: Redux checks for child or parent theme exclusively before loading. + +## 3.1.9 +* Updated: RGBA Field stability. Thank you, SilverKenn. + +## 3.1.8.23 +* Modified: Separated Import/Export from the core. It can now be used as a field. + +## 3.1.8.22 +* Fixed: Typography custom preview text/size not outputting. +* Fixed: No font selected in typography would default to 'inherit'. +* Fixed: Hint feature kicking back a notice if no title was specified. + +## 3.1.8.21 +* Fixed: Sortable field, when used a checkboxes, were all checked by default, even when set not to be. +* Fixed: button_set field not setting properly in multi mode. + +## 3.1.8.20 +* Fixed: Javascript console object not printing options object. +* Fixed: Load errors from child themes no longer occur. + +## 3.1.8.19 +* Modified: Typography word and letter spacing now accept negative values. +* Modified: Typography preview shows spaces between upper and lower case groupings. +* Fixed: Compiler output for slider field. + +## 3.1.8.18 +* Fixed: update_check produced a fatal error on a local install with no internet connection. +* Modified: Google font CSS moved to header so pages will pass HTML5 validation. + +## 3.1.8.17 +* Fixed: Compiler hook failing on slider. + +## 3.1.8.16 +* Fixed: Error on update_check when the response code was something other than 200. +* Modified: Removed Google font CSS line from header (because it's in the footer via wp_enqueue_style. + +## 3.1.8.15 +* Added: Admin notice for new builds of Redux on Github as they become available. This feature is + available on in dev_mode, and may be turned off by setting the `update_notice` argument to + false. See the Arguments page of the wiki for more details. +* Added: text-transform option for the typography field. +* Fixed: image_select images not resizing properly in FF and IE. +* Fixed: Layout for the typography field, so everything isn't smushed together. The new layout is + as follows: + [family-font] [backup-font] + [style] [script] [align] [transform] + [size] [height] [word space] [letter space] + [color] + +## 3.1.8.14 +* Added: Newsletter sign-up popup at first load of the Redux options panel. + +## 3.1.8.12 +* Added: Added PHP 5.2 support for import/export. + +## 3.1.8.11 +* Added: Action hooks for options reset and options reset section. +* Added: Theme responsive for date picker. + +## 3.1.8.10 +* Added: New slider. Better looking UI, double handles and support for floating + point values. See the wiki for more info. + +## 3.1.8.9 +* Fixed: link_color field showing notice on default, if user enters no defaults. +* Fixed: Fixed tab notice in framework.php if no tab parameter is set in URL. + +## 3.1.8.8 +* Added: Typography improvements. + +## 3.1.8.7 +* Added: Hints! More info: https://github.com/ReduxFramework/ReduxFramework/wiki/Using-Hints-in-Fields + +## 3.1.8.6 +* Added: Complete Wordpress admin color styles. Blessed LESS/SCSS mixins. ;) + +## 3.1.8.5 +* Added: Font family not required for the typography module any longer. + +## 3.1.8.4 +* Added: Support for using the divide field in folding. +* Added: Error trapping in typography.js for those still attempting to use + typography with no font-family. + +## 3.1.8.3 +* Added: Full asynchronous font loading. +* +## 3.1.8.2 +* Added: email_not_empty validation field. +* Reverted: email validation field only checks for valid email. not_empty check moved + to new validation field. + +## 3.1.8.1 +* Fixed: Hide demo hook wasn't hiding demo links. + +## 3.1.8 +* Fixed: Improper enqueue in tracking class. +* Fixed: Few classes missed for various fields. +* Fixed: Spacing field kicking back notices and warnings when 'output' wasn't set. +* Modified: Added file_exists check to all include lines in framework.php +* Fixed: Background field now works with dynamic preview as it should. +* Fixed: Extension fields now enqueueing properly. +* Added: Text-align to typography field. +* Fixed: Servers returning forwards slashes in TEMPLATEPATH, while Redux is installed + embedded would not show options menu. +* Fixed: On and Off for switch field not displaying language translation. +* Fixed: email validation allowing a blank field. +* Fixed: Now allow for empty values as valid keys. +* Added: Dismiss option to admin notices (internal function) + +## 3.1.6 +* Fixed: CSS spacing issue +* Fixed: Customizer now works and doesn't break other customizer fields outside of Redux. +* Fixed: Several minor bug fixes +* Added: Metabox support via extension http://reduxframework.com/extensions/ +* Added: Admin-bar menu +* Fixed: Section field now folds. +* Fixed: wp_content_dir path now handles double forward slashes. +* Fixed: Typography field missing italics in Google fonts. +* Fixed: Default color in border field not saving properly. +* Fixed: hex2rgba in class.redux_helpers.php changed to static. +* Fixed: 'sortable' field type not saving options as default. +* Fixed: Specified default color not set when clicking the color box default button. +* Fixed: Sorter field options are now saved as default in database. +* Fixed: Issues with checkboxes displaying default values instead of labels. +* Fixed: Outstanding render issues with spacing field. +* Fixed: Plugins using Redux from load failure. +* Fixed: 'not_empty' field validation. +* Fixed: Media field. +* Added: 'read-only' option for media text field. +* Added: 'mode' option to image_select, so CSS output element may be specified. +* Added: Admin Bar menu for option panel. +* Modified: Removed raw_align field and added align option to raw field. + See wiki for more info. +* Modified: media field 'read-only' to 'readonly' to vonform to HTML standards. +* Removed: EDD extension. It never belonged in Core and will be re-released as a + downloadable extension shortly +* Removed: Group field, temporarily. +* Removed: wp_get_current_user check. + +## 3.1.5 +* Typography font arrays may not contain comma spaces. +* Merge in pull request - 542, code cleanup and better readability +* Change how HTML is output to support metaboxes +* CSS only on pages that matter, better checks. +* font-backup in typography now appends to font-family in output and compiler. +* More fixes for Google font css outputting. +* Addded output and compiler to field_image_select. Images will be output as 'background-image'. +* Fixed output in field_background. +* Prevent standard fonts from outputting to Google fonts CSS call. +* class_exists in field_section checking for incorrect classname. +* sample_config fix. +* Compiler not outputting CSS without output set to comthing other than false. +* Google fonts not rendering on frontend. +* Rewrote sample_config as a class + +## 3.1.4 +* Fixed error in redux-framework.php. +* Added select_image field. + +## 3.1.3 +* Fixed a few undefined variables +* Removed old code from the repo. +* Fix for validation. +* Remove the compiler hook by default. +* Fix to sortable field. +* Added an extra check for link color. Removes user error. +* Localization updates. +* Error in slides. +* Fixed the info box bug with spacing and padding. +* Fixed the first item in each section having WAY too much padding. ;) +* Fixed section reset issue where values weren't being saved to the db properly. + +## 3.1.2 +* Feature - Sortable select boxes! +* Feature - Reset a section only or the whole panel! +* New Field - RGBA Color Field! +* Improvement - Use of REM throughout. +* Fixed Typography - Fix output option and various small bugs. +* Fixed Border - Fix output option and various small bugs. +* Fixed Dimensions - Fix output option and various small bugs. +* Fixed Image_select - Various small bugs. +* Fixed Slides - Various small bugs. +* Fixed Sortable - Using native jQuery UI library same as within WordPress. +* Fixed Slider and Spinner Input Field - Values now move to the closest valid + value in regards to the step, automatically. +* Fixed Ace Editor +* FEATURE - All CSS/JS files are compiled into a single file now! Speed + improvements for the backend. +* Fix in how WordPress data is received, improved some output. +* Fix for various fields not triggering fold/compiler/save. +* Fixed elusive icons to use the new version and classes. +* Fixed media thumb to only be the thumbnail version. +* Fixed admin https error with WordPress core not renaming URL. +* Placeholders throughout the framework are now properly there. +* Feature - Setting to not save defaults to database on load. +* Fixed - Computability issue with GT3 builder. +* Fixed localization issue with default values. +* Language - Added Russian +* Feature - Media now can have any content type passed in to limit content types. +* Allow negative values in typography and other fields. +* WordPress 3.8 computability. +* CSS validation issue. +* Feature - User contributed text direction feature. +* EDD Extension now fully function for plugins or themes. +* Removed get_theme_data() fallbacks, we're well pass WordPress 3.4 now. ;) +* A ton of other small updates and improvements. + +## 3.1.0 +* Fix Issue 224 - Image Select width was breaking the panel. +* Fix Issue 181 - Broken panel in firefox +* Fix Issue 225 - 0px typography bug. Thanks @partnuz. +* Fix Issue 228 - Resolved a duplicated enqueue on color_link field. Thanks @vertigo7x. +* Fix Issue 231 - Field spacing bug fixes. +* Fix Issue 232 & 233 - Dimensions: bug fix with units and multiple units. Thanks @kpodemski +* Fix Issue 234 - Pass options as a ref so validating actions can modify/sanitize them. Thanks @ZeroBeeOne +* Fix Issue 222 - Tab cookie function wasn't working. +* Feature - Pass params to Select2. Thanks @andreilupu +* Fix Issue 238 - Fix for conditional output. Thanks @partnuz. +* Fix Issue 211 - Google Web font wasn't loading at first init of theme. +* Fix Issue 210 - Elusive Icons update. Changed classes to force use of full elusive name. +* Fix Issue 247 - Media thumbnails were not showing. Also fixed media to keep the largest file, but display the small + version in the panel as a thumb. Thanks @kwayyinfotech. +* Fix Issue 144 - JS error when no item found in slider. +* Fix Issue 246 - Typography output errors. +* Feature & Issue 259 - Multi-Text now support validation! +* Fix Issue 248/261 - Links color issue. Also fixed color validation. +* Feature & Issue 262 - Now registered sidebars can be used as a data type. +* Fix Issue 194/276 - Custom taxonomy terms now passing properly. Thanks @kprovance. +* Feature & Issue 273 - Argument save_defaults: Disable the auto-save of the default options to the database if not set. +* Feature - Docs now being moved to the wiki for community participation. +* Issue 283 - Date placeholder. Thanks @kprovance. +* Issue 285 - HTTPS errors on admin. Known WordPress bug. Resolved. +* Fix Issue 288 - Float values now possible for border, dimensions, and spacing. +* Feature - Media field can now accept non-image files with a argument being set. +* Fix Issue 252 - Post Type data wasn't working properly. Thanks @Abu-Taymiyyah. +* Fix Issue 213 - Radio and Button Set wasn't folding. + +## 3.0.9 +* Feature - Added possibility to set default icon class for all sections and tabs. +* Feature - Make is to the WP dir can be moved elsewhere and Redux still function. +* Added Spanish Language. Thanks @vertigo7x. +* Fix Issue 5 - Small RGBA validation fix. +* Fix Issue 176 - Fold by Image Select. Thanks @andreilupu. +* Fix Issue 194 - Custom taxonomy terms in select field. +* Fix Issue 195 - Border defaults not working. +* Fix Issue 197 - Hidden elements were showing up on a small screen. Thanks @ThinkUpThemes. +* Fix issue 200 - Compiler not working with media field. +* Fix Issue 201 - Spacing field not using default values. +* Fix Issue 202 - Dimensions field not using units. +* Fix Issue 208 - Checkbox + Required issue. +* Fix Issue 211 - Google Font default not working on page load. +* Fix Issue 214 - Validation notice not working for fields. +* Fix Issue 181/224 - Firefox 24 image resize errors. +* Fix Issue 223 - Slides were losing the url input field for the image link. +* Fix - Various issues in the password field. +* Fixed various spelling issues and typos in sample-config file. +* Initialize vars before extract() - to shut down undefined vars wargnings. +* Various other fixes. + +## 3.0.8 +* Version push to ensure all bugs fixes were deployed to users. Various. + +## 3.0.7 +* Feature - Completely redone spacing field. Choose to apply to sides or all at once with CSS output! +* Feature - Completely redone border field. Choose to apply to sides or all at once with CSS output! +* Feature - Added opt-in anonymous tracking, allowing us to further analyze usage. +* Feature - Enable weekly updates of the Google Webfonts cache is desired. Also remove the Google Webfont files from + shipping with Redux. Will re-download at first panel run to ensure users always have the most recent copy. +* Language translation of german updated alone with ReduxFramework pot file. +* Fix Issue 146 - Spacing field not storing data. +* Fix - Firefox field description rendering bug. +* Fix - Small issue where themes without tags were getting errors from the sample data. + +## 3.0.6 +* Hide customizer fields by default while still under development. +* Fix Issue 123 - Language translations to actually function properly embedded as well as in the plugin. +* Fix Issue 151 - Media field uses thumbnail not full image for preview. Also now storing the thumbnail URL. Uses + the smallest available size as the thumb regardless of the name. +* Fix Issue 147 - Option to pass params to select2. Contributed by @andreilupu. Thanks! +* Added trim function to ace editor value to prevent whitespace before and after value keep being added +* htmlspecialchars() value in pre editor for ace. to prevent html tags being hidden in editor and rendered in dom +* Feature: Added optional 'add_text' argument for multi_text field so users can define button text. +* Added consistent remove button on multi text, and used sanitize function for section id +* Feature: Added roles as data for field data +* Feature: Adding data layout options for multi checkbox and radio, we now have quarter, third, half, and full + column layouts for these fields. +* Feature: Eliminate REDUX_DIR and REDUX_URL constants and instead created static ReduxFramework::$\_url and + ReduxFramework::$\_dir for cleaner code. +* Feature: Code at bottom of sample-config.php to hide plugin activation text about a demo plugin as well as + code to demo how to hide the plugin demo_mode link. +* Started work on class definitions of each field and class. Preparing for the panel builder we are planning to make. + +## 3.0.5 +* Fixed how Redux is initialised so it works in any and all files without hooking into the init function. +* Issue #151: Added thumbnails to media and displayed those instead of full image. +* Issue #144: Slides had error if last slide was deleted. +* Color field was outputting hex in the wrong location. +* Added ACE Editor field, allowing for better inline editing. + +## 3.0.4 +* Fixed an odd saving issue. +* Fixed link issues in the framework +* Issue #135: jQuery UI wasn't being properly queued +* Issue #140: Admin notice glitch. See http://reduxframework.com/2013/10/wordpress-notifications-custom-options-panels/ +* Use hooks instead of custom variable for custom admin CSS +* Added "raw" field that allows PHP or a hook to embed anything in the panel. +* Submenus in Admin now change the tabs without reloading the page. +* Small fix for multi-text. +* Added IT_it and RO_ro languages. +* Updated readme file for languages. + +## 3.0.3 +* Fixed Issue #129: Spacing field giving an undefined. +* Fixed Issue #131: Google Fonts stylesheet appending to body and also to the top of the header. Now properly placed + both at the end of the head tag as to overload any theme stylesheets. +* Fixed issue #132 (See #134, thanks @andreilupu): Could not have multiple WordPress Editors (wp_editor) as the + same ID was shared. Also fixed various styles to match WordPress for this field. +* Fixed Issue #133: Issue when custom admin stylesheet was used, a JS error resulted. + +## 3.0.2 +* Improvements to slides, various field fixes and improvements. Also fixed a few user submitted issues. + +## 3.0.1 +* Backing out a bit of submitted code that caused the input field to not properly break. + +## 3.0.0 +* Initial WordPress.org plugin release. + +## 3.0 +Redux is now hosted on WordPress.org! Update in order to get proper, stable updates. + +* Removed get() and show() +* Fixed huge performance bug +* More bugfixes +* Fixed spacing field +* Converted Redux to run as an auto-updating plugin. Getting ready to post to WordPress.org +* Fixed the auto updater to properly show changes since the last update +* Various fields including link_color, spacing, dimensions +* Compiler hooks to allow developers to generate CSS files only when needed +* Stability and standardizing in HTML output throughout +* PHP/CSS/JS fixes +* Compress JS and use LESS (and compressed CSS) throughout + +## Version 3.0.0 Beta (September 12, 2013) + +* Massive code overhaul +* Replaced redundant field types with data elements +* Migrated to company repo +* Added several new storage methods +* Numerous bugfixes +* Renamed std argument to default +* Added MP6 support +* Complete CSS rewrite +* Globals are now conditional +* Added nesting support +* Added repeatable field +* Restyled Dev Mode +* Added System Info tab +* Added compiler hooks +* Added style and icon support to info field +* Switched to Elusive Icons +* Huge performance updates + +## Version 2.0.1 Final (September 1, 2013) + +* Added option to override ```icon_type``` per icon +* Minor bug/versioning fixes +* Added Font Awesome intro +* Added ```raw_html``` option +* Added ```text_sortable``` option +* Switched from Aristo to Bootstrap jQuery UI theme + +## Version 2.0.0 (January 31, 2013) + +* Fixed SSL error which occurred occasionally with Google Webfonts +* Added optional flag for ```wpautop``` on editors +* Added password field type +* Added ```checkbox_hide_all``` option +* Added WP3.5 media chooser +* Added Google webfonts previews +* Updated to WP3.5 color picker +* Minor style tweaks +* Added graphical 'switch' option for checkboxes +* Removed dependency on class extension for fields +* Deprecated icons in favor of iconfonts + +## Version 1.0.0 (December 5, 2012) + +* Based on NHP Theme Options Framework v1.0.6 +* Cleaned up codebase +* Changed option group name to allow multiple instances +* Changed checkbox name attribute to id +* Added rows attribute to textareas +* Removed extra linebreak in upload field +* Set default menu position to null to avoid conflicts +* Added sample content for dashboard credit line +* Minor style changes +* Changed name of upload button +* Refactored Google Webfonts function +* Replaced ```stylesheet_override``` with ```admin_stylesheet``` +* Made text domain a constant +* Removed PHP closing tags to prevent issues with newlines +* Added option to define custom start tab diff --git a/admin/core/lib/ReduxFramework/CONTRIBUTING.md b/admin/core/lib/ReduxFramework/CONTRIBUTING.md new file mode 100644 index 00000000..e54899de --- /dev/null +++ b/admin/core/lib/ReduxFramework/CONTRIBUTING.md @@ -0,0 +1,27 @@ +First and foremost, PLEASE check to see if you are using the latest version of Redux by checking the repository. If you plan on reporting an issue with any version BUT the latest version, we are going to ask you to upgrade to the latest code base anyway to see if your issue persists. Please save us and yourself some time by taking this simple step first. Thanks! + +When submitting a ticket, please make sure you include the following information, It is critical, and required. As Team Redux has not yet earned their certificates in mind reading, we need you to provide for us the following information. :) + +1. The version of Redux you are using. Please do not say 'the latest version' as what you perceive as the latest and what might be the latest could easily be two different things. At the bottom of the Redux options panel is a four digit version number. Please include it. + +2. The version of Wordpress you are running. + +3. Please indicate if you are using Redux in dev_mode. + +4. If you are having difficultly with a particular field, please include the config code for that entire field. If the field is dependent on other fields in the section (for example, required arguments are used), then please include the entire section. + +5. If you are having difficulty with configuration, please specify if you are using a standalone theme, a child theme, a plugin, etc. + +6. Please indicate if you are using Redux as a plugin or embedded in your project. + +7. Please check your browser's output console. If there are any javascript errors pertaining to redux, please list them, including the module/file they occurred in and the line number + +The follow only applies if Redux is not loading properly: + +8. If you are using Redux embedded, please specify the location in which Redux is installed, where you config is located, and the lines of code you are using to initialize Redux and your config. + +The way in which we diagnose bugs or config difficulties is to attempt to recreate them on our end. This is why we need the very specific information. Once we are able to confirm the issue, we will either push an update, or assist you in correcting any mistakes in your config. + +What we do NOT do is debug your code. We support the Redux code and the way in which the config is put together. Any other issue pertaining to your project is your own, or we might be able to assist with premium support. + +- Team Redux diff --git a/admin/core/lib/ReduxFramework/Gruntfile.js b/admin/core/lib/ReduxFramework/Gruntfile.js new file mode 100644 index 00000000..69c16acb --- /dev/null +++ b/admin/core/lib/ReduxFramework/Gruntfile.js @@ -0,0 +1,392 @@ +/* jshint node:true */ +var shell = require( 'shelljs' ); + +module.exports = function( grunt ) { + + // Project configuration. + grunt.initConfig( + { + pkg: grunt.file.readJSON( 'package.json' ), + + concat: { + options: { + separator: ';' + }, + core: { + src: [ + 'ReduxCore/assets/js/vendor/cookie.js', + 'ReduxCore/assets/js/vendor/qtip/jquery.qtip.js', + 'ReduxCore/assets/js/vendor/jquery.typewatch.js', + 'ReduxCore/assets/js/vendor/jquery.serializeForm.min.js', + 'ReduxCore/assets/js/vendor/jquery.alphanum.js', + 'ReduxCore/assets/js/redux.js' + ], + dest: 'ReduxCore/assets/js/redux.min.js' + }, + vendor: { + src: [ + 'ReduxCore/assets/js/vendor/cookie.js', + 'ReduxCore/assets/js/vendor/qtip/jquery.qtip.js', + 'ReduxCore/assets/js/vendor/jquery.serializeForm.min.js', + 'ReduxCore/assets/js/vendor/jquery.typewatch.js', + 'ReduxCore/assets/js/vendor/jquery.alphanum.js' + ], + dest: 'ReduxCore/assets/js/vendor.min.js' + } + }, + 'gh-pages': { + options: { + base: 'docs', + message: 'Update docs and files to distribute' + }, + dev: { + src: ['docs/**/*', 'bin/CNAME'] + }, + travis: { + options: { + repo: 'https://' + process.env.GH_TOKEN + '@github.com/ReduxFramework/docs.reduxframework.com.git', + user: { + name: 'Travis', + email: 'travis@travis-ci.org' + }, + silent: false + }, + src: ['**/*'] + } + }, + uglify: { + core: { + options: { + //banner: '/*! <%= pkg.name %> - v<%= pkg.version %> - ' + + //'<%= grunt.template.today("yyyy-mm-dd") %> */\n', + }, + files: { + 'ReduxCore/assets/js/redux.min.js': ['ReduxCore/assets/js/redux.min.js'], + 'ReduxCore/assets/js/vendor/select2.sortable.min.js': ['ReduxCore/assets/js/vendor/select2.sortable.js'], + 'ReduxCore/assets/js/import_export/import_export.min.js': ['ReduxCore/assets/js/import_export/import_export.js'], + 'ReduxCore/assets/js/media/media.min.js': ['ReduxCore/assets/js/media/media.js'], + 'ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js': ['ReduxCore/inc/fields/ace_editor/field_ace_editor.js'], + 'ReduxCore/inc/fields/background/field_background.min.js': ['ReduxCore/inc/fields/background/field_background.js'], + 'ReduxCore/inc/fields/border/field_border.min.js': ['ReduxCore/inc/fields/border/field_border.js'], + 'ReduxCore/inc/fields/button_set/field_button_set.min.js': ['ReduxCore/inc/fields/button_set/field_button_set.js'], + 'ReduxCore/inc/fields/checkbox/field_checkbox.min.js': ['ReduxCore/inc/fields/checkbox/field_checkbox.js'], + 'ReduxCore/inc/fields/color/field_color.min.js': ['ReduxCore/inc/fields/color/field_color.js'], + 'ReduxCore/inc/fields/color_rgba/field_color_rgba.min.js': ['ReduxCore/inc/fields/color_rgba/field_color_rgba.js'], + 'ReduxCore/inc/fields/color_gradient/field_color_gradient.min.js': ['ReduxCore/inc/fields/color_gradient/field_color_gradient.js'], + 'ReduxCore/inc/fields/date/field_date.min.js': ['ReduxCore/inc/fields/date/field_date.js'], + 'ReduxCore/inc/fields/dimensions/field_dimensions.min.js': ['ReduxCore/inc/fields/dimensions/field_dimensions.js'], + 'ReduxCore/inc/fields/editor/field_editor.min.js': ['ReduxCore/inc/fields/editor/field_editor.js'], + 'ReduxCore/inc/fields/gallery/field_gallery.min.js': ['ReduxCore/inc/fields/gallery/field_gallery.js'], + 'ReduxCore/inc/fields/image_select/field_image_select.min.js': ['ReduxCore/inc/fields/image_select/field_image_select.js'], + 'ReduxCore/inc/fields/link_color/field_link_color.min.js': ['ReduxCore/inc/fields/link_color/field_link_color.js'], + 'ReduxCore/inc/fields/multi_text/field_multi_text.min.js': ['ReduxCore/inc/fields/multi_text/field_multi_text.js'], + 'ReduxCore/inc/fields/select/field_select.min.js': ['ReduxCore/inc/fields/select/field_select.js'], + 'ReduxCore/inc/fields/select_image/field_select_image.min.js': ['ReduxCore/inc/fields/select_image/field_select_image.js'], + 'ReduxCore/inc/fields/slider/field_slider.min.js': ['ReduxCore/inc/fields/slider/field_slider.js'], + 'ReduxCore/inc/fields/slides/field_slides.min.js': ['ReduxCore/inc/fields/slides/field_slides.js'], + 'ReduxCore/inc/fields/sortable/field_sortable.min.js': ['ReduxCore/inc/fields/sortable/field_sortable.js'], + 'ReduxCore/inc/fields/sorter/field_sorter.min.js': ['ReduxCore/inc/fields/sorter/field_sorter.js'], + 'ReduxCore/inc/fields/spacing/field_spacing.min.js': ['ReduxCore/inc/fields/spacing/field_spacing.js'], + 'ReduxCore/inc/fields/spinner/field_spinner.min.js': ['ReduxCore/inc/fields/spinner/field_spinner.js'], + 'ReduxCore/inc/fields/switch/field_switch.min.js': ['ReduxCore/inc/fields/switch/field_switch.js'], + 'ReduxCore/inc/fields/typography/field_typography.min.js': ['ReduxCore/inc/fields/typography/field_typography.js'] + } + }, + extensions: { + files: [{ + expand: true, + cwd: 'ReduxCore/extensions', + src: '**/*.js', + ext: '.min.js', + dest: 'ReduxCore/extensions' + }] + }, + vendor: { + files: { + 'ReduxCore/assets/js/vendor.min.js': ['ReduxCore/assets/js/vendor.min.js'] + } + } + }, + qunit: { + files: ['test/qunit/**/*.html'] + }, + + // JavaScript linting with JSHint. + jshint: { + options: { + jshintrc: '.jshintrc' + }, + files: [ + 'Gruntfile.js', + 'ReduxCore/assets/js/import_export/import_export.js', + 'ReduxCore/assets/js/media/media.js', + 'ReduxCore/inc/fields/ace_editor/field_ace_editor.js', + 'ReduxCore/inc/fields/background/field_background.js', + 'ReduxCore/inc/fields/border/field_border.js', + 'ReduxCore/inc/fields/button_set/field_button_Set.js', + 'ReduxCore/inc/fields/checkbox/field_checkbox.js', + 'ReduxCore/inc/fields/color/field_color.js', + 'ReduxCore/inc/fields/color_rgba/field_color_rgba.js', + 'ReduxCore/inc/fields/date/field_date.js', + 'ReduxCore/inc/fields/dimensions/field_dimensions.js', + 'ReduxCore/inc/fields/editor/field_editor.js', + 'ReduxCore/inc/fields/gallery/field_gallery.js', + 'ReduxCore/inc/fields/image_select/field_image_select.js', + 'ReduxCore/inc/fields/multi_text/field_multitext.js', + 'ReduxCore/inc/fields/select/field_select.js', + 'ReduxCore/inc/fields/select_image/field_select_image.js', + 'ReduxCore/inc/fields/slider/field_slider.js', + 'ReduxCore/inc/fields/slides/field_slides.js', + 'ReduxCore/inc/fields/sortable/field_sortable.js', + 'ReduxCore/inc/fields/sorter/field_sorter.js', + 'ReduxCore/inc/fields/spacing/field_spacing.js', + 'ReduxCore/inc/fields/spinner/field_spinner.js', + 'ReduxCore/inc/fields/switch/field_switch.js', + 'ReduxCore/inc/fields/typography/field_typography.js', + + // 'ReduxCore/inc/fields/**/*.js', + // 'ReduxCore/extensions/**/*.js', + 'ReduxCore/assets/js/redux.js' + ] + }, + + // Watch changes for files. + watch: { + ui: { + files: ['<%= jshint.files %>'], + tasks: ['jshint'] + }, + php: { + files: ['ReduxCore/**/*.php'], + tasks: ['phplint:core'] + }, + css: { + files: ['ReduxCore/**/*.less'], + tasks: ['less:development'] + } + }, + + // Add textdomain. + addtextdomain: { + options: { + textdomain: 'redux-framework', // Project text domain. + updateDomains: ['redux', 'redux-framework-demo', 'v'] // List of text domains to replace. + }, + target: { + files: { + src: ['*.php', '**/*.php', '!node_modules/**', '!tests/**', '!sample/**'] + } + } + }, + + // Generate POT files. + makepot: { + redux: { + options: { + type: 'wp-plugin', + domainPath: 'ReduxCore/languages', + potFilename: 'redux-framework.pot', + include: [ + ], + exclude: [ + 'sample/.*' + ], + potHeaders: { + poedit: true, + 'report-msgid-bugs-to': 'https://github.com/ReduxFramework/ReduxFramework/issues', + 'language-team': 'LANGUAGE ' + } + } + } + }, + + // Check textdomain errors. + checktextdomain: { + options:{ + keywords: [ + '__:1,2d', + '_e:1,2d', + '_x:1,2c,3d', + 'esc_html__:1,2d', + 'esc_html_e:1,2d', + 'esc_html_x:1,2c,3d', + 'esc_attr__:1,2d', + 'esc_attr_e:1,2d', + 'esc_attr_x:1,2c,3d', + '_ex:1,2c,3d', + '_n:1,2,4d', + '_nx:1,2,4c,5d', + '_n_noop:1,2,3d', + '_nx_noop:1,2,3c,4d' + ] + }, + redux: { + cwd: 'ReduxCore/', + options: { + text_domain: 'redux-framework', + }, + src: ['**/*.php'], + expand: true + }, + sample: { + cwd: 'sample', + options: { + text_domain: 'redux-framework-demo', + }, + src: ['**/*.php'], + expand: true + } + }, + + // Exec shell commands. + shell: { + options: { + stdout: true, + stderr: true + }, + // Limited to Maintainers so + // txpush: { + // command: 'tx push -s' // push the resources + // }, + txpull: { + command: 'tx pull -a --minimum-perc=25' // pull the .po files + } + }, + + // Generate MO files. + potomo: { + dist: { + options: { + poDel: true + }, + files: [{ + expand: true, + cwd: 'ReduxCore/languages/', + src: ['*.po'], + dest: 'ReduxCore/languages/', + ext: '.mo', + nonull: true + }] + } + }, + + phpdocumentor: { + options: { + directory: 'ReduxCore/', + target: 'docs/' + }, + generate: {} + }, + phplint: { + options: { + swapPath: './' + }, + core: ["ReduxCore/**/*.php"], + plugin: ["class-redux-plugin.php", "index.php", "redux-framework.php"] + }, + less: { + development: { + options: { + paths: 'ReduxCore/' + }, + files: [{ + expand: true, // Enable dynamic expansion. + cwd: 'ReduxCore/inc/fields', // Src matches are relative to this path. + src: ['**/*.less'], // Actual pattern(s) to match. + dest: 'ReduxCore/inc/fields', // Destination path prefix. + ext: '.css' // Dest filepaths will have this extension. + }] + }, + extensions: { + files: [{ + expand: true, // Enable dynamic expansion. + cwd: 'ReduxCore/extensions/', // Src matches are relative to this path. + src: ['**/*.less'], // Actual pattern(s) to match. + dest: 'ReduxCore/extensions/', // Destination path prefix. + ext: '.css' // Dest filepaths will have this extension. + }] + }, + production: { + options: { + compress: true, + cleancss: true, + ieCompat: true, + relativeUrls: true, + paths: 'ReduxCore/' + }, + files: { + "ReduxCore/assets/css/redux.css": ["ReduxCore/inc/fields/**/*.less", "ReduxCore/extensions/**/*.less", "ReduxCore/assets/css/admin.less", "ReduxCore/assets/css/import_export/*.less", "ReduxCore/assets/css/color-picker/*.less"], + "ReduxCore/assets/css/admin.css": ["ReduxCore/assets/css/admin.less"], + "ReduxCore/assets/css/color-picker/color-picker.css": ["ReduxCore/assets/css/color-picker/*.less"], + "ReduxCore/assets/css/import_export/import_export.css": ["ReduxCore/assets/css/import_export/*.less"], + "ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css": ["ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.less"] + + } + }, + dist: { + options: { + compress: true, + cleancss: true, + ieCompat: true, + relativeUrls: true, + report: 'gzip', + paths: 'ReduxCore/' + }, + files: { + "ReduxCore/assets/css/redux.css": ["ReduxCore/inc/fields/**/*.less", "ReduxCore/extensions/**/*.less", "ReduxCore/assets/css/admin.less", "ReduxCore/assets/css/import_export/*.less", "ReduxCore/assets/css/color-picker/*.less"], + "ReduxCore/assets/css/admin.css": ["ReduxCore/assets/css/admin.less"] + } + } + }, + recess: { + dist: { + src: ['ReduxCore/assets/css/admin.less'] + } + } + } + ); + + // Load NPM tasks to be used here + grunt.loadNpmTasks( 'grunt-shell' ); + grunt.loadNpmTasks( 'grunt-potomo' ); + grunt.loadNpmTasks( 'grunt-wp-i18n' ); + grunt.loadNpmTasks( 'grunt-checktextdomain' ); + grunt.loadNpmTasks( 'grunt-contrib-jshint' ); + grunt.loadNpmTasks( 'grunt-contrib-less' ); + grunt.loadNpmTasks( 'grunt-contrib-uglify' ); + grunt.loadNpmTasks( 'grunt-contrib-watch' ); + grunt.loadNpmTasks( 'grunt-contrib-concat' ); + grunt.loadNpmTasks( 'grunt-phpdocumentor' ); + grunt.loadNpmTasks( 'grunt-gh-pages' ); + grunt.loadNpmTasks( "grunt-phplint" ); + grunt.loadNpmTasks( 'grunt-recess' ); + + grunt.registerTask( + 'langUpdate', [ + 'addtextdomain', + 'makepot', + 'shell:txpull', + 'potomo' + ] + ); + + // Default task(s). + grunt.registerTask( + 'default', + ['jshint', 'concat:core', 'uglify:core', 'concat:vendor', 'uglify:vendor', "less:production", "less:development", "less:extensions"] + ); + grunt.registerTask( 'travis', ['jshint', 'lintPHP'] ); + + // this would be run by typing "grunt test" on the command line + grunt.registerTask( 'testJS', ['jshint', 'concat:core', 'concat:vendor'] ); + + grunt.registerTask( 'watchUI', ['watch:ui'] ); + grunt.registerTask( 'watchPHP', ['watch:php', 'phplint:core', 'phplint:plugin'] ); + + grunt.registerTask( "lintPHP", ["phplint:plugin", "phplint:core"] ); + grunt.registerTask( "lintLESS", ["recess:dist"] ); + grunt.registerTask( "compileCSS", ["less:production", "less:development", "less:extensions"] ); + grunt.registerTask( 'compileJS', ['jshint', 'concat:core', 'uglify:core', 'concat:vendor', 'uglify:vendor'] ); + grunt.registerTask( 'compileTestJS', ['jshint', 'concat:core', 'concat:vendor'] ); + +}; \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/README.md b/admin/core/lib/ReduxFramework/README.md new file mode 100644 index 00000000..796cef97 --- /dev/null +++ b/admin/core/lib/ReduxFramework/README.md @@ -0,0 +1,79 @@ +## Redux Options Framework [![Build Status](https://travis-ci.org/ReduxFramework/redux-framework.png?branch=master)](https://travis-ci.org/ReduxFramework/redux-framework) [![Stories in Ready](https://badge.waffle.io/ReduxFramework/redux-framework.png?label=ready)](https://waffle.io/ReduxFramework/redux-framework) [![Built with Grunt](https://cdn.gruntjs.com/builtwith.png)](http://gruntjs.com/) + +WordPress options framework which uses the [WordPress Settings API](http://codex.wordpress.org/Settings_API "WordPress Settings API"), Custom Error/Validation Handling, Custom Field/Validation Types, and import/export functionality. + +## Kickstart Your Development ## + +Are you authoring a theme, or plugin? Visit the [Redux Builder](http://build.reduxframework.com) site and get started! + +## Demo Your Products ## +We help you create a seamless user experience for your users to demo your WordPress products. Not only that, we help you make sure they’re engaged, turning them into a potential customer. Visit [wpdemo.io/](http://wpdemo.io/) + +## Documentation ## + +Need a little help with Redux? Come check out our brand new documentation site at [docs.reduxframework.com](http://docs.reduxframework.com), chock full of tutorials and examples! + + +## SMOF (Simple Modified Option Users) Converter! ## + +Hot off the press, our Redux Converter plugin. It takes your SMOF instance, and allows you to try out Redux without any fear. It also spits out valid PHP source for you if you want to migrate complete with data migration! Give it a try today. It will be in the WordPress.org repo shortly. ;) +https://github.com/ReduxFramework/redux-converter + +## Help Us Translate Redux ## + +Please head over to the wiki to learn how you can help us translate Redux quickly. Any and all are welcome. We appreciate your help! +https://github.com/ReduxFramework/ReduxFramework/wiki/translate + +## Getting Started with Redux ## + +ReduxFramework has been built from the ground up to be the most flexible framework around. You can run it as an auto-updating plugin, or embed it inside your plugin or theme. It allows for multiple copies of itself within the same WordPress instance. For a guide on getting started please refer to [https://github.com/ReduxFramework/redux-framework/wiki/Getting-Started](https://github.com/ReduxFramework/redux-framework/wiki/Getting-Started). + +You can also [download our sample theme available here](https://github.com/ReduxFramework/ReduxSampleTheme) to start developing right away. + +## Please Post Reviews and Spread the Word ## + +ReduxFramework has just released to the WordPress Plugins directory. Please spread the word, tweet, and (most importantly) post reviews on http://wordpress.org/plugins/redux-framework/. + + +## Donate to the Framework ## + +If you can, please donate to help support the ongoing development of Redux Framework! + +[![Donate to the framework](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif "Donate to the framework")](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MMFMHWUPKHKPW) + +## Features ## + +* Uses the [WordPress Settings API](http://codex.wordpress.org/Settings_API "WordPress Settings API") +* Multiple built in field types +* Multple layout field types +* Fields can be overloaded with a callback function, for custom field types +* Easily extendable by creating Field Classes +* Built in Validation Classes +* Easily extendable by creating Validation Classes +* Custom Validation error handling, including error counts for each section, and custom styling for error fields +* Custom Validation warning handling, including warning counts for each section, and custom styling for warning fields +* Multiple Hook Points for customisation +* Import / Export Functionality - including cross site importing of settings +* Easily add page help through the class +* Fully responsive options panel +* Much more + +## Stay In The Loop! ## + +[![Follow us on Twitter](http://iod.unh.edu/Images/Twitter_follow_us.png "Follow us on Twitter")](https://www.twitter.com/ReduxFramework) + +## FAQs ## + +1. Why should we use ```require_once``` instead of ```get_template_part```? + * First, because ```get_template_part``` is for... you guessed it, themes! Redux is designed to work with both themes *and* plugins. + * Second, read [this](http://kovshenin.com/2013/get_template_part/). +2. Why shouldn't we edit ```sample-config.php``` in the plugin directory? + * Because ```sample-config.php``` will be replaced at each update of the plugin. You will lose all your effort + +## Are you using Redux? ## + +Send me an email at ghost1227@reduxframework.com so I can add you to our user spotlight! + +## Changelog ## + +See Changelog.md \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/README.txt b/admin/core/lib/ReduxFramework/README.txt new file mode 100644 index 00000000..287e33a7 --- /dev/null +++ b/admin/core/lib/ReduxFramework/README.txt @@ -0,0 +1,839 @@ +=== Redux Framework === +Contributors: section214, dovyp, kprovance +Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U +Tags: admin, admin interface, options, theme options, plugin options, options framework, settings, web fonts, google fonts +Requires at least: 3.5.1 +Tested up to: 4.0 +Stable tag: 3.3.8.4 +License: GPLv3 or later +License URI: http://www.gnu.org/licenses/gpl-3.0.html + +Redux is a simple, truly extensible and fully responsive options framework for WordPress themes and plugins. Ships with an integrated demo. + +== Description == + +Redux is a simple, truly extensible and fully responsive options framework for WordPress themes and plugins. Built on the WordPress Settings API, Redux supports a multitude of field types as well as custom error handling, custom field & validation types, and import/export functionality. + +But what does Redux actually DO? We don't believe that theme and plugin +developers should have to reinvent the wheel every time they start work on a +project. Redux is designed to simplify the development cycle by providing a +streamlined, extensible framework for developers to build on. Through a +simple, well-documented config file, third-party developers can build out an +options panel limited only by their own imagination in a fraction of the time +it would take to build from the ground up! + += Online Demo = +Don't take our word for it, check out our online demo and try Redux without installing a thing! +[**http://demo.reduxframework.com/wp-admin/**](http://demo.reduxframework.com/wp-admin/) + += Use Our Custom Generator to Get Started = +Want to use Redux, but not sure what to do? Use our [generator](http://generate.reduxframework.com/)! It will allow you to make +a custom theme based on [_s](http://underscores.me), [TGM](http://tgmpluginactivation.com), and [Redux](http://reduxframework.com), and any Redux arguments you want to set. +Don't want to make your own theme? Then output a custom admin folder that you can place +in a theme or plugin. Oh and did we mention it's free? Try it today at: +[**http://generate.reduxframework.com/**](http://generate.reduxframework.com/) + + += Docs & Support = +We have extremely extensive docs. Please visit [http://docs.reduxframework.com/](http://docs.reduxframework.com/) If that doesn’t solve your concern, you should search [the issue tracker on Github](https://github.com/ReduxFramework/ReduxFramework/issues). If you can't locate any topics that pertain to your particular issue, [post a new issue](https://github.com/ReduxFramework/ReduxFramework/issues/new) for it. Before you submit an issue, please read [our contributing requirements](https://github.com/redux-framework/redux-framework/blob/master/CONTRIBUTING.md). We build off of the dev version and push to WordPress.org when all is confirmed stable and ready for release. + + += Redux Framework Needs Your Support = +It is hard to continue development and support for this free plugin without contributions from users like you. If you enjoy using Redux Framework, and find it useful, please consider [making a donation](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U). Your donation will help encourage and support the plugin's continued development and better user support. + += Fields Types = + +* Background +* Border +* Button Set +* Checkbox / Multi-Check +* Color (WordPress Native) +* Color Gradient +* Color RGBA +* Date +* Dimensions (Height/Width) +* Divide (Divider) +* Editor (WordPress Native) +* Gallery (WordPress Native) +* Image Select (Patterns/Presets) +* Import/Export +* Info (Header/Notice) +* Link Color +* Media (WordPress Native) +* Multi-Text +* Password +* Radio (w/ WordPress Data) +* Raw (HTML/PHP/MarkDown) +* Section (Indent and Group Fields) +* Select (Select/Multi-Select w/ Select2 & WordPress Data) +* Select Image +* Slider (Drag a Handle) +* Slides (Multiple Images, Titles, and Descriptions) +* Sortable (Drag/Drop Checkbox/Input Fields) +* Sorter (Drag/Drop Manager - Works great for content blocks) +* Spacing (Margin/Padding/Absolute) +* Spinner +* Switch +* Text +* Textarea +* Typography + * The most advanced typography module complete with preview, Google fonts, and auto-css output! + += Additional Features = + +* Field Validation +* MANY translations. (See below) +* Full value escaping +* Required - Link visibility from parent fields. Set this to affect the visibility of the field on the parent's value. Fully nested with multiple required parents possible. +* Output CSS Automatically - Redux generates CSS and the appropriate Google Fonts stylesheets for you on select fields. You need only specify the CSS selector to apply the CSS to (limited to certain fields). +* Compiler integration! A custom hook runs when any fields with the argument `compile => true` are changed. +* Oh, and did we mention a fully integrated Google Webfonts setup that will make you so happy you'll want to cry? + + += Translators & Non-English Speakers = +We need your help to translate Redux into your language! Redux is part of the WP-Translations.org team. To help us translate Redux create a few account here: https://www.transifex.com/organization/wp-translations. Once you're in, you can head over to the Redux sub-project and translate away. Thank you for your assistance. + += Get Involved = +Redux is an ever-changing, living system. Want to stay up to date or +contribute? Subscribe to one of our mailing lists or join us on [Twitter](https://twitter.com/reduxframework) or [Github](https://github.com/ReduxFramework/ReduxFramework)! + +NOTE: Redux is not intended to be used on its own. It requires a config file +provided by a third-party theme or plugin developer to actual do anything +cool! + +== Installation == + += For Complete Documentation and Examples = +Visit: [http://docs.reduxframework.com/](http://docs.reduxframework.com/) + +== Frequently Asked Questions == + += Why doesn't this plugin do anything? = + +Redux is an options framework... in other words, it's not designed to do anything on its own! You can however activate a demo mode to see how it works. + += How can I learn more about Redux? = + +Visit our website at [http://reduxframework.com/](http://reduxframework.com/) + += You don't have much content in this FAQ section = +That's because the real FAQ section is on our site! Please visit [http://docs.reduxframework.com/faq/](http://docs.reduxframework.com/faq/) + +== Screenshots == + +1. This is the demo mode of Redux Framework. Activate it and you will find a fully-functional admin panel that you can play with. On the Plugins page, beneath the description and an activated Redux Framework, you will find a Demo Mode link. Click that link to activate or deactivate the sample-config file Redux ships with. Don't take our word for it, check out our online demo and try Redux without installing a thing! [**http://demo.reduxframework.com/wp-admin/**](http://demo.reduxframework.com/wp-admin/) + +== Changelog == + += 3.3.8.3 = +* Added: #1593 - Great pull request by @JonasDoebertin. Now you can enqueue dynamic output to the login screen or admin backend. +* Fixed: Customizer wasn't saving at all! That's been like 4 months. No one's reported it. Hmm. +* Fixed: #1702 - Customizer only fields were being erased on panel save. +* Fixed: Various Theme-Check errors with languages. +* Added: Theme-Check class to help devs know what is what. +* Fixed: The way we include files from include_once to require_once everywhere. +* Modified: Language files to reflect new strings. +* Modified: Formatted a bunch of old class files. +* Added: Notice on the updates for non-devs to use the new dev_mode disabler plugin and notify their developer. ;) + += 3.3.8 = +* Modified: Updated potomo, thanks @shivapoudel. +* Added: Grunt checktextdomain and made improvements. Thanks @shivapoudel. +* Modified: #1685 - Specifying no default argument for image_select caused errors on reset. +* Fixed: #1667 - Slides Upload button causing JS error. +* Fixed: #1670 - Fix for Theme Check -> `add_setting() method needs to have a sanitization callback function passed.` +* Fixed: #1661 - Fix for undefined index in some versions of PHP. Thanks @gianbalex! +* Modified: #1658 - Improvements from @shivapoudel, including: + * Removed makepot and used grunt-wp-i18n instead. + * Added a jshintrc file + * Added a `grunt addtextdomain` to correct any bad textdomains in the core. + * Updated .gitignore for better readability + * Updates to a few other files including package.json. + * Updated language files. + * Update codestyles/.editorconfig to reflect the project's standards. +* Modified: #1653 - Better admin bar with external links: Admin bar menu priority, icon, and external links. Thanks @shivapoudel! +* Added: #1651 - `library_filter` argument. Allows specification of what files to display in the media library. +* Modified: #1651 - `mode` argument accepts either file type or mime type (but not both). +* Fixed: #1650 - Toogle error with responsive CSS. +* Fixed: #1643 - Slight border issue (2px) on sticky footer. +* Fixed: #1642 - Added `font_family_clear` arg, enabling the clear option for font-family. +* Fixed: #1638 - Spacing field not outputting when units values attached to default values. +* Modified #1644 - `import_icon` argument now accepts wordpress dashicons +* Fixed: #1634 - Double border for sections field. Thanks @AlexandruDoda +* Modified: Changelog location to now Changelog.md. +* Fixed: #1632 - Sortable with no defaults set revert to false (instead of options values). +* Fixed: Labels for sortable in text mode updated to match framework. + += 3.3.7 = +* Added: #1586 - Class-level declaration for callbacks and validation. Thanks @echo1consulting. +* Modified: Typography field now fully dynamic. +* Modified: No longer require a google_api_key for the typography module. :) +* Fixed: FTP credentials screen giving a "undefined submit_button function". Resolved. +* Fixed: #1623 - Registered older noUISlider JS under a new name to avoid conflicts. +* Modified: #1622 - Removed googlefonts.js dependency. +* Modified: #1628 - Spacing and dimensions now only output 0 if the entry is a 0, not empty. + Thanks @Webcreations907 +* Modified: CSS for menu items when active (no hover). +* Added: Visual feedback to left menu if active. + += 3.3.6.8 = +* Fixed: #1600 - ACE Editor bombing in PHP 5.2 environments. +* Fixed: #1591 - Erroneous outputting of font-weight and font-style when no font-family selected. +* Updated: #1569 - Improved submenu highlighting. +* Added: #1487 - Added `get_default_value` function into the framework.php +* Fixed: Framework URI errors when using child themes. Some restructuring. +* Fixed: Framework URI errors when embedded in theme with Windows. +* Added: image_size as an option for the data argument. Thanks @Gyroscopic! +* Modified: How Redux paths are run. Should cover all use cases now. Child themes can also embed + Redux properly now. Thanks @cfoellmann for the suggestions. Fix for issue #1566. +* Modified: How we declare the uploads directory and URL. Using core WP functions now. +* Modified: Now if a section is empty, but has subsections, that section will be "skipped" when + clicked and the first subsection will then be shown. + += 3.3.6 = +* Fixed: #1560 - IE8 RGBA fallack +* Modified: Language files. +* Fixed: #1543 - Hint icon not changing when set in args. +* Fixed: #1537 - Media field not accepting images with mode set to false. +* Fixed: #1529 - ACE Editor conflict with Visual Composer. +* Added: #1530 - Added argument to specify admin bar icon, `admin_bar_icon`. Thanks Ninos! +* Fixed: #1532 - Media field not accepting any mime type when `'mode' => false`. +* Fixed: #1520 - Checkbox field not displaying Wordpress data when using data argument. +* Fixed: #1516 - Invalid index and foreach when using compiler and async_typography. +* Fixed: #1509 - Sorter adding unnecessary bits on some items. +* Fixed: #1514 - Customizer and multisite not getting on properly. +* Fixed: #1512 - Slides 'Upload' button not showing or saving selected image. +* Fixed: Checkboxes with required were working in reverse. +* Fixed: ASync Typography now works! No more flashing fonts. +* Fixed: #1489 - Color picker UI lining up improperly. +* Fixed: #1497 - dev_mode spinner issue. +* Fixed: Spelling error in tracking dialog. +* Modified: Updated ace_editor. +* Modified: Many MANY fields for the group field. +* Fixed: Some CSS bugs. +* Fixed: #1481 - Custom fonts loading in google font CSS. +* Fixed: #1485 - Customizer 'invalid argument' error. Thanks @rnlmedia. +* Fixed: #1472 - font style not displaying saved valie with no font-family argument set. +* Fixed: #1471 - raw field and required not playing nice together. + += 3.3.5 = +* Added: An annoying notice at the top so our devs don't ship with dev_mode on. ;) + += 3.3.4.9 = +* Fixed: #1462 - Google fonts not loading in font drop down. + += 3.3.4.8 = +* Fixed: More WP FileSystem tanking. Did PHP fallback before FTP. Works 99.9% of the time without credentials. + += 3.3.4.7 = +* Fixed: Incorrect folder CHMOD in filesystem class. + += 3.3.4.6 = +* Fixed: #1454 - Chmod permissions for redux folder. + += 3.3.4.5 = +* Fixed: #1451 - Googlefonts not loading due to failing copy function. + += 3.3.4.4 = +* Fixed: #1450 - Saves witch values with no `on` or `off` args make the core unhappy. + += 3.3.4.3 = +* Fixed: #1444, again, due to filesystem growing pains. +* Fixed: #1449 - Restoring `options` argument over a lousy attempt to fix placeholder. + += 3.3.4.2 = +* Fixed: More file permission issues. + += 3.3.4.1 = +* Fixed: Font debug was left from last commit. Sorry all. + += 3.3.4 = +* Fixed: Issues with file writing. Basically many users don't install WordPress with all the permissions + correct. So... Had to move it back to ~/uploads/. Sorry Otto, that's just how it is. +* Fixed: #1444 - output of typography all_styles when font_style UI was hidden. +* Fixed: #1440 - flaw in new cleanFilePath logic. +* Fixed: #1432 - Theme check failing when double-slashes existed in get_template_directory() return. +* Removed: curlRead from helper class. +* Fixed: #1426 - menu_name not appearing on front end admin bar. +* Added: #1427 - button_set added to customizer UI. Thanks @wpexplorer. +* Fixed: #1429 - ACE Editor erroring with no default value set. +* Fixed: wp_filesystem now initialized with credentials in an effort to combat the tmp file issue. +* Modified: Code purification. +* Modified: How section tabs work. Isolated within the redux-container class. +* Modified: #1412 - Redesigned text label, placeholder fix. + += 3.3.3 = +* Fixed: #1408 & #1357 - Typography subsets losing value after multiple saves on other panels. +* Fixed: #1403 - unit value no longer prints after empty typography values +* Modified: Typography: Backup font no longer appends to `font-family` variable. Please use the + `backup-font` variable to specify backup fonts. This does not apply to output/compiler strings. +* Fixed: #1403 - Backup font not appearing in font-family variable. +* Modified: Customizer now supports section and field `permissions` argument. +* Fixed: #1399 - Customizer respects `page_permissions` argument. +* Fixed: #1400 - output/compiler string incomplete using multiple selectors. +* Fixed: #1396 - Custom fonts cutting off multiple families in selector, after save. +* Fixed: Typography attempting to queue up non google fonts on backend. +* Added: #1395 - Display of child theme status in sysinfo, thanks @SiR-DanieL. +* Fixed: #1387 - Page jump when clicking "Options Object". Thanks @rrikesh. +* Added: #1392 - Filters to change the following localized strings: + redux/{opt_name}/localize/reset + redux/{opt_name}/localize/reset_all + redux/{opt_name}/localize/save_pending + redux/{opt_name}/localize/preset +* Fixed: #1376 - checkbox.min.js missing. +* Fixed: Static variable changes for instances and basic comment cleanup +* Fixed: #1361 - Raw field not hiding with required. +* Fixed: Datepicker not formatting properly. Still needs some work. + + += 3.3.2 = +* Fixed: #1357 - Preview not rendering font on page load. +* Fixed: #1356 - Color fields and transparency not syncing due to new JS. +* Fixed: #1354 - Add class check for W3_ObjectCache. +* Fixed: #1341 - JS not initializing properly in import_export. +* Fixed: #1339 - Typography would lose Font Weight and Style. value was named val in the + HTML, so it would be destroyed on the next save if not initialized. +* Fixed: #1226 - W3 Total Cache was affecting validation and compiler hooks. +* Fixed: Menu errors weren't showing properly for non-subsectioned items. +* Fixed: #1341 - Import/Export buttons not functioning. Also fixed sortable somehow. +* Fixed: Slides not initializing with the last fix. +* Fixed: Slides field was not properly initialized for the media elements. Fixed. + += 3.3.1 = +* Fixed: #1337 - `redux` JS dependency loading issue. Many thanks @tpaksu +* Modified: Drastically changed the way JavaScript is used in the panel. Forced as-needed + initialization of fields. Thus reducing dramatically the overall load time of + the panel. The effects have been seen up to 300% speed improvement. The only + time a field will be initialized is if it's visible, thus reducing the processing + needed in DOM overall. +* Fixed: #1336 - fixed default font in preview. +* Fixed: #1334 - Typography not un-saving italics. +* Added: #1332 - New validation: numeric_not_empty. +* Fixed: #1330 - Required not working on all fields. + += 3.3.0 = +* Fixed: #1322 - Sections not folding with required argument. +* Fixed: #1270 - Editor field compiler hook not firing in visual mode. +* Fixed: select2 dependency in select_image, and other fields. +* Fixed: Filter out `@eaDir` directories in extensions folder. +* Fixed: Fixed the image_select presets to work again. Also now will function even if import/export is disabled. +* Fixed: Minor tweaks for metabox update. +* Fixed: #1297 - Missing space in image_select class. +* Fixed: Slider field tweaked for metaboxes. +* Fixed: #1291 - Change of font-family would not trigger preview, or show in open preview. +* Fixed: #1289 - Typography not retaining size/height/spacing/word/letter spacing settings. +* Fixed: #1288 - Background color-picker dependency missing. Thanks @farhanwazir. +* Fixed: Search extension failed do to dependency issue from the core. +* Fixed: #1281 - color field output/compiler outputting incorrect selector when only one array present. +* Fixed: Update check only appears once if multiple instances of Redux are loaded in the same wordpress instance. +* Fixed: Changing font-family in typography didn't trigger 'save changes' notification. +* Fixed: More typography: Back up font appearing in font-family when opening selector. +* Fixed: Typography: undefined message when NOT using google fonts. Thanks @farhanwazir +* Fixed: Typography font backup not in sync with font-family. +* Fixed: Typography not saving font-family after switching back and forth between standard and google fonts. +* Fixed: Background field selects not properly aligned. +* Fixed: Removed select field dependency from background field. +* Fixed: #1264 - Color-picker/transparent checkbox functionality. +* Fixed: Typography fine-tuning. +* Fixed: All typography select fields render as select2. +* Fixed: Switching between transparency on and off now restores the last chosen color in all color fields. +* Fixed: Redux uploads dir should NOT be ~/wp-content/uploads, but just wp-content. As per Otto. +* Fixed: Navigation no longer has that annoying outline around the links. Yuk. +* Fixed: #1218 - Select2 multi select not accepting any keyboard input. +* Fixed: #1228 - CSS fixes +* Added: `hide_reset` argument, to hide the Reset All and Reset Section buttons. +* Added: `content_title` argument to slides field. Thanks @psaikali! +* Added: `customizer_only` argument for fields & sections, contributed by @andreilupu. +* Added: select2 args for spacing field. +* Added: select2 args for the following fields: typography, background, border, dimensions and slider. +* Added: #1329 - `'preview' = array('always_display' => true)` argument to typography, to determine if + preview field show always be shown. +* Modified: Portions of core javascript rewritten into object code. +* Modified: All field javascript rewritten using jQuery objects (versus standard function). +* Modified: Typography field rewritten to fill out font-family field dynamically, versus on page load. + += 3.2.9.13 = +* Modified data => taxonomies now has a little more power behind it. +* Fixed: #1255 - button_set multi field not saving when all buttons not selected. +* Fixed: #1254 - Border field with 0px not outputting properly. +* Fixed: #1250 - Typography preview font-size not set in preview. +* Fixed: #1247 - Spacing field not outputting properly in `absolute` mode. +* Modified: Typography previewing hidden until font inputs are changed. +* Fixed: Vendor js not loading properly when dev_mode = true +* Fixed: Border field not outputting properly. +* Modified: Centralized import/export code in anticipation of new builder features. +* Fixed: Removed rogue echo statement. +* Modified: select2 loads only when a field requires it. +* Modified: More code to load JS on demand for fields require it. +* Modified: Field specific JS only loads with active field. +* Fixed: Hints stopped working due to classname change. +* Fixed: Permissions argument on section array not filtering out raw field. +* Fixed: Too many CSS tweaks to list, due to last build. +* Fixed: Sortable and Sorter fields now sort without page scroll when page size is under 782px. +* Fixed: Hint icon defaults to left position when screen size is under 782px. +* Fixed: `permissions` argument for fields and sections erasing saved field data. See #1231 +* Modified: Woohoo! Nearly fully responsive. Yanked out all SMOF and NHP field customizations. Lots of little + fixes on all browser screens. This will also greatly benefit Metaboxes and other areas of Redux. +* Fixed: In dev_mode panel CSS was being loaded 2x. +* Fixed: Typography color picker bleeding under other elements. #1225 +* Fixed: Hint icon_color index error from builder. #1222 + += 3.2.9 = +* Added: Network admin support! Set argument 'database' to network and data will be saved site-wide. Also + two new arguments: network_admin & network_sites for where to show the panel. +* Added: Customizer hook that can be used to simulate the customizer for live preview in the customizer. + `redux/customizer/live_preview` +* Added: `output` argument for `color` and `color_rgba` fields accepts key/pairs for different modes. +* Added: `class` argument to the Redux Arguments, section array, and metabox array. If set, a class will + be appended to whichever level is used. This allows further customization for our users. +* Added: disable_save_warn flags to the arguments to disable the "you should save" slidedown. +* Added: Actions hooks for errors and warnings. +* Fixed: Redux now ignores any directories that begin with `.` in the extension folder. See #1213. +* Fixed: Redux not saving when validating uploads. +* Fixed: Border field output/compiler formatting. Removed 'inherit' in place of default values. See #1208. +* Fixed: Trim() warning in framework.php when saving. See #1209, #1201. +* Fixed: Typography not outputting all styles when `all_styles` set to true. +* Fixed: 'Cannot send header' issues with typography. +* Fixed: Small fix for validation if subsection parent is free of errors, remove the red highlight when not + expanded. +* Fixed: Small CSS classes for flashing fonts where web-font-loader. +* Fixed: ASync Flash on fonts. FINALLY. What a pain. +* Fixed: 3+ JavaScript errors found in the background field. Now works flawlessly. +* Fixed: PHP warnings in background field. #1173. Thanks, @abossola. +* Fixed: CSS validation not respecting child selector symbol. #1162 +* Fixed: Extra check for typography bug. +* Fixed: Error css alignment issue with subsections. +* Fixed: javascript error in typography field. +* Fixed: Added a title to the google fonts stylesheet to fix validation errors. +* Fixed: One more slides field error check, and an extra JS goodie for an extension. +* Fixed: Leftover debug code messing up slides field. +* Fixed: More reliable saved action hook. +* Fixed: Removed erroneous debug output in link_color field. +* Modified: Dimension field default now accepts either `units` or `unit`. +* Modified: Google CSS moved into HEAD via WP enqueue. +* Modified: Now do a trim on all fields before validating. No need to alert because of a space... +* Modified: Typography field CSS completely rewritten. All thanks to @eplanetdesign! +* Modified: Validation now works in metaboxes as well as updates numbers as changes occur. Validation for + subsections is SO hot now. +* Modified: Various CSS fixes and improvements. +* Modified: Turned of mod_rewrite check. +* Modified: How errors are displayed, no longer dependent on the ID, now proper classes. +* Modified: Error notice stays until all errors are gone. Also updates it's number as errors fixed! +* Modified: Moved google font files to proprietary folder in upload to help with permission issues. + += 3.2.8 = +* Fixed: Formatting of field files. Normalizing headers. +* Added: is_empty / empty / !isset AND not_empty / !empty / isset as required operations +* Fixed: Reset defaults error. +* Added: `show` argument to turn on and off input boxes in slider. +* Fixed: Required now works with muti-check fields and button set when set to multi. + += 3.2.7 = +* Fixed: Import works again. A single line was missed... +* Fixed: link_color field not outputting CSS properly via compiler or output. Thanks @vertigo7x +* Fixed: Sorter field CSS. Buttons were all smushed together. +* Fixed: 'undefined' error in typography.js. Thanks @ksere. + += 3.2.6 = +* Fixed: Another stray undefined index. Oy. +* Added: `open_expanded` argument to start the panel completely expanded initially. + += 3.2.5 = +* Fixed: Various bad mistakes. Oy. + += 3.2.4 = +* Fixed: Slight typography speed improvement. Less HTML hopefully faster page loads. +* Fixed: Unload error on first load if the typography defaults are not set. +* Fixed: Errors pertaining to mod_rewrite check. +* Fixed: All those headers already set errors. +* Added: $changed_values variable to save hooks denoting the old values on a save. +* Added: Pointers to Extensions on load. +* Modified: CSS Output for the background field. +* Fixed: Validation error messages not appearing on save. +* Modified: Speed boost on validation types. +* Added: Apache mod_rewrite check. This should solve many issues we've been seeing regarding mod_rewrite + not being enabled. +* Fixed: Sortable field not saving properly. +* Fixed: Erroneous data in admin.less +* Updated: sample-config.php. Sortable checkbox field example now uses true/false instead of text meant for + textbox example. + += 3.2.3 = +* Fixed: Responsive issues with spacing and dimension fields. +* Fixed: Style conflicts with WP 3.9. Added register filter to fields via id. +* Fixed: Metaboxes issues. +* Fixed: Compiler hook in the customizer now passes the CSS. +* Fixed: Compiler hook now properly fires in the customizer. +* Fixed: Validation error with headers already being set. +* Fixed: Added mode for width/height to override dimensions css output. +* Fixed: Restoring lost formatting from multiple merges. +* Fixed: New sorter default values get set properly now. ;) +* Fixed: Removed erroneous 's' character from HTML. +* Fixed: Info field didn't intend within section. +* Fixed: Compiler hook wasn't running. +* Modified: Some admin panel stylings. Now perfect with mobile hover. Also fixed an issue with the slidedown + width for sections. No more 2 empty pixels. +* Added: `data` and `args` can now be set to sorter! Just make sure to have it be a key based on what you + want it to display as. IE: `array('Main'=>'sidebars')` +* Added: Prevent Redux from firing on AJAX heartbeat, but added hook for it 'redux/ajax/heartbeat'. +* Added: Tick mark if section has sub sections. Hidden when subsections expanded. +* Added: Check to make sure a field isn't empty after the filter. If it is empty, skip over it. +* Added: Subsections now show icon if they have it. Show text only (without indent) if they do not. +* Added: Set a section or field argument of `'panel' => false` to skip over that field or panel and hide it. + It will still be registered with defaults saved, but not display. This can be useful for things + like the customizer. +* Added: SUBSECTIONS! Just add `'subsection' => true` to any section that isn't a divide/callback and isn't + the first section in your panel. ;) + += 3.2.1 = +* Fixed: Small bug in image_select javascript. +* Added: Import hook, just because we can. :) +* Fixed: Customizer preview now TRULY outputs CSS even if output_tag is set to false; +* Fixed: Reset section, etc. Discovered an odd WordPress thing. +* Fixed: Image_select size override. +* Fixed: Customizer save not firing the compiler hook. +* Fixed: Customizer not outputting CSS if output_tag is set to false. +* Fixed: Small empty variable check. Undefined index in the defaults generating function. +* Fixed: WP 3.9 update made editor field button look ugly. +* Fixed: Save hook not firing when save_default set to false. +* Fixed: Reset section anomalies. Maybe. +* Fixed: Array of values in required not recognized. +* Fixed: Updated hint defaults to prevent index warning. +* Fixed: Removed leftover debug code. +* Added: New readonly argument for text field. +* Fixed: Reset/Reset section actions hooks now fire properly. +* Fixed: When developer uses section field but does not specify an indent argument. +* Fixed: Dynamic URL for slides +* Fixed: Accidently removed reset action on section reset. Restored. +* Fixed: Section defaults bug for certain field types. +* Fixed: Dynamic URL if site URL changed now updates media properly if attachement exists. +* Fixed: Customizer now correctly does live preview. +* Fixed: Special enqueue case fix. +* Added: A few more hooks for defaults and options. +* Fixed: Small undefined index error. +* Added: Section key generation via title. +* Modified: File intending. +* Fixed: Custom menus not displaying options panel. +* Fixed: Single checkbox option not retaining checked value. +* Fixed: Border field returning bad CSS in CSS compiler. +* Fixed: Import/Export fix. Thanks, @CGlingener! + += 3.2.0 = +* Added: Save warning now is sticky to the top and responsive. +* Fixed: Mobile fixes for Redux. Looks great on small screens how. +* Fixed: Slight CSS fixes. +* Fixed: Compiler fixes and added notices. +* Added: Import/Export more reasonable text. +* Added: `force_output` on the field level to bypass the required check that removes the output if the field is hidden. Thanks @rffaguiar. +* Fixed: Fully compatible with WordPress 3.9. Now it just works. ;) +* Fixed: Info and divide field now work with required. +* Added: Fallback. Now if the media, slides, or background URL doesn't match the site URL, but the attachment ID is present, the data is updated. +* Fixed: Last tab not properly set. Slow rendering. +* Modified: Replaced transients with cookies. Less DB queries. +* Fixed: Undefined variable issues for new required methods. +* Fixed: Default_show display error with a non-array being steralized. +* Added: Multiple required parent value checking! Booya! +* Fixed: Sections now fold with required. +* Fixed: select2 not rendering properly when dev_mode = false, because of ace_editor fix. +* Fixed: Removed mistakenly compiled test code from redux.js. +* Fixed: ace_editor not rendering properly in certain instances. +* Modified: Small change to import_export field in checking for existing instance of itself. +* Fixed: import_export not rendering when the menutype argument was set to menu +* Fixed: Ace_editor not enqueued unless used. MEMORY HOG. +* Fixed: Color_Gradient transparency to was being auto-selected if from way transparent. +* Fixed: Enqueue select with slider for local dev. +* Modified: removed add_submenu_page when creating a submenu for us in the WP admin area. WP approved API is used in it's place to being Redux up to wp.org theme check standards. +* Fixed: Massive speed issue with button_set. Resolved. +* Fixed: Issue where default values throws an error if ID is not set. +* Fixed: Continuing effort to ensure proper loading of config from child themes. +* Fixed: Import/Export array search bug if section['fields'] is not defined. +* Fixed: Inconsistencies in import/export across different versions of PHP. +* Fixed: Redux checks for child or parent theme exclusively before loading. + += 3.1.9 = +* Fixed: Typography custom preview text/size not outputting. +* Fixed: No font selected in typography would default to 'inherit'. +* Fixed: Hint feature kicking back a notice if no title was specified. +* Fixed: Sortable field, when used a checkboxes, were all checked by default, even when set not to be. +* Fixed: button_set field not setting properly in multi mode. +* Fixed: Javascript console object not printing options object. +* Fixed: Load errors from child themes no longer occur. +* Fixed: Compiler output for slider field. +* Fixed: update_check produced a fatal error on a local install with no internet connection. +* Fixed: Compiler hook failing on slider. +* Fixed: Error on update_check when the response code was something other than 200. +* Fixed: image_select images not resizing properly in FF and IE. +* Fixed: Layout for the typography field, so everything isn't smushed together. The new layout is as follows: +* Fixed: link_color field showing notice on default, if user enters no defaults. +* Fixed: Fixed tab notice in framework.php if no tab parameter is set in URL. +* Fixed: Hide demo hook wasn't hiding demo links. +* Added: Admin notice for new builds of Redux on Github as they become available. This feature is available on in dev_mode, and may be turned off by setting the `update_notice` argument to false. See the Arguments page of the wiki for more details. +* Added: text-transform option for the typography field. +* Added: Newsletter sign-up popup at first load of the Redux options panel. +* Added: Added PHP 5.2 support for import/export. +* Added: Action hooks for options reset and options reset section. +* Added: Theme responsive for date picker. +* Added: New slider. Better looking UI, double handles and support for floating point values. See the wiki for more info. +* Added: Typography improvements. +* Added: Hints! More info: https://github.com/ReduxFramework/ReduxFramework/wiki/Using-Hints-in-Fields +* Added: Complete Wordpress admin color styles. Blessed LESS/SCSS mixins. ;) +* Added: Font family not required for the typography module any longer. +* Added: Support for using the divide field in folding. +* Added: Error trapping in typography.js for those still attempting to use typography with no font-family. +* Added: Full asynchronous font loading. +* Added: email_not_empty validation field. +* Modified: Typography word and letter spacing now accept negative values. +* Modified: Typography preview shows spaces between upper and lower case groupings. +* Modified: Google font CSS moved to header so pages will pass HTML5 validation. +* Modified: Removed Google font CSS line from header (because it's in the footer via wp_enqueue_style. +* Modified: RGBA Field stability. Thank you, @SilverKenn. +* Modified: Separated Import/Export from the core. It can now be used as a field. + [family-font] [backup-font] + [style] [script] [align] [transform] + [size] [height] [word space] [letter space] + [color] +* Reverted: email validation field only checks for valid email. not_empty check moved to new validation field. + += 3.1.8 = +* Fixed: Improper enqueue in tracking class. +* Fixed: Few classes missed for various fields. +* Fixed: Spacing field kicking back notices and warnings when 'output' wasn't set. +* Modified: Added file_exists check to all include lines in framework.php +* Fixed: Background field now works with dynamic preview as it should. +* Fixed: Extension fields now enqueueing properly. +* Added: Text-align to typography field. +* Fixed: Servers returning forwards slashes in TEMPLATEPATH, while Redux is installed embedded would not show options menu. +* Fixed: On and Off for switch field not displaying language translation. +* Fixed: email validation allowing a blank field. +* Fixed: Now allow for empty values as valid keys. +* Added: Dismiss option to admin notices (internal function) + += 3.1.7 = +* Fixed: Servers returning forwards slashes in TEMPLATEPATH, while Redux is installed embedded would not show options menu. +* Fixed: On and Off for switch field not displaying language translation. +* Fixed: email validation allowing a blank field. +* Added: Dismiss option to admin notices (internal function) +* Fixed: On and Off for switch field not displaying language translation. +* Fixed: email validation allowing a blank field. +* Added: Dismiss option to admin notices (internal function) + += 3.1.6 = +* Fixed: CSS spacing issue +* Fixed: Customizer now works and doesn't break other customizer fields outside of Redux. +* Fixed: Several minor bug fixes +* Added: Metabox support via extension http://reduxframework.com/extensions/ +* Added: Admin-bar menu +* Fixed: Section field now folds. +* Fixed: wp_content_dir path now handles double forward slashes. +* Fixed: Typography field missing italics in Google fonts. +* Fixed: Default color in border field not saving properly. +* Fixed: hex2rgba in class.redux_helpers.php changed to static. +* Fixed: 'sortable' field type not saving options as default. +* Fixed: Specified default color not set when clicking the color box default button. +* Fixed: Sorter field options are now saved as default in database. +* Fixed: Issues with checkboxes displaying default values instead of labels. +* Fixed: Outstanding render issues with spacing field. +* Fixed: Plugins using Redux from load failure. +* Fixed: 'not_empty' field validation. +* Fixed: Media field. +* Added: 'read-only' option for media text field. +* Added: 'mode' option to image_select, so CSS output element may be specified. +* Added: Admin Bar menu for option panel. +* Modified: media field 'read-only' to 'readonly' to vonform to HTML standards. +* Modified: Removed raw_align field and added align option to raw field. See wiki for more info. +* Removed: EDD extension. It never belonged in Core and will be re-released as a downloadable extension shortly +* Removed: Group field, temporarily. +* Removed: wp_get_current_user check. See https://github.com/ReduxFramework/ReduxFramework/wiki/How-to-fix-%22Fatal-error%3A-Call-to-undefined-function-wp_get_current_user%28%29-%22 + += 3.1.5 = +* Typography font arrays may not contain comma spaces. +* Merge in pull request - 542, code cleanup and better readability +* Change how HTML is output to support metaboxes +* CSS only on pages that matter, better checks. +* font-backup in typography now appends to font-family in output and compiler. +* More fixes for Google font css outputting. +* Addded output and compiler to field_image_select. Images will be output as 'background-image'. +* Fixed output in field_background. +* Prevent standard fonts from outputting to Google fonts CSS call. +* class_exists in field_section checking for incorrect classname. +* sample_config fix. +* Compiler not outputting CSS without output set to comthing other than false. +* Google fonts not rendering on frontend. +* Rewrote sample_config as a class + += 3.1.4 = +* Fixed error in redux-framework.php. +* Added select_image field. + += 3.1.3 = +* Fixed a few undefined variables +* Removed old code from the repo. +* Fix for validation. +* Remove the compiler hook by default. +* Fix to sortable field. +* Added an extra check for link color. Removes user error. +* Localization updates. +* Error in slides. +* Fixed the info box bug with spacing and padding. +* Fixed the first item in each section having WAY too much padding. ;) +* Fixed section reset issue where values weren't being saved to the db properly. + += 3.1.2 = +* Feature - Sortable select boxes! +* Feature - Reset a section only or the whole panel! +* New Field - RGBA Color Field! +* Improvement - Use of REM throughout. +* Fixed Typography - Fix output option and various small bugs. +* Fixed Border - Fix output option and various small bugs. +* Fixed Dimensions - Fix output option and various small bugs. +* Fixed Image_select - Various small bugs. +* Fixed Slides - Various small bugs. +* Fixed Sortable - Using native jQuery UI library same as within WordPress. +* Fixed Slider and Spinner Input Field - Values now move to the closest valid value in regards to the step, automatically. +* Fixed Ace Editor +* FEATURE - All CSS/JS files are compiled into a single file now! Speed improvements for the backend. +* Fix in how WordPress data is received, improved some output. +* Fix for various fields not triggering fold/compiler/save. +* Fixed elusive icons to use the new version and classes. +* Fixed media thumb to only be the thumbnail version. +* Fixed admin https error with WordPress core not renaming URL. +* Placeholders throughout the framework are now properly there. +* Feature - Setting to not save defaults to database on load. +* Fixed - Computability issue with GT3 builder. +* Fixed localization issue with default values. +* Language - Added Russian +* Feature - Media now can have any content type passed in to limit content types. +* Allow negative values in typography and other fields. +* WordPress 3.8 computability. +* CSS validation issue. +* Feature - User contributed text direction feature. +* EDD Extension now fully function for plugins or themes. +* Removed get_theme_data() fallbacks, we're well pass WordPress 3.4 now. ;) +* A ton of other small updates and improvements. + + += 3.1.0 = +* Fix Issue 224 - Image Select width was breaking the panel. +* Fix Issue 181 - Broken panel in firefox +* Fix Issue 225 - 0px typography bug. Thanks @partnuz. +* Fix Issue 228 - Resolved a duplicated enqueue on color_link field. Thanks @vertigo7x. +* Fix Issue 231 - Field spacing bug fixes. +* Fix Issue 232 & 233 - Dimensions: bug fix with units and multiple units. Thanks @kpodemski +* Fix Issue 234 - Pass options as a ref so validating actions can modify/sanitize them. Thanks @ZeroBeeOne +* Fix Issue 222 - Tab cookie function wasn't working. +* Feature - Pass params to Select2. Thanks @andreilupu +* Fix Issue 238 - Fix for conditional output. Thanks @partnuz. +* Fix Issue 211 - Google Web font wasn't loading at first init of theme. +* Fix Issue 210 - Elusive Icons update. Changed classes to force use of full elusive name. +* Fix Issue 247 - Media thumbnails were not showing. Also fixed media to keep the largest file, but display the small version in the panel as a thumb. Thanks @kwayyinfotech. +* Fix Issue 144 - JS error when no item found in slider. +* Fix Issue 246 - Typography output errors. +* Feature & Issue 259 - Multi-Text now support validation! +* Fix Issue 248/261 - Links color issue. Also fixed color validation. +* Feature & Issue 262 - Now registered sidebars can be used as a data type. +* Fix Issue 194/276 - Custom taxonomy terms now passing properly. Thanks @kprovance. +* Feature & Issue 273 - Argument save_defaults: Disable the auto-save of the default options to the database if not set. +* Feature - Docs now being moved to the wiki for community participation. +* Issue 283 - Date placeholder. Thanks @kprovance. +* Issue 285 - HTTPS errors on admin. Known WordPress bug. Resolved. +* Fix Issue 288 - Float values now possible for border, dimensions, and spacing. +* Feature - Media field can now accept non-image files with a argument being set. +* Fix Issue 252 - Post Type data wasn't working properly. Thanks @Abu-Taymiyyah. +* Fix Issue 213 - Radio and Button Set wasn't folding. + += 3.0.9 = +* Feature - Added possibility to set default icon class for all sections and tabs. +* Feature - Make is to the WP dir can be moved elsewhere and Redux still function. +* Added Spanish Language. Thanks @vertigo7x. +* Fix Issue 5 - Small RGBA validation fix. +* Fix Issue 176 - Fold by Image Select. Thanks @andreilupu. +* Fix Issue 194 - Custom taxonomy terms in select field. +* Fix Issue 195 - Border defaults not working. +* Fix Issue 197 - Hidden elements were showing up on a small screen. Thanks @ThinkUpThemes. +* Fix issue 200 - Compiler not working with media field. +* Fix Issue 201 - Spacing field not using default values. +* Fix Issue 202 - Dimensions field not using units. +* Fix Issue 208 - Checkbox + Required issue. +* Fix Issue 211 - Google Font default not working on page load. +* Fix Issue 214 - Validation notice not working for fields. +* Fix Issue 181/224 - Firefox 24 image resize errors. +* Fix Issue 223 - Slides were losing the url input field for the image link. +* Fix - Various issues in the password field. +* Fixed various spelling issues and typos in sample-config file. +* Initialize vars before extract() - to shut down undefined vars wargnings. +* Various other fixes. + += 3.0.8 = +* Version push to ensure all bugs fixes were deployed to users. Various. + += 3.0.7 = +* Feature - Completely redone spacing field. Choose to apply to sides or all at once with CSS output! +* Feature - Completely redone border field. Choose to apply to sides or all at once with CSS output! +* Feature - Added opt-in anonymous tracking, allowing us to further analyze usage. +* Feature - Enable weekly updates of the Google Webfonts cache is desired. Also remove the Google Webfont files from shipping with Redux. Will re-download at first panel run to ensure users always have the most recent copy. +* Language translation of german updated alone with ReduxFramework pot file. +* Fix Issue 146 - Spacing field not storing data. +* Fix - Firefox field description rendering bug. +* Fix - Small issue where themes without tags were getting errors from the sample data. + += 3.0.6 = +* Hide customizer fields by default while still under development. +* Fix Issue 123 - Language translations to actually function properly embedded as well as in the plugin. +* Fix Issue 151 - Media field uses thumbnail not full image for preview. Also now storing the thumbnail URL. Uses the smallest available size as the thumb regardless of the name. +* Fix Issue 147 - Option to pass params to select2. Contributed by @andreilupu. Thanks! +* Added trim function to ace editor value to prevent whitespace before and after value keep being added +* htmlspecialchars() value in pre editor for ace. to prevent html tags being hidden in editor and rendered in dom +* Feature: Added optional 'add_text' argument for multi_text field so users can define button text. +* Added consistent remove button on multi text, and used sanitize function for section id +* Feature: Added roles as data for field data +* Feature: Adding data layout options for multi checkbox and radio, we now have quarter, third, half, and full column layouts for these fields. +* Feature: Eliminate REDUX_DIR and REDUX_URL constants and instead created static ReduxFramework::$_url and ReduxFramework::$_dir for cleaner code. +Feature: Code at bottom of sample-config.php to hide plugin activation text about a demo plugin as well as code to demo how to hide the plugin demo_mode link. +* Started work on class definitions of each field and class. Preparing for the panel builder we are planning to make. + += 3.0.5 = +* Fixed how Redux is initialised so it works in any and all files without hooking into the init function. +* Issue #151: Added thumbnails to media and displayed those instead of full image. +* Issue #144: Slides had error if last slide was deleted. +* Color field was outputting hex in the wrong location. +* Added ACE Editor field, allowing for better inline editing. + += 3.0.4 = +* Fixed an odd saving issue. +* Fixed link issues in the framework +* Issue #135: jQuery UI wasn't being properly queued +* Issue #140: Admin notice glitch. See http://reduxframework.com/2013/10/wordpress-notifications-custom-options-panels/ +* Use hooks instead of custom variable for custom admin CSS +* Added "raw" field that allows PHP or a hook to embed anything in the panel. +* Submenus in Admin now change the tabs without reloading the page. +* Small fix for multi-text. +* Added IT_it and RO_ro languages. +* Updated readme file for languages. + += 3.0.3 = +* Fixed Issue #129: Spacing field giving an undefined. +* Fixed Issue #131: Google Fonts stylesheet appending to body and also to the top of the header. Now properly placed both at the end of the head tag as to overload any theme stylesheets. +* Fixed issue #132 (See #134, thanks @andreilupu): Could not have multiple WordPress Editors (wp_editor) as the same ID was shared. Also fixed various styles to match WordPress for this field. +* Fixed Issue #133: Issue when custom admin stylesheet was used, a JS error resulted. + += 3.0.2 = +* Improvements to slides, various field fixes and improvements. Also fixed a few user submitted issues. + += 3.0.1 = +* Backing out a bit of submitted code that caused the input field to not properly break. + += 3.0.0 = +* Initial WordPress.org plugin release. + += 3.0 = +Redux is now hosted on WordPress.org! Update in order to get proper, stable updates. + + +== Attribution == + +Redux is was originally based off the following frameworks: + +* [NHP](https://github.com/leemason/NHP-Theme-Options-Framework) +* [SMOF](https://github.com/syamilmj/Options-Framework "Slightly Modified Options Framework") + +It has now a completely different code base. If you like what you see, realize this is a labor of love. Please [donate to the Redux Framework](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=N5AD7TSH8YA5U) if you are able. diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/admin.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/admin.css new file mode 100644 index 00000000..c2937b34 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/admin.css @@ -0,0 +1 @@ +.redux-main .description{margin-top:7px}.form-table>tbody>tr>th{width:30%}.redux-container{background-color:#f5f5f5;background-repeat:repeat-x;background-image:-moz-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f2f2f2),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);background-image:-ms-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0);background-image:linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);border:1px solid #dedede;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);-moz-box-shadow:0 1px 5px rgba(0,0,0,.4);margin-top:5px;overflow:hidden}.redux-container .hr{height:20px;line-height:20px;float:none;border-color:#E7E7E7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px 0}.redux-container .hr .inner span{background-color:#FCFCFC;border-color:#E7E7E7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.redux-container .inner{width:42%!important;left:40%!important;margin-left:-6%;background-color:#FCFCFC;border-color:#E7E7E7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-container #redux-header,.redux-container #redux-footer{text-align:right;padding:6px 10px}.redux-container #redux-header{background:#f1f1f1;border-bottom:3px solid #00f}.redux-container #redux-header .display_header{float:left;margin:20px 10px}.redux-container #redux-header .display_header h2{display:inline-block;font-style:normal;padding-right:5px}.redux-container #redux-header .display_header span{color:#888}.redux-container #redux-header .icon32{float:right;margin:16px 16px 0}.redux-container #redux-footer{border-top:1px solid #E7E7E7;z-index:9999}.redux-container #redux-footer #redux-share{float:left;line-height:28px;font-size:15px}.redux-container #redux-footer #redux-share a{text-decoration:none;margin-right:10px}.redux-container #redux-footer #redux-share a img{margin-bottom:-3px}.redux-container .notice-green{margin:0;border-bottom:1px solid #E7E7E7;background-color:#DFF0D8;color:#468847;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .notice-blue{margin:0;border-bottom:1px solid #BCE8F1;background-color:#D9EDF7;color:#3A87AD;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .notice-yellow{margin:0;border-bottom:1px solid #E7E7E7;background-color:#FCF8E3;color:#C09853;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .notice-red,.redux-container .redux-field-errors{margin:0;border-bottom:1px solid #E7E7E7;background-color:#F2DEDE;color:#B94A48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .redux-field-errors,.redux-container .redux-field-warnings,.redux-container .redux-save-warn{display:none}.redux-container .sticky-save-warn{min-height:76px}.redux-container .sticky-save-warn .redux-save-warn{position:fixed;top:32px;right:21px;left:183px;opacity:1;z-index:9999}.redux-container #info_bar{background:#f3f3f3;border-bottom:1px solid #dedede;padding:6px 10px 6px 6px;text-align:right;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}.redux-container .redux-group-tab{display:none;margin-bottom:30px}.redux-container .redux-group-tab .redux-theme-data{padding:20px 0;border-top:1px solid #E7E7E7}.redux-container .redux-group-tab .redux-theme-data.theme-description{padding:10px 0;border-width:0}.redux-container .redux-group-tab .redux-theme-data.theme-uri,.redux-container .redux-group-tab .redux-theme-data.theme-author,.redux-container .redux-group-tab .redux-theme-data.theme-version{padding:0;border-width:0}.redux-container .redux-group-tab h3{margin-top:0;line-height:2em;border-bottom:1px solid #E7E7E7}.redux-container .redux-group-tab .redux-section-desc{margin-bottom:15px;color:#666}.redux-container .redux-action_bar{float:right}.redux-container .redux-ajax-loading{display:none;background:red url(../img/ajax.gif) no-repeat;width:16px;height:16px;margin:3px 4px 0;float:right}.redux-container #redux-intro-text{background:#f3f3f3;border-bottom:1px solid #dedede;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc;padding:3px;padding:10px 10px}.redux-container #redux-intro-text p{margin:0;font-family:"Lucida Grande",Sans-serif;color:#888}.redux-container .expand_options{cursor:pointer;display:block;height:22px;width:21px;float:left;font-size:0;text-indent:-9999px;margin:1px 0 0 5px;border:1px solid #bbb;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:url(../img/toggle_tabs.png) no-repeat -2px -26px}.redux-container .expand_options.expanded{background:url(../img/toggle_tabs.png) no-repeat -2px -1px}.redux-container .expand_options:hover{border-color:#888}.redux-container .sticky-footer-fixed{background:#f3f3f3;border-top:1px solid #dedede!important;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}.redux-container .redux-sidebar,.redux-container .redux-main{min-height:300px}.no-js{border:1px solid #ffbaba;margin:0;border-bottom:1px solid #E7E7E7;background-color:#F2DEDE;color:#B94A48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-main{background:#FCFCFC;margin-left:201px;border-left:1px solid #D8D8D8;padding:10px 20px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #FFF;box-shadow:inset 0 1px 0 #FFF}.redux-main .form-table.no-border{border-top:none}.redux-main .form-table tr{border-bottom:1px solid #E7E7E7}.redux-main .form-table tr:last-child{border-bottom:none!important}.redux-main .form-table tr th,.redux-main .form-table tr td{color:#333}.redux-main .form-table tr td table.mceLayout,.redux-main .form-table tr td table.mceLayout tr,.redux-main .form-table tr td table.mceLayout tr td{padding:0;border-width:0}.redux-main .form-table tr td .redux-th-warning{font-size:1em;color:#C09853;font-weight:400;display:block}.redux-main .form-table tr td .redux-field-warning{border-color:#C09853}.redux-main .form-table tr td .redux-th-error{font-size:1em;color:#B94A48;font-weight:400;display:block}.redux-main input.large-text{width:100%}.redux-main .hide{display:none}.redux-main .redux-field-container{padding:20px 0}.redux-main .mini,.redux-main input[type=text].mini{width:50px;text-align:center}.redux-main input{line-height:19px}.redux-main img{max-width:100%;height:auto;width:auto!important}.redux-main .select2-default{width:auto!important}.redux-main .showDefaults{display:block;font-weight:400;font-size:.8em;color:#888}.redux-main span.description{display:block;font-style:normal;font-weight:400}.redux-main #redux-system-info textarea{min-height:730px;width:100%}.redux-main .field-desc{clear:both;font-size:13px}.redux-main .data-full li{width:100%}.redux-main .data-half li{width:50%;float:left}.redux-main .data-third li{width:33.3%;float:left}.redux-main .data-quarter li{width:25%;float:left}.redux-main .ui-helper-hidden-accessible{top:inherit}.redux-main .form-table:first-child tr th,.redux-main .redux-main .form-table:first-child tr td{padding-top:0!important}.redux-main .form-table{clear:none;margin-top:0!important}.redux-main .form-table:first-child tr th,.redux-main .form-table:first-child tr td{padding-top:0!important}.redux-main .form-table tr:first-child th,.redux-main .form-table tr:first-child td{padding-top:0}.redux-main .input-append input{border-right:0;margin-bottom:0;border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0;float:left;margin-top:0;display:block}.redux-main .input-append .add-on{border-top-right-radius:3px;border-bottom-right-radius:3px;margin-left:-2px;padding-top:4px!important;padding-bottom:2px!important;float:left}.redux-main .input-prepend input{border-left:0;margin-bottom:0;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;padding-top:2px;padding-bottom:5px;float:left;margin-top:0;display:block}.redux-main .input-prepend .add-on{border-top-left-radius:3px;border-bottom-left-radius:3px;float:left}.redux-main .input-append{margin-right:10px;font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:6px}.redux-main .input-append .add-on,.redux-main .input-prepend .add-on{width:auto;display:inline-block;min-width:16px;padding:3px 4px;font-size:12px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.redux-main .input-prepend{font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:6px}.redux-main #redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}.redux-sidebar{width:202px;float:left}.redux-sidebar .redux-group-menu{margin-top:0!important}.redux-sidebar .redux-group-menu li{margin-top:0}.redux-sidebar .redux-group-menu li.active a,.redux-sidebar .redux-group-menu li.active a:hover,.redux-sidebar .redux-group-menu li.activeChild a,.redux-sidebar .redux-group-menu li.activeChild a:hover{background:#FCFCFC;color:#269ad6;width:184px;opacity:1}.redux-sidebar .redux-group-menu li.active a li a{background:#333;padding-left:5px}.redux-sidebar .redux-group-menu li.divide{padding:0;border-width:1px 0;border-style:solid;border-bottom-color:#E7E7E7;border-top-color:#F9F9F9}.redux-sidebar .redux-group-menu li a:first-child{border-top:none}.redux-sidebar .redux-group-menu li a{display:block;padding:10px 4px 10px 14px;background:#e0e0e0;background:0 0;border-width:1px 0;border-style:solid;border-bottom-color:#E7E7E7;border-top-color:#F9F9F9;opacity:.7;color:#555;font-weight:700;text-decoration:none;-webkit-transition:none;transition:none}.redux-sidebar .redux-group-menu li a.custom-tab{background:#f6f6f6}.redux-sidebar .redux-group-menu li a img{width:16px;height:16px;position:absolute;left:15px}.redux-sidebar .redux-group-menu li a:hover{background:#e5e5e5;color:#777;opacity:1}.redux-sidebar .redux-menu-warning,.redux-sidebar .redux-menu-error,.redux-sidebar .hasSubSections .extraIconSubsections{display:inline-block;float:right;padding:6px 7px 4px 7px;margin-left:4px;font-family:sans-serif;font-size:9px;font-weight:700;line-height:9px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;margin-right:5px}.redux-sidebar .redux-menu-warning i,.redux-sidebar .redux-menu-error i,.redux-sidebar .hasSubSections .extraIconSubsections i{margin-left:-3px;margin-top:-3px}.redux-sidebar .redux-menu-error{background-color:#b94a48;color:#f2dede}.redux-sidebar .redux-menu-warning{background-color:#C09853;color:#FCF8E3}.redux-sidebar ul .subsection{display:none}.redux-sidebar .redux-group-tab-link-a{position:relative;outline:0}.redux-sidebar .redux-group-tab-link-a i{vertical-align:middle;font-size:1.35em;position:absolute}.redux-sidebar .redux-group-tab-link-a span{display:block}.redux-sidebar .redux-group-tab-link-a span.group_title{padding-left:30px}.redux-sidebar .redux-group-tab-link-li a.hasError span.group_title{padding-right:25px}.form-table th,.form-table td{margin:0;padding:0;width:auto}.redux_field_th{font-weight:700;padding:20px 10px 20px 0;display:block}.redux_field_th span:first-child{font-weight:400;display:block;color:#666}.farb-popup-wrapper{position:relative;display:block}.farb-popup{position:absolute;left:40px;top:40px;background-color:#fff;border:1px solid #222;padding:5px;z-index:100}#ui-datepicker-div{display:none}.mp6 .icon-themes{display:none}.mp6 .redux-container #info_bar{padding:6px 10px 6px 6px}.mp6 .redux-container #info_bar a{margin-top:2px}.redux-timer{text-align:center;font-size:10px;color:#888}.wrap{margin-top:0}@media screen and (max-width:1124px){.redux-sidebar{width:44px}.redux-sidebar .extraIconSubsections{display:none!important}.redux-sidebar .redux-group-menu li a,.redux-sidebar .redux-group-menu li a:hover,.redux-sidebar .redux-group-menu li.active a,.redux-sidebar .redux-group-menu li.active a:hover,.redux-sidebar .redux-group-menu li.activeChild a,.redux-sidebar .redux-group-menu li.activeChild a:hover{width:auto}.redux-sidebar .redux-group-tab-link-a{position:relative}.redux-sidebar .redux-group-tab-link-a i{position:inherit}.redux-sidebar .redux-group-tab-link-a span{display:none;position:absolute;top:0;left:44px;padding:12px;width:200px;background:#eee;border:1px solid #ccc;-webkit-box-shadow:2px 2px 8px rgba(0,0,0,.2);-moz-box-shadow:2px 2px 8px rgba(0,0,0,.2);box-shadow:2px 2px 8px rgba(0,0,0,.2);border-width:1px 1px 1px 0;z-index:3}.redux-sidebar .redux-group-tab-link-a:hover>span{display:block}.redux-main{margin-left:43px;width:auto;max-width:100%}table.form-table,.form-table>thead,.form-table>tbody,.form-table>tbody>tr>th,.form-table>tbody>tr>td,.form-table>tbody>tr{display:block;width:100%!important;padding:0!important}.form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px!important}.form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px!important}}@media screen and (max-width:783px){.mp6 .redux-container #info_bar{height:auto;padding-bottom:1px}.mp6 .redux-container #info_bar a{margin-top:5px}}pre{overflow:hidden}#redux-header h2{color:#fff}.admin-color-fresh .redux-container .button.ui-datepicker-current,.admin-color-fresh .redux-container button.ui-datepicker-close{background-color:#007fb1!important}.admin-color-fresh .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#1e8cbe!important;color:#fff!important;border:1px solid #104b66!important}.admin-color-fresh .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-fresh .redux-container .ui-datepicker-header{background-color:#222!important;color:#fff!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-active{background-color:#007fb1!important;color:#fff!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-hover{color:#007fb1!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-highlight{background:#0074a2!important;border:1px solid #222!important;color:#fff!important}.admin-color-fresh .redux-container-switch .cb-disable,.admin-color-fresh .redux-container-switch .cb-enable,.admin-color-fresh .redux-container .ui-state-default,.admin-color-fresh .redux-container .ui-widget-content .ui-state-default,.admin-color-fresh .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-fresh .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-fresh .redux-container-switch .cb-enable.selected,.admin-color-fresh .redux-container .ui-buttonset .ui-state-active{background-color:#0074a2!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#008ec6),to(#0074a2))!important;background-image:-moz-linear-gradient(top,#008ec6,#0074a2)!important;background-image:-ms-linear-gradient(top,#008ec6,#0074a2)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#008ec6),color-stop(100%,#0074a2))!important;background-image:-webkit-linear-gradient(top,#008ec6,#0074a2)!important;background-image:-o-linear-gradient(top,#008ec6,#0074a2)!important;background-image:linear-gradient(top,#008ec6,#0074a2)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#003d56!important;border-color:#004f6f!important;-webkit-box-shadow:inset 0 1px 0 #00abef,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #00abef,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-fresh #redux-header .display_header span{color:#bbb}.admin-color-fresh #redux-header{background:#222;border-color:#0074a2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-fresh .redux-sidebar .redux-group-menu li.active a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a{color:#222}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#0074a2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#222}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#bbb}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#222}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#0074a2}.admin-color-fresh .redux-container-image_select .redux-image-select-selected img{border-color:#0074a2}.admin-color-fresh #redux-footer #redux-share a{color:#0074a2}.admin-color-fresh #redux-footer #redux-share a:hover{color:#002b3c}.admin-color-fresh .select2-results .select2-highlighted{background:#0074a2}.admin-color-fresh .select2-drop-active,.admin-color-fresh .select2-container-multi.select2-container-active .select2-choices,.admin-color-fresh .select2-drop.select2-drop-above.select2-drop-active,.admin-color-fresh .select2-container-active .select2-choice,.admin-color-fresh .select2-container-active .select2-choices,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#0074a2}.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-fresh .noUi-connect{background-color:#007fb1;background-image:-khtml-gradient(linear,left top,left bottom,from(#0099d5),to(#007fb1));background-image:-moz-linear-gradient(top,#0099d5,#007fb1);background-image:-ms-linear-gradient(top,#0099d5,#007fb1);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#0099d5),color-stop(100%,#007fb1));background-image:-webkit-linear-gradient(top,#0099d5,#007fb1);background-image:-o-linear-gradient(top,#0099d5,#007fb1);background-image:linear-gradient(top,#0099d5,#007fb1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-light .redux-container .button.ui-datepicker-current,.admin-color-light .redux-container button.ui-datepicker-close{background-color:#04b0db!important}.admin-color-light .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#0384a4!important;color:#fff!important;border:1px solid #013340!important}.admin-color-light .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-light .redux-container .ui-datepicker-header{background-color:#888!important;color:#fff!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-active{background-color:#04b0db!important;color:#fff!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-hover{color:#04b0db!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-highlight{background:#04a4cc!important;border:1px solid #888!important;color:#fff!important}.admin-color-light .redux-container-switch .cb-disable,.admin-color-light .redux-container-switch .cb-enable,.admin-color-light .redux-container .ui-state-default,.admin-color-light .redux-container .ui-widget-content .ui-state-default,.admin-color-light .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-light .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-light .redux-container-switch .cb-enable.selected,.admin-color-light .redux-container .ui-buttonset .ui-state-active{background-color:#04a4cc!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#05c0ef),to(#04a4cc))!important;background-image:-moz-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:-ms-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#05c0ef),color-stop(100%,#04a4cc))!important;background-image:-webkit-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:-o-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:linear-gradient(top,#05c0ef,#04a4cc)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#036881!important;border-color:#037c9a!important;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-light #redux-header .display_header span{color:#e6e6e6}.admin-color-light #redux-header{background:#888;border-color:#04a4cc}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-light .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-light .redux-sidebar .redux-group-menu li.active,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-light .redux-sidebar .redux-group-menu li.active a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild a{color:#888}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#04a4cc}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#888}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#e6e6e6}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#888}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#04a4cc}.admin-color-light .redux-container-image_select .redux-image-select-selected img{border-color:#04a4cc}.admin-color-light #redux-footer #redux-share a{color:#04a4cc}.admin-color-light #redux-footer #redux-share a:hover{color:#025468}.admin-color-light .select2-results .select2-highlighted{background:#04a4cc}.admin-color-light .select2-drop-active,.admin-color-light .select2-container-multi.select2-container-active .select2-choices,.admin-color-light .select2-drop.select2-drop-above.select2-drop-active,.admin-color-light .select2-container-active .select2-choice,.admin-color-light .select2-container-active .select2-choices,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#04a4cc}.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-light .noUi-connect{background-color:#04b0db;background-image:-khtml-gradient(linear,left top,left bottom,from(#09cafa),to(#04b0db));background-image:-moz-linear-gradient(top,#09cafa,#04b0db);background-image:-ms-linear-gradient(top,#09cafa,#04b0db);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#09cafa),color-stop(100%,#04b0db));background-image:-webkit-linear-gradient(top,#09cafa,#04b0db);background-image:-o-linear-gradient(top,#09cafa,#04b0db);background-image:linear-gradient(top,#09cafa,#04b0db);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-blue .redux-container .button.ui-datepicker-current,.admin-color-blue .redux-container button.ui-datepicker-close{background-color:#509dba!important}.admin-color-blue .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#db9825!important;color:#fff!important;border:1px solid #845c16!important}.admin-color-blue .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-blue .redux-container .ui-datepicker-header{background-color:#096484!important;color:#fff!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-active{background-color:#509dba!important;color:#fff!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-hover{color:#509dba!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-highlight{background:#4796b3!important;border:1px solid #096484!important;color:#fff!important}.admin-color-blue .redux-container-switch .cb-disable,.admin-color-blue .redux-container-switch .cb-enable,.admin-color-blue .redux-container .ui-state-default,.admin-color-blue .redux-container .ui-widget-content .ui-state-default,.admin-color-blue .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-blue .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-blue .redux-container-switch .cb-enable.selected,.admin-color-blue .redux-container .ui-buttonset .ui-state-active{background-color:#4796b3!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#5ea5bf),to(#4796b3))!important;background-image:-moz-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:-ms-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5ea5bf),color-stop(100%,#4796b3))!important;background-image:-webkit-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:-o-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:linear-gradient(top,#5ea5bf,#4796b3)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#31687c!important;border-color:#39778e!important;-webkit-box-shadow:inset 0 1px 0 #7cb6cb,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #7cb6cb,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-blue #redux-header .display_header span{color:#e2ecf1}.admin-color-blue #redux-header{background:#096484;border-color:#4796b3}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-blue .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-blue .redux-sidebar .redux-group-menu li.active,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-blue .redux-sidebar .redux-group-menu li.active a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild a{color:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#4796b3}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#e2ecf1}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#4796b3}.admin-color-blue .redux-container-image_select .redux-image-select-selected img{border-color:#4796b3}.admin-color-blue #redux-footer #redux-share a{color:#4796b3}.admin-color-blue #redux-footer #redux-share a:hover{color:#2a596a}.admin-color-blue .select2-results .select2-highlighted{background:#4796b3}.admin-color-blue .select2-drop-active,.admin-color-blue .select2-container-multi.select2-container-active .select2-choices,.admin-color-blue .select2-drop.select2-drop-above.select2-drop-active,.admin-color-blue .select2-container-active .select2-choice,.admin-color-blue .select2-container-active .select2-choices,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#4796b3}.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-blue .noUi-connect{background-color:#509dba;background-image:-khtml-gradient(linear,left top,left bottom,from(#69abc4),to(#509dba));background-image:-moz-linear-gradient(top,#69abc4,#509dba);background-image:-ms-linear-gradient(top,#69abc4,#509dba);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#69abc4),color-stop(100%,#509dba));background-image:-webkit-linear-gradient(top,#69abc4,#509dba);background-image:-o-linear-gradient(top,#69abc4,#509dba);background-image:linear-gradient(top,#69abc4,#509dba);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-coffee .redux-container .button.ui-datepicker-current,.admin-color-coffee .redux-container button.ui-datepicker-close{background-color:#ccad93!important}.admin-color-coffee .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#ba906d!important;color:#fff!important;border:1px solid #835d3e!important}.admin-color-coffee .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-coffee .redux-container .ui-datepicker-header{background-color:#46403c!important;color:#fff!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-active{background-color:#ccad93!important;color:#fff!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-hover{color:#ccad93!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-highlight{background:#c7a589!important;border:1px solid #46403c!important;color:#fff!important}.admin-color-coffee .redux-container-switch .cb-disable,.admin-color-coffee .redux-container-switch .cb-enable,.admin-color-coffee .redux-container .ui-state-default,.admin-color-coffee .redux-container .ui-widget-content .ui-state-default,.admin-color-coffee .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-coffee .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-coffee .redux-container-switch .cb-enable.selected,.admin-color-coffee .redux-container .ui-buttonset .ui-state-active{background-color:#c7a589!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#d2b7a1),to(#c7a589))!important;background-image:-moz-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:-ms-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d2b7a1),color-stop(100%,#c7a589))!important;background-image:-webkit-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:-o-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:linear-gradient(top,#d2b7a1,#c7a589)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ae7d55!important;border-color:#b78b66!important;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-coffee #redux-header .display_header span{color:#cdcbc9}.admin-color-coffee #redux-header{background:#46403c;border-color:#c7a589}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-coffee .redux-sidebar .redux-group-menu li.active a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild a{color:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#c7a589}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#cdcbc9}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#c7a589}.admin-color-coffee .redux-container-image_select .redux-image-select-selected img{border-color:#c7a589}.admin-color-coffee #redux-footer #redux-share a{color:#c7a589}.admin-color-coffee #redux-footer #redux-share a:hover{color:#9f714b}.admin-color-coffee .select2-results .select2-highlighted{background:#c7a589}.admin-color-coffee .select2-drop-active,.admin-color-coffee .select2-container-multi.select2-container-active .select2-choices,.admin-color-coffee .select2-drop.select2-drop-above.select2-drop-active,.admin-color-coffee .select2-container-active .select2-choice,.admin-color-coffee .select2-container-active .select2-choices,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#c7a589}.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-coffee .noUi-connect{background-color:#ccad93;background-image:-khtml-gradient(linear,left top,left bottom,from(#d7bfac),to(#ccad93));background-image:-moz-linear-gradient(top,#d7bfac,#ccad93);background-image:-ms-linear-gradient(top,#d7bfac,#ccad93);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d7bfac),color-stop(100%,#ccad93));background-image:-webkit-linear-gradient(top,#d7bfac,#ccad93);background-image:-o-linear-gradient(top,#d7bfac,#ccad93);background-image:linear-gradient(top,#d7bfac,#ccad93);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-ectoplasm .redux-container .button.ui-datepicker-current,.admin-color-ectoplasm .redux-container button.ui-datepicker-close{background-color:#a9bd4f!important}.admin-color-ectoplasm .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#89993a!important;color:#fff!important;border:1px solid #474f1e!important}.admin-color-ectoplasm .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-ectoplasm .redux-container .ui-datepicker-header{background-color:#413256!important;color:#fff!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-active{background-color:#a9bd4f!important;color:#fff!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-hover{color:#a9bd4f!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-highlight{background:#a3b745!important;border:1px solid #413256!important;color:#fff!important}.admin-color-ectoplasm .redux-container-switch .cb-disable,.admin-color-ectoplasm .redux-container-switch .cb-enable,.admin-color-ectoplasm .redux-container .ui-state-default,.admin-color-ectoplasm .redux-container .ui-widget-content .ui-state-default,.admin-color-ectoplasm .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-ectoplasm .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-ectoplasm .redux-container-switch .cb-enable.selected,.admin-color-ectoplasm .redux-container .ui-buttonset .ui-state-active{background-color:#a3b745!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#b0c25e),to(#a3b745))!important;background-image:-moz-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:-ms-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#b0c25e),color-stop(100%,#a3b745))!important;background-image:-webkit-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:-o-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:linear-gradient(top,#b0c25e,#a3b745)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#727f30!important;border-color:#829237!important;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-ectoplasm #redux-header .display_header span{color:#cbc5d3}.admin-color-ectoplasm #redux-header{background:#413256;border-color:#a3b745}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild a{color:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#a3b745}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#cbc5d3}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#a3b745}.admin-color-ectoplasm .redux-container-image_select .redux-image-select-selected img{border-color:#a3b745}.admin-color-ectoplasm #redux-footer #redux-share a{color:#a3b745}.admin-color-ectoplasm #redux-footer #redux-share a:hover{color:#616d29}.admin-color-ectoplasm .select2-results .select2-highlighted{background:#a3b745}.admin-color-ectoplasm .select2-drop-active,.admin-color-ectoplasm .select2-container-multi.select2-container-active .select2-choices,.admin-color-ectoplasm .select2-drop.select2-drop-above.select2-drop-active,.admin-color-ectoplasm .select2-container-active .select2-choice,.admin-color-ectoplasm .select2-container-active .select2-choices,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#a3b745}.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-ectoplasm .noUi-connect{background-color:#a9bd4f;background-image:-khtml-gradient(linear,left top,left bottom,from(#b6c669),to(#a9bd4f));background-image:-moz-linear-gradient(top,#b6c669,#a9bd4f);background-image:-ms-linear-gradient(top,#b6c669,#a9bd4f);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#b6c669),color-stop(100%,#a9bd4f));background-image:-webkit-linear-gradient(top,#b6c669,#a9bd4f);background-image:-o-linear-gradient(top,#b6c669,#a9bd4f);background-image:linear-gradient(top,#b6c669,#a9bd4f);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-midnight .redux-container .button.ui-datepicker-current,.admin-color-midnight .redux-container button.ui-datepicker-close{background-color:#e35950!important}.admin-color-midnight .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#d92c23!important;color:#fff!important;border:1px solid #811a15!important}.admin-color-midnight .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-midnight .redux-container .ui-datepicker-header{background-color:#363b3f!important;color:#fff!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-active{background-color:#e35950!important;color:#fff!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-hover{color:#e35950!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-highlight{background:#e14d43!important;border:1px solid #363b3f!important;color:#fff!important}.admin-color-midnight .redux-container-switch .cb-disable,.admin-color-midnight .redux-container-switch .cb-enable,.admin-color-midnight .redux-container .ui-state-default,.admin-color-midnight .redux-container .ui-widget-content .ui-state-default,.admin-color-midnight .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-midnight .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-midnight .redux-container-switch .cb-enable.selected,.admin-color-midnight .redux-container .ui-buttonset .ui-state-active{background-color:#e14d43!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#e66a62),to(#e14d43))!important;background-image:-moz-linear-gradient(top,#e66a62,#e14d43)!important;background-image:-ms-linear-gradient(top,#e66a62,#e14d43)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e66a62),color-stop(100%,#e14d43))!important;background-image:-webkit-linear-gradient(top,#e66a62,#e14d43)!important;background-image:-o-linear-gradient(top,#e66a62,#e14d43)!important;background-image:linear-gradient(top,#e66a62,#e14d43)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ba281e!important;border-color:#d02c21!important;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-midnight #redux-header .display_header span{color:#c2c4c5}.admin-color-midnight #redux-header{background:#363b3f;border-color:#e14d43}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-midnight .redux-sidebar .redux-group-menu li.active a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild a{color:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#e14d43}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#c2c4c5}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#e14d43}.admin-color-midnight .redux-container-image_select .redux-image-select-selected img{border-color:#e14d43}.admin-color-midnight #redux-footer #redux-share a{color:#e14d43}.admin-color-midnight #redux-footer #redux-share a:hover{color:#a4231a}.admin-color-midnight .select2-results .select2-highlighted{background:#e14d43}.admin-color-midnight .select2-drop-active,.admin-color-midnight .select2-container-multi.select2-container-active .select2-choices,.admin-color-midnight .select2-drop.select2-drop-above.select2-drop-active,.admin-color-midnight .select2-container-active .select2-choice,.admin-color-midnight .select2-container-active .select2-choices,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#e14d43}.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-midnight .noUi-connect{background-color:#e35950;background-image:-khtml-gradient(linear,left top,left bottom,from(#e8776f),to(#e35950));background-image:-moz-linear-gradient(top,#e8776f,#e35950);background-image:-ms-linear-gradient(top,#e8776f,#e35950);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e8776f),color-stop(100%,#e35950));background-image:-webkit-linear-gradient(top,#e8776f,#e35950);background-image:-o-linear-gradient(top,#e8776f,#e35950);background-image:linear-gradient(top,#e8776f,#e35950);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-ocean .redux-container .button.ui-datepicker-current,.admin-color-ocean .redux-container button.ui-datepicker-close{background-color:#a7c0a9!important}.admin-color-ocean .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#86a988!important;color:#fff!important;border:1px solid #547555!important}.admin-color-ocean .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-ocean .redux-container .ui-datepicker-header{background-color:#627c83!important;color:#fff!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-active{background-color:#a7c0a9!important;color:#fff!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-hover{color:#a7c0a9!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-highlight{background:#9ebaa0!important;border:1px solid #627c83!important;color:#fff!important}.admin-color-ocean .redux-container-switch .cb-disable,.admin-color-ocean .redux-container-switch .cb-enable,.admin-color-ocean .redux-container .ui-state-default,.admin-color-ocean .redux-container .ui-widget-content .ui-state-default,.admin-color-ocean .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-ocean .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-ocean .redux-container-switch .cb-enable.selected,.admin-color-ocean .redux-container .ui-buttonset .ui-state-active{background-color:#9ebaa0!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#b3c9b4),to(#9ebaa0))!important;background-image:-moz-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:-ms-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#b3c9b4),color-stop(100%,#9ebaa0))!important;background-image:-webkit-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:-o-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:linear-gradient(top,#b3c9b4,#9ebaa0)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#719a74!important;border-color:#80a583!important;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-ocean #redux-header .display_header span{color:#d5dddf}.admin-color-ocean #redux-header{background:#627c83;border-color:#9ebaa0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-ocean .redux-sidebar .redux-group-menu li.active a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild a{color:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#9ebaa0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#d5dddf}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#9ebaa0}.admin-color-ocean .redux-container-image_select .redux-image-select-selected img{border-color:#9ebaa0}.admin-color-ocean #redux-footer #redux-share a{color:#9ebaa0}.admin-color-ocean #redux-footer #redux-share a:hover{color:#658d68}.admin-color-ocean .select2-results .select2-highlighted{background:#9ebaa0}.admin-color-ocean .select2-drop-active,.admin-color-ocean .select2-container-multi.select2-container-active .select2-choices,.admin-color-ocean .select2-drop.select2-drop-above.select2-drop-active,.admin-color-ocean .select2-container-active .select2-choice,.admin-color-ocean .select2-container-active .select2-choices,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#9ebaa0}.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-ocean .noUi-connect{background-color:#a7c0a9;background-image:-khtml-gradient(linear,left top,left bottom,from(#bccfbd),to(#a7c0a9));background-image:-moz-linear-gradient(top,#bccfbd,#a7c0a9);background-image:-ms-linear-gradient(top,#bccfbd,#a7c0a9);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#bccfbd),color-stop(100%,#a7c0a9));background-image:-webkit-linear-gradient(top,#bccfbd,#a7c0a9);background-image:-o-linear-gradient(top,#bccfbd,#a7c0a9);background-image:linear-gradient(top,#bccfbd,#a7c0a9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-sunrise .redux-container .button.ui-datepicker-current,.admin-color-sunrise .redux-container button.ui-datepicker-close{background-color:#df8a48!important}.admin-color-sunrise .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#cc6c23!important;color:#fff!important;border:1px solid #753e14!important}.admin-color-sunrise .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-sunrise .redux-container .ui-datepicker-header{background-color:#b43c38!important;color:#fff!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-active{background-color:#df8a48!important;color:#fff!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-hover{color:#df8a48!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-highlight{background:#dd823b!important;border:1px solid #b43c38!important;color:#fff!important}.admin-color-sunrise .redux-container-switch .cb-disable,.admin-color-sunrise .redux-container-switch .cb-enable,.admin-color-sunrise .redux-container .ui-state-default,.admin-color-sunrise .redux-container .ui-widget-content .ui-state-default,.admin-color-sunrise .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-sunrise .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-sunrise .redux-container-switch .cb-enable.selected,.admin-color-sunrise .redux-container .ui-buttonset .ui-state-active{background-color:#dd823b!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#e29559),to(#dd823b))!important;background-image:-moz-linear-gradient(top,#e29559,#dd823b)!important;background-image:-ms-linear-gradient(top,#e29559,#dd823b)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e29559),color-stop(100%,#dd823b))!important;background-image:-webkit-linear-gradient(top,#e29559,#dd823b)!important;background-image:-o-linear-gradient(top,#e29559,#dd823b)!important;background-image:linear-gradient(top,#e29559,#dd823b)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ad5d1e!important;border-color:#c36922!important;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-sunrise #redux-header .display_header span{color:#f0c8c6}.admin-color-sunrise #redux-header{background:#b43c38;border-color:#dd823b}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild a{color:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#dd823b}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#f0c8c6}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#dd823b}.admin-color-sunrise .redux-container-image_select .redux-image-select-selected img{border-color:#dd823b}.admin-color-sunrise #redux-footer #redux-share a{color:#dd823b}.admin-color-sunrise #redux-footer #redux-share a:hover{color:#98511a}.admin-color-sunrise .select2-results .select2-highlighted{background:#dd823b}.admin-color-sunrise .select2-drop-active,.admin-color-sunrise .select2-container-multi.select2-container-active .select2-choices,.admin-color-sunrise .select2-drop.select2-drop-above.select2-drop-active,.admin-color-sunrise .select2-container-active .select2-choice,.admin-color-sunrise .select2-container-active .select2-choices,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#dd823b}.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-sunrise .noUi-connect{background-color:#df8a48;background-image:-khtml-gradient(linear,left top,left bottom,from(#e59e66),to(#df8a48));background-image:-moz-linear-gradient(top,#e59e66,#df8a48);background-image:-ms-linear-gradient(top,#e59e66,#df8a48);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e59e66),color-stop(100%,#df8a48));background-image:-webkit-linear-gradient(top,#e59e66,#df8a48);background-image:-o-linear-gradient(top,#e59e66,#df8a48);background-image:linear-gradient(top,#e59e66,#df8a48);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}@media screen and (max-width:1124px){.redux-group-tab-link-a span{padding:11px 12px;color:#555;-webkit-transition:all .3s;-moz-transition:all .3s;transition:all .3s}.redux-group-tab-link-a span:hover{background:#e5e5e5}}@media screen and (max-width:782px){#redux-footer #redux-share{line-height:38px;font-size:18px}.sticky-save-warn .redux-save-warn{right:13px;top:46px}.redux-container .expand_options{margin-top:5px}.redux-action_bar input{margin-bottom:0!important}}@media screen and (max-width:650px){#redux-footer #redux-share,.redux-hint-qtip{display:none}.redux-container .redux-action_bar{float:none}}@media screen and (max-width:476px){.redux-container .expand_options{display:none}#redux-footer,.redux-container #info_bar{text-align:center}}.redux-sidebar .icon-large,.redux-main .icon-large{background-image:inherit!important;width:inherit;height:inherit}.redux-main dd,.redux-main li,.redux-sidebar li{margin-bottom:0!important}.fully-expanded .redux-sidebar{margin-left:-500px}.fully-expanded .redux-main{margin-left:0}.fully-expanded .redux-group-tab{display:block}@media screen and (max-width:1124px){.form-table>tbody>tr>th{padding-bottom:0!important}.redux_field_th{padding-top:0;padding-bottom:0}.redux-main .redux-field-container{padding-top:0;padding-bottom:0}}@media screen and (min-width:601px) and (max-width:782px){.redux-container .sticky-save-warn .redux-save-warn{top:47px!important;right:13px!important}}@media screen and (max-width:782px){.redux-main .form-table-section-indented input[type=text]{width:95%!important}.redux-main .redux-container-sortable input[type=text]{width:80%;display:initial}.redux-main .redux-typography-container .input_wrapper input.mini{font-size:16px!important;height:40px!important;padding:7px 10px!important;line-height:24px!important}.redux-main .redux-typography-container .picker-wrapper label{margin-top:16px!important}.redux-main .input-append{height:50px!important}.redux-main .input-append .add-on{font-size:16px;line-height:24px!important;padding:7px;height:32px!important;float:right;margin-top:-40px}.redux-main .redux-hint-qtip{float:left!important}}@media screen and (max-width:600px){.sticky-save-warn .redux-save-warn{top:0!important;right:14px!important}}@media screen and (max-width:570px){.redux-main .redux-container-sortable .checkbox-container{width:85%;padding-bottom:5px}.redux-main .redux-container-sortable .checkbox-container label{display:initial}}#redux-header{position:relative}.redux-container #redux-header .display_header span.redux-dev-mode-notice{position:absolute;left:20px;bottom:9px;background-color:#f0ad4e;display:inline;padding:.2em .6em .3em;font-weight:700;line-height:1;color:#fff!important;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/admin.less b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/admin.less new file mode 100644 index 00000000..387eaa94 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/admin.less @@ -0,0 +1,1417 @@ +.redux-main .description { + margin-top: 7px; +} + +.form-table > tbody > tr > th { + width: 30% +} + +.redux-container { + //font-family: "Open Sans","Lucida Grande", Sans-serif; + background-color: #f5f5f5; /* Old browsers */ + background-repeat: repeat-x; /* Repeat the gradient */ + background-image: -moz-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* FF3.6+ */ + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #f2f2f2), color-stop(100%, #f5f5f5)); /* Chrome,Safari4+ */ + background-image: -webkit-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* Chrome 10+,Safari 5.1+ */ + background-image: -ms-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* IE10+ */ + background-image: -o-linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* Opera 11.10+ */ + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0); /* IE6-9 */ + background-image: linear-gradient(top, #f2f2f2 0%, #f5f5f5 100%); /* W3C */ + border: 1px solid #dedede; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .04); + box-shadow: 0 1px 1px rgba(0, 0, 0, .04); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.4); + margin-top: 5px; + overflow: hidden; + + .hr { + height: 20px; + line-height: 20px; + float: none; + border-color: #E7E7E7; + display: block; + width: 100%; + height: 35px !important; + line-height: 35px !important; + position: relative; + margin: 15px 0 10px 0; + + .inner span { + background-color: #FCFCFC; + border-color: #E7E7E7; + height: 5px; + width: 5px; + border-width: 2px; + border-style: solid; + display: block; + position: absolute; + left: 50%; + margin-left: -5px; + margin-top: -5px; + } + } + + .inner { + width: 42% !important; + left: 40% !important; + margin-left: -6%; + background-color: #FCFCFC; + border-color: #E7E7E7; + position: absolute; + height: 1px; + top: 50%; + width: 100%; + margin-top: -1px; + border-top-width: 1px; + border-top-style: solid; + } + + #redux-header, + #redux-footer { + text-align: right; + padding: 6px 10px; + } + + #redux-header { + background: #f1f1f1; + border-bottom: 3px solid blue; + + .display_header { + float: left; + margin: 20px 10px; + + h2 { + display: inline-block; + font-style: normal; + padding-right: 5px; + } + + span { + color: #888; + } + } + + .icon32 { + float: right; + margin: 16px 16px 0; + } + } + + #redux-footer { + border-top: 1px solid #E7E7E7; + z-index: 9999; + + #redux-share { + float: left; + line-height: 28px; + font-size: 15px; + + a { + text-decoration: none; + margin-right: 10px; + + img { + margin-bottom: -3px; + } + } + } + } + + .notice-green { + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #DFF0D8; + color: #468847; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .notice-blue { + margin: 0; + border-bottom: 1px solid #BCE8F1; + background-color: #D9EDF7; + color: #3A87AD; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .notice-yellow { + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #FCF8E3; + color: #C09853; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .notice-red, + .redux-field-errors { + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #F2DEDE; + color: #B94A48; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + } + + .redux-field-errors, + .redux-field-warnings, + .redux-save-warn { + display: none; + } + + .sticky-save-warn { + min-height: 76px; + + .redux-save-warn { + position: fixed; + top: 32px; + right: 21px; + left: 183px; + opacity: 1; + z-index: 9999; + } + } + + #info_bar { + background: #f3f3f3; + border-bottom: 1px solid #dedede; + padding: 6px 10px 6px 6px; + text-align: right; + -moz-box-shadow: inset 0 1px 0 #fcfcfc; + -webkit-box-shadow: inset 0 1px 0 #fcfcfc; + box-shadow: inset 0 1px 0 #fcfcfc; + } + + .redux-group-tab { + display: none; + margin-bottom: 30px; + + .redux-theme-data { + padding: 20px 0; + border-top: 1px solid #E7E7E7; + + &.theme-description { + padding: 10px 0; + border-width: 0; + } + + &.theme-uri, + &.theme-author, + &.theme-version { + padding: 0; + border-width: 0; + } + } + + h3 { + margin-top: 0; + line-height: 2em; + border-bottom: 1px solid #E7E7E7; + } + + .redux-section-desc { + margin-bottom: 15px; + color: #666; + } + } + + .redux-action_bar { + float: right; + } + + .redux-ajax-loading { + display: none; + background: red url("../img/ajax.gif") no-repeat; + width: 16px; + height: 16px; + margin: 3px 4px 0; + float: right; + } + + #redux-intro-text { + background: #f3f3f3; + border-bottom: 1px solid #dedede; + -moz-box-shadow: inset 0 1px 0 #fcfcfc; + -webkit-box-shadow: inset 0 1px 0 #fcfcfc; + box-shadow: inset 0 1px 0 #fcfcfc; + padding: 3px; + padding: 10px 10px; + + p { + margin: 0; + font-family: "Lucida Grande", Sans-serif; + color: #888; + } + } + + .expand_options { + cursor: pointer; + display: block; + height: 22px; + width: 21px; + float: left; + font-size: 0; + text-indent: -9999px; + margin: 1px 0 0 5px; + border: 1px solid #bbb; + -webkit-border-radius: 2px; + -moz-border-radius: 2px; + border-radius: 2px; + background: url("../img/toggle_tabs.png") no-repeat -2px -26px; + + &.expanded { + background: url("../img/toggle_tabs.png") no-repeat -2px -1px; + } + + &:hover { + border-color: #888; + } + } + + .sticky-footer-fixed { + background: #f3f3f3; + border-top: 1px solid #dedede !important; + -moz-box-shadow: inset 0 1px 0 #fcfcfc; + -webkit-box-shadow: inset 0 1px 0 #fcfcfc; + box-shadow: inset 0 1px 0 #fcfcfc; + } + + .redux-sidebar, + .redux-main { + min-height: 300px; + + } +} + +/* redux-container */ + +.no-js { + border: 1px solid #ffbaba; + margin: 0; + border-bottom: 1px solid #E7E7E7; + background-color: #F2DEDE; + color: #B94A48; + padding: 8px 35px 8px 14px; + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); +} + +.redux-main { + background: #FCFCFC; + margin-left: 201px; + border-left: 1px solid #D8D8D8; + padding: 10px 20px; + -moz-box-shadow: inset 0 1px 0 #fff; + -webkit-box-shadow: inset 0 1px 0 #FFF; + box-shadow: inset 0 1px 0 #FFF; + + .form-table.no-border { + border-top: none; + } + .form-table tr { + border-bottom: 1px solid #E7E7E7; + &:last-child { + border-bottom: none !important; + } + th, + td { + color: #333; + } + } + + .form-table tr td { + table.mceLayout, + table.mceLayout tr, + table.mceLayout tr td { + padding: 0; + border-width: 0; + } + + .redux-th-warning { + font-size: 1em; + color: #C09853; + font-weight: normal; + display: block; + } + + .redux-field-warning { + border-color: #C09853; + } + + .redux-th-error { + font-size: 1em; + color: #B94A48; + font-weight: normal; + display: block; + } + } + + input.large-text { + width: 100%; + } + + .hide { + display: none; + } + + .redux-field-container { + padding: 20px 0; + } + + .mini, + input[type=text].mini { + width: 50px; + text-align: center; + } + + input { + line-height: 19px; + } + + img { + max-width: 100%; + height: auto; + width: auto !important; + } + + .select2-default { + width: auto !important; + } + + .showDefaults { + display: block; + font-weight: normal; + font-size: .8em; + color: #888; + } + + span.description { + display: block; + font-style: normal; + font-weight: 400; + } + + #redux-system-info textarea { + min-height: 730px; + width: 100%; + } + + .field-desc { + clear: both; + font-size: 13px; + } + + .data-full li { + width: 100%; + } + + .data-half li { + width: 50%; + float: left; + } + + .data-third li { + width: 33.3%; + float: left; + } + + .data-quarter li { + width: 25%; + float: left; + } + + .ui-helper-hidden-accessible { + top: inherit; + } + + .form-table:first-child tr th, .redux-main .form-table:first-child tr td { + padding-top: 0 !important; + } + + .form-table { + clear: none; + margin-top: 0px !important; + + &:first-child tr th, + &:first-child tr td { + padding-top: 0 !important; + } + + tr:first-child th, + tr:first-child td { + padding-top: 0; + } + } + + .input-append input { + border-right: 0; + margin-bottom: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 0; + margin-right: 0; + float:left; + margin-top: 0; + display: block; + } + .input-append .add-on { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; + margin-left: -2px; + padding-top: 4px !important; + padding-bottom: 2px !important; + float: left; + } + .input-prepend input { + border-left: 0; + margin-bottom: 0; + border-top-left-radius: 0; + border-bottom-left-radius: 0; + margin-left: 0; + padding-top: 2px; + padding-bottom: 5px; + float:left; + margin-top: 0; + display: block; + } + .input-prepend .add-on { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; + float: left; + } + + .input-append { + margin-right: 10px; + font-size: 0; + white-space: nowrap; + float: left; + display: inline-block; + margin-bottom: 6px; + } + .input-append .add-on, .input-prepend .add-on { + width: auto; + display: inline-block; + min-width: 16px; + padding: 3px 4px; + font-size: 12px; + font-weight: 400; + line-height: 20px; + text-align: center; + text-shadow: 0 1px 0 #ffffff; + background-color: #eeeeee; + border: 1px solid #cccccc; + } + .input-prepend { + font-size: 0; + white-space: nowrap; + float: left; + display: inline-block; + margin-bottom: 6px; + } + + #redux-object-browser { + overflow: auto; + word-wrap: break-word; + max-height: 600px; + max-width: 100%; + } +} + +/* main */ + +.redux-sidebar { + width: 202px; + float: left; + + .redux-group-menu { + margin-top: 0 !important; + li { + margin-top: 0; + + &.active a, + &.active a:hover, + &.activeChild a, + &.activeChild a:hover + { + background: #FCFCFC; + color: #269ad6; + width: 184px; + opacity: 1; + //margin-right:-2px; + } + + &.active a li a { + background: #333; + padding-left: 5px; + } + + &.divide { + padding: 0; + border-width: 1px 0; + border-style: solid; + border-bottom-color: #E7E7E7; + border-top-color: #F9F9F9; + } + a:first-child { + border-top: none; + } + a { + display: block; + padding: 10px 4px 10px 14px; + background: #e0e0e0; + background: transparent; + border-width: 1px 0; + border-style: solid; + border-bottom-color: #E7E7E7; + border-top-color: #F9F9F9; + opacity: 0.7; + color: #555; + font-weight: bold; + text-decoration: none; + -webkit-transition: none; + transition: none; + &.custom-tab { + background: #f6f6f6; + } + img { + width: 16px; + height: 16px; + // vertical-align:middle; + // margin-bottom:-3px; + // margin-right: 3px; + position: absolute; + left: 15px; + } + &:hover { + background: #e5e5e5; + //width: 184px + color: #777; + //margin-right: -2px; + opacity: 1; + } + } + } + } + + .redux-menu-warning, + .redux-menu-error, + .hasSubSections .extraIconSubsections { + display: inline-block; + float: right; + padding: 6px 7px 4px 7px; + margin-left: 4px; + font-family: sans-serif; + font-size: 9px; + font-weight: bold; + line-height: 9px; + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border: 0 solid transparent; + margin-right: 5px; + + i { + margin-left: -3px; + margin-top: -3px; + } + } + .redux-menu-error { + background-color: rgb(185, 74, 72); + color: rgb(242, 222, 222); + } + .redux-menu-warning { + background-color: #C09853; + color: #FCF8E3; + } + + ul { + .subsection { + display: none; + } + } + + .redux-group-tab-link-a { + position: relative; + outline: 0; + i { + vertical-align: middle; + font-size: 1.35em; + position: absolute; + } + span { + display: block; + &.group_title { + padding-left: 30px; + } + } + } + + .redux-group-tab-link-li a.hasError span.group_title { + padding-right: 25px; + } + +} + +/* sidebar */ + +.form-table th, .form-table td { + margin: 0; + padding: 0; + width: auto; +} + +.redux_field_th { + font-weight: bold; + // width: 30%; + padding: 20px 10px 20px 0px; + display: block; + span:first-child { + font-weight: normal; + display: block; + color: #666; + } +} + +/* + * + * NHP_Options_color + * + */ +.farb-popup-wrapper { + position: relative; + display: block; +} + +.farb-popup { + position: absolute; + left: 40px; + top: 40px; + background-color: white; + border: 1px solid #222; + padding: 5px; + z-index: 100; +} + +#ui-datepicker-div { + display: none; +} + +.mp6 { + .icon-themes { + display: none; + } + + .redux-container { + #info_bar { + padding: 6px 10px 6px 6px; + + a { + margin-top: 2px; + } + } + } +} + +.redux-timer { + text-align: center; + font-size: 10px; + color: #888; +} + +.wrap { + margin-top: 0; +} + +@media screen and (max-width: 1124px) { + .redux-sidebar { + width: 44px; + + .extraIconSubsections { + display: none !important; + } + + .redux-group-menu li a, + .redux-group-menu li a:hover, + .redux-group-menu li.active a, + .redux-group-menu li.active a:hover, + .redux-group-menu li.activeChild a, + .redux-group-menu li.activeChild a:hover { + width: auto; + } + + .redux-group-tab-link-a { + position: relative; + + i { + position: inherit; + } + + span { + display: none; + position: absolute; + top: 0; + left: 44px; + padding: 12px; + width: 200px; + background: #eeeeee; + border: 1px solid #ccc; + -webkit-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2); + -moz-box-shadow: 2px 2px 8px rgba(0, 0, 0, .2); + box-shadow: 2px 2px 8px rgba(0, 0, 0, .2); + border-width: 1px 1px 1px 0px; + z-index: 3; + } + + &:hover > span { + display: block; + } + } + } + + .redux-main { + margin-left: 43px; + width: auto; + max-width: 100%; + } + + table.form-table, + .form-table > thead, + .form-table > tbody, + .form-table > tbody > tr > th, + .form-table > tbody > tr > td, + .form-table > tbody > tr { + display: block; + width: 100% !important; + padding: 0px !important; + } + + .form-table > tbody > tr > th, .form-table > tbody > tr > td { + padding: 10px !important; + } + + .form-table > tbody > tr > th, .form-table > tbody > tr > td { + padding: 10px !important; + } +} + +//mp6 fixes +@media screen and (max-width: 783px) { + .mp6 { + .redux-container { + #info_bar { + height: auto; + padding-bottom: 1px; + + a { + margin-top: 5px; + } + } + } + } +} + +pre { + overflow: hidden; +} + +/* Default admin theme */ +#redux-header h2 { + color: #fff; +} + +.backgroundGradient(@to: darken(@to, 5%), @from: lighten(@to, 7%)) { + background-color: @to; + background-image: -khtml-gradient(linear, left top, left bottom, from(@from), to(@to)); + background-image: -moz-linear-gradient(top, @from, @to); + background-image: -ms-linear-gradient(top, @from, @to); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, @from), color-stop(100%, @to)); + background-image: -webkit-linear-gradient(top, @from, @to); + background-image: -o-linear-gradient(top, @from, @to); + background-image: linear-gradient(top, @from, @to); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0); +} + +.adminThemeColorOverrides (@darkColor, @accentColor, @secondaryColor, @buttonPrimary) { + + .redux-container .button.ui-datepicker-current, + .redux-container button.ui-datepicker-close { + background-color: lighten(@accentColor, 3%)!important; + } + + .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current { + background: @buttonPrimary!important; + color: white!important; + border: 1px solid darken(@buttonPrimary, 20%)!important; + + } + + .redux-container .ui-datepicker-header .ui-icon { + background-image: url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important; + } + + .redux-container .ui-datepicker-header { + background-color: @secondaryColor!important; + color: white!important; + } + + .redux-container .ui-datepicker td .ui-state-active { + background-color: lighten(@accentColor, 3%)!important; + color: white!important; + } + + .redux-container .ui-datepicker td .ui-state-hover { + color: lighten(@accentColor, 3%)!important; + } + + .redux-container .ui-datepicker td .ui-state-highlight { + background: @accentColor!important; + border: 1px solid @secondaryColor!important; + color: white!important; + } + + .redux-container-switch .cb-disable, + .redux-container-switch .cb-enable, + .redux-container .ui-state-default, + .redux-container .ui-widget-content .ui-state-default, + .redux-container .ui-widget-header .ui-state-default { + .backgroundGradient(#f5f5f5, #f8f8f8)!important; + border-color: #ccc!important; + } + + .redux-container .ui-datepicker td .ui-state-active { + color: black!important; + font-weight: 700!important; + background: white!important; + } + + .redux-container-switch .cb-disable.selected { + .backgroundGradient(#646464, #929292)!important; + border-color: #767676!important; + } + .redux-container-switch .cb-enable.selected, + .redux-container .ui-buttonset .ui-state-active { + .backgroundGradient(@accentColor)!important; + border-color: darken(@accentColor, 15%)!important; + border-color: darken(@accentColor, 10%)!important; + -webkit-box-shadow: inset 0 1px 0 lighten(@accentColor, 15%), 0 1px 0 rgba(0, 0, 0, .15)!important; + box-shadow: inset 0 1px 0 lighten(@accentColor, 15%), 0 1px 0 rgba(0, 0, 0, .15)!important; + + } + + #redux-header .display_header span { + color: @darkColor; + } + #redux-header { + background: @secondaryColor; + border-color: @accentColor; + } + + .redux-sidebar .redux-group-menu li.active { + &.hasSubSections { + + a { + position: relative; + &:after { + right: 0; + border: solid 8px transparent; + content: "\0020"; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-right-color: #fff; + top: 50%; + margin-top: -8px; + } + + } + ul.subsection li a:after { + border: 0 none !important; + content: "\0020" !important; + } + } + } + .redux-sidebar .redux-group-menu li { + &.hasSubSections { + .redux-menu-error { + display: none; + margin-right: 5px; + } + + a { + &.hasError { + .extraIconSubsections { + background-color: rgb(185, 74, 72); + color: rgb(242, 222, 222); + } + } + .extraIconSubsections { + border-radius: 10px; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border: 0 solid transparent; + float: right; + font-size: 9px; + height: 9px; + line-height: 9px; + margin-right: 5px; + padding: 6px 7px 4px 7px; + width: 5px; + } + + &:hover .extraIconSubsections { + //right: 2px; + } + + } + } + &.active, + &.activeChild { + a .extraIconSubsections { + display: none; + } + &.hasSubSections { + .redux-menu-error { + display: block; + } + .subsection { + .redux-menu-error { + margin-right: 2px; + } + } + } + } + } + .redux-sidebar .redux-group-menu { + li.active, + li.activeChild { + border-left: 0 none; + a { + color: @secondaryColor; + } + &.hasSubSections { + .active { + a { + &:after { + right: 0; + border: solid 8px transparent; + content: "\0020"; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + border-right-color: #fff; + top: 50%; + margin-top: -8px; + } + } + } + a { + -webkit-transition: all 0.2s; + -moz-transition: all 0.2s; + transition: all 0.2s; + color: #fff; + width: auto; + border-bottom: 0; + } + ul.subsection li { + border-top: 0 none !important; + &.active a:hover { + color: #fff; + } + a { + width: auto; + border-top: 0 !important; + // border-top-color: lighten(@secondaryColor, 15); + padding: 7px; + color: #fff; + padding-left: 15px; + -webkit-transition: all 0.2; + -moz-transition: all 0.2; + -ms-transition: all 0.2; + -o-transition: all 0.2; + transition: all 0.2; + &:hover { + color: #2ea2cc; + background: #000; + } + span.group_title { + padding-left: 5px !important; + } + } + &.hasIcon { + a { + padding-left: 14px; + span.group_title { + padding-left: 30px !important; + } + + } + } + } + } + } + li.active { + &.hasSubSections { + a { + background: @accentColor; + } + ul.subsection li a { + background: @secondaryColor; + } + } + } + li.activeChild { + &.hasSubSections { + a { + background: @darkColor; + } + ul.subsection li { + a { + background: @secondaryColor; + } + &.active { + a { + background: @accentColor; + } + } + } + } + } + } + + .redux-container-image_select .redux-image-select-selected img { + border-color: @accentColor; + } + #redux-footer #redux-share a { + color: @accentColor; + &:hover { + color: darken(@accentColor, 20%); + } + } + .select2-results .select2-highlighted { + background: @accentColor; + } + .select2-drop-active, + .select2-container-multi.select2-container-active .select2-choices, + .select2-drop.select2-drop-above.select2-drop-active, + .select2-container-active .select2-choice, + .select2-container-active .select2-choices, + .select2-dropdown-open.select2-drop-above .select2-choice, + .select2-dropdown-open.select2-drop-above .select2-choices { + border-color: @accentColor; + } + .select2-dropdown-open.select2-drop-above .select2-choice, + .select2-dropdown-open.select2-drop-above .select2-choices { + border-top: inherit; + } + .noUi-connect { + .backgroundGradient(lighten(@accentColor, 3%)); + } +} + +/* Light fresh theme */ +.admin-color-fresh { + .adminThemeColorOverrides(#bbb, #0074a2, #222222, #1e8cbe); +} + +/* Light admin theme */ +.admin-color-light { + .adminThemeColorOverrides(#e6e6e6, #04a4cc, #888888, #0384a4); +} + +/* Blue admin theme */ +.admin-color-blue { + .adminThemeColorOverrides(#e2ecf1, #4796b3, #096484, #db9825); +} + +/* Coffee admin theme */ +.admin-color-coffee { + .adminThemeColorOverrides(#cdcbc9, #c7a589, #46403c, #ba906d); +} + +/* Ectoplasm admin theme */ +.admin-color-ectoplasm { + .adminThemeColorOverrides(#cbc5d3, #a3b745, #413256, #89993a); +} + +/* Midnight admin theme */ +.admin-color-midnight { + .adminThemeColorOverrides(#c2c4c5, #e14d43, #363b3f, #d92c23); +} + +/* Ocean admin theme */ +.admin-color-ocean { + .adminThemeColorOverrides(#d5dddf, #9ebaa0, #627c83, #86a988); +} + +/* Sunrise admin theme */ +.admin-color-sunrise { + .adminThemeColorOverrides(#f0c8c6, #dd823b, #b43c38, #cc6c23); +} + +@media screen and (max-width: 1124px) { + // .redux-group-tab-link-a span { margin-top: -2px; } + .redux-group-tab-link-a span { + //background: #222; + //color: white; + padding: 11px 12px; + color: #555; + -webkit-transition: all 0.3s; + -moz-transition: all 0.3s; + transition: all 0.3s; + &:hover { + //color: #2ea2cc; + //background: black; + background: #e5e5e5; + } + } +} + +@media screen and (max-width: 782px) { + #redux-footer #redux-share { + line-height: 38px; + font-size: 18px; + } + + .sticky-save-warn .redux-save-warn { + right: 13px; + top: 46px; + } + + .redux-container .expand_options { + margin-top: 5px; + } + + .redux-action_bar input { + margin-bottom: 0 !important; + } + +} + +@media screen and (max-width: 650px) { + #redux-footer #redux-share, + .redux-hint-qtip { + display: none; + } + + .redux-container .redux-action_bar { + float: none; + } +} + +@media screen and (max-width: 476px) { + .redux-container .expand_options { + display: none; + } + + #redux-footer, .redux-container #info_bar { + text-align: center; + } +} + +// WP Engine CSS fix +.redux-sidebar .icon-large, +.redux-main .icon-large { + background-image: inherit !important; + width: inherit; + height: inherit; +} + +.redux-main dd, .redux-main li, .redux-sidebar li { + margin-bottom: 0 !important; +} + +.fully-expanded { + .redux-sidebar { + margin-left: -500px; + } + .redux-main { + margin-left: 0; + } + .redux-group-tab { + display: block; + } +} + +@media screen and (max-width: 1124px) { + .form-table > tbody > tr > th { + padding-bottom: 0 !important; + } + + .redux_field_th { + padding-top: 0; + padding-bottom: 0; + } + + .redux-main { + .redux-field-container { + padding-top: 0; + padding-bottom: 0; + } + } +} + +@media screen and (min-width: 601px) and (max-width: 782px) { + .redux-container { + .sticky-save-warn .redux-save-warn { + top: 47px !important; + right: 13px !important; + } + } +} + +@media screen and (max-width: 782px) { + + .redux-main { + .form-table-section-indented { + input[type=text] { + width: 95% !important; + } + } + + .redux-container-sortable { + input[type=text] { + width: 80%; + display: initial; + } + } + + .redux-typography-container { + .input_wrapper input.mini { + font-size: 16px !important; + height: 40px !important; + padding: 7px 10px !important; + line-height: 24px !important; + } + .picker-wrapper label { + margin-top: 16px !important; + } + } + + .input-append { + height: 50px !important; + + .add-on { + font-size: 16px; + line-height: 24px !important; + padding: 7px; + height: 32px !important; + float: right; + margin-top: -40px; + } + } + + .redux-hint-qtip { + float: left !important; + } + } +} + +@media screen and (max-width: 600px) { + .sticky-save-warn .redux-save-warn { + top: 0 !important; + right: 14px !important; + } +} + +@media screen and (max-width: 570px) { + .redux-main { + .redux-container-sortable { + .checkbox-container { + width: 85%; + padding-bottom: 5px; + + label { + display: initial; + } + } + } + } +} + +/* Leftovers? */ + +/*.shadow1 { + position: relative; + + &:before, + &:after { + z-index: -1; + position: absolute; + content: ""; + bottom: 15px; + left: 10px; + width: 50%; + top: 80%; + max-width: 300px; + background: #777; + -webkit-box-shadow: 0 15px 10px rgba(0,0,0,0.4); + -moz-box-shadow: 0 15px 10px rgba(0,0,0,0.4); + box-shadow: 0 15px 10px rgba(0,0,0,0.4); + -webkit-transform: rotate(-3deg); + -moz-transform: rotate(-3deg); + -o-transform: rotate(-3deg); + -ms-transform: rotate(-3deg); + transform: rotate(-3deg); + } + + &:after { + -webkit-transform: rotate(3deg); + -moz-transform: rotate(3deg); + -o-transform: rotate(3deg); + -ms-transform: rotate(3deg); + transform: rotate(3deg); + right: 10px; + left: auto; + } +}*/ + +/*.redux-menu-warning { + background-color: #C09853; + color: #FCF8E3; +} +.redux-menu-error { + background-color: #B94A48; + color: #F2DEDE; +}*/ + +/*.redux-screenshot { + max-width: 300px; + display: block; +}*/ + +/*.redux-container { + .ajax-loading-img-top { + margin: 5px 4px 0; + float: left; + } + + .ajax-loading { + margin: 3px 4px 0; + float: right; + } + + .ajax-reset-loading-img { + display: block; + margin-left: 100px; + } +}*/ + +#redux-header { + position: relative; +} +.redux-container #redux-header .display_header span.redux-dev-mode-notice { + position: absolute; + left: 20px; + bottom: 9px; + background-color: #f0ad4e; + display: inline; + padding: .2em .6em .3em; + font-weight: 700; + line-height: 1; + color: #fff !important; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/color-picker/color-picker.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/color-picker/color-picker.css new file mode 100644 index 00000000..fb615719 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/color-picker/color-picker.css @@ -0,0 +1 @@ +.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:none!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:none!important;border:0!important;height:auto}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:2px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin-top:0!important}.redux-main .wp-picker-clear{margin-top:0!important} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/color-picker/color-picker.less b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/color-picker/color-picker.less new file mode 100644 index 00000000..362d1a8c --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/color-picker/color-picker.less @@ -0,0 +1,87 @@ +.redux-main { + input{ + &.redux-color { + float: left; + width: 70px; + margin-left: 5px; + } + + &.color-transparency { + margin-left: 10px; + margin-right: 3px; + } + + &.wp-color-picker { + width: 80px; + } + } + + .section-color { + .controls { + width: 345px; + } + + .explain { + width: 225px; + } + } + + .iris-picker { + .iris-strip .ui-slider-handle { + position: absolute; + background: none !important; + right: -3px; + left: -3px; + border: 4px solid #aaa !important; + border-width: 4px 3px; + width: auto; + border-radius: 4px; + box-shadow: 0 1px 2px rgba(0, 0, 0, .2); + opacity: .9; + z-index: 5; + cursor: ns-resize; + } + + .iris-slider-offset { + position: absolute; + top: 2px; + left: 0; + right: 0; + bottom: 4px; + width: 28px; + background: none !important; + border: 0 !important; + height: auto; + } + } + + .wp-picker-container { + input { + margin-bottom: inherit; + margin-top: inherit; + padding: 2px; + } + + .wp-color-result { + outline: 0; + margin: 0; + } + + .wp-picker-default { + padding: 0 10px 1px; + } + } + + .redux-color-gradient { + line-height: 24px; + } + + .color-transparency-check { + line-height: 1; + margin-top: 0px !important; + } + + .wp-picker-clear { + margin-top: 0 !important; + } +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/import_export/import_export.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/import_export/import_export.css new file mode 100644 index 00000000..86bbd019 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/import_export/import_export.css @@ -0,0 +1 @@ +#redux-import-link-wrapper,#redux-import-code-wrapper{display:none}#redux-export-code,#redux-export-link-value{display:none}#redux-import-action span{color:#B94A48} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/import_export/import_export.less b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/import_export/import_export.less new file mode 100644 index 00000000..8a4db027 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/import_export/import_export.less @@ -0,0 +1,11 @@ +#redux-import-link-wrapper, #redux-import-code-wrapper { + display: none; +} + +#redux-export-code, #redux-export-link-value { + display: none; +} + +#redux-import-action span { + color: #B94A48; +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/redux.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/redux.css new file mode 100644 index 00000000..bec28033 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/redux.css @@ -0,0 +1 @@ +.redux-container-ace_editor .ace-wrapper{position:static}.redux-container-ace_editor .ace_editor{height:200px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-ace_editor .ace_gutter{z-index:1!important}.redux-main .redux-container-background .redux-background-position,.redux-main .redux-container-background .redux-background-position select,.redux-main .redux-container-background .redux-background-attachment,.redux-main .redux-container-background .redux-background-attachment select,.redux-main .redux-container-background .redux-background-clip,.redux-main .redux-container-background .redux-background-clip select,.redux-main .redux-container-background .redux-background-origin,.redux-main .redux-container-background .redux-background-origin select,.redux-main .redux-container-background .redux-background-size,.redux-main .redux-container-background .redux-background-size select,.redux-main .redux-container-background .redux-background-repeat,.redux-main .redux-container-background .redux-background-repeat select{width:200px!important;margin-right:10px;margin-bottom:7px}.redux-main .redux-container-background .background-preview{display:block;width:100%;margin:5px 0 10px;border:1px dotted #d3d3d3}.redux-main .redux-container-background .select2-container{margin-right:10px;margin-bottom:10px}.redux-main .redux-container-background .wp-picker-container{margin-bottom:10px}.redux-main .redux-container-background .upload{width:100%;margin-bottom:8px}.redux-main .redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-border .select2-container{margin-right:10px}.redux-container-border .select_wrapper{float:left;width:inherit}.redux-container-border .select_wrapper select{width:80px;float:left}.redux-container-border .field-border-input{margin-right:10px;margin-bottom:7px}.redux-container-border .select2-container{float:left;display:block}.redux-container-border .wp-picker-container{margin-top:2px}@media screen and (max-width:782px){.redux-container-border .field-border-input input{display:inline-block!important;width:100px!important}.redux-container-border .field-border-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-border .select_wrapper{margin-top:6px}}.redux-container-checkbox label{vertical-align:top;width:100%}.redux-container-checkbox label .field-desc{margin-top:0;float:left;width:93%;clear:none}.redux-container-color_gradient .colorGradient{display:inline-block}.redux-container-color_gradient .toLabel{padding-left:18px}@media screen and (max-width:660px){.redux-container-color_gradient .colorGradient{display:block;text-align:center!important}}.redux-main .minicolors{position:relative}.redux-main .minicolors-swatch{position:absolute;vertical-align:middle;background:url(data:image/png;base64,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) -80px 0;border:solid 1px #ccc;cursor:text;padding:0;margin:0;display:inline-block}.redux-main .minicolors-swatch-color{position:absolute;top:0;left:0;right:0;bottom:0}.redux-main .minicolors input[type=hidden]+.minicolors-swatch{width:28px;position:static;cursor:pointer}.redux-main .minicolors-panel{position:absolute;width:173px;height:152px;background:#fff;border:solid 1px #CCC;box-shadow:0 0 20px rgba(0,0,0,.2);z-index:99999;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box;display:none}.redux-main .minicolors-panel.minicolors-visible{display:block}.redux-main .minicolors-position-top .minicolors-panel{top:-154px}.redux-main .minicolors-position-right .minicolors-panel{right:0}.redux-main .minicolors-position-bottom .minicolors-panel{top:auto}.redux-main .minicolors-position-left .minicolors-panel{left:0}.redux-main .minicolors-with-opacity .minicolors-panel{width:194px}.redux-main .minicolors .minicolors-grid{position:absolute;top:1px;left:1px;width:150px;height:150px;background:url(data:image/png;base64,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) -120px 0;cursor:crosshair}.redux-main .minicolors .minicolors-grid-inner{position:absolute;top:0;left:0;width:150px;height:150px;background:0 0}.redux-main .minicolors-slider-saturation .minicolors-grid{background-position:-420px 0}.redux-main .minicolors-slider-saturation .minicolors-grid-inner{background:url(data:image/png;base64,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) -270px 0}.redux-main .minicolors-slider-brightness .minicolors-grid{background-position:-570px 0}.redux-main .minicolors-slider-brightness .minicolors-grid-inner{background:#000}.redux-main .minicolors-slider-wheel .minicolors-grid{background-position:-720px 0}.redux-main .minicolors-slider,.redux-main .minicolors-opacity-slider{position:absolute;top:1px;left:152px;width:20px;height:150px;background:#fff url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA2YAAACWCAYAAAC1r5t6AAEuWklEQVR42uz9a8xt25YVhrU+1ner7qseLiEjhERwfkDFeWAEl6dCQcAUCBDCwUSJwg+jRPIzgGVZMcZ2DCKyIycxiSOi2JbMr8hBgFNVGKNAHgKCTBnbUYCYEsHYIoiKKuYW9zzu2XvP0fNjjUfrbfQx5/r23ufWPnX2PvrOWmvOueYc87HmHG201luzv/GzvstvVmG4/3N39H8GAwzAnASHw8zgDpjRdAcOFPz0v/J1mvrm/374h3+48Oevfe1rOh/PnF/xdv+5TvgLf+EvLAv9vJ/38/ATsdzP/bk/l9tZ6c/l/XEyr8/3B9ZT3X07r/1hM/04+U62XW1X2ka/X9Rn63l0e33fHmnLbtvhONOxqiffw9m+9HW4+9h+X87dR5vbv4M+11prHW/mP3/16lU9jqO+fPnSP/nkk/rxxx/XDz74oP7Yj/2Y/8iP/Ej9F/7l/8lLfAXAVwB8mV75L5v26LwvAh8X4EMAHwH40O9//P5Dm58/wn3ZD/pnu7//AMA3APw4gB9ty8GSX++Y9iXAfyqA7wbsOwH/jtYg/vvquiP+ZcC+StO+dJ+GrwDHF+4N+tCBj+3+NxrdduJjzJ3t0z+k6R+01w8B/B0AXwfwX2R3H6AA+J7291UAX4Xjq7DldH0Fjq/A8GV425v7+/s00PRxSnDDJ9TQj0ejDB/D23RrO+Ft+n3+R+F17tQ32s58HUCFHzWen7d9p7Zv0cre6rZ+QnbwJ6AZ9MVnrGMu2t+tX7bvKOnPNnz+0sl96er+9kWEX8ZH9P7Di/f9l6D3q/9ve3/+7zsB/FQA39Xef0f71ev9Sm/U8U4Qpr26xR3Iduijzfv++QO6Z32j3av+Nj3N6N+3Afi72x58B7X4q9JCPkVfkcOfff42AMCLTcO1wWdn7IPkfvW3743/o2/xB/cE4MmAL2D+PXl7tfv78NrmP9F3nxy4GQ5zvALwCoYDwCsAB7y9WpvnOML87LUv4+174/NT+/xLDthX27LffwD/JV0n/+n65zbw1w7Yn2yfv3HA/lzb5qtX67bHfvB613Va2O/dsXA8wfAExxOAG9A+zwP7BThusPYKfAEWTxIcX2jffUuXwk/HJ4DX/S3PLZ9mhMh6z8YNZvZWnwx//s//+bf9pHkHnlzfun+1VrRr8VFAspvn1Ol/k/U8GwwlgITbA26btNN3856zzBusiwYunHsOBsDatPQzvS9t/8PASfbq7n1Zb5/HX1/mOI7Spo1lGhDDcRx49eoVXr165S9fvsSLFy/w4sUL//jjj/HBBx/gx3/8x/G3/tbf8h/5kR95rLeU/HkG7elMO51Zr3rhbQ6uzRejASNr/7PWHitJG4v27qwt2E6LtVcvbXppG7f1z6gxTt+1Ns/ae8fcsOkdSXbGbV3Ozu9i/aKZLbOweAm7baMza2NJH9+6z3VaJ+9zRLVlLD2/c35hrONbDofXdujaOeFu9iP99dNlfF3Q274/H2P4g0N2vj56rnbkdcCNt2vmbQKr1wJZ/bo9+/JunofB3kfPtS/fr3Qtzp/uuJD1D8uPJv6Q9Admj/UoXL6S/Yz7342ac3u4m9c7j7dkB3jndjvzGsPPdvEH2oki72u+B9miu9XuDr8/66J+ZGcgF8kNsNs8O3Z8nrqSX76PVuL77jjafmMjb34RYF+6vy/hmVPGrzBekbW93h/5Tsv572xn5EMAf76dgz8K4McA/F/akORHn4eD/XQfV5VfS+/ZKC0We5qzwzGuewPwN98q8Pna175mb8iQfa6BGTOgz1yWAUJpAxHt8rC3ts0z4IJ9l9Toe/UChNtVm2jesm1337alzSsEVvV54SfgqzSGq7ehgypdDjTNGtgO66O/oy/XAJe5u7XXDsxqm4fjOFBrtfbeXr16Za9evSovX770Fy9e+CeffGLf/OY38eGHH9o3vvEN+/rXv24/+qM/ih/7sR8zz35JHVBhgiG+XVwCNY8Ard7HelB9351Huw110BZm2WwPdn1Wz3p5Gb52mZ5darxTm1uNKyponVjfdfapk+s21+2vdxuzDn7aJ0sOgtOrJ03vc9bT760rzHN17CTrLIn0wufjxNu+ejsvxnvRgLC5w3UPze64tnfPra+HwG77yfK6nbv5xmOTNpFCmN1b5APOTqjHx7kddeNz5+OaXLbL63I0lYrPdVGb5jctXHtm/Vje97t42HRsedj8fVvG5JVbU8vMTYz9Nx6c9fBrsAC6+8CHj9/tvP9mR65dTeZ0PzEB0u1Y+Bxc6Oc4rL8kIxY7sGXJz1e/43t87gkgQ7Jq7bDqwMrTQ7/mpw2oKEmDffcYze9VdoJfrnYo25myh5ZFxsjKCVQ6G5/yizvfeWOxOStlDtZZaeDsJ3038osAfjaA7wfwXwHs1wL2RYN9l4VBuzscm09GC5KhOI9BmY/391cf593hXynwX9GA269og3xftzsp/e8C+MsA/k8A/l+NEv3JCMy+C7B6/sMcd2JbAVlY9u0Ds0/hF/B5ZMweAUV6p/LnAK8N8HkEZIHATxhT6+vsQFAAFOi7fTmTZXwDNHcADFfATJfj7XFb5HvhcwNObmaF2KxKoCoFZg2QIQNpDYDd7pPqYMRqrf3vrmM8Dj+Ow2ut3hiy2l7tOA57+fIl2l/55JNP8PHHH/sHH3yAv/N3/g5+/Md/HF//+tf9gw8+CEM5jgmsLMMw9NkSMLaAMwJmFe2VcElt/TCvE7ghYdX4SnbIIL7vrhJPAFRNgJogSdR7Q8YOtmnmQOWdcfoqIcoOzsJ7BmXc+b1mRjJQtVLMVR6a1s7rBBQV3qZ7W+ZoU/qjtT+OK33LCbx56JjPLncEgsbAFkYsr7ULAksXv19vlad1YC1gbZDZnowYeNjyipEds9PvK4BFwMtzG3RnAN8exzbGaTUaW54jCR0c3XcnwuJ5Mce23MHs/cfhPNDQLruJeH2AngD4x2/Hm5CmL9v2k7oK7tbOu9GPOIP30pfwDjh9gfV92GACQKdDwmebAKj7OMbekLShtvtCO07KkFny2RJEgAQ1IQcndgF7rv60OSck04aWKgnytM10CPjwPclkZ0OeJ0RdETrwtoeWJVnMNntjD+DB65254jIZiLH6oRBr9uonW3fxSwD+mwB+PYBfDdjPLiioA3yZ3NXX1yqMGT8huYNnBNBW9iy+lvuT5rsNjgL/h+rc4n8C4E8A+CEAfxZ3bf1PEmBm38nDZ3l3vJjchHyzrH0WgNR7YLYCsvPBpmsQtrtX+gMMmm9A2hlQ8k27+Dm2kwyeMmEbIHYGzFy27y49DmLTOnM11snAirY/ANYdazqfS+/va63eARsDtVpr6V9qrBg6GOt/r1696sAMx3F4B2QvXryoL168wMuXL8vLly/x0Ucf+QcffIBvfOMb+MY3voEPPvjAP/roI0LPiKUhZ4jAG4hSfFMnGGNpY/UJyjrBUQnP9PkO6m9b7P+5EmGgJ0NKUFnojId7njPwYtAm83ln7ADqrTW2s2QdpNUVhDnp91xqbnB2711/UFcAbf3z8YD0AMYqFTs6jXdmpagd3jHn4QKpnDrWHrvZdc67E1Se7KqFNclNIDkez1ANnM7ziy9Zun09Ab5dIBvwum6pL8v7+Q65zs9Y2mQFvrK+ft7ITTv8ep927dqdFd+dKT8HD0qOnNE02yfcvnUZaDhTTKqU8RyYMZR5RL6oSNOxlfj5BRjDBshmgIx3Kvl3S1b1iKr0SmH6WBcF+ZZNQJkpWHt79UQ/wf++DcAvBPDfAezXGexn3ve0DPjTQdmUJzJL1sGYEdiyFJA5saGRQWP2LANnE6D5+OwowPdW1O8F8NsN/tcA/2MA/g8A/n0ALz/jwOyr8ZdoOx1u6GoDKmH47ACpt7q+d8noI1vuww8/3B6HM5DzpuxaIovc3R3LlRxRwNCWMRO2LZM92hVoOwNmm/cdBBmAgxiwsH7+LBLIgODa50qAC8SIjScJAbPBijUTDzQvjw7SrNZaGJQdxxGAGdeUvXz5Ep988ol/85vfrC9evLAXL17Yhx9+iP738ccf+4sXL6b6zqNsyXFJ06wyRtU6tPoyL+0VAtCYFevLYYK1paNqcewpkDPZVRoka77pyPKONGYMjR1j1sylWK4StbesypNiOpbe9fvu479aXawiShl9/FeI50JjyjLwVsNaLIV3SN531ikyXwtzlgIr2yADEh/aZIOss2BlldY1jiVI5Dy5DuL0uyzQCfXPzTk86AMn6zXWYSt5bwIhWPjY98PhKE3COOZ7Gyjtpd4ygGBc3hVFjunl7jyeOrZTSUcqkkUdw7V+zgpxXjlJYR7PAYg9DW02D4TwfT8jRF94D4vnK4COMzbsTerJNmVyV+Vn9uDfifqPAMXTBZQ52xHbt/xsv0sCZIFznablwOwm+M1OYKTCqOd16Naa2P2ZS+qCTWuPP/PA7O8B8NsB/BrAfrahNCBUiB3jv1mPXNoxqu39TsroWKWMJFcMIE2kjAGU9fkdwFmDg6UByPv0+l8uwD9RUf+JxqT9uwB+P4D//LMJzPAVqSPzeLfTIT7LLnRQjRnetitjWN9bcGX83NeYPQrImAzCXmF/xogtrNIDbVTQ5AlQc3lMVGH/kGyTvzeAUqvdGCDVzALLmEkK5b2Cq/A9BlZmZg04mZkNRqtJNcc8RMnjaB/Vinlr45je5+n74zisyxYbc1ZqrUO+2P7w8uVL60DsxYsX+Pjjj+2jjz6yFy9e+De/+U3rfw28WaV+TyWABsIkdlJDBsItOm1IGQmbBFxjMv2I8kVWBzKZtQU0JqArW9aUDpSdcmq4yhm5SK5mO+OJlJGli1V2Jlzpyy1XuqULZzUfnj64r7tEsT9YPcXLtQGzLmOcnFo8FixzNGLY4pq3IzoJsDxnWMJdwn0eqjqPoYvMjhR+6/PMV04quxX5jqEiBOJB/+crozMesQpqGkvuKzNoXdrosTbNWK64YdVCK8KF4qMd8zqjWj73nKwdk+vmfM4foidSx1G6N/alBnDpY7/8nDtz5VY9NrAkjM4ZUCs4N9zxcyLPHhyVzMimGx41APlCQlGdcU72jJ262AE8uDN8rG/rfZXLz3a+LHYC0kyua7sci39AFFmsbZiZM2phueU789n49/0Afitgv6GgfOcd7qBBISMDpxyYObFl+uoC0KqwY7HGLK0tWySMfZDQhDkrYyDIx+f7q6EA31tQv/eA/zbAfxDAHwTwpz5jjNlXhClrd0JQPRlffLb7CfjnkjF71/+plPFRYw4BOsH840FW7AyQGfZ1XX5iQmJYDT14B5l9S7fBJiMNIAV2q9WpqUlHPQFmvM7Ong3mi4EZyxW77LGfo2Zrv8gc24oK1Yvxd5xYsd6OWwNh3pm04ziGlPHVq1fHcRzWppXEhbEzZvjkk0/w4YcferPMxze/+U28ePHiDvIyXwthyHrJFTyZX3OWbPSlapQy9lqyGvt6iTUmqQGlP+w7m/yAYoQuGexZAsIyCnAsWyc4qzVT/LWdqrNgrsscO02o6DLrFW86B+fWG56aqXRGjBWlnO1QxzipD7FjZt5qtKOeyhiHrcPS9uJ+RkZgsVRHNAnO+pcuRiX500vZO0tHoyLTZcsajKwEPT0DlvxobJYN2vned7BmDAJ1t7PNJJd6IOhS1aDnYwHPHx7cn8WkdvARNWZs+IT8tvtGVo51pp87Q1TAtrjJkjP9CDTKJI2dNTsdV1+0gmfVbRmUOWHQrurLzgCtHtfbHpjdTr5q+0O9Zc4svVAcl1V/1kAZvw6mrESAZp85YParAfunDPb33yWJpd3NI0PGssVu7JHXmOV1ZqusMZc07pwZy6g5W6WMNcgYfXyuAULOPSjw7y6ov/WA/1bA/z0A/3MAf/IzAsy+eg5hgtEH2WWF9++B2WcAmPmGcUqPUQMOx4PATQZ7PXssVuTySce5MYera6LIFzOQZiplTEBVYLS6cUhntjrjVErBcRxWSkGt1XochDgldpnhIWxZqClz91H7lQCxwZi5+43BYJMm9m24uxeWLrLBR8sh6+sqDMxIwuivXr3qWWV2HId1UMbArAOxjz76qH7yySel1aH5y5cv76ALOYnDSj3bIQBmshSwHRNgdSKpNsliNzHobFlkHbA6dVcZb1p+IBmVIA31jdVkeOg3tiwAuP56TIBVM8MPp7bUiCC1/ox/duZSXOfSDVkL3Z1g2XycRQljtOxAUiVWlxoxPqC+HNy5M0ZCSm7j8ET0XSVXNOy4g7FuImHDyy+4J7aLYTCptMXq3VTIA8DzzGLP+jZ7WbsPfsgaOBikU5M2GuZrl9MxhLBFxCkAyWvb3uzAhFPeZJOsujWqMHAFWEZbdumqGqhVzeWyNcTNmjcYc3qWYmTmxYzRstEP2eQ69JaLOtq/gYByg7HmvBkB5J2XNcT1DF/hgnMDw3KCY4CHLQDtBCRcGYIohjwHZjeBNVcwcAfWtiMaj6Cex0Fad/Z/EfcgA2daxmcXOPn53T4x/xh0XQdmBMR6P3jEp3S7/PMKwHcHkOGfMdgvt8YnRSBWgAC+CgGtEhiyCNQQXlfDD9vWmJ2BMn2dIC2TMjKLVgNoK+0+bYNJq7/GUH8N4H8SwL/0rjNoTyhfiUXmqsNV0bjRxHCXiYr198Ds3fiXyeweAFu5M/nKZJ2ZezDQqifrGnc3XQ/Vbu3YNCfWiwFXb9eI1esmG02q2GWL1hmoBNChyQSHu+HGwr4AcF6PAjN67yR1LA2chfqzxnwNEKuSxQa2uvNisMTnurLOmjUpY7fE7+6LvbbMXr58aQ2sBSkjv+8SxlevXpVXr17VWqu5jmyLJ8ZigpdJFp1wTDK9lgbI+tdJFUiGcdHcEBO8YWOjv1BKi6RLUKQx2rz483p3uWUnk278EXSYmAjTFbCJEUgCTKKUMed2qgA1p2ynWVvGn7sI0ZHHzfWHY8U0+dibgOTHiC37l65+vF+d9c1rQDFY6tkI4HQAE1wXfQPCBAFVI9Nin0ctdPp5XR6h1oDAnngWbnLaVA5ZEyZvsm2rX4wtoxPRjdKVIwxmHr5KQxfHEqbFJwCrmGb2oQSCt+3MlsZj5zwQYSuTOL9r0XQkXkBTeskDNWdZZVks35XFIvaEiV10Oq6cGdk34+mUE39KYE2m2TyzxbjwNXxEf3n1WdnKhPMzrBYmWenfI+SlP+voNzBWmtFHlzCmUkZizsbrO/vv+wH7Jw32q0uDLROQFbK5LwvP1M0/dkxZEVOQgsyhESJltADE1Dqfa80mOJtM2Wz5lDJGpsxEfGkE0ipsQNL6qwz1VwH444D/L95VBu0J+BKNCGykELscSEtHmN92jlm4+t9Cjtlb5Z7fJaOPbLmf+TN/pjJLZzb4Z46H6SPppD7syjkxq9EyYcUCaOsyQ0zZYXH3w/uoq7gyErCDvA+DcSwzFEbOxMSjgylm77iubLgyErgKIK4DOAZlCs6ojoyBWVEb/OM4nNi0wiCySRdxHEcl6aJ1R8b2B2LB6nEcpYdKdyOQzpB9/PHH9eXLl3j16tWdhduwYZ5YABr3tTYh0+6IurnuMu9kmV8jCGMHele2zpJ2GXJNV5V5UIt6sr73BEX2HejzOzDrr0PKSH7/AcNYRJwBy1g0AFksMFfgNmOe14QyJ0ARxYZs62HD/EP/Vs/GrMaMoQRb64MsH5C+M2/jr078ls2TVjsbZTZc9I1gRjeKGEBg+s038DLjBmKG2MqUWlvWMZWmDCDv22Mj927VzkxSq91qpiQ1jGFOBqu2Hwrve8g5s3lNkkm9mHKQnb+RlSmxYib1ib5oCi068Te2zQbgkZjTxvC6cbs8wHBjhtOBap6w2BZjU+/2R3c21Jpb58iiq0AAbNbaNY/n/bDX1nYssVRbm/wzaSMuGDWVgCA1YN9ucleWlUtXdtVZZ6LJgtylMev0nYz7ZMjoEXmoADPDuYwx++pVAtu55Db5Vq8nKwBuvYZMZIxql9+ljP5OGoD8PQD+OUP5h6azYkmki4WcFudnFQUym1YDCMtkjcyinWWYxfoydWZUUKaujBZqy7TGrI7PnVlj0FaGSNN/LVB/LYB/HcDvA/CfvVvAzL4cLY2MmbKTgGmeHwvj3zNm79C/Z9SY2QVoKyfM184eP3M/VDt7BUoLOMJqBKL5YUAcXDYNZRagZhvXxPCeAVObXsXWfqyzyQ+HlFGAVmmvNZM50nwnaSRb6aNLFLPg6A7AiDHrLoxgS/wG1soGmOHly5f11atX5cWLF+zS6I1dQ5dB1lpn+VPiuOYEyAJ7tguVrjlz5uQsP9wZyXlxIZ8Q5YzBQ0OxDT/B2T6/GharSQjqWyzzJQ/AfAVmXCTHhXLV84K54PuPyUA4We4bdbyRktkLy7KKEI1U+pHR8QWcNXOGUImWGX9AODggqznLbEpKjUyajxNXhW3y4UpYOXC6ChO2s4Zn4wwjRotzwtXt0GMJIrs0pmwYnw+vi7zQ6buTlPUwxtmBH2pinNGBYaVlnbdP13KN28zMTgJoFmtTF4bOwL8vNg5ZTTgiq8iB4EaB0nX8Jrw5PTr9mJ3zzFyPs5M81RcDlPCEup3QMQXnQckP+rPbA6+6yZ3LfBcrrsDshuuiuUfYss2Y9XNK1XYOl1kGAFGABXf7kiyJDc/YC1yelqSBnYy4dXAmdWWFbfPJLt/ajrx7wOzbAPxjcPsX4eU7ipUFhOUAbfJLuRujETNmQ4RdBuSBhE1HN8Yql8SjUkaWMM5pHurMatpaBmF1QM/SFB4diHaQ5sD/sMJ+C4B/DsAfwDsSTvcE+9LU0Ya7tK3Twkgt1nyzeyfhbfO7bxtIvdP886cFzNRt8EFQlppsMChqTFUAZMRseRIS3X+HnkgXFeA5rYvrv1xZPq4N659l/xRIPReYQQ08ZFkk75kBUzDGn5k9c9zt8J2zypK6MhcgBgJjB08nYFa7C2ObXhoL1oFYB2gcND0A3CeffOKNpQsSxZATRrePusEuUEMQWaZjmlom2ZEK4/L+ZV5rlolzzz4PNk2rrZDoMzEpPjYBqYREfbcDSNgvJCwZyOWiJiDMaIpvhQG2GH9kDo0xoW3ubW3LHGIAklvlS/XUyc3cloEjX4AbwgBiAEc2qVSTGIeBixwbyhSD0VrOCX3ZLV7vwyY+tac34uEGl7ZeZm2bBkc1C5aKRmxbtJPPcWYoHAPXe8XwZ5MA7DBW0am+ujKwca9myLVReQMlfYSRGv5e8J/sTpA0KOxtBIaH9kzdIulqGldYZ9MoygDtmBp8BWRallUexC+WjCnILD/BdI9EpLG7fJf6IQVmTw+CMrtAVifdrKsStTNdYcZKCjC7bdiw8sCxe8TSZHuD70zZjRgzBmGFasqMQFp/9e7O+E78+37A/hV4+a+hltHmYoXkiUWkiwXRfbEkph+lAaQi7FiUMuZh0wzAbMkte46UkUFYXk8Wa8tKqKCrKAQ9p6zRxzEosO+qsP9VBf4HDvyTeAfqz+6ujCYCa0NODi99AK1He8+YvWv/2L79pBbsTL64mzaAV2LOsQVdZGoBRne97ktAZLnPqsuyVFeGVkjmtdZhnS+gzgVgMZC0zPpezT1onwJIo/U71ZQpEHPNMZNA6LGNnlXWjUDo1YUt6+Ct2+GzRX7peWW9xoxcGAfQauDMGjizxpbVly9f+nEcw0q/G4RwXVs9wzRdzefRcMNX7/VocqhlWUdTNyaOjFyGxaVaofsmtWeLoayyZoH6YyYIyKGhFsb1nAA2AhEp49h3tpuU+YttvglrBmx89kJLI6CyRb6IsAdqAsJeLNMc/35GJozb15lVccjTLXuKlmcWO6SWji4g70xSUj/liTff8iYLgd45B7rQrcziZFQstWW3LbqX0ihU3C47Dj5iibj1bZAIAIuFbQE41yjNhOyNY/VtcrbV54EBx8xfU9OckBOoO71Kdd186Y6EIzzMo31ky3HYd2DMdvpBnACKM4CSHPNHQVm5IJkS9Z+MLz/KlNkDO+Pn4CzrOT2KA7mpT3M9Gd93BSfLCTbc/xw8MmVjw8SYWUlqy9jwQ+vLDLCnd6GL978G7B9Bvd1GLZwXwK0Bs0KQJpMyFnFeLKlD47siZazUshLyzGpodf88TUBMuMHaLoPJqxnsv3EA/54D/xqA3/kTC8zKF9vJfADKcCKcLmB9xPit55iF+9JbyDH7zAVPvA3GbAe0TqYHwMZAqPeIhIXLTDyWmjPK7GIzDmd3xA4+GigzMvHoZh0DJPRssLkrk/nq3xVwOMDYBUu2LLcBXtm8fgy6MQgaumRgdrufnmF1z2YhLEvsDNpikd8BGwEvdmLswAwM1F69elVJmjjAWpMzllevXvmLFy/A+Wcd3L18+RLNVMSqb/pUwl7VBtKChBEx5ssoAmzUnB335wvXjw3cws6MZKW/GB2qY1xmJKh3K5YyUj3SliXj4DUjIMbzQo2ZIh8CaBo6rQqF9ReadqoyS3dLzOo5bJq5ryopZd34wwf3U2Xqmn/AAkkPIM2R2E+Ee9EEPDwGeH/GdAOIYQTBxnyDLqOiQTMJhG41SUO+aIv4jscmK9HBo8zLWqSBTUYMWEq1ePPj/jlPjlEdGFXJUYmAu4fAbWcKmOSXo+ZrOC5q6HbMS7eRy9bbOPfB6fp3R3J0JGG6H4t2BAzRGbG6C90nUd+LcUprCw/+pvar8QA7HWsNvr+sgboCGbhAWsmtxE9IJj9hgFTSd8Nd7rf++7YTaHPDuT7zTI94sq87kGa4rtvT+chVpWc5ZnYhedoDNQZlLF9EZMsYoAUARiBtcTP5Cfv3vQD+APz2y1Fbm0ppZjzTUbIYV2N1j0JLGDRDJnFcJY3RnfFKyvhcq/xcyuijbnq1y+8mIBbm9c+VZIsTgvW9tPZkmn8Ge6qw31Fh/3UA/zCAv/oTxJh9+d6okg2eWOwUFAFnOlBY3j4we9fX9y4ZfWTL/Y2/8TfOANjClnUExC6DZuaUk4UWjjymGT3Za60dfJUOMGi9gRnrjFGXIXYQQ2HMxd0rM2icE9amj2WScGfOKuuSQGXJdhLFDJgVrRPjZboRCS3rwpCVLkUU+WLpx5zAZK8z8437Iup95q0Bs9qAVKVlbsdx1JcvX9YuaWzThl3+ixcvagNyt2YUguM4/MWLF/XVq1d9WWusWT2OY+IXJZxcJI3c31KWzKeaqSbDne7RkbHSYPvO1Z7nszGbmsTl1vhyi2CHxjM3xmDNrrQg7UxIxLaYns37wRJG7tS6Wkyqa2PNJA2LE+PkOSzUBKkIEQTK+vSjPTQRYkRzjWrcEsisYuWj+Hv9tmOtZixk0bnLbtvAR73Wqn9vmFVU4oTMUCtgVuG1GVY0IDhMQvoYo0jU7peB3dmYyjJDD8fXQl0jsTa97dVmG6svlYCDGO0mH0OMQsoEYofYo6bXV1kDj1573pmpZ+XAP/fl+j161ox1y/vaK/gofqAD3TubVxdHxHm8WCxLMtyRNeghdWf8lMwD7o3lyTblmG05tONe23L9uN7Pb7/GSk+lvG+3nFBXu97+A3b5Vy77VzlmGUh74lHP8a2nE9YsA1sXdN+O/vMHG7sDdBnSfALwKko1d5wf8EZCzNh3HWV5dgdoIbeMN9J/dAlr1hkpuw4z+BT//SNNuvjlu3Sx/Q2AZujT7VaoziqCtDzHbNrnr5JGBWq4kDLas6zyVynjCsYcM0szt8d3AmIsZzR6X3AD2lKdNQNqe23s2a+ssP+oAr/DgH/zJwCYfZGoWhkRA/Y2stmv4n2N2Tv378ouP5EcZt8L5hsETDzbRgMW9WRZVyZNJIQd0LBrImidXMtViRnkGjMQc5a1YamDk5oyBVUQu3sGW5WW5ZoyF3aNrfd7cHWXKQZpYwdwAG6UTWYaKk1yxm6Jz3b5Y33EkFkHaR1wdSasSReN5oEZsw7E3b2oC6JtFGF+4pw+pI51lTN6yy1zAAcp/tjIsJuBOGGpkEklNWjmiQJgqw64CGBT4KWSRsukjIj0XhVNZgBnyM1AlDFY3UlCfpmJRJEZsg7cMvmiGt9zwLQPKxAn+OYLY7bajOwERzZrl5wgZGd/XAoJh5xNA4nb91suliohezBzNKyQCzeJV6hONhXi7KFyRZcE58VlXkw/+BpyKSPwtj8WDebX2sRRv8ubcYLrvv4mQ/gZr9aJqPLIBNLyMZrAw4CGJ0Ky/MBOt30nl8qllFN+e3z+xlXtzBN7aMu9avepIYB207F6H0jO6Jgr58WNN/surtkvNnEmaxT1H63hCtIoZbXjlB6QL/pJj+wR8w+K/uporBt/aDT2I06MWcbZvtPYGLKb5yHjxVZWrE8b4KyDMa07+5Z3Jb8M4J8Gyr8QAJkX5ABtlTRmtWaZ+UdupW8JQIugrI5BBAuALJcyxvqyWFMGAmMuEsc7lNJgaXZltMGUkVBx7CkGW5axZnSlfRWwf8OBnwbgXwHwzW8dMCtfphGBROLjUkUNMv7wtHr+XQdSnysp4xkwe4RBI7Cj5h/qwmjJOpZA6c4OKXBDdF4MdvmcedYZM/pu4TBmWq4KGFMmbLxm7NnZcgn4sgyY9XUmDotGNWlcb9bnFbLB7wCtyxkr1Z3daq1HB2QNjA3jkMaQlWaRrzlm1mvQ+rxeS8YgrbFyDATv+7Az8UC8E/smj9lJxhhAGc0/nNR/Hj0znGSNmmPGpFOlEiHzhC3LQJqptMrFfvwBKOMuwEyQpNvKpOmfajMD2sgaHvPLJgzY2+TXjeFHTf+mkb4t38yOwwRpnJyGNMJ6gic1tHDyaDfnzjmfn/6pIXhbD5f75Ld8SBynPbxhSggnM3Nn1hwWrOeHa2IHv2IB740GMq0d67wY6+w6w0cB2VH6OBksbv/gPAcrSNPIgKO7Vlrw8W/HkG7PPXDbg+GIzXDpdm5skTn29dN5GcYm87fnYcK8pscaeBDFVvdMo2tYBZZ9eXeL1H3HuuULDYh5Y83K/ebTQVpn0a6YoRNv9rIZyy649sjIXgnHiGX+mfFH5m14LvRbIM1VLRmw97YvF+iq7VQo73Lx36Bb8G6TO55gMYVipmwYfZjIF7M/zi1Lssy+9TlmXwTsj8LLr47SxXJ3iDSL4GwANIM9FZRQa1aSmjI1/yipnJEljVHKON0aHUiDph+pL+OaMk8Cpvf2+C6AzIIByJQ6TlGkhf9Ags44vcJ+b4X9IgC/CcDLbyFjRjVmhXQ/Zmvxdag3MxkmfPtSxq997WthfW8hx+xzZf7RpGdZhlkmY4QabXR5oSxjTc64A2n9dt6ljF1OaE12yOCLm7Y14aCFAoMl4BEJI2ZSG4ekLiyVMipAI9mhkxSRs8ucgFnpbezghuWNmPVl0M/t/eLCSKYfA7Q1KWOlejIA6BLEo4G1W6856w6MXb7YAFp98eJFbXJGa5b41iSQN2Lh7NWrV/dtWuIWx07yZ46MVaz1sfbtGYdAyKbK7IBNK/1ALvE2LGkXq6NOh25c7nHA3l5yYw7i5LXuyopJgdw6VJK3bxkwA7FkylnEsDZP+D89BSuIm+HTIDN9CzHViszzkbApbbQVWnZZHSwYecArpnGhRRt+sgB1cic0i46KdLuA0/lyH4btE8V38WXXUvbtu6XXg1OxFwcy97GmUP9EEssO7ypdpIaOLV3KDrmmykOGGQb/yZlqE7TctectaYyy3txYLjuvuTokgQyCuy19dFVkdmuYhzhdFR5ZSiPwN65YlXY619LRdONQbYs3AnUCdQJ2pSMCAmIDlB3tz5/nzW7724ZdkFA7FiiDWR2GvVyA2RkiOgNjV0YgmxsDTr6SoaRNcJs93XHyE/beK6GFCTewkJm+MpNwAE9+Z8tu4sI4ECCDT2bOINllQDQCsW8lY/bzAfxLqOVX3kFX4xfrbbaPwZjWmtUCK5NTipLFQnJFE6MQO6k3u3JljCL3sn3v29csYPrMHn81+eAcs/v0G26BJVNoNl9BnwHAfl2F/SCA3wXgP/wWMGZfwtBf48E7S/rePy0p43vG7C0wZkkQ9ILLuK4M0YnQmf3pQERYLgZR1pgulQUOEJSAxNF7VGv7zXY6+Dk2mWaLhT2iXb5fGH7wMbEzeSJviwOihSEbbetW9iTDHOtimSNJFwvlmHmttTQXxl5X1k0/vIM0ssuv3YmRHRtbJlmXKZbGktUudezs2atXr0CZaXMf6NdEg9PBIt+wL89i58aMaOlSxurRmRHKktmq/KtJ+VXFGi2V15nRmthcYyttFCmfH+27tHOLlBHR/MOji1yOkizea5c4k9Uy3ynamR+WEGgFWkY5wNnU6cTowoJhMdrP/yJzFnt8HNxMnE8AoAysKh2Gu9xvhow5AQgj7d5gWlqn3pklC515yeZsaKcy4Jvc/pDfuVUChK3GiZnAjrPNwN6RA2Txb8bqGJFWGWNIeqM6t+hYGJm2vmxtoMx7PVhleWKd7PICtWvr0GDESBtdtxyrZ+SaOEw5FiaJrV+IGWX7VGLrxhkM7qm0z+zmyeMQfYHydGfMCu6d1cKSxt757gDtAVnjA2rAK/bsjDnT90/SbYuavBv2scxnlF+5Bp56LM5w3SYlm3FDj//6wtM+WDud5hFLmc/LJPi4qOJLLfEL7sDFkDNlwMaV8YbFmfFbA8x+Gdx+CPX2HfNgdobsdiJlbNd0Y9XMCszWWrNZZcX2GnnA9L7GLANjlmaYecKcqayRWbO6tcXfMWdGe1bps7VfSfzPBZZFeSNGLV5b5vsP4Bc58GsB/LlPnzHrF5ixTXH2np6GkCHvmWP2uTL/eJeMPrLlvvu7v3snW1ymkXEHAxvOIBufWaLI4C8x4dBtmsodhTFTtswTyaPvgBczcB1IdPOPRJaodWSeMGqWgMoBsBJp4+79aCcZqRixZgPEkfNkB3BOWWXdJMQbGKudzaIcM3ZjRA+FJmljPY6jW+ZbA3ZduggGZn2e1JjlakB1RLsgk+rqsB4+e42GhZWkjUMdWFdn+dG/rgi1ZyUUHCG3zXeTnqSLtDFrtDJk5NDY883Gvqkzo0gcF3zDiJR73TWxaV/dCaJa0wO/xUzYrALzU4A2YVpt3z6EY6sngGyBx9RhH7+p0PZl91xkbL4GHXcq10OVVI0YnK3UQ/ZV+6wlUUQNh6gPn8lwg6zTejUtD3Snh75Y7IcEBE9j1aJTaN+GR8rYZB/FIWcp0wIoSNvuIFO/thi7MKMcWfDAhvkaHLBMMWGDez5djYMMcQUurLfnVLD5nTHrPfthANJvCk3WeLsB9qqBs3oOQB4Y+S0nmMZOoBRLGffAjAumdhpCPCAC3BTc2sX7CwyokWDlFkuinr7QWu8TOwVJIwg7YUNmekx6ckXCUFDWLfE9AWStoc7SRQmkhrozfuo5Zr8csB9ELV+NVvhllS1mAM0JpJWS1JqVxPRjdWUszfKpL7UCNQZjbJe/ZphZkCxG1mxXY1aDVUk0/1CmbEoYI1NWRh2zBclivbCbqWOAagC176rAHwfw6wD82U+fMeMR24I4+pQFSiPhkvGeMXvX/vWOzkV9WWaMEcAUMVbOwIa+E1wYQbVftD4eyxwsmTBrLFfMpIuBQRNghqQ2jA1ElD0zAYE7S3wos9bBFM7NP7JwabCNf/tcWwYbyxbZZn+AJQZjZPzR7fAHG0fgzGqtpTFkfhxH6c6LzWVxLNvAm3cgRyCw0DEIxvHsqhi6mZkujjptnjnPi/v8YvCB+Vn7YZ7Vusm40WWgdF9Sd8IvEqqdNJx9Q1Xrzfq+nUgaPcmM5HokF92O57c0D5lSCKALQ7Sn0i8Ek5D4WTPQ6pjawZotoMsFDLnILTngmqqj3FNj9azf3dc0pW4TlbuttWqGjTNncijXTl7Sqh6IjOw7FlwWzx5FtjuVfiEvyxEuVqONuKO+43RG3VxdHv3Pfshy3R72cedh29HSktiwuIbleGUndqklLdLL73+dPTukU/4Ko6rrmUO59uD7Mw+NTMp479CybYadwL7dVgoe4/fk+NoFq8ZRYPTXD2dhVeDTHQPvuD4wI4bIkvHt0abadX+KAnvXFuz92LFBouIKKxMElAW27FOXMn4fqv0Aavnqfbu3SDvaBqCF2rOVRSslZpuZSBhLYJHKhimbtvkqAiwhfPrK+AOSV4YkVBqBHavEktVQXzYN/CfEZKHmDQg2/9r2/TQA8g7fVWF/zD9FcPYEfPt9OMNt78ZYENmzba7Op5JjFtb3FnLMPlc1Zg8AM5U1MkCafdoVZLmwYEGGmAAuXb9mnGVBzxwY3T8fOyljAtI4HJpr1VIjj0eBWa+Vo3WXTY1ZJSCm0kUnJirMo8wyY4kizSttvU6ArNveFwqdPjoQ4xyzzqQ1IMbyRbScM6P5fhwH75e7Ow4e7BZMsozE7ySM5Mo45IvMqNlU/h2IIdMV2IvnEkdGNj5c9EXhaq7J6LF4/Af4QpJFa6nYs8WTMdPGpQ0m0BZSopNstaBciDszK51MYn8ZaNXAlu2dGGOMNJ+BOtwZIWtZDUBUtuj0HZbNHdXJMKLnlBntbqznAurM88Ls3HNm2TwKkqHVD+cw+2BGywjQ9XqsVmvWt1M5FU4Apq3Yesonc+bIuqSSc9eoHS6awJF+ZkZ1bdZvoON6scG+GV0JEJUMBL6T9NV8MQlh634+/gr6zFimGQOjQ4xbYx/J+3/uU+ubGNUD8vfmOEOSWm19/wt10p2kjE46OY9siVlee3YiY7QL0AVcG39kf19oIKYGA32Fb1dej1mCmt4UbQVkLp8Tk5RCqkFrbvSlROKJiZzb7dyJsQggMyRu9n5uEh7AVzHamDowItJ8ULasrNM+zRwzw/fB7Yfg5aur0UfGlN2aRvk2QdgAbrEGzUJNGQO03AxkDZi2jStjXluWWeYX0k+UDTizhTFzMftnMOZDtjgN/jGSytjS47y2DOnAhqfvOzjzTwWc3Rmz8esRuaI9OBQ0RrjeM2afUcZs9zkz9RiW92bWgY1LAHVg4RgkMeumjJ18N4A9coZktozr3LCztQ9Mj9SJyfJ2YnNvCvTUBl9YMGbNwmuTQIKki/dhjenKCMkuqxIqPcCUu3fZYZc8VmLAynEc9dWrVyNgun3m2rUOvlQqWZi9U2DmdO+qiBnMTCCFX1zPYSa1X83t/wZjlqn9mHCC1Jvdr/moFAzgUO9nVQEaXaYMyHYuJQw8erB0R559R2uNNWUHRNroecHcsBasdBAqjeL6jjZYbDUiG8agzANzdSA27/6dSpzY3F8jWSM2eWZRgBa3agtvdDf/6IYUk5qtA9SMvRmAy+J6SDbX66dqcjzudVEe3RUrj0+yVLAGRYkLNcsW/TZGHCzEaBt9p0o1wNicTUuUmdhTm9kJxA9/XjKdMRwBCAHDt+NcWzusW8hP18lZVxbdO9XZY8DPagScbZZIJlQLj+E5yTODPNEVTLr8cI1OB11PNSmzEObYKlCt1ZjdfGrnRpbZMfs7XeLG1TFWALzC4hJk66DOmZ3Gzkk+s4TXZdlp/iVuMDzBZygXcguRnc7whPLCBuXsdgiTGXtqXchbmQwZM2bWdqS/Pt1W1/ri58aPWmu2NCdjzgozZEYAnFEeyxoTdix1Y/zUGLPvQ7UfhHX5YgdbxJL5jUw+qOasTw/AzRZmrRuBIMAcBmjqyFgaoCpDH1E2wGxKGVdAxmzZapevDozqxohmkd/ZsGidP+GmB4BmsGb3sa8tA8kc75WmkS1DsAQxHv78rgr8sfopMGfTlbE7z6gkIou2Zx2BsYTk81dj9q7/E7C0AKYMiCUgzZltGv0eMgvh4OhkXQtrJo6Kah7iiRQx+x5b5ENqwaCgLTP7SGrAsnkM2kabEkniaHuvP2MWLKkrgxiNjJwxZtY0t6wzbWTyMRiv/plkjE5sGJrFfm3vQcuGzDNuW68zC3JMlROKQVyQGgkoqr4Y0wWWzVwUfjV29xi7VEjotOdjRruxpPWziR5LF8gBSEj6DVZ0VcCWx1oxtuobAMwTidlO47bKLG2BQ5llicteeHKqfBjkO5BkloFsKKpY4HMnmlk7xcQWmD6HUzDxVGk4MYo2zB5ATFZ77YYYZiELrSujLfBbGHpcc45aMDIT8XHRutk9nNrLffniwfLTauv/4B7uDHIorIFC64YlfMndGbgByti63vxuHkKRAB3kWO3xCJ2JsnlsGzBlS3t4Z+2auYhHB0/v7h3gEGm55oh98xZNMErSjMjcfu+1eU0PQNbG2azJQbtT5Ki+a+fTKKnF1dwmuDJS9EGHt60mFV6pUw5hy56iSyOk7mjYpb+axiAP1pjthIV+AdqUk2Hb/C8M7my1QZgdTFwIKHc1ZnY+bi0lVzeLoNFsVl2VhNhhzFjKdLAfOKlM8NWJLRCZmam5Lv0l00I+ofogLFqQMUrhHBuuvH27/O8D7Afh9h0DTJ0xZTs2LQCxWwRobjC/oVgEYlUAmQn/dAdKE6D5hnfqdWUrILPBgmXW+Vmo9GTO6sgem0yYD9MPriOblvl17BtCDMB9zkEXszUwBgKaO+7b19fvKrAfqnfm7P/+1oBZtW9HsSLi3QehTRyqRLXPH2P2Lhl9ZMv9xb/4F5/Flp1IHKHMEz+DEnZMpYxBP6HOi7Q+zSDLctF6O2/ufog8EfJ5YbuQ1Jdlhh/0uTCoam0cAKmtTy3xKwGZ0izzS2cxOw3V68jMrPTarnt/pzrLFRPjjw6qnOrUQMzXqCnrZh/dOr/P786MfX5rp27Tj+OoLJ909+GKxwaGjD3S2jJizIbDneSYOWWbDcYMksuMxB7fVyPDMd0TwmzXB2GdZSrFyyzzSYsZ6TAs5h8HMWGVZIzKnlVjxw0JoVZdprJjlgKtaMfhW4gJSirrHb06HpRz3ywIHaNDoxGbOC3164ZdI6Fkr1FlVlZC8qoC7aTAcLlvsbWJi+qt9m1RxhembJK3443BG3w+OQpao489eOXbErA83SFF7wj9Lr0NodVGgxkEkInZ0nFVU8uOvqytAyNZiDSLNb0hWNPvyu8dcn64jWNWB7BOuW3j/ORR1RlrOZhNNzmOhBQGLUPMWTcA6cjSpGDKlH16dR64/ECXKTM6xIkwkeWMji8AeKJKnCjuqoHlMOlkZo1dcxCvhrNDVrTUkxVVgpJBoBHSvN2ip+TNiMwELiwZkm6qyziaZ18gq/wMjC0gTICZgrO3C8x+8d19MWHKUFq5ETNkDNBue4CWGoUYzKKUsQSL/Chn3LsznoVNv76Uka3y7+/LaGWlbDJ+P1taydqk4iZ1ZTUMBEYHxv7+JnVmwFJjRq9AhX23A3/cgV8F4IffCjD7Jt0E9AbLkvZ4Q1x/09Qhep9j9o5JGZ9RX3YmaYSAr3ZvM3ZrXCzkZT4o18zVHbFPVFfGJO8MmfmHgLZl/SKD1PeB7ZL1q5yRpYoj6y1hz1TWyFJGD4HNbXn6rIwZqL7sIDMQZxv8O8aa71mSSDLHLm08GHCR6Ycfx1F7fRsde/YqXNgP86STJvVlSiSlMkYnYGb3oOmDlH8MwpyVgIhlWV4T7KXSRksYs9SNwR8DZ2Ck2Vq92OX7qoRElpK9YfTC8HHdjnxbMi223FKj+1lbBhxN3tghWEkCpjOw5Sn4WnFxlJJ4yFEMJI2JAfCGefBNnzJlcpEg+EdH83zdXjQcyeV1cX3+rGFCG2HL9fERR78Yjcx+IJvj4JYAxt3xT2u+ztq4cVQ8Qzr+jHHXchPP9U7T1OnYd+tmIJVs9GtEGYZmDLI/xlcc1VkG85xexC7fGjCb9WU+Rvk5OHiah9fW0azUeT5nzk7MPzBrx77QJIu3IkYfJGPcGhu2HerALHXb94mhiyX4KjmN2591QMEkfS0ZAEMOxhnoaJ3Zx2+jF25fws1+P6x8FeUm4EvqxnrewCJlPGHQmEVrGWd3+/wi9vkTlJXEobFIzVkGyN5UyqhW+XZqk1+pZVW4Ph9g0xMp4978I0oXLcnJ2AC076zAv+p4+hWO24s3B2bed0QeAA/eIPv1XKc72/sas3dTyujPYMgsW47AE8sZU2ljN7/oQEzBizBtRt/3JMfM1bCDvy82+OOWnDBfDPjAWWYEpNQeH4lF/gCC9LnUWg/6TnH3g5YDZ5V1ZrCDrc6S9eWIFesujFzz1d9Xmu/EiB1ijV/6+poT4wB5nQ3roG1XB9eDqxsTWJiVclX+CW7xiqD/P4sEcyagQHVlBLaCmM4jsRQ6jdKZt6xPu0NuS6B0oFjmipbluNfuK2XX2TAFWy6o1m3Ffqe3r9X1ECEtzJM+7ypnrCHrTO30Z8B0lVQ0u2QX4+vOINNrjUJNI3d4Jykfh+ch+lN4iD7wluM191F9rSoFVEc3i/t5KeM0TUOKYY5hCEycibR38SUcxh09o2s+3J1s8I22yetnrN1NP8zFEbJLEX1Wjblkg/E2gtGIMGtT1NiNNOaIbZdOYgzAYRqf9H3vcSu+AWgNwBml143Q654DR+fP6PcVTDd72zrQNx/rjTo5ljKyXk6zC5UxKfL+1eVQtJ3KG2Pnr1DX8EaSLRZi3VmqJ+ry3kTGuNb7eJNt9arQIwiOH/D/bw3uUsr+N+rCmC2j32xhnEM5yLir6UaUmJqcBJt834Cykg9alMzUaaknwww8C5iU6L1xAVtiAnKLiO/Ne5PfCccfhpevTXt7AlevI2XswdNFTEHMwnfu9vm5O2O00FcgVjaujDspo22t8lXKqO/vy9dtuDSHSM/6MmstRBtKnHx0HiC9M/uAyBtBdyB+wo4n4S85UP4dwH4LgA/eCJh97I4bae+1o5T9bsczkX4I3Qn6U2Ck3jYwq+8ZMz97rwYd7MpoFJ68ADuRObJLo4v5hy7rmlMmtWnKYHkiQXRpn+3YtBMHxstpCsxEuljIIKOyW2PPIwNZ4gNgsHV0wEXLsxGHqxNjB3CUPeYiRez1ZR2MdaYs1J61dXWpY5AxAuiAz/m81AwX1IRMYqDU8MzoSKqJX2L+4XteKvNH3Jra190zdBkk3i3pG+kPo8/c13AwZgexZgc2FpOWMy0MNqqfSs4zv5Mzri8Cs2jr4UGwGKWM7MQYhY+etkA5O2trCUd/uVdlR30tZuRDZh4ZKV/cIOdJbyMpMe/M48YrS+cMwYgCvsppx5qy8+hxH2yK8LAYjLRtMvEU6jiXZWO7Q53hGOOqW3KKoJGcralPjEHcs0HBxHe0mfItzwZvJLKBLf85W27HeHpoGzORXEd4o+Ill55+naDM1AhEa87Ype9F6E6cO8rPTqAPY3HuzkK6uRgyLJb8PbWpTlAmethx/tJ8f1C6UwdqB1a7IG24GfDkzRWyM2UdkIHYMRNikerKBjgr06PidiM1KcgsUVkyj0ANgqX0d2UZc6CgbDgv8jLCILKkNQPp/e/VG3TO7vVuvwe1/KoUdAXw1aWMtwekjBRAvQA3C+u92+eb5JvZImX0E/v8KGFUBu3RgGmtL8NJiLQTCGMDEA+DGJbUlk1JIys19tJFS5iyCMwWgPZrK+yfd5R/+o2A2SdCB4cHnNxE2S3fRP1h9qkxZu860PvJBswWkCbMVVZXNuzjsa8NCyIfMsdwAXDdZt5ovWemHmypr/b6ocZM6ssCkNuBtc74neSTOdeSiUNjYMX6MZrRZMMEhGu4+ufOXFVxZhwyR5Y3aj0Y1ZiBcstATBtLJhcXRq6Do2M0ATHfK3ZoaFPExFJGU0zDwKxI7rIl0V9IjAxp/mQXNoST7YbxLQlc29VGaRZAYj1ZaYSVacBqMQeAqYB6gizrKghkdi+PFp71YhvCkpiyKGms9ODE4NUmuqynNWSRWVPuzqjNtdZA/JCKWaRypknG4ZyxfUU396gbJq6S//zMU9vD3cFAeQR8JrI/9xVTQ1g/Y4rPGkx1ogGBod/t2w3GIcngwrT3V5MdclMgMw4gxogZeyYGa36bph6urAuGy6OHaAcPB9xMQJe4UPbrwU96AZZtg82HjBhU3rkQNuwxaLgQY1Yo48w4LP6YerzRmf8EGl4+u/eF0p1KMFSwYOJdiCGbLBkGILMGygzePjmJHyNrNmWOlRiA2wBrXaI8Qdqho9VtR25Aq2i7uy7e2iV505wyBWSIrvOBaCSsUPA8h8qrurNF3JAuaHmN2RIiXc4Z07cBzAr+YVj5xy+ZMduYeyxM2SZouu5qzrgaK0oaLbXQz+zzo0tjbddxBGQmUsZoANIDpvuV7ImUMYopK0Vf1xAwnRl+cB2ZXkUVbPbBYC2CMGHGzoAZHPidjvJXAPs334AxW40/PQ5SpSMTi3bdxwPgrQKfH/7hHw7rews5Zm9VyvguGX1kyz0IzE5rzbiejGtAtPaL82241iwBZmDZowAvT2SY2AReg4BbAHH6PZmWyRXBoK0Dw+6CyLI+YcwYlNVdsPTOPp9cFbucceSa9XPH2WVSF9ZryI7u5kiyxA7ImIUbksgeLq1mH622rLsx+ob+mIyZP04qjcFsrTsDgTSWNR4zx4x8FoITY7WVLBgyxooQ+3WpABReZfqO72R5NWovDdP/n3fMXTSZBMCEaVhQZXYGFlOM1egiAjQkIsasKsxG6CfXoMWH00GiRn4sOdhS/Ty7zJa2jLXUKZI0I7aF1IbWr8Aul+NM2EbF1m4H3002nDPG5sqMHB8NbSC5d/6DVNIo84wz0ppaqLFE04aepHycLGfzOqtO5vgeawKHDf6QPUocgE9Wa/x/ANDmXFnvYGkQfc3l0KmbUo2gEYMlbx0jM5KHdit+J8/GmTHgVc4tOzZXTGt9vpf3Npn0qAPmpmNobVRiSB1t5tAJPg965lHU5FPOCDIAMXk/nBoR0Ucz1L6vt2/oBdhk28d4/S0wY2id312NSxF3uwkBmDVj641pAALqwmLIyWxMr8Rk1NYyh+PVAGho7xtLBuALzJQ5SRfbMe7vGYyF2jJIBBgZgXRXxoK1XuwUoFnCoqnENwNigR1zLIYfCyMqYMw2QQfHa9MNPwcof2AwYrVxorsas/CqeWVqk3+7MP/gjLMbSjHc5BryNOMsC5qOgdMzYHoFZFPKmBuA2Ka2rG7qywrJGQs5M97GkNNjtWUQWWb2+aS2LKgN2+/vCcC/UWF/DrC//NrArDB1raMOu06NjNK5fTrmH++ljG/2T9gjKHOlgIdlgvKewZQlcsbSC8oyKSNiNhmE8eIaNbsAYqe5ZGw8koRUd/CExmb1mrDxnow/TC3iVcrIDo3kzsgZZIFVo7yy4fRIrJkRUwVh0IbrYmfD2vub1JkNi/xuf+/u3QykunvpwKvXl7m7dTaNgGJvF+9XqPOrGeNkp2TJUPyZ1pPVSTaxd0Ylw0IgD5NmcqNi7w7nZ3y8n1B97ok4sFIHkqaF5GzekbrKFY8MqHmkBSHzzXN6RmgFIyGaXShNJ1GpXopTxniQWNE2zJjTY9jTqrWzmjOVMrqcu1ij5Doi6Ht4auJcGAFtYnZ0RN7RR51YDZRIGwJq7owWJHguF2Go6QuFUSI3ZK1WjTI+iZUMvVBX6R9tx1stWm2gn9PlJvm10t0ql2SsVRdp4SzwG1CeXSv5xqDuDC1PzioWJnUd83EYZ7f5IoIMDJoHcrCQTBGrrLFrrPkHtnxOXPpGd/PlkBRiVIkxxOJ6FjUdiEKpDsRuoZqMgVmBGoAgGHyUYPah8rHb+D1be3//e9X+Cu5ui18w2ja9Z6zDqk/NaWYPDRN3k86YcTSA2bULo1E/ld/jpKsaLfE9MmbBjTwJ6g21Z1i5vZevLWH8g/fRJgZmze3KbAmGXqzvF83ojm2TerNRdxbZtLsRCDNlhZiwWGv2OkHTZfte2TJsAdmEi9EinxkzZsvq8rsD8gDpXf3Y5Lszxszp11yESbsDUfu3HPYLXgcS3YGZieEH6XkXiYbUlvH0T4Mx+wys7zMlZXxdtgyzvmsAHQV0O9OOjDGTZYO9fQM7rZ/mXQLYwVRNZIqFlu1tpVXP2q8OyEhqyOtY7PEZzG2kjKA/ljJ2R0Pr78kuP2PIhpwQsw6NGTOo1LCZdZSktmxIGfu2GdC15fk7at+fbTdwNpVGJz0vKVqwjteuY52gjKWMLs6MrPALJVhOTJrPsquxKVuNDU0Lwx1rwLRTz8IvdJlOtSmDYaNaFa/TPr8Wki0i9/1XKeMZlmF9WUDHHKXsK1hdxZdJbhkEnM05Rxt7zzwdJwtTAyCMDF5G/UkNGpl/TCljzfG0YSlaCtlgNRI3Z8ypoTuJ+WqsCHaFNJxlPoXtuzxLjZi3NgZlFmupgjuyYUowSY5oBMaWyzrkCbIziq/7u8gNsUbkZcdET59J2OByNJhFW7d3L4Mwwqsuwwx0zTSjxBD3B/5Q6fduqNa6UKydMzb/YNmiNUdGqTczz63Uu5NF8FPsY/aQ6V3aqIAsCh5NOntaY7ZjyyCgDNJxZvfGSiYNPkDaNPgwb1vxaGdvmKYdHAemNWYQR0aTvOYuZexZaAGzubhTEpum3epsbLAst0aPoMuyWChqvOtO9HNMIIdbfLxWD/R/Ays/JzBdnSXrdWF2S+SKdsKiscTxJjlmVG9WS9y3tu1yK8JTTV9QJ+EgAhN7DcoqON8sgjG1y58yRrXNn1duXRiz/t7IkgRBKtxh2/GQC2POju0kjHyf4ifb7f75awfsXwXsdzwbmH0ThiJBqiNjUhQzKuvXrsunBMze15i9fWC2BWM7uSLb3ieMWpAzkhNjBzdVzD8W+WJiZ8/zWDK5kzsOF0QGbZ3lEzYtZKVlmWe0XSeWjOvJXGrMVMrYmTAGdiFwGkBnuPp2CtWYBTdHDpLmeW3acRxHB3f8vrNpB7FpnT2zkEs2HTG7PFTBbH9/399CSj3VQCNSWCaSxS5THPglsc3vVvdjErNndsdAGgUW8EvC6FsW/bWANSMc4OsOBE1mgqycHU7ad2uNQWzDMt+k5iwLntbhYAsyvvygr7dQlyoeZiXqA6+UNDa6czVklEURpKeJaRB5IzNZDdZVj3JD6njP+JZWvF0jm3n/ChdFhcKkCWycQpwHeBK/RpOY7krHXh7Hg7FaUBmBmwG2ars0DFlmgxlImucLeLoDqulAqFflLGwnQBRq5xqzZdawlNb0ESLsPyxyHOmApx8/azLFXFQzeduwXwRGB5uHiJ6Nr5IR1G0jkmDWCBo936oAd7qGhg2gsmYeA7QgI06abzbon2OROCqsMuokqieckfyLeTVmyWZg7qwzY6bMQn3ZaqF/35NCvzY2F59HrAxhcutQ9uDoMgFYYLQoDoyZsSy7jDEAI8xyW2vLuPxvMHEZ0eUrybUEUCOh1xYgJp+BGD7dz3nJwg3ajrx6dm/21wPlH93WkmXmHyxL9JMasyu3xtNQamsujWdSxpLa5tfBKmmNmV3Y5fvCmlXhfSNzZiEC2wJ7ZkllWTT6yNmzrMZsBWH7GjOMp2JJnm4O/PYK++OA/YnnMWbVUfiqpzqPHQAzz9U0n4b5x9e+9rWwvreQY/Z5tcs/Y8NYqheADaZDo1HHHAS6mE1jkFNpfQsoZGljUg+mEkjf1Ix1pmwBXyQ3VAmkujIyg+aZAyO9hu+KMYhtsstYijncEPv7LiHEdGg0CqQecsW+/pZd1s07rNvhdzDXZYsdFLbvdsljCKbuckUAXdbY96OI/BIiMbUFN5zY/3GpVlZfpvVnHcvUMsEYG3xwuRYzdp453WPDlPhCl+RfBk4yzfQ9OZpUBmvsNEcADWIKAnExYYAWdg6XkkBsxGkqNlRw1pdaQVmHWB5kjPy+LhHWNZhzZy4xaiBRvSYaVJU2enoifcnD8vQcuo44eiKek3DjYFm/kdudWAYmysuzfaDvaCBz0rZchBiPxSIT9KTGb2nkqhGNx9hPJcL5s8bDJRyNTDw7IouT5f5awHKcZqeliOMiYg1cv0F190Yj63xrAixDdD8bpiBcpW8JU5aHPJcgYHSCcZp5NlkzD66MloIxEIPBHc8oLcvsFJxG/CcYy3LXmHgKSkFbSSj21RiMGbs6elQaopzIGHcybjtRdy8qNjX6gHzenMOOOp2A2/MYsy+i2P/2EpSlEsasxux2XmO2rUHLAJrBSmnB01mt2d6VcQI1UI2ZLYBsrTGL4dImsek1aYEtjow2hiluD9aV5QzZKinefeKho/4buwlQk9/b/85hPwt3p6AHgVkboeBngO14KicpI6Z6oP9gPo81Zu+S0Ue23J/+03/6UWCmYGwBS8jrzxT4ZIAqnSeSxi5dTCWQ7HLY69KI9SosWSRZ48HL0ntn2WGXNDZwxK/eJYcsVWwgrbAlfs8mwwypHutv6wjL+r34q0sbvW2vEgs2WCqpKxs5Zl2qSBJEZwasuzCSI6PLeoZlfjf70PUIGB946Nj1hjbyO08yzTwzN6xTBVilvmyR4NlqcOh+bhS55eSDZm2HND2FMSFA2ZMMgFpjQjZrMQfyNAmXtqnTVAbNH9mhxew83Zto/MhQatac1QDU4r5xXZnL59hxzuhJXw5/CJhOTxBwki4MSd5als9IrXWo/USieLrt69mnmhB/QAqYyTkRZZM+cszEuRFXhy05zhwQ99CuMtN4cRaW3bPckfHRg2u7cOxe1OSJXs6TmjNiykPOWX/fXYWMWL6QZEz7uXb+ovsiQp1MfI+w3JQyzqozl5qnKGcsAsoiA1ADa25L3lTHr8OBEYkLoyVM2c5Hg8ifW4ns241Ph+nRlAg66nOqIQgyIcHiwuirfLEIBAzSR/GPHEHPz3RlNPungPLTJ0DiVO4LV8bLP7tm0nzj2NgBms9ss7XWTAHaZGPPrPPP7fJjuPQqZawjx2wNlTayx3eUxjXXbU2Zui4qQ8YGJjvGLDJjCNMjGLX4+WdU2G932P/sYWD2oc+Ae76/MCum7ozO7H539J0Pgfc1Zu++lDGArUS+GEARYt1YkAGyXHGMgJqxkYe5+9iGmQW7fJYuJkYhyoxp+9gUxGV5ZyCWMGepM+NFbtm23kwAHIT1UtYMtdYOGrsTIog1q219IGki2+uPdZBU0dhAhECYcYbZq1evDqo700y1LmEMwKzLQTtYBZlhXXaZfNaVqbP8cJffSBmrzbIsxipVLPGdw4XpgeykdktNjbJGm9IDF24mC6oU8w9rNWbVYkHcAGIK1DCTtD2OeK1MnyUaUk+xcsZX5ZlwTnvkYS9njRlzaLz/kG/sECTXqU3rENsAs7Okg8ey6X4C/lnMHPtWbvfTsLd6/UN6fiCes94UOz66tsGYIUoXs5ozdmm0SuYgVBQ3Ppt0KyyMsBuxCWs2EgJYU67mRkzZbO7qDKjW+Wpo4MGx0Sh6l7OmfHSaB1NHwdEDRDHG6dMyZ/kSMQ3HgZVWBnXLgFck1sLv/5RBczLJPGPOMqZsC8zESlJbaM+qMfteFPsXT6WLS7A0uTQy2NqGT99Ocs2k5sw5fHqakJjF4GmuLXO5ltQ23xcLfVxIGdmZ0UOWWTfyiAYfXFN233JnzJ7akylGS9/ryu7CYzvNKcu8FtXoozNjJqwYxqCJLT0Fig74fQ77IwD+6kPA7JMx8vOAKkZrhP0zCaQ+V8DsESnjzpa+AakF+PB3yCI/GHnUWs3MmJGqUsu1fK/XWmXtfMACf2H3eFt93bp9/f7ZtN0fgb4A7joo1mU6K0YgDQLMBpAkMFYI0IGmOdnrO8kZ3d0P2u8h3ezgj7PcuqzRfVsxZnxd1Fvs7avCzpUVo0EeYwbNV8Bm7BrPBiCJrJGXy8qzTLGN0keL0Z0iN13e94DNiBL0Siwa7VDdNJytvQOaOrNhdDx24z6NlQvrj5ViSGzzVwhniSujukLueEwPDJ9K7HzU4niSRefpIZmSj3DU0kPoUofGIQOWXCjxa6ZLS5RBJaN8HsZfmiKDCbrkGAkRHM6B0GEHNiMQdyv/eCmLQ70IckzOkw+XR54WoYYeYY/1P9KBdjrP8AnQZwTC/IJjGgiB690t7n/aQQ+0Dw8hszkEs2I0vt/NQULtIjMvehwyawHQ1cBAzRczEK5UY5ByA0Z31xcgaKGWbAVnwGrYMA9DJjmz5P3CmiECtYB5Co0fiZlhB3nFyXYfdHq0rix7GLEnS2ZKl9WaQZk0QpvASvmFATDJOPPyqCtjgdnvxVMpC8VYGihqcsJYW0bujB1g+W1KGM9qyYzcF5klKwLIRmi1Ua3ZjUBWWYCY5pqdSRlLEjTN9WVXUsbSdBhlkTRWiZmY74/kd8AMtsuv0lPmLMK0GAxjgQXEqK3TZyZ4sOPJYb/HYf/9R4bOnj7yXBEwi3OTPLNdv+XTyTELW3kLOWbvGbMEmO3mJ4HOZ+DIlHFLllfHRk+YMFeTEg6e5to02fayTWHEQjA1m4WQg6JLPIARqHLNMaPjawLQvJtwkJlGJRBkxKwNySDb4Lf13xpg4qBqELjqNWfDiXFjrc8ujRX3ujKWNA62TM6NkyRzPM+r571/l3oyJ8zCpoXBhVH9M7opCNWYLVbvtgmWpuk8kprWzKbsgscnvwuwCEFrNTozeuLWWBMnE2bNAl2VJWhX2pErDMaxyty9942cMdp2VGiGWbTRP4Z4pblNtqVq8HaLVWx+4QOp0K/We0bUHQA0cBMwK+V9OSKqYFcIisOeN8PZe/PWezewEYWPbTOa8Jbd1cGQwUZ5oKlcNMj9nXwyJy9hhM0VD3TAN/LQGCo5tdsZ+HjLA/ORN2YM6zpS8XoPqJ4yh5Etxs/8iGYjMBsGHAFNzu2uHGePWWitaseW7aY5Fa3XkRn/duV36E2uOTNZJowP2InRZ+8EF84xAwVLYyYoG/3QTAZeGMiNwRSuklv5sNX9Lb6PEkcPNWWFKspKYp4PsUpYJY0lgLNYA2NDfAzKn1okhJRdZhuQBjUBKXGaEn2F68wyuWIDdmwGol3OwiIH26ghQq0gQbwFRWZsmQAxCCX4uCvjb8bNfnNqgV+TAOnUIj/Rje5qzcpJrlndWOtr8LSVwZSt4dN5rtnrShmruDDaYj8yKyEL2ZFM5mzCNLbInz7BNpgu/n8NSWTxXUW0xC9JkDR/LsuzdWXPDPjvOuzfBvB/vAZmYfMXA7GnRRtjhOZdZ7g+V+YfjwCzjXxRp9kGREFYrp4J5grGkjo129WwEbPVpZOZo2IhX/xeo8X1XAflpDHI4GXqxoUxzG/TeZ84fLpSzVkw/6DtGlnhd3fEe73WcYAll72OrIMhYs3AjBq9Z2ki15g517RxXRmxec6W+X0Zmeczos5Ht3fnheEJRdOxxsKWqSKQpYxYc5m1giutmaJO5lLyZids2SnHhFT4N3vY1HBGnpbkmLFtfsgvq1JTRu8rMkrl5Ca3VuucWeQrWKsEqRi03UUhdYx3GlWjVapKw4Xpx/5+xTlmBMP4+rIYCxD4Gnfqj/vKBrHjTBWxyMbwYswzJ9HXZGItYdWc6FufFoLhaARHRxfzLQpzjqt3YeNm22LzNWesL1wjHOr3szoBUwx3xhp9MMCnb56qWQIZsWcWp8/XGkD5BNzZb7a2WjqIt6dF05TuIHm7zQKmTtN0IFYIqA0pI8Q2n8FZ7/JUqVvCIl7cAbCVIbNFxmckX4x2+RHtrJb5FgCayzx+tYUNIGBGBGMh9iuAMTX4wGqPb2XRaM6870S+uEAhjxlnBTEjOlwXRW+L1Dil9VyljSWXMnZmyVRg+RAw+wLMftelhDGrOwugjI0/bteOjj27zAm4ZSDNiD3DrdWaRYfGFaBxRSSCpNG2UkYTMIZQX7aGSM/astWV8dzwQ4dEtMYTdN0XrBb4vgxk2KLwEMFQAG5n4MyB3+2wH8LFlfP0kY4k2wWMsc3A2ByX/VyZf7xLRh/ZcjspowIsrGYezFhlhh2egDdPMsY6AAs+01lYdRYeLbLDDBwuUkLMrDUOvWZJpYsDpEvtmYujoisr1kFZPzbiwtilipXkiK52+Y01q8y6UZ1YB2YH56KxsyJb5tN6BlAjeSO3O4BKtd/vwFVkjWkM8/ZekZAivV+65J8JSDMinjrRFOCQxb6zAg3D6jRvyA3z9gVKu4U9VtiF96LfZPTZAVeaSebiyOjJ/ZWDsB4BlWvHdz1FLg8PtenwDbxaPR1d8s4M0fTDwrwod9TjXr3eWZlN2HCoeW5Tj0UyWe4Pc3EYrkue1n1lhmnD3lUiJtli7sTMMDvlbDXiSx2UkX6P78PWnsyjbGljmLECoxkdUJnicpbTrec++mL0Xm2NZQluDXSr/f7swrOkhpTn59clbTyWQGSmLHysHOxYONg0MEHqIc/MNU/NOhhkS3RqYCGKn6k6Q2TLOhCD0pxVXhFkUxBft8ilMXvGXomWApUyukMlBWAIAA0PvG5H9gMQ6kaWGWOGJFjaLSnnKudSxhvl6WrQNM6MPdohKSrNXTSPiRbSLNEUI2fNQsEcVcddm3/8JtzKzwluKaUbcdgqYbQdSCPGrFyYfFjCwu2MQbJaszavmOaaxaDpaf5RAsh5rpTRwJll0/SjpBLGKWW8EVumYRSHCGB9Mf+414vVhQXLLfHFzGP5HH47IaOQ6+oMBfj5B+zXX7FmTx/Js/8SVV0zaO9rzD4DjNkzmbMAxDbr6wDsEACm29AaM2XPPAmfVpOQbrRxKCAjeeKuboyBl8oXNZtMl2PpIkiOmMkcPas3Y2DG4JXNSQhYoTk3cnB0ZbfGmQtde61YOY6DpYyB+eqySmLGKkMAcX7Umt0pZTy7B5CVopN0sdYN5UXLuZh/HNjnap3wWOkNMx1gMpz4/gNL8ZtaTJoETjubgHTGzCizDFHCuEgZfbWchK/azQsCynJYKQDLyHFxfl7jow1Hex+NO2pzaVwdGnnnfAMUPTk7flTUZCdm2LSsxVhu2ImnYygX95nQCiosoLgKJAaFRvlnLvUHPsHf1BlS9rIJWGhHa2R0LQKUthqVoq7Ih/NFXd27sOaog8Fj4sRovV3O0h4aP27yR664cELMsT1AtIP3ZT/nybcBtCLAbWlEradfnc+Bx4EitxUgO+vimCUTxkxdG4N0ka3zGagpUihBFhWZR0u6kBB3RoT6M7XLB3k0ukA3Bmseas8UrPlGTGyBMQvyRWXJkmlBzigmhhAjkHIT7xWbAHCpOWPmDLJ9KFCnAQhLWLOl1kyRY8KWITEG8bZjr057zDcU/DPRwrIAh9paZiDsxDa/s2yhxuy2D55mhm1nDOIlAjQrsFsZHFhJgqbrImlcg6YfkTJON8YO1NYwh0IJfEWSAbvJh9ZYWsKT7QKkM0OPvh83mRefpRkrptEU8dVgvxvAKWv29KE6LvrJILJvas7iSNi7nmP2eQdmGi5tauyxeT+MIkjaiKROrAA4EiOOyAG0XC4yCMky1DrT5lIr5pvaN1d5IrFkHTSaSCUZgFUk9WbEijGAc2LNWEJpBJYKyScruybSOirJGsFW9iInrMRwucgaRyYZuykmy6gdvsv1obVkru0dy5wN0tD9wkX9Eww/Epv8IWV0scLHao+vAdNp9ZJtchdtp7JjuiQBZ3obrixdpB3zYzoz1rIJlMbqzMh2+TztmQpsxiF7X8kqMiaVLzpVjzEwqzJ1BWfXfznQqDzwY4Hcubc11HXdL4gJBKyd7y6ME06OWLEV2cwY0kqMiC1ZXTZoXTu99G0rN+kALrJEkEKvvQshW/5z6HLtLJhnwQTRxt4totY7gTiPQzw8BlKzj+0OFlS+xkHV1hjGPrhgwTIkUShytnVVWJmA7KTu3dpPLeTClwSYBfBlIl+U94Epc2mkQykZI0Cw82mMVUtGAjkje/AoXsTIMWO2LMIY3+SbeWoUon6qHn0mbZNVlsgZszItNTPsMWDhdCDJgHaZT5b4wauFwaMj1F+GHyRnQA2tpbJjSMAYMU6DEiSw9Oo0OuMfAG5/3wKwLq3xiRlzk3BpNQSREOoqro2+C6G+YVhk1o2lfomSRpNaszVoOpMy2saV0ZdXW+SMHlwZSwNlGibdGbP5moVG5/b4q3QxZ5P3DJkt2WxZmqfM+/kH8BsA/DunjBnXOmePTJO7/NSgpYPm7xmzd+jfznHxhCVb3AuZaSIXRmyMPUJtFX3ubJYLa2Zq9HECwExYsgLgaO6RpbkQ9nM8wFNHfx2QUV1akCv2Y9DZJwFnIcCapIu6XmXJxva4dqwzexwbwI6L4trY59fjOHi6H8fRwSdnkjGAMwFpvaaN69eczq8lzCifowWThVB6Kb8KRgdZp9hz3MPqP3ZgRMaOec51hT4vTspgkO3MjkETPVbPApAaoOU12EqCgtcQU7R1/Z7U/z5DLG7yRSenPwQuhCVr0QSEO8ZOZ8AT38Y4LTJjhrxmiT8f9RBzDz4l91q9wAo1MGeNv7PazSlsyXXxagOoxw5+HXLACq6dqouchV0GK0krOXd4eaCGIX2uCWsza3Kxgo0t+FiZhFVXeG1HrLGzlbNFLabajfqtSnSeAdVNrFJmQ6Y7b6sBa3eAXgc2A+TbZ96mY2TxdMMOX8R/7RxaPwcOq0ZmKzzSKF/21bGzU/ox462sPfvgNEFdMDX/GPPrOtxhWCS7KlkEYj7S2gVh6aIRW4ABqScwM3C6GVsjcN1YJl9UhgxJ0LyP8Ot5DRUhmZQ5U2xjSSZzAGe3e4oIg64bJlvGbowsSCsl3nYXyaOthMEaIo5YmGY6QKNAjZ0bpR4LpwHTTzD7Z6McsghjtpEq2nMMQZLPmaFIrzMbxiBduqgMWlyP3aIzo4dMs52Ucb4vOLfK1/qyil7NhiZXZFfGQpVuIJhmwkJnIdJYZI2+NfTQejFLUk13rFiUbvKgRo0yx3/WgR/AprTq6YONw2J4eHo+HLspMXkPzN5RxszjibTMAj8BbsyS7Wq9tDasf88ae5bVpnWAETLOxA0QxGDptkCMmAsoGuxdNwBpr1o3xmYfAZidyRqljoylizzfhLkyBmwsQ8Q0BDGuU3N3a0BrMIwEqPo6CzFvI1ONzD8qZayNeySbkZBUkg98d2o0UQwWpOhMAs46oSQKQM/0iOSTEQKmbVksBiLb6jJfHzUwfBDObJGnk9Xk0Goe4tLY3AtrWWm/zgZUbJwZBai55S7oJ4xZbouvYkMXVWmXM87RvoN4MUOuR70vfYAzzirJGY1q0WyxG4n3q2gAn/ir2zSsmNbp3kBXXUfI22XfnQ67wYXTc2zWL02Gx7FheMjFsdd8+ahxSrz868r0DNOSDtDcqA+ZOfwRSCF2zZnV4+9m23GRIXqTh9o0H7HFmKOBqQFeazsdNs1ZQurA/UfvlpiJeSWrMY+doOB82Z0p23FZlDlUN9a530aRWYgvIGuYbpfPrBlbDi7sGBKHRiMJ48pJckWcA9JBjPJGWyBWlDOyRf6c5lDzj2mFcG4GkksblUnwhfsL9vgbcIYTSSM2n0tZ88oKyxn5mJhY6G+kzqlvTwbSgjtj4sSIjUNjb6mRXf6+xuy/jVv5OShGMkGpEcucFtP6sSuZ4yMyyDJt+ZF8j6cLSLNSxCa/pDVmuZyR6846eHECND4+FzL56IHNlWrLus7gNtQQtuFb43WNAK4yABaBWHkNYKZlE7v6szIfBz/fYb8RwB/NpYykpFmlCMkIxGbQliRLnytg9i4ZfWTL/cAP/MAOmJ0xX48wbEgcGlXGyGxLkDNq/ZhkmF3VmC3bJ8CYgUgGUcxwIVtOp0sWWSZPrLSsZfO4Hk3DoOn7XBMGmmcNePV6NG+ADSyHlHaBmDVuX6X6scJSSVmH1hQG2WO1hFByGaWm8HkTNixAvUwVWGNZVobnHol+VknjY6As2wqo8WKLz2FslWrL+rxau7t83KnDVzljcNwgkDYO0mOZk5vTsxyf1dVy1pyxfX4d/FE8E+zKyF36HHz5YOg2DlKoRx3Mydj9VnRkwlgOS3lyrxywzi0AmTuYqHCPlvUdjI3lJ4l07xKYR2liAwqDOeuSvm5TT3aLA08OW3pGgvdpRpHtVcLFpjU92dLjzjyh1iiPNAKb/XNgo1hBgXnczOHVSRYZAY3jfj7uTatd69mcMTHBbhs4sEmBtXo8YZAaSK6tY2EEBjpD6ExcWW3r7uAzrivsbwWq1Sga9XY9DeMFAlxq/bfMU8asg7IyGU5yibTBNuW1K7F2bHVrZAmhGoBwjtn92zeq0JksBndK7VTWiBOJo9SQuYAzySoLEsYiBodqm3+bff/gB2JTvmgUbF0YeGUAjQwWgXiqopSxSIdWs8kS0MZyRw2W7sDssN0N+B+DGXDQAegH56A9V4DU5x08/3ZSj5a4NAZWTJap6soo3+1mIOQUac0IpDZxLSeIFao12wVN50YY84rkYOkp4XX6rZQhY7xBHRfXAGlbfm8AlqoyBm0r5509xUASzV1dWSZpjHV24fv/6BaYfWPHiCWft+5m8TfwtnPMwvre55i9OWN2Arh2bosZyAo1ZiJD7OxTTRi0M/DVbepZZqhtV+Dksn4Gaks2GYO4DQAL0zdATf+ZyBLZdt4EmKmhSGkgq5tydEasOzreGKgRq2Vcd0bW+J5Y6oMYsVHDhhkBUMlQhaMFAjCL52MnnU1qypCUZ9VcxjiIKF8t8tXsQ7EdcOKL8Szq7CTMOXVidJHF1bjDVRKxq2zHMwklomU++CDaCU9mMn4PYclMY4dDRy1+RlIfoICrBrmiujUaIGtcH4G83GDMWH3kkWOBUX2TA9ERr+1h66h7K9TyxnZ2KDDd2C1kad0ltFRfxrLIBq7MQNVahRiz6dyIAZQa5OjAzModnHg3GbGkI1nbZXYHZrYkS9eYTTbwyrRC0EG4DraEdJzXVL0DvvvlPJ0n79LEe3uLSOAG2Ktt//j01Fk/ZyGzjH5KxkffB+MYro4GeEs7xkO2Wcj8tAEz72AXbM/f2LvbjTLMjMKlPQnm4rozzTS7YakzQ53StuX3aQvwYqHX3oXRQkrZLUgcNQltmjGYsGKcy8SANVaWqnA3ySnrv8UijosCnFji6DsfjTK9WKDgTE5DsMlXQEbjGJYNvPHpsIxB2+gvQ4NLhMycmu1bKePfi2I/P7BhVYBVsVgvZsn8yt+z83q0wIxFYHX65yeSSao167lmPoSEa61ZrDnjK31nhOH06kmOWa+mrAQEV2BWNwxZfP5pjRmWoPWYW5azYgWQMIzAgm3nq7yx/f0Sh/0sAD+yArMkLmRPi60SRjYC+TSA2Xsp45v92zFMOybMyfosAW11I380lR9KphkyS3w18MBa04YNA+a97oElgyJ7DLJAkiYyOBrgFdNFcsuYZW6LwqYtgdM7INjrvJhp6yCKgSrVhhViyBicOTOVnXmj0GiuYetSSmNDFDrnzKqxjNXuHVK79Wd8FaWYxXioRdIIBWcAMlWcujIqAKsk06oi0N7FFz8Pm+UByMEK33x9HbaTSepaPSRMOgmY3tGADN4MsSZq034SeCHWlcXOeR1OjFjkiytbZkOa6MHkY2UXuxhyhYJqSuIimOvZZU4RLInFhntyTlfBJgjU9evNTW3bfZW9NrBXR6bX/N2aDEp475mRpDYduRgSx0O241EsKTVlXY6Y6AKTQyJaV2bgkly3pQMbLO2pXe0YHlLj5k5R1uk5QWj/UuupICwTILdL/dDjJR3izvohmLVQVluw8vO1p58ZgjArtkzzpaPkCzu2djuiyBGUBbW6MTK7NnPMImTzEJ0bu4MebEdKEIVFB8cTHONi7oGNdBHIXeYn1RfMDztjdkOIN4um/7a63CsgU5XiSsZzLaBJ8ZqiNd2xfbLcYKJW8w+D2e+Cly8FkKN1ZVvWjOZ3kLUDVUP2eIvyx6xubJFIimNjZ8qWcOqZi1bKrDVDY85KiIPGEjZdEjapDkDGjoxsle8LY3avN0MwGdFqssmcAVpdpjb+KmHMP59LFjn8JZMu1gW0LUYoX3bgf+zAb8sZMwFY7vnYserslUL+jACp9zVmkdXyK2ljwphh4+TIDFgAYgLGAoOmUkfJDsvqymxjhe8iewxW91z/pcwa15slOWeXwCz5rMCscO1WX39juqyZl7iAvULbrGIE0gFWcHYkWWKXRlbeNtaMt76NSjVv3cmyf0/dbpeK1cWvgh7swzleneU3OKZjnGp76WLGkoXua+Iub1ckmWd3POQyRkDCpcU+n20muysjA7LMDMTVDKRTD7buNHyzQx4kVLNTXKnSCwLGWMao0yYUqzJl5TCnvJGPfBWVfhWwxqOYtdYc0NjJgKGyb77LJ0J0nFBAZDlL6tL5vuYsnzNyNjuQnSUbQda+lhE8vBEGYsFNRHBbsv95qYKTKYotjHj4wSszZ2qgSCxgYyJPx4L94UO4zunXQtnZ5SOvJdNOvTUZozF7hiQ8ywSgeRBYYQFhWEbXC9l83BYmbWoCTTgn17CwAbqiAUiULpLJi9wOLXt/AsZMLPEH0sKa0bxIGVfB4DIta5MhjwY5FUEsTJlFNiyzxWcrfaedXBmz74HZr7+zZFxXJp8vpzMos5wpqwLedp/9xMFxt85kfrTNL8SQldZBKEudWU2Yo2iXP4cPjSzxGZB1i/w7bMvOvsY97PP6FIBlNWVlYc6WLLIFdFnyuy4y0LH5+40O+y4APx6A2d8xw9G05eHZZ1gfDCagzCPaec+YfWaA2aMgzFm+qJJCljJyQDOSEOjGIC1SyY1sUmWMS82YSuwShkyXtwTI7QDWyA5rIAYMlogd3M0D2eeD2CoGbD0GwIhtG9b0zW2RA6W1/qzIvMrbkH1ydobsyzXWrksXSyZfpPkB/3imxoOofIRYWgKlue+dSBt3NWVVHsA1GWv357p+nLo0JiNVnGtWGygrvcaMdroDtkqmH+4rGANijRl3LIO7YNYLjRIqE+HSCjRMQMcKbrLaswmzeAx0lSjWRRzpxMclg3zEMtyvzW6sUZoJhDyHXAgg7v13844zqa0lnXcQAui1Vog1Ynz8LBWQ2gISVikiBlgY+2ATTM96sPv1U82wNteHXT2HYme0pHpwqouhz6hrYfCCjQY5ViIRykaVpZkwZO5hfVGYSvvCYx1APAeKwHx2src4ldPFC6UQF0lKLj6nF6kxWygY1V5bdHTEGibNAkJmxWIQrS1gJP7dq8qiwHECMgsGHwrCSuDqdm50KsRkW/r+3pFY5xfBNWh9e5AzfVvG206OrDITKGlklLkBZyW5ZZ+O2/B905NTE9iyIlQcIVAngw7fBEwbfjWKfee99owAXmDICIAdGzbsIDnlYhJiF2za7TwHbWHKdt/tLNoEaVbKgGIeDEEsrf1SSWCXw8daM7XJ75VsPjLLtLastBBpC3LdXUoZUlmj+gfvsshWUGkLyMwGjk2Ysppc0xX4uwD8SsD+SABm32w6eutOVUQXu20GHmw+X5JBic9Vjtm7ZPSRLXdll/+IzDGROypLZtSBV5ZskS4y+9UkckMKuGHkMsC1yBP5+xLg3GWODFj9pG4NynzpPJY9nvyZArNMpkhyxXDsyOAD4ugIZddkfQyylLkLEQUCGpd5O6fO6tha3RtyEJbWmVUsGWZGjJnnisfwunI2ebjy86SMG0sRlwYzDXhUogIPov9KRJoHIiNWbU8BuiEGTBOb5nn3hKOdI3xygU6W5Jft/7wJ/LzthInQEQOCVWSeVszZGcG/GW3NgfR3vVoE2paKF12Ow8we0xDpHWj3yPBSx9/D6IGFa4KbxGEEznyJO9YktC5RtCEbZLBTRQuY1YDrOl3DwDyRj1IwWnYM9Og6M7PLsbMU1JMdZFTjsjSS68G8Magm4xFA7rKX1WEijzSLB6BIorF4s3cQViyyYTxfpZBoodQh2tY2jFiR7qsvAdP9mtnlexWqOCtLlpkF2/y1NVhMQWyx17eFMOqHhF3jUxkj9a46QOv4JYRONxqwVMLEapZZJFTa4mdAfFxsDaJe9Y1Z2BrbRq58ZgRqTebnbJ+fuDKa/YP3C3vDiPXP3J5qFzVmGwlj3Tkz2gMgbVdP1g1CLFrqN6bQ/G4E0gcDSnBktETKaIu0j50ZpyujfjuKb28SJl0DC6yREDt2zODAkuG3N/awk1rrWFdWNwz41d89xMN+iwMRmOEpFe3owJuOFy3ZEfQse8+YfQYZsx3oQjTr8GSZxSxkV8PGwEg7/yKDzBi5DJiZ1Kp5Vh8mQJAt8ndGIWdsmiswo+Oc1rFJHRq7MkJAn++AILNkHB9A4dNFWLEuaWQwxxED1cwKh02TjLHXrS1s2QC5yNEOBzqzlJEJJMYyDEhckABLGc+cGP1k9NTf6NeTeRsy7QCynESsN1sK5iCFeSBTEF+ljGyVm6UMp6I6z5U7gS2LgCziQAoglnDpmXM2a8w4XDpCPJdtzjNRNYtL2c9a05HvrRTuUaVfJtUTJ/6H5HJXjXs2TWvLPl3t35ttaSP1e9P172SXKpk8bdEDORAne5XLWDFRQrf5KxZDo03ki+w2ob953rYpZ182YsD1rrJmL2Wh07P26jY6tSxqZPZsXYNLN9CFFY8eqh6NQTwyY5BDg0zaWOiMlMSJvkwV4EgusHmYDRI3J4YeJqct66QujvgL8JKanUIsQ7iAVdpYprQRWynjT4XZrwgFdoewZAdRiN3Y47C8xgwllzl2p8d6BshkWmrDnzBltbFqvgGFWLPNVoAWpYwawBxrzTjLrAbWzIYT47y2q4hZbeOAupMyZmYfoUZD5JeZTDFjywqQyjajK6PtWLW/34GfAuDHBjCr34Y0GyfLAQryI0tVBe+B2WcAmCXgC8Jq7ZY3qedCwoxldWbptgRwLSBKAVzGAAr4shNWzSW/bGGROmjaMGcLS8bLZUyVODhWAWaF3RE7GGJ7/QYgK9W9sXSykCxxAVhtmRvVjvVcs26QMtZJAdxIHCfTqI6adDaCqzsHSnOeWc3VfiasGqv97ITL2hl+eNoZehSMcXKtUH+6o+6rFtMR680qOZW42E0edMP1GqzfJyircacs4wbWGG2TEFkWFk4vxUIyRZUtzi5cHaCtBmlihHTKhiH4PNqQsHgiorRl8GaYyBh3JS24Se467J6d7SUj3EfocUo/2Qo8BshwCzJCd2BbKRVs8LPpUULauwcZPDuV7VkGuJLap6VY/EEIdIa+sM871Rak0s8rhLfgusa8LfYwdUgjw6pKIQs/EEhDYpcPYc0IqRgSJh0poHTpMFp4jyUAd0oanTLNPIA0H8LGQs6LKmnUHLN+9Dk1bJU0Qm4xbAASFIFZZplNQLbklxE2cnJ0Z8YryDZZbUogTTtwzK4FdjUzAeEiOd7JYht+kpmz20oj9p2LjNl/C8W+G4XA007KWKW2rSbOKUWA3ABZnI12lWNGgAuUVzYMQ3bW+jaljlJvZm4oVkbUMwM0HnAom6DpQs+BaJPfhxWmjPHW1lJFyggZ3EAC0OwCmO2s7zNHRgWYdctoIw2YPpEywoDvAez7APzhyZh9yeD+ekNm/tkEUp9bYLZhxbJ5iykIyQ0ViOHE8KM7OXYHRWXESg+Y1uws7O3ylSFLLfwV8G3qz7IMNBMgBrXP3wE3ZroIwIVw6waerNs70/pLrfXgjDMyAHEGfg3hOeWRVXFdVIMSE9arM2l1I4EMDBmxaf14jgin0SllkEXYhYFXFTfGAcIOCpc+yTF7lD2ruQgxgS4XDNniKqC+/uJgYj7TsXv49HAywbozIHqR7fS3riYWQYMBaXrxTKAKojSEzzYgWl5Tth7rA2yXXxMBpEoTV+g8hZTcEnqA1rqqN1Tal543f+zplKAJT9ZjidzPPW+FL5I73zws/eGHaD9D9dHnbssX27k2xh/mZGOjy6RthjSiW+PZr2dRnHrebl/+z/cNP+1wGAFFT8/8em5iOBZiQJZ5DOzCBqDxceTfmiEFZ4ZY56LiQf0WW4GzbX4Ebh2UIRVCuljm89ZXPt3kPFiKZaAZZkJEmZBKC64RTAI6FWZrDRmvd5EpYoODs7LSnUW+FmQakIdKU3fRLOEvpcbM7DdPVgwiVUSUKB4kieTPnZWrxJoVkTseHBqXWe030Na/V55hEFIKsWW3rbW+3WLaWC5pzFmiPozAUsYaotKN5Iy7AOl4lWZ1k3lYdAy8Bh4z9tjVmJ2za+eGNTJA8w86A7P67b6U8rKxx+798huY897nmL1D/wSI2QUrpmHQDGz8pC6NjT8qfVkliFpfxpK8fu34xm1R1+HCzhlizdmSY5Y5OirzlgE4kRZe1ZUFRkvNOHidCbBj044eKj3aTN8pidyS930AOMonY6DJ+8rAD2fMJP/cKxE7aVSwi9urn2SZIcoYXezydwYgmfv+FXPml0NNvDc1CW4U6/wB0AiY4Zjve8FcQDzivpgiTUt2xuNB98AtRVABF2/GmReVyxl9G+Yd6/n23v4ZGFvZs0qQkbd8b89R63O0eO/ynRePU1Gf8hbfgtTy8XnfqhP1+Ha8M2aF6spgxJiZgDAa9NB5/fe20DQRrGWui9zRtwC8pj1+QW56cWvmH5Mt6wChg65bukVHWbqAbHhgw73RF+HUEiZteTazJaSTCRAbmKZNv5XciN4Cp3fd0V2BLZJBNQk/66MHHYQg0VwyK8ao0qX+bAKzn4Jiv2IJbgvyRQJVYJOPJGA6yCFFPmn6XZVBWmTH6oOZZgzU7DaNQVT+2ADa3T5/Xr3RPl+ljPNKU+MPC/JFbxLG2tiylYmzZchjD8yujD3WbLU0CDplwnaSRZN9tg3LJtN+pcO+G8DXAeDJv7TSvi56fFV4LL0cC4FunyvG7F0y+siW+0t/6S8F9mcEceKy5izUfHVw0pkzft2s34C7HfyGnTOp9xqD6QxC2naMWDcGGOOKFHneTgI5ls3y2zqbtWHpgolIBrIShs2J+TJmEPuxEvaNgVK37r91lktAYogCqLWO5ToT2TPJyGCkh34bHY/7WDudN8ox0/NF18YmqkkUgC6SRq+CgSrhmQfs8s/Ysh3wUqexc3BGI+ZuORxki/xQLFenZrPSjlWRMyKxv1/8/Y1qzXgvyEJ/AzmnwYetmU4CxEBwinPNZsVYrCbbhReo+yLCexXq7aWIdWTBJd7t/liXfCOSe7yjHzp1j1WgLTyISvJ0P05SGdhePq4mt6s/tblHbiWf1bEp53p60Bcfe9lBz9iktYXpYg/DL3/8G1aiRq44OU94dKHg8C6OpTDfxDDYCX/IkMy2NSvK0RQBZQyfolzxjnh8gSfTLt/INh+be6Und0ZOBhhMl0+lhAmFZZl8kerKmE1Tu/zV6B/LcUl4rAck6hogDXIzQeJgEvnJmHWWOJnMcaRfDODvmvViENMPTFvT8ZkNQBATvYNpSJFAarLU9wuDkAC27HGAFsBaGwCQjDMTKWPBNAWZAlvb1GM5CXC9pUZOUWRZ5JEAC3/99NVDrVtXjzAYKu25t5MtZvb3O4BlzxhIsP01/VMA/EIAfwIAnvAl5Jrcs9pc7eEY34zfSxnfpX/N2c+YBtvJFTPwBAl9pmUyBi2wVyAL+1bHpAHVCqqYMXNtZ6+7YiDTAaKajBCoc5ZWMmPE39U/lhrS94pa5J/9YRppOGWY3epEhsOkA1OaGGSJuFvnB7fE4zgqgHIcB9p3bwTASqslA/ZmJrcGEG8EAFmyeDMzP+4rKmYzrKfWWs3sVlWd5augLrBm2ocjKaPVlU0bJoa+xnhd1ZllQO2xLrbUdxnVjLF8ycmvndEnW1U6yRxdA6Yx682GIyPXl2GVpA23u/ZYsLrR9LDZeRXeikOmOwirMqLY8vUCOEPwXIzWkuz/6ALAomgye2xo13bKpXWk8BHmUy3tayrMi9+38DgHWN4XhZfps+8Marrnsj4jgJ51iYWI0d03AdnmtoY4swPjZjTCE/lraKrhvIzRdSzD5dx6liqdYqnQtaABuG1brjmyVdITZIold1rUwqZFyggyhWCufv0tWgh4BnUtXUb/PQVptoCUnhgVu4sOjbRWM5BdC/i0WgBuJcE0vUbsRj1KZtU4tmFEgAnj5iUaDwbwxSptX0vDIMaZZitDlo+nyJ0mHJKzbnVCG7rs3GTMvg83E6lhpufM0KutTNmRsW4WWTNdxoRlM3F/fKge7bZ5b2lwdSnWas2upIxG2WWrlFEt8vuAAteWMQDbmeKfGXu4gMQ8Z+yaKXuA/UqNfK5kjwC+LwIzbJ7xV8Nwed3re2D2Lglq8jqtS8bsikFjsEOZXFvHRg131rbR91N5ogC4lKHCDIjmeSp9HEyaMl3cJrWQJ3ZsW2O2+yPTj0U2SXVeY19528R2jWw1Ng4hMMv75GStr+BQXRdTZsxpkIVBdH96HFj9AxiEjXl1pbqsin9GQokFu3w/D5l+xBBkd9tal9jU6HiyNaUIO5NWpZVexPSDdaAmQC3bCYsshIYuJyPdvsQiY2HLNHRac+Ky2r48tGC+t1QsGVkzTwSnw1J/J2V8u+q29//e/MnyGgf7gt77NP+V25QuFqy9f/OIEtzjMoM6ot+Tab0Zw7E1uwwpVIoGH2yhn5l/LJrAYJtfkunq0ohlmm/umKHeS7CKI063JB26EzqMSQoFTI+Sv0Zk3rCqTcepkVJA1TEGVrjIQIBhQ+1ZwpKJfNHZ3aSZYfQdwK27MhaY/cIlVJoZsqpsGCLo2tnrH4krY919LhJQrYyZyhJ3dWq3mXVQk+VqlFUWK1QRNiOiy5AymljL+yJltMAFT2mk1k9WAnusCGEjD/2cie7P7O/P/55viZ9Bf+Tvf2G7C9XImF0PSe4lGJ8S8HnXc8x+sgIzlSuqbDFhzjo7FrRIx3F4Y8ugDB2zUwR4ujmGib19Z8hcGDGVPLowZ31VHfCM9iizxu6ECTBzZQ2fCc4WqaXUoHXrewaByKz6Gbw2Ns8FULEb42ltW3KNBMmiMKxA5JKiqknzyqqQ6QmyMo+GH6AosJRkwmPSRlwwaNfSF0ijgZOwsTsYKxQ2DZI71ioIh3esCjizaJcf6s1onM+v9sFh2Fd7oQEzLFBqfR+P9xkcrgLGcr6uAOTiGLu1kTF7jZ67YD52T3fl1Nro9yP29HmgsmNraWxvHy1emCJu23rqgojompgfCT+R1ehWPAlYRqqpHOMZllv5D+73stQtrqTf00NbC1E0xYGb5SHSw4ExQQe8v6bBbr7tCtnCpEGCpT3IHKNIsQxL8YIV/dwlZLfgxKh2+bbJddK2+RJUn8sVLSGEINM9A2ukBBx535jZaGlOGaajvVlU+6Ws2tJPtc17Zr4Q2SqH1JvRDhQBa3dg9jNg9gtXluyB99ixbBuL/cz84xAR6LYujdwimQljxqwbhXDwdXdm5DBqYs7KrYSgaU7tO5cy6l+0tbFEyggBZP16vglTdqMndkmA2t7YAwMAZrVkFedOi2/494sd+GkA/j9P+CLWKHW7eOil5k29MPI9Y/Yu/eshxdLB9iYZYet0dNCDKVvLWKkzoOfKrrH8sG1vyFWo/oxdAzXYOTgvJoxY2sZs3gU7FmSOGfjS7zDYudomyzSP4yiIjodOWWO1g62eV9bnAbiR9PFGGWZDHtm22XPNBpqgurpKMtHKGWi11qPf0/i9u/f33amx1KtxnIx4qgnhVFdjEK/RF4MZM85W3skXe4f8Eoh58hBHpk5SazlxYuSA6cCUdTcTWxvddwoWHVTSFGTStvmBXBC4c9RjpmxlxTIRInsurnKOGCitxXIunpgsqOytO2S/2JlxArONjPA1gJrvcRsFFPsl0F2U/J6uMbnwXj9Nb4E/frGQ5bg9VPdtpY1nR0L3fu8X6bZpaLJhljznzfKRGHH+O/Ygp/Ylc4xiMFibVyD2f1SH5lU69ezUmP3u7HSwJxc5IrBqE25x7HMRxowN9UtYY2yZBV5uzXeyU2BuSjoJizYOS+LIESSMiT7TyiZE2yCm/htXRl/7rTuAH1GbDFmU5LwV5TTE898IBN0dGL+Kgi/cgQ9dT+zGuLxP5hWZt9SoXTBnow4Nm7q0Mpmwbrev+WbdjdHLNscsBk/f11XMyD6/14hBcs0wBuamlLFKqDSCzQeWgYMcmO1cF3PZor0WsFKWC5fL2kProfffbsBXAeAJX35bA3qfzxqzd8noI1vuijHLQIiAJWa71CJ/AKZHt7Vx+uvMWNm5P77Oe8kxg+5Px6cikSxkkMGZYMEU47mM2Q7kEcDr7eQ6O9MaNXZ87ICPpYts1d8ZMAbnnMPW89Tkt6HrXcQhY/zYVyfGVBVTAxJY4sFqXRk0LbnKHOW5U1cViPkkns46umEDtkGWFUmINDXe6upewlCyFkKX1nauzT7sRJNpYqHfd7ImWWYuu8PWG5PNAHFYEWL51omRpxcJkt47NHZ+LYI0bZUe79ocLF8n9/g5wcwPsU9qxIFn5kpfJV0/52uPsoV2tZ5rO41HLUEszWdbP+9tRp6zs8L47WLhdissPdU4kTPyZ74qQ/JxBsJd2DQ7qSXbmwnMm++ET/cMp5WzAVkmLNrBB6SMluabgZaJcktlwhicoawgLXhkqIV+icQTSxS13myx0NeOrNSYGXbWCJYwosJWecZobar9TCSjrxwAfiNuZKt/JLb7Z+zZcUFBak1a9j2uU7NyXZeGjXPjIl3UWrPOnFmw0++h01hqzaJ0sNLVWwnC9VS0mwxLxKw/E955X1PWt1voiXNmg39eR2bLtMelj4+ZhHRevwK/AcBfecKX7DF9xOMSkveM2Tv07wws9Y47AwECSmffUQDHGWBVQFzmnAhiXxiYbHPWLqR3zu+1rozAWWDyFLglgAgZW7dj7BKwtdSaXbB9pkCQGEyVPuo+L+8b02ZZrpvW3zFbSLJOPsfhaVcVkCXduBAiLQjLNz1/F1fGIwEJSr5VAmiesWeP/1jWjteQSpFjiXbS3MUuX3imkWNmQv9Rzz/VYrIZCTNrLo4Iq1jPJH/Kg7RRrSJAzozneWZ1GH/sks+iINJpTNMDJxMr4Poj96h1BDh7BoUaYptyRAuj5R5cBPt6WvfTIsqKYbTe1mHxcjD1u1j5BQZ5Cwzx+a05vcLdCFtz0LXPsQBTVBi3zV2VeZMlEOFYg7bjQiv6DGfNh4nMXVLoAYj5CNq+d7HupFLflxhy7eMjDxK08/cAuvVgaiODPHRu72MZdR6ZfhJHjZlJz97FYcNj7djiROGTdTNPTU2Y7QqywHQUfc1u4vk3+psisQnKPHVitAH0/NQghM+1Ul7RcGPMLSveYGXfkmVWckyzuDJ6lC8G4MWnDSe2+SmBqVpM+THYLlRavSELuZe0zz4yy75nrSWD1JjZxXSpO7usUSsP1Jxt6tYCu9YDr5/r2miRVStntWarXb6RhNHa3M791sCQ8WCQpQHQAEIt21UA9DpM8XqM2aOACxfT5f7wPXfG7Et0sz2TKmaDECoHqm8f+LzPMXuzf2rtzmBsx2zR62LEQbVm/bNTDZrvvkcGEkMuyQYUx3F097+HGDFm7s6yzRLL+y3jdcaEMeh6E9asn5Os1oscEnuTC7k3DgOQbuLR1YvN4KMQKC4zxsxT84/O8GugdCCm6Dsyb0oZ+WGYeGH4piSrZzCruSGDuZ3Rx6GrlNuXb/rz18SBRX//LCk7UH41qUNDLLID0X/BAETBoNjjc85ZKiXLKudU8xW9EFdzTBuclnJvGVs2GTPQmVgT5bLYX5dkmSiupFNSD/EpVNTvgTBk57+qBI5PEBKCiwObS51w57o7xjce5DPthtayO+/fr4E99tRy3ynmwC1K7+6OhpHz6ZnuXm0GudO2xz3I4pk3j9JE2wE32vYAsQNkirDRK6q1ei8Cv269y1UHCIZPWG4c9TDKKZ0h6n2UZ/m9MpSt8/xYFlM9DXHc56BEANNLYZKtEkYkskatkOlujkHj5xlEbnBrhztZcBjtwAs0dWwCvZJUqCHY59vCK8TWxZozI6bsrJu3SBgRa7syg0NjPWJC+ATsdvZ5h6uwloytC/m0KdUiuHSFyRa47ozZNCvA4U+A/cbo3ph02UMq96ZLf1a0d+h0rDVoyGrSsrwzqkszrmfbgDOVOwY2bZqEGIEzb0+KKW3kGjMngDY9HQGkBvkqX8wYsilZXGva/LVYstcz/HguEEuGDn6TA//8vcbsTBrtz5j+KQCz94zZpwLMUkbq0ddHgQwDPGbM+qwux2PGjCSEof6M2Z5HpJivM+/RfXuk7mxjtGEU/NzBZG1/RjVmHYjVzu61Y1U7C9YPGdWiuWSgjftPqx3sdWYL8NJ/BP7SeQOYcXg0EivyjeFHL93ojvLGbNlx//P27Ah1ZpZbb9yPEbnKI8lg9lOWPxlxNWLCVAMnjoyBGkxkjV3KeCAvlOOdWxouoK3faNlCP4AyG8ktToDAqfNVA/to23qy+eojPjqP/FbYHEOnp2GIyaOVub0+OOErmzLYrXkMrAZCJrA9fXR5b3rRoIEDFvLqIsit49ruQIhgAp8Ozhw3Hx1fC0jRA5/J7KwteXPjxjfO6x3X2+wj1vgsnkDIQrtgLcPHeynLZBEhYw+DZVM5ZNs5dwvsRAc8RnWRLh34CdRa2+vs57rL+7FtMr9pE00BvDnc70DLAuPXrp52cYzvMUUzcswQa8Yyp0Z9v9zpHFe1ZcAaKJ119m7gwOnpUFdI2liXxC+GcAWZyb4nXUQPXSEPzCqXbwXbe+xxRIYp1JERXKJUz3PLAijzfB7yjq3cOi3uUCZnHA0mwKXHcph+CEX4yl6hoOBVO0CvmNrrrorozNp8z8t0NqyKu0m1k5o0ZcEwmTFIjVrfvyp2/WMdZb4qIOOctFqilLFQTZrdpY1m1ozvC4VNrw6IhTLLejw6xLPU5d7odF8uyITzj8sNVyb79Rgxe0MglixbDHj1hC9aHJLQDsqVqN7pB1Dfm398loDZIwANFzVmmHb5Z8AsZcyIvWFzjFBvtpEaBsAmoE0t9VWSqCzbWwNmmUX+Zp6J46MRi2bEnjFDFqzvef18nplF7Hb8IpVkYJgyZAkQ07/iIAUUGRNmffVg7gEsFvkZGdXNDbW2rG6ggdac+YNYbF3AogYyuDNSL3wANrWTpGK5Pm9IGdvDsssZQ32Zb6SM1EkNAM3lvl2RO+V5AG0uTEMloeOZnPGA42lIGdcIaiS1ZFjqyaInXISLbV+Og0bwyRlvMFTtUeMiu6oeuCFrF14lnaM1dmkhGZ1laRbA3JCtVQ9zKpi1a+0bHYca2mhWB6ipZN/d2SRvmjHvAMQojc5rzCaroi/zicxGdl2SkT5JwfsyXQJaLWp9wxGUy6ntWQNF2SDtNNewcW9q763C6pTNziM9daC1rdRsgrI+iFMDa2KolbTSlD/YgelgIPsl1F0ZjXRzA6AlgVq2Ccg2YBfRHDltTTHjWg9LgRmCvNEobBeL+YeRGMzEpdFCDVmBujTO5Wb9jWVW+fzzIEJIy7IGAVXWsqhOqKgysJRo+n/W6S2Gy070jlELctNMIREarNOoqziSsrsMsLX88K/By08FGih7aq+BLSOGa1t/lnTZLalPw4O2mLVElo0/FwJkwaVRJZHq6lhCXdnMNZs1Z2ZlgDNcSBm1ljI6ifanmpHjIgL7luX9xey0PRv2Jq6KjwCtR7+XTPvpFfa1u5SxvA1L394ze+vA5/a2scrbXNm7ZPSRLfdn/syfeTYrlr3fySElMHpxRryax+CNHSEzKaSAqQDAtOaKlmOZY7C/17osRGMQexSg6TK70GoJeR7HUYHa7hgy4NsxdT1kWsCwfsfOWE49V9lQcM3GZs7AkOdALCvL6rinIjH8sBV0qRpwKbnakf3LsqtsLjgmqkX2oP6QaDgFeTI7lh2gRY9J4BCJdMpkx5ejYtDcslxeGIOlVx7MA7NWyCbElnDpullrFj6dXzte6wBg401nVmp2rc0qKEjZjw3AI9+xPLTazMjWX8PGQeGyxH21nmsEkj5+IE4j9BzAHDuHdQBxg6/HZOwXCRbDKZ8sKWR0WT+xiJBBBMxnXWiH1OKuaIGkzY5ha2g1OoYVCPVqvohubbGDIYDqlpvFGB+vyY4NIL6ctxvVk9n6Hpxa3Mbeg7yR6848iUpIe/4jKNfkjGhENHdHJ1gpkmMWHTQsMGURDsbAaE5SQ+ALLMjELIsIixnbCXtmEglmhHO8j/sT+uLg6UBKmsTKESNuJT507KQ00fxsKN42kkUBQ6rBHNkBhD69AIf9NLh9eXyvZLaUkknGktkOlJgvUcMQrZVbvncB2IoJKJNw68VGv7FlXRJZL2rParTVL2aDDzuTMpYG1250vdZl+M7eWhaZzsczgRgeAmX2LNYs2cZXDP7TZo7Zjhl7tHL+U6oxe59j9q1jzDYsmQKxh6SOyro1VqjuAABL78SdUGvIljaqzPGZro0aqgw1+biqN1OnSZ+uHZaRUH3fqKaM68A6Y8ZmKZ35Gp8flR92lo1kjGhsJPr5YPasyyo3TNmsb/MV/1QPvgOnqc9qlW9UjoV6d4WvRRgyj9lmQx2oKkCP9Wa+Y/yXz5YM4Yglvpp8GDFIgznjIrqa5JiRnLEHS3djkODI6JvjZxdjTbaMgLvIFTVEerXw4KZ6CJjuLJk3js3Sb63paUjirLn6bdRPeWOPrA7QY9RJHyYdbJoRTCcItBmbYHgCYgniGTM61JElzZ2ZT4MPvzNOs6arS+smsJx1VtbqwawxWS5AD7EcxiebdJf/eWTmBm6cAJGNT4JM1KY0cqybatzutWOT0xzL1egxM5tq7Zx34nhCp8GmWQSaDAqdj5EMJBgfM+s1Yyy4m4DR2v4PsGee5gp775B2dwmopZ/UnZUbGYEgYclsw57Z8hs06qrFKrBVzrgK6Ew8GA3suGhpwPSePVvjrnMwpv0+Y3MPUOxXSQgdUQOamgq2XOZghknv2S5/KU27rVln4FO3TQ2xDSjLXBdjnHewKBlU4Q3Aq8Y44cN5AHuuGdnmh/c8rU14MuAV7kybyftD5JBqBHIgAr+6Wf5Qxo5AKMske4aZMns1C6E+/zNjKaNJTZeHBL4qTqFrePS1sccjQGsVSz4uMTyTKb6mZHHPUAMfxhyzM8liNrypnZr7E+BtM1zvOgP3kwGYpQHQiCYej64jlTISI5ZJHEH1ZvagrX9m8JFJGU/ZLUQ7/T6/ZC6RO+MPBp30t6zjgm0bNWeUOcY1ZIWkiCMEO2HUTIBYkCRKrRnb4/cNl8DjJMAPQOmYgsmbkTfkOMsgDstwnRm/dtJpAQ6emLT7dvWr6MivtI2+T8zW+rIA1iotQ8HSEGDGNWbdejLbCT1uJj0OP8tP0pqx6KRXESVl2Wb3wd61cWezYM63qXIMhxzTWiODSG28sWfBDf1aTdga3ud6Xgv9XH2EKgW367GcKzZVUMnDsg/717lehS8PtxONRmTmK/hvrs01jc2LosLnHyRcN9uGZPax5c/bNGFgXbjTk9UGG0CpL7PS5I0CwhTIQTMWPFA0WsMSOStLZI55rdlaKcbMWRFwFp0Ye3fJN+wZs2OWsqs5ecSDAUtGM0TWmFnkW3Rl5JKpktWQEYE5MLLN02VZf5WWSUGZZfdSy9moIGWUWjNQPdor/2X3HuVVF3wz3/Rg29rmR0V0mWRSmbdjZ7kv0kcT8xCzjUHIjYKpp8yx3LqUsSxSxvslUClM2hYGF8iMPRYrHlrv49JECMC7YrOuWK7XPPPbaQ77ZU/4dtJe+7LE+tmwr/T/dKSM72vM3uDfVbZYAsRwxYypVX43rLiSMnY2am4y9LJ6Ntejzowm0zIr+ey7dgKQ/ATEXX0vMHhn39nlmLEdfgerBPy2ksakvmwBrXw+mqtmBpAtO/aJ1NGq4hYFOX4GflZJYzfQG68+GbIlj1nUf4ynsJO4qDPjjj0bujFLBqTYatJj/dmQPiZOjSnz5atGU/Od4g95vd8Oy26/7sMHO2/fOjHqaauLSLFS19+X+jLdUV8kjJ5W6Ixt1uMt3wBxotK/0rpeff98fWuC1wl0EDv55+3Tm5YiULuuVnVKr2y+6NJbPkNQnpu6ZBltEfBcNNwEmGmIFpt7FELXsChpJCA23SJd2mWLVT6ILZtLlcxVnt5bqMO5swtcM6aixzKkkwjWCmt3UtmyjEemdIbgwIhEtrg4LlJ5kpNJoFO/vlirM/MclI4sZzLVhNjoBwkkFR8FKxMT+g+ONBlbZYyab+Y2A5q7McaBXzBBD+YrT2NQlM1/5Du79wcxXv39gdws5CjRLITNQw6cW+7vzEG6CcihxiDTCESljBwmzRyW0/Wo5h6PAq7nmnm8DZYLb/87v2Da5ZdNh8AumDJ9ir8HZp8VxswShuxKomgJ47UDUpxXNqSMBLwUjHGNWZAobkCWJ/vzWk6Mj057pOaMWS0GmUkd2K7urJISMYDVLn1s2+CMM2W0WOoYctKwkTxq37wrIbGY4Ue7fFPckvX2gSDhG4o/UCnWQcNY3TMjIZWqusqTIYjWoWW46pQtCz2TukIXLWwzBWGZwfzRdiRFOlHCWMkJEhsLSsuO71lP1wQi7WMI9FR1GDaDqD0ETE/jj7rhK+ODYQfegvCy1jjmZ4/s457qMkSjiunxYWLqIh03V8fCx9qi9VCuRheJyQILh9XifnAsbLiByBxaUru3Vj/ZdIz0s2Wphq7LHU3jBjTDKybS+fbYIHrqYCnZCyfel9+csGgGWcb3XKbZ6u8+SBGiZjjLbAoKom4uiG98X6+EWMUVTfFXedW0w2eAZmLb3ZPPbosQUtkzE/85D/AwZkJlHUmz/FK3E0CWucRnGWedwGRgdUs6z2CGrL13IcOUI/BQa2w504wHEeaSmC3o87BPtl3tjGa0ZH6YlpiCpEHVu/lnTBuurTRPw6sTsMY1aCx5rLdmnx/ljP0ZchtXN3AM4BaZsszYIwI0e22zjh1QegS0PceA5jUB2ydRymgno8nZGvT++znMMXuXjD6y5S7s8k8Zsnteji0Oh2fr4mUJgC3AqwMN+i7XlCkIPK0j41cOsb6SQl5Y8LOD4RW442DoS9DW67ja9MrgqFnjd9BcEWvKjOWEoMgBAnvb+rOEzUsBGteipT1poFR9KCau8uk3mUiqcRlVASr4UqIJGQll67wHxvRXdFaxBq1lhXKe1JmZ1JstUkaiAZ0GxAKztrGXrNkTYZU4GGZdWdwzWzisXY3ZMbueA6CtcdOVxjQj3DMy5fcErWuemQHwo1IP3jbsjJ1McuFRyE49uwBCuPMDLBFjZo8D8HP+nuoJgwT2CAN2tb95Yzn0mvdxCQ9Y2qv7GaOxL1p2QYMJz+UXg726nd0l8chhHAHTIGdGkAGIUDBB6ijIMozy+MKV5WM/Je3cZeljha7gG5EqLGW0ZpvgYou/5pqVhSmb9X6G1Y9RWLKN/4TiGTvLaNYyriJ1ZRDZok5XXI3IjPFv0T2pNzOIvaQAFbc46GJlPUMcKs10INd5HVhrvyCDAWqbrwjzQHyfTTudn6zTLC6r01J7fkTDkiyo+igrINvUmkUpo4dBAn0yFBruex1G7BFQdAWUXld38FxwtvvOzDErF9Kjs1agdzbe2+V/hhgz9GDoDeO1Xa5L4UQqt8gHSW6XMWbAlOilwE1rwHbgiBFjUi+WAjIGflntGLOEG+nhmdNi6tBI+6WujMwMVgKNNwFU3RyEAZ66U2qbnJbN2MzMIr9uuBkKphYAhtVVPsMxo4Ml3hkaCxaYMKxW+YxvXAaHGNClHepdr9JF0uKeM2VKe41OQMWaBVBn/e0OdFUPtueB9qsXDN8yxthB16wyySJ5ccph3e3xbwmYq0PZ70lIdE24ol21X8xOsvbwnnJbMsdA7MVP0GEUzty6suaUkNZxx+yQcTj1vCgNLmBEXR8DgGbTP4sxBtNUYw/Mhvej0xlLEtBNKNLATNvaSY3o3ebvsUluncBNCG1Wpq9LKlsHbZwpDvLmLdExNAXDRllo1OBKz5FhcR9OC2fH9Sw2MnjpQIOla92MhSFoD5zudvlDyljoPaJqCFitAY16/wGg4YQ9XUf2CyACQ6P6Mdvmet3aXx1ruCVm+jGmN8s5y1g0NijJBFOaazwAlgA0N/HOKOvnUapFh/1ma10d9PAbkK1qwcuWgX1lk0q8txSLoC1FmQTKuFju2PW0LXm/6YbbSXdewV2KiIFtbdprf8cu0HdJwq2p7qzc7qHTdg+dLsKYYYlBf07g8zkoe4T5et3vvE1m7OzfE75drvJHAFlaHODA8b7G7F37d8EuXTFpkKyw1LJ9A+z6dd3dBLP6sykci66M2hZ/wG0xyy47zTjbZKPhxO3Rs9oxiIFIZoAix49rubiejNdvuh+ScdYfPbeMFdNrgNQA7NgItdSXZbd3gYoLwJDFaWldWSUHelHDeQuZDmHILnb5ntvpJ+qmGEd2KslWm21EOs89UleDHWN+SeSMPWA6IE2LRXRMCy4FcTsVwwq7LIjmqAObMGRbdSUQwFUdvosOwzH2ywJzdmA1MXacFxuuy7gfs8MNkNUnIftx2BhA1REaDTKHGK6PWeoBgQpt4gofqe11fsc9oA/6vgsrNwOzoxkL/98ChBtx4VpfFaO71prIcTz65WuBOYOvdYdsEtNDtTsKC6DJ18uz9qDuBJbDF0JzfXbI+eH9XJK23EOtSgDbPQg78KXtqDKDwLllejMo0st3TzrGO6t8D+YfDhYNMhyKMkNbrEEwQnePRbC4Jn8pzFsHAmyxH8mqGUMOM+82vy85YxbwDBLjQ3VrbAHTRoedr5FiUXF61tHtwE1Ur+eEgsmgXVE3RssRp4K2Q0DYo7SJMl04qT9bgB414SE27XVr4JLpWY1aQXtYSwZalzTeJjAr4Zn0Znlhb8t047mM2Nti287Wd2fMblitsrC99+zDp4/PBJD6XDNmD4ZKb+vSZD1+IWV0BWFk/gFQiPSJK+NDjBmBHtd1KMjKGC+dtvlcEklgB5b1GcHUwR5/V2PWjxeBNOs1Z2ZmHaAJixdcGTfsmW+ojMWJccuYYVNPVjcEygakmd9BGAphm27+Ucn4g3GMz7KtxcBQalgqVs06tHIukwTOar3InqmscQlhS3zxMyljbY3oOxkYNYjnv/6ZdB4hUMqDQ5+PGOlzs0y17agNht1GnZlWC9SEJTvbCoI9vpyVdr9iS30OKp77bWTIMG5LNlmzzuoPJsoioDHq4Pd8tLvSKZo2DHUAhT8zM6dHHdWX0OneNqsWrPXhtQVLj6Ub40YAg2zvwUxcywrrh8QcQUs83f09Joh5iw+Ao5LNPgNhM2bWfLCFTsyeCZfu8JAZ148ZdLuOEaaNMU3Zsgh0ozgXNN0Cl2jtd6FtGZEJXNTEjNgiXYSEa9G0YP8njhSLjca0APFNoHQma7y131yh41cGm3Y3/zCSLk4ObjWY9+B4N2HjWglYlqETzSLjCDfNItuRSyjRNt+lPKvYavyhsBPJaTDLsZX5CuZyDbMnTBFyVoiljZwb4CJlfFYvPHNmfHQdiTXmzunxoXU8WAN3JJrWs6Drgy6AWlBKGXb32l04D1t/ffD1XID0rVrfY4zZF5Nfgj/AkEk/5tMy//ja174W7O3fQo7ZWw2Y/qwAs2eAr9N5z8hCC1LGBi4qom0+A6ZQY0YL2Bm79Qj42r1/5PMzpi+gDZscsy5d3NWYSW6bE+OY5pjdywA9GHecASwFZwKkdZkUmB0X9/+AxaTXz47zXqV1DZzV2gbhPKr9nIwRucjbyZWRQeO2jamXPgMdJ5t0dWDcHZaaw5yqVvh1Ik2w4YeCQ1PcE5FlqA0ascAySu9b7ir3T4ywa743kkhmWWU1VK/ZBo1XYkAskU7VeoyTaFZJ8ucDhNTQCYksTwddtYOClu8zTmvPBGNHfl87Ll02hw4UW/7XOJ4W+3hD9t2vQaftOyb6Q1zP7AVPsOLB/vt+EfpQO09nVcDJLd9Cl3tmsqFlfvkarr2YelImWmt/HXlkiGCL2t6lpD1vrrYfppk1wrOOiKXpzFOpHrTnrfk49mjHHIj710Gek5ebixFKNTF9gQFfKEnPn0Kmi6+5ZsygBStAtYKNLFRCFKV5SkgBmonw0Al6+SJd5PwnpPJFSzm6aNS/OqaGfnlmnY+VWFpIprICtm7cFw499lluZyDWZLTdLpVeOxv6nRlIRvlZtJZ8daEtyVr1cC5F0q335/YAE5jgj7bFnjct1KUhuDkaboM1c+yzwb6VYOltsVxvckb2wOzpAG47Z6EH/gW7/Ap8znLM3iWjj2y5H/iBHwggR5gonLBUCxOG1fzDkhqvnZQxZcx2rowMuHR7CUhT+/ytY6POy763MRrZ2uCfzEuliBAESvNG9ADJFTsjNxhGZsloXgfhaVvIij/cH3o7xSnydB/uf9gWjSvo6R1icE5ZGrgciSc29AAI33iUq3giXfTsHnXpVqB2+ELtjY3tXBg3zoxjZxBRIyA2ky6Wkp7XwS3BtgqBfLEkYHnfmS9L5MEqRULbCAeNhh1OgA0EzHxDmRoJED0B8fP4encSdB9RCTbYnQY+mtQx4GcjoNIukl7qZ+4ExmY0wmBvWpe1Uui0O/F3rG6zSc9yIPQd7NQBWuaJmFI7dxdA1fbDZ8DzHaRUcimsA9x4uz47g+Vdc9jsTs1tyiw7ZBjHa7poODFitNcw83Zo2ScScKtUb2bwSoME41i0fWkOmx2cOrT+j8BkZwGtjlH0AXbd7tul/Q6/hVHTV8modI7aGIdfpUwZuYr0lGP1i1d3xkVCpFe5Xd5yitSXqa1+DJnujNkKTyzhmnzrXXdmrG1rx1N+ptpNVPxi5CrPiMlk8F+DpJc/mwYh9syOsC8NVJaJGyvLBIhXkJp/FAJqVUwx9LU8OK0mVvUlWf+j382Wf+76TtveKM9a5jS2469lCae2K5Olb/G/d6ktKzDDxzMsTy9o98fljHVQZu+ljO8YY/a6DNlzGbQE6FUCOW+VMVPr/rfFmL2u1FFcDhd7+o0rYmDMfPakuCaOAdww/8CUfw5ZY1+EpiOTLrKZCLaeiYsFP88r9UobtykzGiuX/lUmqmQpYwqFalKqdfX3nBFCBkhLw+saOK3h04oyMzf9ETbtpNlE7jrPnL+/zuhpjlX3F4ALJ+YoQ9RYG1SYtWZOO+UbCGhhHhuJeB/FGZ14mA13zPsFb2AHx9plgg64RwkZrI5SMC7DMk+UoJKzNUvaLMgqp/DGSV5oZPzSWThbahUj50QttXoHY8wQ0VcruHqJpYZsZ99pujo61zUEb3f5ZRX3VCNjkMmyuVcBjRHgj32xFCOhHX7K8u0mHLvEBxsWH1n3o9LR83VrIHzeQKCYtxjIldHuA9HdTWNgHEUBLh16zwvlUjgw9zSXZcXw6ZKwZyX9y+dEjjzCutV50Siuer8Xph8SBqz3pDIlW7eBG9llBVOmTqeiH/YbNiHTZ8yZXH/p2ViyKjVwWi0ksXJyHMAWjv3t3oUeF9PTOs1P5p1O4+/envnd567j0bbzX5HXGx2Xp/vx8tsAZqyzWB739rxnFt7s0Xeao/la4P9T+O4T8E0ZFcBa36B3y+zKNwfu4aDvgdlPXmD2UI0Z8lyyysxWa1uhZT1hchS8nbYzM/ggQJOxYM/NO7NdjVnCLKXrSOzs0xozki+qXf4Au2YWmDWdflFjtgVt2ptOJJG3LS646vGT0+BQeGUMGuEUd5DlxJzGLJrip37DdzEfSO3NkWlzMBsx5IMEzsJ7djAhm8luOclg64CALz93bOScM096ea7j9EvXnzq0NuDTVZ3ZQcG2UcpY298EWWXwa1XG5Xc1Z/HZ0f9fARzHsaFgz6YaVKE++lzqL7ouGqaRWLBDPwElCpZOVnayye3GPXnWhu15DAGD5ys3Eyo5C6SKDQtmpA+MNU+OKtnGgtIezKELL2temi7Hfe+6vQAAlKdWZyYJxMO3vYcIkx3+UmOGlXVLuluGGB6tnQ9NH0NgxnJp37Sl2C/lKQcFYdFc8ArLHj0cFheGzHz5ylbKyLimiLTRKcesM2e8WgZsC2BNiIKdo154EJkGRvPK2WAnEU0aBUzzNLfHQRb/+W7eBij5bQO0rrYl8z1Zh+/ax+9L/K6+X/6svZZhCjK8r3w+Ah8Zy72ykPIHQdtzgZQ/8P7TBIERmPkzWgtmysJd/nOVY/au/3uwpsxPgqT9ikGjzLNTV0YFigy62nXjJ1JDz4BTstxYsdS47bLLtvJFBnkM8M5cGYXF24Gz7C9zZcyy0UoHXaM/1RgzdWXUc0bdpaqgTXtdZlZ930OzajgvXJLPnqGASvOEJRou80mG2SCZeNO6PPegEc39FuafJ3Z6pVIHzT3Seur5zz0Z3kGnULZqubEHLNdiIkvetYs7/YRfDI0gDBiyUUt4kC0C0x6fa88OOnkdrh3oMjgnCAeCW7vHp0MtuqvXWc5HdXNZftaEnnVWPzUG7a6Ka3K9unbkfZEzJkCBpmu29H1b3FYsIG7IGk1KCLXGi5DFYPDOSqHp2h3yvgwexR3tN4twr14AK+GeylWAo5YMKRMIMTBUkGmUoN0BlwkIZJNEF1wFBctBPTmvVx6MiOeS/N0L6+Skk16yURxoxgJyKVG0/4hjKUa1lfsam5WQMqkY00o0rSGLIzd+UdXmoe0W8Mnirs6HMylr2xmBhLGurmyT2Ioi+Lf7AocMs36+ixCbWFMMPLvHa8yBWxLSfII6h2U+7cgO3FyyWwKCAhjKlsvWVyJ4WoBUoe8Kw8XT+rp5G/5E63qS1zIZMZfP9RazzFDg1e6zOzCj8un+rH5AbJOO+z4Cop4D5PyZIOtNQODZ+iYw0zj1vJcfh9VMh23fSxk/o4yZJRLCR15P67NwLmVk0PPGjBnnmEHs6xOglGZ/Jdu1Z7Bp24yzPu0kAy2TNt6ZqU2OWT9mHtH1wvAhCZcGuWGCDEME2JWT+2SpWS8ku/OoPX6l2wfHfmEFbAcxZSpHZJzTR+KqRX8Mp07momzZOjOyi4iLXb7WlxFwsx3SFMRYIZ8NadKz1wjaWIep4S5+etiXB5l+5hjoDrk8nBIfgkWVIk6rkOjneM2Y5ZRlPXK2ifvoe9him07za/7jOiUx588InGpn6GTP9XnK9JyzS0P66Ltag3PW8dEj5MrWJetwXJCGlkhJ6yMM4XVjc87Slry+SdF0lixLOSYmrPTEY09s4ujXYednKcKf6JK4ly7aECgW4cRAAdO9Y+20lplVpgYgOSgrgAx70HlnctKScq0da8Y5Zrj32Uv7zFFgRbPJfJYxFSIzx6ZKJC4DICPhVigDLDzgRqjSyaACyqYlyLI/EsvtbiNsmjCnQKqs76+YqkUmuJl2tb4F7JXzaR1sgQBWkGsSCKsto2yAsj69nVCnwOl2XLsJ8XhOs2LfEsssy59PV0DrTZm0T5Npe+767jVmg65FktshY5WOGMO+FD98voDZu2T0kS13BswYGO0YMZybf5wt5wzIBDjdO/ezcYZoBJKafQiYymzxGbzgBLCE5U6kjbsMNbXwf0jKSEDprM7MeHo/hhQD0MOiTYDXIlmkE5bWuGHjysjMInKZY6m4BmJBScK+GpUyzGoC0jqewVqOlbFnoNH1gGEs4q6lE7ncRWWCMS2n1vggkNasJK1GpuzOLbbCaCbTuDCuRvfFnfd/Nljvj4/G7SSL+XvH0WSMkR8DMNwXGa5VYGsAYids2fr4HIMXwRriEeiwQxQ9lFiX5jAwpOWFttvEdaPCPuRfnGyhPbrC013Pgqx1WaqJe/ZOncz32PfNWzKjC86tzHdHLgZH50vRT1VdyHswVqEgaROTj160ZALCxjLc+z+7kVjitGiBvyohdNqE+4qWHt2RsQxxsdaXZRLGErLNeAvREmZjU7IxLjQGWBlrJpEEdqM4FPLNYLv8UV9WWtlfx8aFmEMiOBkwKkBz5QzUDp9HUjSAzZFQf7QjOKYrIzNmqUzwKX9/BqBOl8/Wl0zzZP52WiJNVIlivc3A6CFN7NNKBGLd8MNnpEB/zA0A1gQkXc54mJQo5KKafayL5V2QM3btkUHL1wF1b5O5e4In5h/hwb/S9fvR8feM2WeIMTOsEsZlejIvrd1KwF0PQ+bx/SrgqwhbxnVVg7ViQIR9+HXatjPwlQCnR80+svDnnUX+rg4tgC/k9vmFTUEIuN0EyCndta2Fw2omwqYjWb1ZpswpwQsjI9Y9lmtUDXrm20tdLfUH40UdLbbGD6o+ka84kVwcSGx531hG7akTVs/G6WQnOyoMO3G0B5wmYZvUk3mshOblYRFpPkr2PPBQyaHSZIZibZk18w9v5ueryb4TWzbT0yqZJGtgs6f3q3la6tr1ZkdEKxRhEM+rdcdC3M0snC4YL3RBke285geHJx8rVQVrOuF4bWhleEm5eMMe3tkvsz2e3BfAFe3qEQ1AGHhRe+uaOS2yTRfS2AVe+OmVFL7rM5OMSd1wzpvbpJ11cch1NPHsHM6gMxGvSqd6SiQDE2StvqyUyIQZ1ZwZRL4ICaHuv8OCswwhl2OmXodRXOgBuu2s4csiRSxQx0UP/BKIb+PYa8t6dMiOuF7ORvf2XYTVwDFlxT2MH0s7hKVIx0wMNCGnhTkBnsaXkZVn3CQX7aayamU+iCxxO/HbU5QRirTw1CgjYcWYrfKTaYHlus33gVHTaSQ7RCZFLOtyfpPP7Xh4dFxM/9xSdcsAZ0ZlCSYDsfZ43dlVjdrrgKs3rWl7nTE2ev80GTPGK1ltwzLClRacvXXg8z7H7A1P+Ik8UYFI79DLdD/5jglA20kZFbAZuwf26WwGssles41kUuvHmF1bbPwz1m1Tb5bWnyUsnOux2NjjW1b3JTgp2Oar+QfLIbskVAO4M1ko78+oL4kd4jj+vrYztLnubkzaqZXSq1oF0/BnzWXm0bTOkJETI05IJqdts3TKru66mjoMUAKxhrGRM+PQatJrX/aoot/wqNkYO2eJ+YcnCFQMDB686e8KqVdMrMJEzjSrix0+uzFa8i3toHsQJcYu4D22gevx/aSc7lgIoYDkuTPNo+bHPCo8y/MSuJycUmTfQEk0l+e8sgZv3S4IqSOKU5YzaK9FgIVtW6LeNeHveo5byL2wTW0myTx9bTXD8bufznSA3Dy0Fr408ou6c74nZgcbRuFZIXDao45uMfbwyKSVx0RL0XlxH5hcEvhURMLYuJoGB22wZGqJ74OLK0G+6GRHEvk8LL/DhcOU813UO2NTa+bsm8E70P4GU+YiXRSMXOh0dCmjWcTTer1b1l1dRuOMKDzeiRJ3pAMyIx2mU3I2bj96WhPmSQ2Xy/ts2tV3eL7f1vfIDDqeTgw7brFGrIhM0QqxZm25UiI4A6eJF9SWQxokiz4dlavfwZk35uwQUJaxZcu0ndgEjxmL4IQ9O3uP11jX2TS5k/zoE/DJHAG6rDPjB1G23HvG7DPEmJ0yZQJ82F59t47MMKRg1pWFmrIEDNQMAAkIYgC0s8j3MyC1W2fGLGk4dwLIkLFTF9O0Jq8Qa9YZM7j7DdP+vksab2zJ39nFzJWR2r/cK8goxCRoemHIkmlAlzLuevxs4kG2+Py59nqzW2L+USmDmUfZ6Ob+SLHwkm32cFWuShWxhkpz2LSxdT5rMv2u4xlPEU+eNJYwaSd9Pn/eON3OK4SFiNmDr/ejqkRKTwDGzowI4dK65bXmDNsdvNeY9dwyCnpuFujsbOEz3XmaEBoiM+Ctiz/IpRrqmZzlaRJifG+Q0UBDAzeDbBO7ierkEGgRQthk0NAZprEPbR39klqMMYxyz+uwx69wCtzmzLT7znqV0OnO3zQkN+6+Pq34OV5vGovM4zUrHiY1zQM91qIDVu+/+3HvYeEVXdboZPTCfeh7jMA4ku2AWMuBm+2Z7evxBuA2NjOYkGRcqFCKM8sUCTB9AwmgXgZGPOyDC0RPVIEJiHOROEZ+7O6Q2t/N6OkM4mWWIdHAH1BZYzbIZr7ilADCgDT52QiUeRWr/QbMOundwRlj3/FZsbIlgFBxegrMPLJheiYc5wYgISGbpz39IaD8tusarl1dF9ejleR9Mi1l0kpk1XYsGMrKgJ2xZ/xX6cT2jDLWtw6wW2YteI1GH+P57Sto29WdnTFoV4zaMs8e6C/g9WSOb0vKaMAfeoJ/NAXDpnoki3JGKoZORPtdyvi5Cpj+yQDMlClLmDCVEwagsWPSMJSMCCxQBxQMqJQtU8YLibOitMkUBOk+Pypf3ACwHZhLt02MluabLbb1ZnarEy1ZYlRStOZMLfexkSjKspkpSFAlEVh2YS+jlDHJJjMdiSejDy67YkyzG+7y2p4FvnGSt7WeDB5vvjqOlKqyDHmgsz7UnWRgph79hDZ3tpO7sDUkFB94J30jpvfUeix30s8ioaNtpbozYhEpogkLuZ5shksjZEzV7WPNwEzY3FJv81Hr6FwPrNs78S7MycgwQwxejnijMUU+8rDuGVytwz6Ckzlo+p6H5T6dFYcMzynAuoMr/mlY314dIGyELvMR6I6G5s3nRVwPQ24Z1Tr2fQ7mNA1y+WSnBqQyznibpiEDSCFguQgG23Fi98U6os8IhLR8tOX3FE4C9cioHXOfbSE37uy+U86cofoKFJ0BNYvy+Jj2zuTwaPdofV9KrDWDogGh3G29ibBrIgsp2TMxZ84sVHspKDO6brnGzII+MEdIemcwAWSr7FLUfYjqbliuAFTvjCUirL8n74wBvoq4L4pUkbPRrKUvQCWNZ3JFCKKjsPexE24rcPPN+5BndrvlUsYLO/qrWrAzS3pcWdaX/fTMvKNSvZgyZ4EpK3E6a1M7RdrWO8y4bGPUxbVmkHozYc/UHKSeMGX1GUDtTYDe6zJmV5LK9np7gn1M3LPcNVQ8fz7Y+blkzN4lo49suT/4B//gFphlQE0B1xW7dlJjdrktWTbknu0AGtvnZ6zeRoLoJ+DMNtt6OPNMgdoO3CbzrQMyBq+y3kLHw5LjG6FFziraDoDuZIzyaNNul9XkjlKrsGa3eHcyNf5QcFaJqrnNgOmEUJuSCJe4L4vW+QPT8DjT9h5G7FVvYBVnRudcMwma5h1ibSZLFrch05DaM1uL8dIYsPgYcOKuGHTNB1YNDntOqWSZfLHCSEaFAdEgfJuCNkg0tdH2YmtBfBvgfrRg6PuxqASMjRR1jg7KJuDxlpdlbX4vsvKedtzA3B1MjZvdvc/VtLEuAWjMAM4wagyYClQ4DdF3oDDqrroBiRNkGOyPNZVsBylGdWTeM6MHYHCqnXMjkGOzSs1aL7qOR/ccrehMHPpxG3jnfq3VBmI7YKrB7N0HCzeZLg+q32lvbwTEJkAbLOCIGbAgP2UCj8/1PMb9eiFGboQhWmPi+JzarEkbAdOqk8OsmDWLWjlOOO634dMRHgQIZHLrtAB8bAmdLiJEvMFGnmD3W/TUy1HfszQxzzXjyjfPtK+ZVBEiaUQEYraJ/wIZfnT2rCSGmJrZNvCygtlbJoLeM5Kpf4LJsRpg64g2lCxhtKSVfnsBLzXafiZ1Yb6rBdswWYvl/YbtSr97O6kZ29SLBWdF2zBlJTKHpsYfZdxbh3Jf2TAuqyZwFurMbAVgV8xZAGT2GFDDA6zY1fTn1qVdsWa4m1G/aOYfRr80SKG5R27YLFrf8Mitvc8x+ywxZlmOWQsn3tWdaabY+NyytOLK7kxPzaSN3ZKdnBk1x8w2dvmPADQ7scbPAqi3rNoGkCl4DcdICbGTz96kjKDjVLqksTNlZItfOpCSPLgswDowYeLCGD7TOfcmS7oaHCrVHpDbybdc5I2uaEveqw3+aWa1C5GkZrG2kTKm9nWIK3EJZLPMqURsJTk12y0HZGr0EaSMnt/1DQ9lmWEjHARyE/tYRwaJkEaQMnZhYw2yxhqg3aw/4273KiBx6ZQfR407qnljsDuIMjSpG3IreyI9Zoe/nYcB1KKczMMXJmWnMWerQT1JEuucVofO0GCdVeogxe/sUwxHs6E8Ccb/SZhy1CVgOWbmMgvrWIt1yWIlvsQcVj1Ea6/fIiap+owKqJPR6+ubjFxdc+OyLLkBqAgIuy+7uh4XTrNjANzObA+X1oBopmrCdEtKjzwJ0NobgTDbVahmrhA0KicM2XRjBAoKyrjOs4DpmGtmxJhl6WhsUmK73A07AWe2yhNDfZmtpAqIaLFKYdK7vfGIn/nUZEDMtSY0y6lk+s03DoyKKoeEkYDJKKK7/Wmg/A347WfMGq4nLI6HanPvJzVguF3Xgp3WiRVixfRzWef3ZYxcGHeGHnwSwQ6V7fqrhlqo9MDW8UdmzbzO8UquN+ufFZApSFsGbK/6CXbh8vhMFu057/EY0/bXDfjTzfzDNmEkYjXlnhTXUoKrv/sMFz6/NWapvE/nKSiRz2dh075xZFzaQiCuCrhzlv8p4CLgk9rln0gbnw3CHpE8Xljqb9m7xNbezYwBGqierNq9Uv7W57VDeCZXdJJPmk7vAExy0JaaspN5peoAJN0i1JExgLFBj57f/fyIBFIaRJkkeSjxNQAZd2w17oq/aOL2sCTg9s62ujLqDgiVOCg9rK6MQ38pVN9yFydnPx7VV91mkkmUw7YVaqynZQoPK0kQ1ccxCiFdxJNI88wsEVzGBI2kw2u2LRbMM8F2pO/Ft3dg6JHt4g2S1N5SBNu35B9fbjWHrGc7swRyP3f/r+PeJnorlqAAF7qGHBdVNweVMJL0MWOaUkanJJxWr+XEprbMQr5ZpSmG0uS5bAgS3Ro91JnFoIKySBlz09pUFUg5y7voL8vtJUccWOGMb58qU0i5Hyw6QUIAWpCICo+wWuUj+n8AYhuZ7Mxio992ABXA00s4bov74sJeab7ZA/VfZ+/PWDCUa8ZsGHp0oNaYsVLOHRehr72u7L5Pvfwg+Fkp60XzOzA7NNvsqu5sA8oUwL2pqyOwr0v7lJi2GxwvJzDb/fPMXNVjq8G9rffA7F1nzHASKK2gSBkrxDyxpf6rgQZw1pYANDuOIzBqND2V010ALBf2jOvZHpL07UKoeXlpixP4TEGgBktvDESM6sY6kGXGzDqjpvPErTFY5GMNoF7OKdeS8Xs6bk6MWgfudYh/HEt5lPnGjV7c5dn0wyh4ehiCeMxjXsw/kGAc5ERXas+9Y5zUppxkZOtOkB4DYvxhhC5xm4L6xSYfAtjoPlulMI6LeNRqf7tjsX6nLvCJfRXvwKsAwyK/eypWmm8y/skVaGwKEiSAEvfbAVlNnjw9XcNQowmgR1EYzINoYzImhFUDWOgmFTVHXr5jvsTIY8GFK0vlCyicvwbr7SZQYqEuTOAKM3/Gx4EYRF+NzqPdxwOZ1YlxRdzZWJHkpJbh0vM4yFEXZiy4bO6wcHLsbJhfTgaNTS1ANYOehYwrs1WUeiGwVdjq8iZUDYOyVTagNYJZ1hqnioE4vg7Epnwxqxq7BcB1w42WBpBEWMekshiCkEHpFIRJzFfq/bbJaB6A7JhqQKuRqCx0ny625pOZrQTn9kqW0OllRwvowZAxZoI+xw53kHNQbdqtwvB/ht9+61oL9ki92NNrMGK36JAYasvKWjO21IvdVoAWXm+TIawJMAMxhiSJdLdZG14jKFMD4iF3bI/NwwWU2cw6W+rONgAsc3Pc1qX5SXzoW2TUHmHawjKGP+VAfQI+XB/+dmXpm8hr5oT3wOwd+rer6dq4MS61Ytl3ugvXBry5hDwHx0FWHlDGmS73qF3+IrXU942dW/LPkNeTndWaXQKwMzOR5P0i5zSz0mrOhuyz1rtokCiyhTXkfVJQ+YzrhOvcAMmFk2FH633examasEpQ+HX8Utu9vk2viekHDgmlRDQtrCJh3GUzG3Kjw/MDIR9G4Yy4MdYuWeRatNa62ovl7P4ahgoxw6b5qQKuQ0tusq5OJmfjaTGFyoNlu0kCGQYg0xozD8JFBGBmwzxfQRqgxvu2JKR5CiVNBpKeTSB9mmzTybr1BuaB3avp8vV1N5mAmfr2duXND/jFJFvAi7/eyVPW+/KpnxU2EWMG28sag+mHgjJfuL8IZAuQcFbW7OttALIyXBknqeeLxUclqaKNgOmV7fHAmsX8Mkt5O1vYMzXiCKHSHH1LLGTwyihCPBE1ONIKiKxk48wTqLQ+jORzOiCn2uCClUHLrCXv4KtpRBrqKLzDN4fjr186H57VkZ2xXHiQATutIdN6MVut7sefUYq3WGwyFVpLZBC93MFWwRIqvbBbvrozutjnZ8xZypbZWq4dKgVeE1xlQhU8CK4eBmFI1/uf2l3U+tG8QJ/TlcukQPb2gZnWhL2FHLO32r53yegjW+4MmNVaR55Mf891U6CAZ1DtltR5Oa+H16tGFcdx0I3emJEKepHEmTAFhDsAxyBKGC3fMX/UlgxoPvoezd4+AKRNGzlgujBQ4xq9TlY1aePROq5l3OOIedP3zEIog0dt4b6d9jaqLDOGZae5gCicsxFwj14AgYyvEZRxJNgyKubpCFPKoEHaZNktzh/p6HnSU9FsMQFtqcWkMF2L2N3XfCwn1MkUoEabuCeaBo4M9sBT5ZINNby3YetRw7JOfFe0ZvETiWLPLtsd8j5PgdnzH0jZCCKaq6KdLXE+CPnM9eQJXA+Pktyt5S+/mfExeAvH7y0smy6yhKu93mr0CEgvPB0/VmDWTT8GXeNagoXo3Ifo0LoJjbPAi50BDBP4dIdZR5juZAqCZghy/+TBmXFFSNF4XyvakEIdHYJbCCffMFGSX2aszyzSv2/4IDP/sJQh3GfApQyfYMbQt9Vcs97gYidbKkA5JGy6s0ed9cL/Fbj9bvjNFhYLVzVj5QF2rCQ1ZJozJm6Lo1aMc8mK1JQRK7YDanVXU8YA0YbwozNltQiLZXFskvPMOkA7xAjkEGB3JEAvlTRe5KDpd05z0t4A1F1Z8yfzDgD/NwdwN//IHgzMnGUjtJZ05fw9Y/au/WMwxPVJnaThMOJpEBhYMFeTEDIKAa0HBOSGfLEzPw1U9dt1t8cfy7R2VGXIQG6N3L62DyZgBxuwhM1yp1b5ff/O3iMJeE4cIblmi8O1O2PGbFeXKXYjFg7pvrFMtNehtX83Cuy+IRqpBNt7NvtoC9x276ndN7oT3NLMYye1DyvtetTXrSG6Shb6ZQVnfWBSMcsYOZM8ZsYxbpG9A8msXKaHf+omx7dMQ3RbREINQnSYnKCd2lLZJmCFCuo0rZtZM5WNpTIGrgpjg3qE92zdwW6MHW7dEsZs9+iyBuW4Fm2KDJ2Yhe7kGGV4CzDbkirZcfBzHomt2bst/hlT5Jvtu4uzJUJJdjDTTGRuWzlk8gz2tcucgrO8Hm/tbVsIJ7i0WT5hqzY1YRtzmnC0wkG6qvlTjnVdxOHpKkL9WtDEqcGHr2YfQTnkkTqyZNoWoGWX8ZREruAsGoaoa6GTlUif6onZhwnMscSz0E/YXwh26QHP4WdlAuDUM0Nt9Mknoh/GYH4i+HgHzrABZ1uDJ1i0xl8SsjdrH/RfZ8mOdXn7AgD8p/dbWcFdmvhA3VdgtG4ny902nxXcGQG2jCm7MPWoBLisrGdAWbx+HNo2/UauyEYDq7aRFvr6p6zZIazZAtQgBiEZg2bnBmKpcYjta9Sem532yHfp+zcD/jruV9GH+8FGLZLcSQfsMwWkPvdSxgup4iQ6TqSEAuoCEDGzADSImarKrHWA189NUie1DK5LOPJDzBpy18blPda8sQUUCpBaHBvp+HnmkijultaNOFrH1Aj0cs0epG1BvohZC3ZqWrK5Rp41oA/yJbTNmM4AO4XIHtLMWQNfA7+wJ3t3ZaSbapA0IrJiISLME8d5T/p/dsJWcNioC0CrPtGlmn2Egrlj+kOPHcG6I6q7GHEDZDLCyJJdI5mS3HRLI8OlNhy9rowzy6Klx6wts2GJH70aszqzGCod44adWuML8Hh9xuzz8e/d8gb5VrfmDbbHjJmRCUihmrL0T2zzh/lO7sYYmep4q5kGHi5SRlvASFZfdt9iWXg0DwBsl2u23h1KAtBODT8ylgzkwggsqMrYEKTSdN9Y5ZN5JjZMmZ3cxotlfj+cPG+b4E1xLuEQ6ZK4lwRJIn4UsP8Yfvv7Amg6Y8qCO2NZma4AuLhmbAfWblITdovGHp2GKicMGeSzE2BbzD66i4vN8cYSa8QelTKydX5Vq/0zI5AHbPVT02c7AWVYUzjPXB35+8DjcsbN+n/Ygf9fA2YfrCDMN1qTXecmMmrvgdlnAJgpoEIMEl7AFlbb/EXm2NdBnauxTK21sqU+AT0GDlXXL7JD38xXqd4AYgJq7Io9e2QaSzUT6/zQwTwzMUmYQVeQRHb6zuyabpP/1PBFgGrW+V3A+CUw82SMnTFMJm/k2rNMASj1aJVKvBbgpTlllVzO9Y448qBwYTUvrJn7BnUmNvpwKaij+V3KCKxIEgniVHvJ4PIoidkWg6Z3DwEAi1SRGZdeMVYW/ovBmwXIBqlWm3Ozre8/BZ6r1nP52mtpEHOnytnP9qSueuccc7ZNFTA+50aN11QSJvs28svszbbzVhq7/9ZiaS4T4vI72aZOd6S65JLQNAv4ctHRcfqxJwDFl/NgGxCx2n9MBrPIfm1gAAGzWXl23/cbog4TG3A2a84KCg3a5G6ufDOxbCCeQNZCPJU5+BZAWonAzCjrmyPmtjiZmDXttqaurByiOZyCWNfOlKCtDoxDvpg4mwyHRXwEt798B2aPGHiUE3v7kgdBd8BWNq6K3dijUiB0ZuhRNwyZZpQtJh+0z8LIDWOuVj+eZpLtpIwUNj1yzTwHZUdb10Fs2nECzLKY0AyMqUEIcC1zvJQ92mvJIP8S7m6MeIJ9OG+GS6C0Cz/MTla0jIEDUd/nmL1D/5hxEvCQTVtqrBh0NUCSfo8ZN3YbtJFwisKyPAZmmM76Z2CKQZ5TO+wMUHUgk9TQvY6JxwCHmZRxU0cWHBOVQfMVCd3a/oHkiRnoC2CamUaqSwtSSgXQSOSO3KOR6USu3Y2lw4CkxzoEF9yyRBdpKEnvJzTmrGOZKkpAfgio+g88CmfxlfGLuuDHQSiPyG50Fjk8usyCOHZiHGMLWcC0R0CmriUVD1YU26bYI0OcLFuM9+/VBMQCeOvcVwk5ZiZSxvXRw/HWGPYhbAYSu4LTjzCaf5zaz7tkai3LZdKOdVqwInEXoEuU7BmDQ9dLZmzymDn/DmzveSILtuDJ89m3AsCH0wL65bYoRmkl5x4ctkhVU/Ekn0/3FLQzH4UNT7UeIJb+ao4ZorxNZY6e0ESho68j05aMZkdpownktADRMut8Bm6cOja5pm4uEpeyAM5sYfAyO43V+CM1LlTHQzUD4ZzmrO7MJ8YpctghKtNCtvkaXQHBy0ooOMvqR7gaJBkbskPCjjFgG5/J2cSadPH+7weA8t8bQOZZdva3Z0gfhTULtWLW2LasXszW9535qpZb4BshagZvdP1VFwmj56AsPOZcasb72KXP9x2cuQC0nalIahKCE3OQkwy05amWDArjARYMz2DN5jV0//cE/4A6H9mz3TbF8Nq6cRP6XDFm75LRR7bcWcD0FYsm9VEAyRczkwwCBZml/qgJI9DDdvvBgl6B4Q5wSRsVCJmaYBAasWz/MxmgsmRyHHYMmSWSy7T/wkCu57tNo0Ybph7dxbKHQG9kkgvg4kBpPV4KxpJ7hiXTymGEVyDujHK34UxmrivzWzIExQyZrcYf4b1v8Ixm2fDIao031qVfpX77WVaZyzyTojnzu5RxdLgrPRFq8qRi0JXdvZMdujCFmNHLs+PKFvl1CBMnG5a7M7LCtJKUMSJrtQrRyjYFjnW00+L5q/UzE+P1xv8esrD353zhU2vPZyleLX/ql2j9V1xMQGwTPu0rEOc0Y0d6jkygF4sGS+OrDqhc0ci6A8N3sVJCmadxzOtnF+dF23obYgA7PcNFUPoCyLJCur5smSoFa0WqoWSLcsuMTkcp8ZQAed63ZSSflpJBqLTUuSRZeJAOzJrVKREcN+3BmAHA/wNePoLfvpzb2Yt9fbCzL7nBhxp6uLBfQarYv28RrGXZZcyKHe2EWEJrMjgsbI9/34aX5nXCDBfZ3vuFlHGwZZgyxiFprK1+jNi3Y2elj6QO7YQ5qxdujVvGLRlPZuBWpQ9S7QLwxb8PAPw/JzDDB1grOi/ECNnw5fxJvJcyvkP/BHAFtktZIVBdl7oq7uqVlJURIMid/6W+igOnxWBEa6g8Ya4gEktj8Kd1Y5Bas0R+aFlotW5HwN8pyGXHx4St6yD0ANWrsalJaz/nmJkwk2koOAO11s560s7hvqg1hrvrCNECQwhznFbIcm2YiV97IKdqtN5lpV/l0fwq5Vk2F/ISsYzZqkZcB6MSOY+RvpIHsWpt8hEQk6bujFW0l62B6R3bozlIAIojyEkQMBKRlG/5hhV5O71OgFZHLcy07yhhLbtUNCxrzQMLXMRo93/Ha9SYbSHqG+sJ6fPWZRDYBXu/7k64KrHs9XfMRdHllkRwPbC/ezHo83dypxydh/KMEbbXO81m0Y990DWdTcNqCrLYA9KWWP64ESqCasgcuetgjSTTAGgVGjBtAszWCi0Xsw+T+rMMlDi1d7HL3xR0LaYemsdcCIj1aJSOYXwuB5psFvcGto18XjPOLkcbQBbwPtmvsJPMoLHfP+2MtQyzkGM3gNl/Arf/CH77pXu26/Y8a/v+OYCvQqOW4pxotjf4wKwJm1b3G/OPpaZMXBkbUBsgq07CznVQ1VYwk0kZncw/+P221uwsgNrOa81U0qgg7jLXzF7PFORMDOOG/wDAX53AzH68m18/LntwofbHlst7YPaO/dN6oiswwWDrBJgp2FoARwKOkMj2ilje1xPWKV0nojzPHjQ42QKpDXumeWhbYJbJJXeGHA2U3ogh7L+uQnLGvl4+Vp44UPpu3/t3Ie6QYGliwjyqEQu9lnDDEbYsSAVdlEXMiglF4930qsrNkPwz+q0nlGn5avZxp2hjz825LbsOIXfzTKjAwV6RdPFQLabspPnUY/IwH7CpIDbaIbnpcmK3m+h4xi+edsuIL1tv4dMf0YPYsCxNm5JGyxNjgtnHypIxk1epKsiCM+Mdm1ZsxgZOU68864i7qypwXduSM33iVLhtly8Szdehp8LvhgfG4u02aee5K6PLiEpdBiJm/Y219+7rgfPlsPlDx3VCFAld8JPGuh5b5Bpko306vWCK9Ow9FjhxPRk0UDphXewsTNCFoTojmBgWMZSyBRdyjllWxWbbaZOry2WN999reeCKZWYq7JjIHE3RpiDSKzt8xsKKkyGnMeuOLvfvfs9O6T+s6DKkaEsdWmjNE5/2PwIvv3SpD9uxZkZW+OqaWMTWnk09TOvNEgZtZ32vACyrJ0tryuKfu42asmDSlWWPJbE3y6tH6/zOoAVnRg2bThwbj4xFSxiwnZzxSgKZ1qUlgO3Z1vuGP8y/tSf41+89mCLWzNtRKk/u1AHzfK5yzH4SADOVtZ0yMBvW7XJea4uCtirtVHmhJ9u1HZDi74h8L3t9jn1+odBn/qzHNZUvJu6RYRoDWgJsAXC1+TVzzsykjBBpJzY1YwnAXpbziNLvUka5M1RP+mPdebHdwEMSGiJb1rEMl2UddQ2SXgAZonwxzGc2rW6ex9zpdtJnjtBoSM1Zdpslu3yvVNNA1F3lRoKqlumAVaz1ZEoZ9qec5bAk2ib4ZrTOEwjlweyj0qh9N8C3wac5OTM6SRvncVnBSrfSBwG4CNIcwHHUpdN9CXTO0NDACbavudoVSj2AslJj/gfR2c7g2C+adbWSLFUgg0ixY65GMsBZ+HNmuL8cPrEvt5Ox3pX39ctw7ecNxxZx1PATpwlPLPNB+rrEvCfpK2Xwaa0h676Kpc1zYsqixPgeXcFixwhjPFStlQTu9XatAdPqJem4Bl+yM0EFGJrm8trNP2xzSpAnGZi875dssQ27zIVyrhTgzu9RmLNQe1YQrYNLBGbAD8DtXwbK00NM2PYz1X2VE1aNmTJ2UMyMPVJmzFaApvVomVeot9qysj53U1Zr9+eROfMaGTSWNPozmbOFAbsAZqeyROSujM8299gzbS8B/FAEZvjb13fLx++o7xmzzxgwOwE4wOrImNWV4UQaGTLPpN4rVPYI0+YPbD9towRFY8O0DUMQnoc8/0xZOB/uGsm8pB2nDo8JEC2ItvhV5kFYLCQsmDHbJSAVm+OpNWVZbdl0hzzpJzGpFD7T/AWUFWHXapQcKJbjuC+XzDTuMyExU9vmVcHWyl4Tu0gTgGaSW9ZrEQbLVQV0bbSZTAUuO8Y5A74Rb1ngyUwMP9jGe9pzWBAiqgNjxMyV4NMK9Rio7WrMMiOH2CpLHEMTNz5xJRzzHXC7ilxe17daNazbSeV3J06BW0mkrEydBx+SB75JMPN5aWJUyuJaTBiMFB07p+YYzL0xADTsDCf3UdsexHjANvunlAi62Je9YJ1nnigAOUoDa/B0GAwxMqHZQwCWK/ow++gsdQbUOFg6lzPaeOVw6VXOaCGA/uK3kPQJLcM2RW5Vm+Roy5wYXZSmTmaaiZkin4PtgBsDwrRje8KajTyXDlpkFDHWmAHAX4Pbv49afmlgvZj5Mq4/S9wW1b0xY8p2WWTW3DkXYGbCjBVqu7BjMKwB0iSf9DKzRJkxq6vs0M9YqUTKWMU6P4ROo20LFD59xpg1Vu1I3mc1Z1cGIaeWV7apPTthzzyCwT8L4D8XYIZzm3x/9ijV5wqYvUtGH9lyGQg7A2bPAG2prBHR6n2ACAJiaviBrA5M2a8M8GxYtS17psxaYvt/KXU8ywg7CZxeJJAZKJPj0MFraTlvdRMdoJJG2+WSnZ3fZ/6zrYzM423DqKzKE4ZM71Z+zIFOLiQOeKWu2IY70FArf6nRt0yVloUJZ3DVtWhOXE7GK0kcvYqHbo20HxiBeo4o/YiyNt+HSnoidXMCZx0SxLqxtfYMyHTz2WOqLkb9vqwFoRtoFIbrVBlXa012y9ewZm/7YZOz6sQxk7ujH+0W2lGD4q51osnNzTtItsiqenD7a9ugdXUZYGSlGBp3JsnHYEWF3e3tfUKQMdjvK86psLvF/wlDZq35DGtGxVNtbYbJiMl9g7HdJufWFsFMkAjzcSagF3LrPLrmWTuuw5kz1FQWAvdxDIc9Rp1sKvvxBW9zFDEJvWJC8aXaPYh7owKyiBQ01nlHxUZI6Zi1YXFt83Y5HRmdQqY9kTMya7YbOpitjm3HZtgnHagvsxIm2L8dCXNG9/6RXMBOjDeqqjEx/LB4yJd5vrmP4wyUCSCzrKAOs+jNLaECAzCrcPvD8PJLn11jFurEkryxQjlkrvPKrBsbrJg4LgY7fCNWTti2DshKmcoPjzb5ztJFck/Uv0wWONJiELPMsrDpUGuGx+rNwmN2l3N24tyY1aE9WqP2GkxZ//tDbRxUgNlOVu8PSgneB0x/1hmzEKyM1azjSrqowGoBbrJeILo07taVsl1qwKHLZ4CJQqzZ6n73qmDw4XnCLPVlOYsMyfdNXBQ7y+jdJKXLKMk+P8gLxdBk+/rovOROEKSM/WbKd66eueqJ6i/MOxIpDNUi9OJxdZZncMaOTmw8smSdQSLCPFFgsxyJGTEGYZYxRQS8RrV7pQd412UWeoKxjkPe645ADENgkolWF3bAAxiKNWa5hHE6M7LhQKXPs1PoiV1+DQLItcYsL6Feubr7fykwU00c79VZjdFYMgoOd/g7fb5t1Xyrn/0jSkitFAs/rqQmTAV+deE4NtuSCU4gZSnV8tPdkrFaj8d6x5Ql6zs7tOt+T31vlDXOY1CXS4QjD2RrQcroK2OmrJmVxKFRkIEMUaU1UAtIw+C0mBlTxd9NOntlTCvj2xYcGJk521dtrdLGlfZyYcMWy/suC+9mhSAipt9CdYdkmk2+ZjBjhXxY2KfFFIiR7wq735sTMQoebMh0l8m+G4Ovfg34vMdbR6E3uv896c/0B+Hlfwq/fTFmjWkG2S0JgS4rwzZeJYfsNJOs7e8hBh8QeaInrBgiOzbb1dgyzSyrJDMsK2DahjyDABmiVb4LQKt1X2uWujRe5ZxZrCTYZaClbX4gC83tsbq0Nv1DGP6YXkRPZ1R1/vTayCP80wE+73PM3j4wUykbAxmzKCeiz4v8rc/j72zMMExABZg1m94aww0yMx+x7lhoZpIP6yqBPAVRmHlprEzcvQLimsjLKHjsJiG7OrYzR8y2f8r2GYMxAczsMKnCwNpq4ap+py/D32nLjvVkElIGZovgzESChKj2q6z+APaWRzb3oHpuXOhSCsvZZUxccclspkpa72M6aiq2+YvuK9FjWo0jquNJwxTgRhPBQGwMLZIBRG/H0kYXCCXsUoBJFhwY47xZCTZrzFzKSHbl0CCA5inwsmD+4EKz22TMviX/NCkie/ZtBF3PqXW6WPYzZUNPFN6zyvEerRX81NrdgNkAZWTkoA4URXLKdpLGE8FfFBUj8Fpq9sHsH8Mm0DwPdxjOMbuNtdim7owloJqelmfTqUHGRtIoVvYQTAPFQ1Rb5lRjVgDcOGwaa6Rcodo2ttEfA3nyhDJkrp+alr2pLRuUnxbPlTjCmEsZAeD/Dbf/EF5+SWDDygVT5hvjDmXDQh6ZgC79rjJxEDdGzS3L7PIxbfIHYOoEGht+lFXO6Dug40mdmTJmkm3Wwdlprdmu3mxTd7bILDMm7KxO7oxV2zBnybz/AMB/tgCz78G98ixT9QAXgIzUOAXAFwD8F+8Zs3frWXohTdwAhUwqtwAJlSkmboVaI8XrLQlT1jtmTuBpTEvMNXZsHDKwubHkv/yT9Wk79Hg+ZFByEhHA7CAvG0Ki2/6zO2Mhdq7b7DtWx8XBvvF3nvn7WH1cPRmF7zImzzk45+ccEVVG0V8HchPDtFxLwJmST7uR/EW2OFKxxb882EoywiSBFadn99A0L2IbaclOMHOW0TRC+23FSZnxR9zBeDoUtNXBoGXH/Kz0OZMzulS1YQGNcUoYFAKCRG2AP6rzmRiqyQHRZY4+v0bAwIkvWGKMlzQYLpIha087cYhMQIiRVBK9bb5RVFFtjg9qq4iFvC+RxkjtMiJE8M28rb9g8JmZ+7/W6DVFgk/wFocJ+MA6qeBODFnGgMg8zxVZCZvTbesk4lqljIs9vs9O+QLObMqRO5OS1LJFAW1kyWKemJPIsV+P3gAWyxcj3JrTMufFLGA6WoxYwhLxNBdhZdHr2sh8u65ElOUp2fN7hC3KbZNQILh54fOKADACbvAkNiWAMUfqj8lATW30mUXzLiVkqPyEhMr/vfDyx1MGbNSZCWDrtWaaQbZ8vuWui9hY3iNzXzxxXsRaU9YllJUGQIMjo9jku+1rtwKA4TxSrTEjZ8YuZzw6u1YSxsySPLOEMTt2LNoDn3d2+XUDwHZDmGK9/3uzW9/TT8NGBvLI8JbIHsp7YPZZYcy2NvnMoCUs2ZV0Uc05dt/FZpoaWwzQR+BPl9P3gcFCrG/rx6QzWwvrl7CAanJS+PVMytgNT9gsBDObjBksZsoCIwmRRkJCpJNeeSppjIc3dV5U7vvstfhO2aV3npLMp/qyBet4lEewkaG6MgbDQnFqXPwWalJXFnrXicsDm3lUX+WMI0EVUlfW9XWUYxbE7XV1XGRWrAoarYnEEZ6ye9xJj6DHZFw8ExtaSCljAhPEmDkOYr/WkGlvRiEubBoCo5Zb+dc67a25Gi6CNYwCqmm4ZvDa68RmL41rtbrz4P0U+wB0DBhGGgGy7HWm+ud267hupM5q4Dhr4KXtucc957xi8wYkWt3Vfd4RqYFRjza3M77XrwCbmWFJQhWdoxWGjm+QxlDhPvH8ML/XePV9xZ2CH9JLo6Q6I1ElXyUsV2Xo4u33Y5h1aP2HHAWqFZrKhV4r6KJxy4Kki2aXqVtjod+bE9rg397cR4WuMerZBL/YNtus0rL3rdxIwti9HE2gYAmQL88xW45WaLeTZJC/ZiY4BohOjZtsszEQR9lmWmNWIIkFJqfJpA0yqGBZ7l5wBSlINRThi2UaPnUFhUldGbNKlorO/gQq/hJK+a+mjovbDDI7MfYok9EKNWTquChOi9k8tyhz5HaZrc6PpUQb+yKPr5O6r8xCviagjGM8lTGrNbJmAwzSKwMz39SchbozO5EuZs6M7Dz5AKN2lX3WlvmPDfhTKTD7bqwOuSzpt8zhzPJBW/tsAKm3ur53yegjW+45wOwN5qskUuvSMunkmZV95sRYBESUDmguQrSXejS2u7/6I3C1gKxEOsnyzLMMs0CFtFq7Zd/V1GNzvIaU0cwKMY5BY0fTPQoGA0izM0BGy5WqKj/yEXABaMa5YsQKuIK0GmUxXCMW3ObpZs7gDcjt9JXVy80/6NCo9786MQZ6j3bMTSQwZNihGo5+vbBeU9MoKzbFT5IBkI6XWTCd4M6whVqzCaUKuTJiFfNQjllf65HWk92XrdTFm915E34hdvj7/Uo63QysVEbG9BRhqXGO+47wGs1GmNd9uQl6OksXgU6NDnY7P3rj6KRWq+ORoeQ6sWiuJQI4A7zOOqa+/2Y1P+3GBWphxyOiHWCPxx8iRPNw9UzeqbbjfScxKZNCTcKs7SdnVCx9h3ZcrTOcNVj2W7iauktKN3yp6r9C4LTm/ZIgZSTw1YubFFhwg5HlX/k6T+SNfOxWWWMEXJmtRCzL6tdjGXb33qq0LAmYZnAGCZCewNekxbbEtQUm1SKjbHzpauB0WcUEpUzGjRMJuNxvQJ6SYGghX1m3EKYr9gqWqgmrHCi9voMkSzdxLuGte9ndgv9t1NvviS6Kt9WVcYAfcWLcZZJVZchsY32fJIA71ZbdCnBQ6HTfn1dSV1ZaZbETMPH53K0goEZg7EzK6H5imU9qGWXMHgqdTtwZA1NmiTujJtg8Ar4sly/WjWwxBW6G//0OVzx9Z6Jh4A5WpgCynQzoUwA+73PMPh3GDGvd1Q6QmSyU1WsttWedDarUAK7Xiiq9FYxdbGMJPL4P0nrGbgU53+u8qoQyMR/Bc9dLDN/RjwOzfnJerAEv7gFU6QkUknwCs/sBVaeQfNF2rBvWAhx+zAYpI3Ny7qs+zRPgwcYgXvL5FWuMV3Bi7Ou3eTNXiaPSgJA++tqLc5EueuKWKGNf2Q6EnSHDjiqgawfKFtCYSXOwo//Qve2iZDHueOQ+fHmIWNq8mV0WvzUfSx7YMSxCSBUy8mh/rccCyuIJTKyCE6AUgJln6ABIA6HZzjA9rll4smwiV+/tV7lRqFjoTO9zvSzdkyQcmdG254VfIfLJz5LMdu3YDN72Tn6V3e0yweTUhnXYxfTdsR7AzEjO6PHuGOSN3Kn3FfgiYawNNOxQhRuLlV2bxKxQg1ZWEUH7xdUmWMzNPMoCznZbK4Exc5LrMrsZTm+JjokggkdliwtjZtNXYtSY1Xv//4ZZN1YA3GzNK+tKUy75W0SZnFASrgsnosyTLLNNw0121IUtGw+wrU3DvwYv/zhq+btHiPTiwEiArW7yxtJMMsuli4eAr2CNX9ZpplJGW2WMXu6PryKAzEj4UaMzY30NKaO6M3pinR8kjXYO0C6BGTah1Lg2B8nq0TLjj9QgZM7/mwD+wBaYfcfKbUdg5uvNlkdTmFkLHq3vpYzvxL8ze3StGcvA0Y4VS+Yv03U4sdebKWOm8kXefsJQFWHEuE4qKzjQdZUGHJd1v8krSRwDo8fSRwFHxrVgxAgG6WWXRDY2rJK7ZOmSzCyHLLBbUgPYz0dSG3gGDvm3c6uWdNiUZNoRTjU5Q4RxhjN8kRu3RVdFflCk0kpPamctkmOLFNM2VNvo1ZY9gzbowRqtldn7fzzVkFcOnwG17H2iWTDElDnOVFJ+K2PG+BQdYZ4T73Yl3lgbahsTELbvd2+VabGkimpIiMux1vGt1HPrliXtUp74o8blmb8z44wPyeYiy/1+9NxEjhkvE68+mKAh3wsBYSQzDJPFPdZJ/thb7LSvztNqIwbmdIzaL88f2HUSuvOI2CByJ+BpZ01UvkYSGz5mjlleaTJ64yEDoDFcY5e6KqGxaOZD+ukkz6yVCJBKV5H1Y93ZRXrmWTmRKSJxZQTVnpXoPKGgjdhQNoOw5J1+mg+FQr8eH86oUeZ4CwYfsyqtkEQyC47WWlMsDF4EKvFS7bseDAv5NaP9NLOMnR2tEUdYM75dPputr+DfZ3ILXI+2rRSg28o4jwt2k5wddqDPu+26Xn8b1X4/rPy+Yd7B7FdgxBJrewVoWV1ZTQw9bGcwYsKuiY1+kok37PELMVuJhHFryPGolBGr+cfOOj8YgZQLA5ALS/2lJszWsOnwhMsy2R4wB9kAtf8lDN84B2ZZTWSWMplE9vAN8vMoZfwMMmap7PBBOeNpzdmu9ozaYnEz5/LFDiq0Fk2MRYKJRsKOFQYymMHSpdvQN6B2+opZU8bGGeO1sVnKpmXW+eoeqXVjC19CMsSiodhsjILXqDXL2DKRPWb1Z8GVkUuvqkeVzxaM1fz5B3IjrlUCKW19n4Gv4JFh0k4TuWW48OUB7tJDGR1RlTNyAVslFoCL5uSphAdAmVqOBWomuznbUi1kgZlabfMrYs5WrDMz3IRJM2HFdp5Ulvo+zrPEN4JKnFmXJt9/e3TS6tTY18GOTFDX57sT0PLaTulEE+NSNgKFtd6leQROfHRKPQISGKxpbiuZhrA8dpiWMNfV5X9h36eZRgBjzFrUKWUE5XN5oy+GNHKU5lUCJj7kkG6V+Jv7D4iZsXF4mcV0xm9TAgkqiQSdhwoPNKW5ickJf7GDtA6cO8Du95Aajnm/Fnrm2QBrI1vOWlt9SvWcZGxdysh0TOEwtX5ns03usO9zrpJuU5a9zKuNt74IkgoKgbMobXQkxg6LONKIac24ury1c9DExmkqBasPkhoZkj+G7QwNZSyrK0q7H8tNiMyAi22VNUJq0YKydFFAJGnYZvmOsJ1kv7d3Vqm0IAMn5syezrpffwBe/kfw8lODAYiXxA7/BIBlzBlOXsHW90VklyaMmbJlZTH8GEYfNDi6hEknwdKeSf98fRSGWrPsr04zEGXNfMOcHQLGjhMr/WMjazxeQ9KYZZclj/e/aYZ//ezCefqKbeQUj2gYpAiz3YTfNvCx98Ds7QEztbZXe/wELKTsGK+LpItO61LAtLRLtp0xN57Y5C+sVMKenQVjP0uuqLLFk6DtABxPDEkeCXkeElAzKxLEDdlHtoiyxqKVxD4/83h2YdEUNu0+F9+wUqMcxDfSIj9RBXqM5hryCJEx8khuTciltFLuSsIYQqRYAuZCifhaROcnOk1YzChjg4/OpLFLIzIJo0gZHwih8k3eVTwVmfOiy8g997Pi2KeT4YfugAcwuJvvQfAFOI5aW1/KxRGQk8rvjAozWeOCaZ2xyn2y4OeHCYaMuqSd3XIfIC1sko0wKEQ6cIGV1skOn2Pw0olFooBhLtQcAwrOaddJTRWnihn9Dqfm647R6jToIF7Mvd236RI1j9eGwYYK1/gYwBZWfJJnnJV2B7y20Iq0IxWo3YLfjWSBgNVugGJ0KL0B7MaGNlTpYx+xckTOAVmYtWZdP1fIvx2eFDbxSPTmfmYeGKps0TORYcF0DC2NQcMIgLfxW2RgxuJHDpzua/RLSePazfKkvaG/p5b4LcuqZGpJ/tmz23wlv4uVpwnOjIql///tfVvILVt61fjmv4PdURpiDFHwQfFBEPGSFx+8gdgm4kMSFTUqiCI+eCGtpsVoI4jp0w+dGIwk5KEDQZvGoN3BFyEXY3xQsQ9oR4OJIPGWRKOJ3VHsPjG95ufDqjnn+Mb8ZlWt/3LOf87eC/b+16VWrapZVbPmmGN8Y0QxppSQWTJY7FZVWFNsKVgDWVBuAK2zZoVWtQvMPg3Ht6CWDx4ae/Rw6O33W6C0ieFHxqbZqtbM4msIQ1YobDrJL+vSwkKyQpYwboqWhuM03HmXNfL5by9fkBqzysYjlG02gcMNTPkec4bzdvqZ0cdRMPXePhOL+DcB/Ow+MFswZpM8H6uh3TQseO45Zo8ap/KcjD6y5TIQkNjfp/VmC0A2SRxbzlYiZbSdPKxJspeBJZAlfLL+FCgxICG7/n5ururXdiR9rmBztWwzCQGkiI40Si0PjTPZeH95AoHkhiZAql+1jRkUB0u1xDcGxALIAo2ZXMNlAo4KaWjcUl1mTbOcMlKGuNot19w5yV202gzU1ChEiCclvVJbrz5CJRamL1RHIcPkYlLjDdxt3tGgx4wzWcPbn/SZWKgDg0zBBY1KiDCQmnwEsw2sasniz8YcswzGMYaP8kYTuLeIV270cKxZhOpP4wC/sTVuM4D1LpdjFoqsUDxCxWbzEdw1sgkG9wkG899JhKA1l0HcWYPUb0gHGtPmOxi8OTLGAOaG5EgaIdtKE0Q0WaGgxqkhPdNs7s0lYISgJ3eVdD7hKstE5Hg9OneGZ06VdxMoc4QWNWXCbGFWmOnoIM4T2ay1HQz9s3QzF97KxNmxiPlHvBJHnhm6IUj8fAZlHiZC1LSkTAb/nvHzC6IpU/wxWeUlsl0ahx2aGnMJYAoWkWSWLaf1/XjBoKdMkKYiU39xNET8dtTytbCt1ixY5N+DIasWwZVnbFhSY+ayLDNkhaMAxj++bXVARhb5HRzVHSkj5F6uUZ4iZXSpN2Pr/FBzVndqzWyYklTMDNrl6C8WVvtIjENwm0FIBX7SDR85OmlevJvdcqS4lv/qdexyjrrv9k3PieF6sxJMnyVjtscmJcBsj3nCChytWKVbQSMDKgpKBgclU22Wi9wx1HQpawakk5v6tyRsEZ+XLn+rgEPXbDHeZpYZ+kCLtsMxgZg73xjHrH7Mk6mULlEkqeJy2XTEyVLGSATMS7m4yNsOQyY2+QYpy7K1GUjlmwZi6UD/mboYZaQTTJwl5vPONOtITywnbev9QzV8pslEbtXEDVkTSWN4rrrMKuBsNitQsrLScNGnIOnZYWZIGS/IVfUXrIvksqnseXhbaw3Szc7UuEUDDPausA0Pi+RzkhfuMKW9HdT1gvm8yWhCXUBsk/RXcv1cmHfYJkL0eXDYebDE/XhTTC9NLnx34FnjknZlpUD7Zwx2onn+nIPGdqxy7o02IGDk6heKybjF0vcFxpBLJbYYgolI7ru4rbHcRf1coYRj09e+r0MUZhI2d9S5lNEmWNXaupDMtNBEygAwJlLGwZQNM4/xC2w54lI7ZiR1zJ1oMJtQsmEhBKMog0Z9aymxq2yyxsCUyaG4SwAbWMZoc9tmQq9BqcttndFjsJXcNrawy65a5OvN7u5oCPa/rqzZ3TcEQ4/MwCMFZsSSXUSyuAqtdgZwEhptGh6d1JdtEuRLIYBkUc64JyOsdqL+ClJ2jTlo2hWs1SR0mreNwdhRzRmSejObgeRlD2RiYbefSTlxni0DgBe/CBpoKfbXNs+GmeUzzk8kZXxVY/ZAYNbImgbS+HV7nrFRzGxtuV9O8sXGwDjXVyEaWHSA1b6vDNnw35jNP5osj4APNgOMzg6RHJLBTpXdYNfGSlK/ti2tVo3/gpiq1WfhPamBw2bs0ZehWjTUWsu2Oyn4o98pWpum9WVhDn2TMJKUMZMoTp8l7oy7wMwtGQR62h9E9dWKlrFYrtUDK0GO8oRJXNRi4fd8dmH0mty51d5xspbD7NAobAUqI8sF8tRe24UChOXSTh0EMoNi+1JGlQ3mdXieIv94WAbLZhn6hh/MIxxtY9y6BswOoocX40mSs6WZCCv4wr+XuRsOlqcDl2Q1RrDEJ89+T08tP7Ffg7EbZvuryJq0qWzHGXLSMVhk2xLFjPl+oLYkeh9KiM08nNa9Pi6ZLjJSfnq38cfSabJPPTRrfKVptDjJhDWDjPS5+EnATMrm5KI5GhKXXhdXSBhcpuvUkhozriuLg22WMWZujZbOQ+4QSU1MwPnKl/1SreDC6FKmiyhdZFkjFmxaQW6eGc5NqLzRF9ezFsAJtQeXz2jHzQmQ3Z25BL8Nbn8ItfzaUVd2N8sRU2B2F/ecXRn3XBiL1prJsktAd2XQumSwxMnPajFYOtSYIakxs9zjSkFZB2RIDEBq8nwDaBePFv1nXBrTMOqEMasJSMvq0XhashK4uyBKHh34IRzUlg3GLGH4cxp4h6dHKMV4BcyeJ2uWyhIVQCUujUFGKHK5bP2JafSQ5OnYpNZqmqMlZiCZdXzKumm9G29nA3MtWFrWYwRMgVgbduoz3hbaDgZrpmB4xdDpOhvAI0A5gc6E3SsYtWpFjquO+JkcqapcSc8pgWomeMU5q4yNCpEDsz6BKe9puCPLFftOaB2aWCaz9bova2enUbDsgMfioU4F3lGTFUx6zYYKJw2mzYnZweffDiz0VzxUZDx8Ibhb5YEbslBplzqzmSnL680yP6rsJDS5ng9A2bItXNR2fvBFha62BpUuv+CZsWeThzrVVfkhPF2VBsCV3PW8zPCoqRwz2st+R1wg8w0XO3W6rkOC14lztbfapNb0oEo1umi9h3NHFtjS4EI6Xlaiu4RaAhZymiiAFMbtDI7ybtJOSIeUDQPWtWcxa8yCO2P2zwJQ8+W2eDqpYnmA8zwPElGUL+zygamEi5uZ2bI8SiAvGzaZfLD0UNn6EHp2A7NRMBcYN8spQrw4cwl+Gm5/EbV8T1prhkVeGTNmarO/NP/gmjKbWbIWMA2tLRuyxg6ciDELDBm5MrrFurKpxgw7dvmYw6XDPVyCpqfXZAaSMWYteNpxgtU7WXc2lVcgrznLlnfD+wD871PA7Au3C2PVoXPAdJqU4pNQ4rFzzMLWvcoxux2UnZUTnjWn2LHHn0AUkzFZjhlIZsegStwj1ap/AkPy+4W2qTJb6O6BAWQ2j/8yGyi29GCgyfVjBLpSV0oCgauQ7Qzs9Vwyqh3T9mnvFdpu8PJ07nf2sdOL23JcXybbH60d3ctkly9lRj0OSrk5ho6ik3PCMSB5QgNaF09CKpVF4/wyZfs56ygNaLTcYKPNjtdExuhaX4UZ63qJVvls/gFIyHTmdJKOnVIRD9evMEhTa/yxKgsyxirDjoosYLqm6NrTz5QtWiFNmuRJClviYCwewOUMgnzgh4Nlz0d92Ls/6gY62dvLVrrl5x2fYzs/7Mo+2z5utRND8QnGbBpKX64h2Y8AjA1Hu5x+7tIG7PCvOT6KWm3WY0+bz4wZm3vcmdA2JE8MIE3Bs0tdKsc2N6fR+N4KcGj1VwNqTepYwpRHAXqaGZuAFFkbM4ZR2jgmbbDZ7c98eOYxMIVPcy0ZFgHT9NxLJB4zUV3GjGVgtZzj+zBVLFhm7lEjzdfMYno/r1ULvIMvzg7Fvh9u341avjoFZivmzJIcsiyTzJMQaS+JsQfVkpVh9NHAmbvh0mJr2u2qDpbMJVi6HoCeVcDyxJYpU4bcBGRVa3a5LFizxE7/Itt42fsLykBbALajOrPtVv9dMPzTsyfLi3fzyM1kosjWMxRvY8bsUc0/npPRR7bcDcBslV82CWz2lktqnTLjD0h+WWfjEqt7F4MNFuGwZI8Dn0PI9NYOdZNFYmOl+lxCey5/Ie+1/ZNCjS651LapCfgK1vNqlS9Sz+VEu3rgCxhr65qWXwGuE5zMLGU8ICZcWCoTiqYbfjh9ziVcFBp9IRduT2RZzII5GRkocwauYTtiX2zu2MaPaZp2Rm0R6mTLKbYU73pNp7uYz8Vyimd2Gl6N8Q3r5HDmirKfYtv8UQ9Tt+F3DWtQnk5/zXfrzSZ2f3kmukc2Y8VzrXp7v9ddYo3wprJQj8ydr4Df8vf81MY57HBRvwmwZReUr2m9sw1e51N52SSes5Tr97LvWd6UpcxooBAobsANSRFTYIecsq4gNWYm8MXo3fF8ODCODW05Zu3YajRYwcouH5MbY5QzjnjZaKGP8HlWGyeXWipbDPVnFuMbO7aB9P9lBqcrkJbt2S2s5C5faS2psQhzRnJH0yOg5eangVmF48+hlt+NYu+61oCp66ICM3FaNJMQ6DLQSMacgTLLphbWurJRW9bruxmQsfFHFXdGo7KDhV1+FqqydGVcWefX2Qyk8nsYc6CHtWY7TFmWc+YnQZnnrz+7sWWnbz8dmC07Pdt5X2+ap+ca31Jg9lKZf2SGGjoQkjqzFHytwNyKYeJlpQYNCWjjbbHEan5i5Whd5YRLIzNRKi9U4MTuicv3st/KmMHEAbOTbJIjVzDbZEDBqYRpt3avG6OWaepWA2DXuj+5uveuE6t70/kMwHxWBE5qwHbTr7GrSd2bLLJl3fQDwU19lr1oTU1d7HHXYeoA1YUe1EPVXl/mFTLdF6brmDnzOYRNQ1BuQBaG/UxqNc3MTTQH91MD6KobI3CRXLPagdsasHL7zVsWr6l23IZ5xNUWPQIUNirv2WMmth5uZOVukXDhUHHLRFyzHUY/t7txhkf7i81Wv9nvz5JHi+vibDbJY+vu+RZZw74sohFKhwlbpEBzbhzS3hjeDH4eYqaJbW2MkEdWMEQNGDBDZsAog24rDJ4t5n1Y3vPKBGpdB48SXN3BuXlvQzCz0yzOC9E1AXDRMTdyueCp5sypsdFAlMMXmar5vcxlqsCo1zCsiCejjbFu+BHrzdi5UXk6ZcxsMcxjN0TPFHyCjDpxaIJlkEsb2UhEwRiEsGSGrWOlZDZmKv3bG8emmsfFDix5zvb67pbh2E/A7UOo5a+HDDPbs7xPDDwy98Usv8xtdmX0xXMzuNtQ2ZO4QyWM1SRgGosMMzuQMiZ1Zqx+WdWaTdb5HDp9gjVLa8yUQUOsPbssgNnlBHvmhr8Bw3+/5UTpwMwyjbvtvPYl4nlVY/aMHgvGLBxZCS3GDgumrFmc5Zbnkm1mM2GDPdCVyf2AWcbXj+vGioXnLFek3ylJOLUCQl+9155zLRuDnQbCxDp/CYjl3FQAiyRYmy32IdN5YV4y236SYe4xY9P3lTHzPe8HlxlzNfnAYMcUpIHYMi7Lqha9NLLSLM/MR+gzU8SiU8NtEBlki613a4UUTqNlWs4qDdTqGBQ6cotJpfYc56xXDgFZiCheKyGx9GEJ4Cyu/xJusx6sySnwOQVlvqTC+inCLrKUNzaYS4+1io2RowF2HYZD/WRz5/qZcWx4UN/AW4dOfrV7dAJsxpCwZZr1aIXNMbC1ilPQdXttc71YMK8xDxmAbfhcIblhHUey9b0F9qi232/By5WcF1te2GZH32rL2saM32vAczDIFrLdKFvOWhi3hYvf6fj1bQ6yxC1QwY0MRjyAVtCWebUpMaJN7NRt3ddDb1u7Vsoq24KCVTMXmDPkodLm+RgJLlAnWlTbgunh2bPWa1wWnfmYjYumHy5m+3l+WdnhmUyuRpsM32wFyDhYmiK+OH85JVItd1/kwOkAhQqBNf7cJMkgERpMqHGCxUAaMN12Rmm+8Lzewpi1x4dQy1fCypdF10VDeF13jD1WtWWwBMQlDFkAZxtbd1cG4LlDZM4seX7G9ZBvf5gdGbnOLJMyLoOmte7sMoxAel1ZEnj9+fa8JGzZDoPGph8sc1xlncnrfwnDh289SV58ITP4R7MLYungYmRU7fGBz+uvvx4utUfIMXsFzBbAaMU2rQxBEmC1B26mZWXgH8yoxAa/cOBykyU2i3kKYS6UO9YMLzoAq+TFvbFWzRyjP2+SxPY8q4Pj502SqVJGYbkmB8iEBVN5qLKALhlqS4nioj5sNcRfSiV3vl8umB3oVVfGkRtakuV1hJO6RUxjnpddqYt8dcE2bJtNBJerFC4rmq18E9fiGEkGqx5txrxisoWE7GzAKK1mzeOdK+AZdVRIiM0EGNOwelUhJEutwqWZbxrMVHxVA1M2wBoA+YYduEH0w3CpUUK/DeBnM4qgJ5TR2cbqUBuyMcUANrR/tbkDjqIlNwIT7rNLMZ1QPQbZI4sXgbCPUyetNWu/x5HbYoxiNoM5/n64X3sHnPEnagB96OHYurW8nsFU9qDpahGsWKZU8KkAzJ1NPWyeLvC11LhuTGC1eFnwcRuXGHUcTapYhPWaPNrZBl8ljRYZtOSqui5V+mKXqdaMk8RMAtzVwWkY29+FSZdC9WVlGoTbbD05gTEP/B02+aTNNWbKQi2MPbh8qxAoc/JeAbl/lzsBW1jLGiewJqxaGzm4R1fHcHw0v86zilr6Vxh1Jmizv767dUj283D7clzKjwLli3drygp9xq6JF3Fb3KspY3ZtA2BRErm5MGJgwW6mofVlVVwYhTWbGDTcT8rIOWY1sdDfkzRm2WauLJmAyiOXRpU3ZsumwMzwP9zwFUSInwdm72qnmsXzV+tb59nlePY3NIuXrMbs7SRlTIDRLsji2qnk+YpBS001mFFqz3mZ7am6HU7TWvx58jwDlbPp8bHLokofjwBrykqqdFKeF7HEbzVpwc5+27e6WL4Q2Au5aYgZavo9SwDjNPInVlA/D873tmNSMTmu+cKxEUGtNHXimfhNjQ4BcWhUwGI7kHSSN3ocWUDQJW/85MYoU7Zhh0ymDD32+iCUOan9/LAX0zJ+XzBjnHSWsWaFIBeICbNg9OHwPndYCcTVzcmRwVmGJC3pnGsf8MfQcpLLdbZSHNVaGPGWz+WImWjOtvgeyB4CbKPw8frH2tVElXQkpyTwtlWjwopLfeMwY2kywKvfgJPpjZhbOBDcItl+HoMRGtJCxlUtnDq2bLeYt+EeCZZBbmYmYTOsLePdLMb6xIWPNg/W+0YsJIJ0jgFZNRC7hTAd0Fu657axhb6cTXUDOhtAc2tFsJvssZk5dBYs09DJwD01F/aFPC5nyqIdz/zXgrzRl5lnBSNzcIRAm7Bkca2OLK8s5pnxjmjkNAgEBS2lmhwqspQJr6AKJBf6Ujec7JEpU7WpphekgLHIphWsIxQLTXpZAexCAAYzq9ZY6CLC0o40v+A+w7KfhtvXopaP7jos2oaULiRPNKopUzbNE6AW3BrZ7EPCpMUaPwAynwHZBM4wSxn9pJSR/6YSRg2crpE165LGOuzzd3PNzkgbEYw79pkysdOnW/2fheEz9zlBrgHTMiGkEbzGE72JG5NZGEe8VDVmz8noI1uOGbNbWbM9mSLLEzNJokokV3JKXs+2rdd7+jCyCJLAPSBJZM/K0THY8N/jeQbIMoYw/V4C4oJvWCJNRCJVVIdFlUCy9NMo2BrERKomQ9kyO2DWSt0hMPayyjrpROYfXeLYVIF1QBzGMWE2yvOfUbIptHsVcJbtZQdfGiZqg8pjgDb0YVdNRQaVnO4GjSLkpOzg0IgYcM1VyJjGf9N40U9IFld53zUZc8baMlBNWW0CtG4E4onE0ae50qxwbmz5pW5gjo1ayFDDKknruqyO09auX6hU8cW0ameQGqhwG/VhPgBNq3na9HFdZthugi5uis5By5VEgQ2UkdTwKoMUmWY1il2rPS/NTPLrujxv20/basm27WvySppxilxhlzGGfJJR0+UkcZR4r96t2QCnnU3EAEedK5SS4khEt2PsG4jm884FmLVjNySavFGtzo499i9OVXCGIWFcebOr6o9DqEFBW+bRgcjyaQZbvKdQb5jb+3R5l0l62M7rEvLLBvdmwqSpMYjtToqsHjpnIEaUcDY21DsKq/7oDtZUox0nGylMLWfF9DlKJBOsiLjAdmauuAqhEJixy4K/BKKlcGPLXtx36Pgx1PJ7YOVrJvMPtbwvZSDcizKkmZRROMcGKovIGjdWja3xnQKbOyBzqSk7a6ixkvu5gLQTUsYAztSZkUFaHazZUbbZmQDqDKjVhUtju1VvIO7vwPD373tyvHiXbTS5R2fGlbY4vE8ypYaUnwBIPXeg97aRMu4As13pIoOdxIwjY+G0Hkyf99dNBqiSwJ26tWlbd4DbY4GvvedTG2UB3BmjiGG3j5WkEce1dsvnJOtUiWNqxHJG5sjAzEQmyGhg8slQi/xm9mGRra8b1rkQE6ZxX1XwijPTRla/nbWgWV1f7p2GBrtwg3SnCACNaECf4QyMpiKz8JZJr6lIytcBZFhP4qstyR3NjZtAJu8Qa7BptYfTDnbiWv8S5z29f/OyXFueB1XTnfB6GbP8Pk8G1gA4oiuiJ6er2qhfwbmE6jV1KnyWUbIfu0WKOJhukDFG/F1eNhqbxDDkeJyda8dULzwpBQeIV0YpUtrx+3G1vqst0SD3TKbpgeljsWyubOz9N8Ex7YR8DjkbtYwEIueZFqricw2Ytlhn1kAYO1IEKaPNjJrliGzlcLj/zyQSemSbtcSyBnzvSNg4YqkLMWVc28ZW+jOnvpY6zhjOEvOOsCi/XxCjEBT0XoYXi+aZWSJf5OYO/isJmdnJrXR/k51x3ZEy5KxuswYTWnt27+GpA/ZHUO2XAOW9S8v7zBof4sq4a4+fhUg3We/VHt/ZgZHDpAu5I0uwtMoW/cD445SUESRXxMyWBdt8dWSsMdfskjB7u1LGgwDqzEI/C6Xe/v4j3OGPPWTcfjX/cDrX8j5uDZNI5n95Aimj1oQ9Qo7ZSyVlPAvMFkBjj5XaBSc7oE3Xa2TtzoBsCTzacraFCG37yMYbXTJ5K9hi8JcBPn6fHCcrgbEq7VKTkGxlKxkcRjuKtelJBsQyUw89NlMNmbZtAuQmYOZhkDxP1NDEelADGqv97obph2G7b5Ay0EtkxkAkRc2wTPuti+Cby5kr33asuOcaGNBgOM8042VqDFnj9ElFD3WXUMqnrcSlMBtqjRtjJbrVEoDG9WYe3BmvvFTtsqtKa2DTj/j+nunHLP306sOMgnO+QxLaQPLmmEK0bVEz3SvKCBRNflaeidckLKsNk92DfUkzBMFC/OYybDf+vs05ELaotTIBSrFliK1ih9Hplj2OfZTk7bl/jQvNE/Cr++CWAz7NyHKuBVu0Xc5uy7LUYBZes5SR1jfZAUpn0idmpN7UbEaagYU0qrYcrW1BXGghUcwoUWzmaYzkEXcb4Cq0uQzxEDg4C+dedGqcY+hj/h6pemdBAbsjtv4a1L+3uCzPtRm2MWzFSH5RtvcVgPliCKqu9pmiK1xyJAmeQtnKmAnqRhzbTE7J7CnbEfkFDxmeORzvQy0/ALMvDbVkCqTYndHEuSazx1+Cue3AbMt2FqoQwCkxxaX/qzlztnJldOQMWpijRGL+gejQmFrnkxlIMAKpBOBsXW/mEJMQnA+gDsZjs2zzJ73gL9xeVaaMGQa7n9022czGfX9scLEnYbie+/qe9WOv/ipjxxJAldnOezLI35MV7rI0Z9anpiELQOKJc+G9gNle2x1Y49tOjdu9gKL+9i3behKM3/QdkF1+IJiImuFsslADxKxAHRKUFkbdpIwoQL3EeK82Q+WIfhpBJYiIgcwiNzMN7kJILKR+SQNtXZxMVnVlBaFArAfAUAMEr3/DkmBaGRv6SqUzS6JWJiAzr+Wp3LH2waOafjSgVvtQVNe0ts5HuiO1n88r7itQJ7G0qQOmBReMjH1ZE0W+Qx+t0t/Y2dA9GcSHMZkwtuEHbHnO+h4DxYYrjjh5MFUfzoBzbw5zkG+eT9oqu8fmi7befuSk++50asqNusV2CNe5zW4S2KG0ipp/kMGMI/FyZ4YrXoVRSDSqv5xMQIyyAoe8MU64FOHhTKwlR/h0HKhbiLCGwMXIi48tIp084+0ijroWsayJQsF8QR0WAl8be1bYFEQPl0dLfDYCCSDNF9SlJf10f99kh5LCOlPaT2YA7//4d4C9F7V8L1B+6RwaXYaU0VmGyDVliQV+IYfGBsZKXM43Ex0FZNVne/ylNPAAyOwGTCMptfb9WrOUMasSPl2BS92vNeuGIAkouyQ1aJcIvmbG7Pr3J3CH9wL49w89KV68G8CdpRN248Rf1Gv7nCX56IwZXpl/PCVjluaU6bKaTbYaxDfJ3oJ5WwJBlfpRvduKMcOCPcq2TQEns1OZQ6S+Dt85AWYyU5WjfTlch5qhNNljc68k0w8dMikLVhfLRZwVl5sYs7qa6tDxHvXM3Md04FaJeSsbu3WHLnPsUgWLNuFsrtAs9HnW2qlurU/m66yTjsK5snwU4BBwc1kh2UlaEs7Wuq+mBel3Gw6eFhYNa+C1ZsoO+oDFgfSdf2MY4z1n6TpQGrdVI/hlh2tc7VgctQ3GPJndXjWBhfKi/VH8nofDmQaemJuVowybx9jtt51Ai8XmONrKmAhh+2h+d7sMSiv6wde7yoC6MYetZ3V3dl0DH46O08iUAyRTQQKmbbbMt4xFI0DWLP9YX+fUsVhjypygllPcwbA1QQBew0PVAw9mgakekCCzQC+ITosqa7Qlk25JxtkU8abZZPR+kCuW0e9OCiyWs29/+VCwEYhZYv5Bjour/G9VmCJLo7EaU7BBDFnfeKNOhVAkS7B9m1HEux5hRGr/Fm4fAMpHds1ACmWfTTVm2b/IjkVQZyGrLMgYxSr/dL0W9vO8sjqziTE7y5zVnZqz5tBYDwDlmdBpk1r31d/r86/HBT/yGNTPi/L/tlmKW1fmCUirLx9j9pyMPrLlFJjdwIzshUun0sUkryyV3q1Ak7JnGQhbAKXwGUsZ2QlSX++1i4IhcjbU11wbNi2bbLsfgMuMacQCmO6B1hVLeQf5oQVIs53PiussupaSyNR3qx+DWOgHVaAYHIZZN5ci22hS19fvWR/FBn6sPFwOMjMvcqcbOqI5x+TUKIi0Fb3pzjDL4GLTHwiomfVY6BvCACxD6PNrXxiAXOfRc/OP2mWNjSmrwpp5MHpf8XVcn+SjxnAbILU6q6vrHjNCW15YM9bgIGawc1/LFcNmetGMMlie1kKJicUwMdogRqYDUGvSxejb7t3e37rsOQSNG9VVscSyhyOPE9rImMSZgejcCgdMU31cs8c3cWL0YYZhKh00C8HXTuvr5iJ8vLr5CgV8b9vrxM20tib8ghFKzeYm14vTjWz4nQntzQ3SbIbfxIw3Or/ltXWpZKdiKES6JMCMwZha5qvc0ZBEahidhRYAUHuX+fTIw5QNjA1RYZMc3/UugRkxrkxrtWbjswo2BQFiELUtZhtsOY1g4jHgRmwaY57tuQJevwzAxlb5sNx9kYlKTS6w1TgUSYyL9j2mB9AJjGnQNKNTJHloj8YbfAeqfSlQPjjXmgkrxtvJy0zB0ZJX1hBKKaN2y8jVsMT6slrJQl/Yp37LslnOl7oxWi5j3GXN2vt1KGIqYq0ZZ5sF6/xWa6ZGIOUAkCXW+hwufVlZ6he8H3f4u6cmVc8AM/s5AtjzfT6Xna9UD/XxGa7XX389rO8RcsxeZrv8CXDpZwKcJkB7IpPs8DMBBhzYDAJRae3THnuVsFy7gOsGYIZV6LOARRwxeFjY8LfXWtd2BKTv+9mKHT3TLmjmeOqJIaRIUP3RZ1V9NYxUgURaMTDT0quAZVwcGRPHRo4n09q0URgk2stQI8PFc7xzWyLnZPpBmkyX6cF+B/Nko6mAjsX6ShVWxPC2PhT0lKcCVmJCrgTzMFNfwxAvSuB8s8xXMLaSM+a1ZnUKqEa9DIv+jo88SvaazXwHVZxIxj0ZfW97zZ46DbQ4h1R7ZjgxGBknR0TwL/rgGK+b14CaiH7JwILvtVbFFbOtw6fNQEvHCn1Z38XG4hLe2fLTWEbXGZwNENWaBCk0wONjGF9lpsPBbexiskM5cZP6cWvL6lPH4gzUOFg8k+lg2OlzdEGw8e9jaIu2+To+n4qbLNcCTzMduU2+JSCn0PWVsz6Du7ojprqCq8gG+2E5sgS27+ch03PO1zgzZpkSlylOcE6NQDJ7/Rb/dje6yFa6FfwENUJOUw4sXW2oZS52MPse6srqPOwxW7QnG8GURIfwKI/Xrl1reW0dIr1gzFzqzCaTkEJW+TaADVvks/siyxgVONW1oyGDs0zCOBmAHLBl4XWl31dXxqzmrA5wmdWaMfDi2rNqOShbMoMF70fBNz7mifACbwgwO5p68J1O6vLyMWbP/XHEmO0N2kWaOC2/9znLE/X1arCPGKK8ZNv2ZI1ZThq7E6psMgONOyHY6WcMKEfmtYFfZ9uv2WGyLBL2K1jm62th2VTaGF7z50mG2dFVP6SMtiac2vPq0SSk2+JjKEjafadZ5TfL3pow871jrFKepUYhjK84i1gJKPbY5xFHVQcTj3bZVgG/I1TJh6JGdi1oMbU62hdlWJ4TYxZ46rRL04FUXcy9gSBUyy9rxh6Fhi9jcMi32BmsWZqYplLHipVG8eKDXTIGYWQ1DxsMWu2sTbOK3wa97YRgRmmzXG9D4uoJYxPqp64nWMvPavVrwcG427hbfz4INCNQYRE6EqPT3UmJ5fPIT3Xg0fbNg/8egtX+mAwxOvfHRjvNilTfLOk7WTuYP4P177oUjjWWckQ7cL6Od+auN691e5QYs+MIcdyN2WvtYVngNdcSmhPrichgMuNZioxZLbJixRMQRswqFzoB4kxRwqTA5DmB6IaqrNTgalniOABypayzRfzyiX+j5WYvyPFOpvQuZO4BMtpwiwoIK5hjHdlpnhAfY+DWtKXMhGZgzqTpoWDNF2QFa577RjrJUNm9ClTPpWDM1zWrj/f40BYk/dqgGsmlcZVbZsn7zVXSY21ZNXEzbLVl5MRYmWmqc8D0odU89gFa9dkuP3NoVOOPurLOrzGAmtmzYG1fZsOSy04ItQIzZsocgBe83wq+8bHPhCswy/InbKGWwY6i5gkYM7yqMXtqYDa5MIax7Qy+lsurHG/n9VDBuZ95nckY9XUDZNn+B/nirUD1BHN4+HrF+h3svwK0W4AqEubxPq/3gZlHc6AAesiFsan52hRwn+AWK/2+HNWHBRljRiCZ1Jwxk8djR8ylOxEElYgAA1XBTIGyJGUGYwzQun8/EtaLgEGoM+MpTGVcbN6uRNYw+D8PXfSdeCbqjHkMmB6SxsGe+cRjWo8r5hwqGjSr++JUQbQNzauIJ31I5IwnfnjALvbwwVYjMDsjw6uLzfjarp7c4+qQBiYSOqcRKp+XmNidYMvRs79cJi1ADFQ/OlvwM+/bBFc8u32TlbzxpFlktY0YYyeQ4KhTrRZ1YhJl4CE/gHPVENrFJ6VwgPgdXFqA/HOHRPLQfpo04Dqlh0dgZhqgtTXQCuME20VPAqgNw6l0XQsX54I8VHW1Yz0wTenn6WDOMmA2YI4LoxahO1sDmUza5OweRrZ637beEkW6u+wvAzWj7mL77A6zF0u30fcFiYnIzplMxLE8MtqsbhsQEqrLONds66ML5Zj12mHEGUMrTz2U/NAWIv1aypJpblnPKEts8jm7zEuoJ3NPQBgFTDfPqjRUGrOM8aF2+Zpp5okJiGdW+WL8oWxaNwI5Y2BiO7VlamzyBExZB2b2Bh3nIxizwzU1+fYrxuz5A7MMbAjttbK2h7JOCVs0vW5EljBmh+CCvpPKH3deT2zXLVK9M4ziQ9dxVIOXgaOs9uwEWNbv7IKwpK4wm4YpsahuLFX1nqjeGTR7amUQE1VkMU7Srkoh03EOaMYzIIik0wCcCztPPKlxus0sQHAz2Ta8SRU7BcCjFZpl1aRNHpWy9SQDsVB/JiiUUbG4mhjJGpHAn0pWBAM+ckwtOswqGHbdSFkvtciPAdPReD8CqtpDqqmsjuRhQyV2HTw51RilPKHMfkeeahv8Co4JYGmFrd0P7h5+4n7JDE5kVX2xStd0BgVdO9WErnIXBkjiFumJTaIzCEnqeBwKKOP+ZzFtAeSEtrVDG8a0dlQdSF14q+AIWBLnxcHuLUPHgDlEq197JZiA5Fdb7JAtwDTFNxbCpS+ASB6zxDOOoo7IUq3x2VCfG/wuAWurAdNSBUjkUuhOW+2ZY4oA64pSi1YmGSkZSsEQ65oLRFHK3hyuK6njB73mmsi2ViNmf8q040rBx374Bs4K4OW1UWNmeW6ZZ7llVHNWC+WWEegiENaZJJ/t8XtNWSGwoqCGgQ9yq/w0VBoxUDqTNTpLKCHGHyJjDHVmPhuBhJq5kwAtqzF7SlA2GLOyYMAMO/5umOvRnoAxe+45Zs/J6CNbbpGhNRl7nFhG688UjPWQaJU6MoAjqeIpOeEN7M4pBu4hoIrrv7Qe7ETQ9aqND0GgAFBbAOvd14t13lR7ljJmMpaF5N5Ul8B6j470OsbqSjbWuuusm629/1j6yL+RnsXLzBuLw88WEh06uhJRKftJ6+hcvf05JbvKyJjZtHRU7nMw9sRFzTLFsVeVZu99qjdjgFbJTHtAiNphlYI0X4C2OW65Ut5TDTlKnfEOhOX1GAzjjiG3nEFUDF9iUWCl6p+w502SSDDRuK4puYMMGR5CllmoS5x6z8Eg1YNb0rSNG2sYXeDVsTGjhX06rTuLLWCe5yh6dpyPujmF/plkj3PkqraJSzYcbSdHrg01ouVHwDbG0YfT4XX+IrpBBgVnY8xAFoCdonEBZaSBVpdGyOtAtHuAXQ1cgTismgAgI7BdJJb7EsBTW3eZvBrjxmKBMk16hjs6zzyVMk53kFWxmZNRLY8CPU7AsRzSnDK/IQ6MRSzyMSSOQdqoNWkQR8gpBoVQZSGQxRNqgSVVfaZShU/6+NCGJF4bcspWU6Ynp8hbAyi7fsYOx8H8o0QjkIklq2QKYhGA7VnmO07Y5SeArMsWIazYCev8LNOsW+pjWOT7ym0Ss8QxhE1fQdnXWcE3PeWBn6WMe9M+CtZyYPaKMXtGj9Xg+75gDYBvYcphGXqvr6eFLsvrJfBLXuNomYQ1U+BiJxnCMwYlZySLWc3WUX7c3vec7s2+AGl8F5lkh1jEFqyMU85cQzrh3Wcsiwyw2B1+u68Zdb7ATES1PdFw6UnGiDxzKq03w2JB7sDUa8YgBhvKGYDsaAXM8RZyQEwmaQxuJkgs1lX3ZZjThSNTFCtZYn6VBU7F4uB9A0vXEyc+9ySSWgGaBRMSRxQBzjlrLnYl7t1Sr9ustxqoxsrBt8GrNjnk5DCFZujGF915EKOGTKWRINfFzqlVKR9r+9pq0SqxvrxZdbS+88S7CE55XUES2GvLhgMiIc54irbfMgIoxFJdSye9t/GokxvnXjeosPYaBIiNjEGGKUqvhOLAc8dwoOynah0YukGCvm1buHi0KOFOGizO7bVoQdFbe01iJzmKSVGTzbLGPe1cim2a24QHLqrS0VchqM17FDpuVnZriVYRAGaTxz+wNq5QG/2SGuRzuDSkH+fVuom5YYmMljryeok3jgl88Z4UMfuwGaTBI4ZutXDucZnJ+7+wlEJ3klgw3cFBwWWI/GnBmZc3cClfDy9fMmwvt2NeC3BXZrbMOM/MrpllYonf6su4tmwlYZxMM3C7lDF9fiBlVBOQLGTaReJYxQik/b147i6Z1ZpxADXVnv2UGz6Igr/91Ad9ADNbALNVOqktBzqPfbY+NpB6U66m5/K4XC5pDln2ngKIhblH6tOpUkdm0yBGGTcAorPAZfd7J9mre0kWs/1HHjVwBAZ331uAzYmmoWVK0uap+cdq2j7JMmvv3VXGD4jkkrebdDNp8yh7rOQZbSWWbfRfvESHJ0Ac5xkStBl6i/VkXIblkXzYzcciZwmRCnLBxAoSVioeF8as0iir0sZ4QgsyXeiJ+0kqvcTETkXYZaHeywlAVoqZNaoYG+KfGN5rYvbhHZRFR8ZKYG7mP9RW/2rIwW53Bket28C7rSlxWaDZEfJqMaqnqiSk9LF/1iYpDGaV3ADbvtfRJmxJX5Ug22rRjIEP+ns0fXNdbwVZ2DtJHLcj5ARinUxOnEa2jgEI2cq/NU+VCQZOeiATmxogvXUYVpXyDsYkg56u3VXSaR9pkO91GIGwCQnVANUNBLtMbHg3IgGqeTTQ4BQLj+AWTmdWVbpFiKYJjHkS4IqUucuGKAy98veig+Mqo4QBW6Hhiy+D13SnuK8qBwOq2EdoBZ32lXa0A00JiGiE2LtTkrOned6W+Uwi+nHMm7520ERCGfdb4kV+wCUbIGPS3tTHN8Pt+1Dte+HllwWzD2ODD2LIikgeyfDDhSHzRMJYy8wsBTv8BVO2J2XMANlKyjiZf2CuKZus85Ow6crujHXIEkPANANPLAHaj/sd3os7/OibccBf2BuPeJ49DWP2yvzjERizM4wJciv9MyAj8Ko7AGLFBtk93kPG3S5YoOk2cl9gtgBPpwHbPcDYWWYvBXJSYxaO69G+L669AsAuSO5VFEHENfiVS1Uq5yhJELTkfHJZVU3MDPv4vEaIEsKmaWxaXaRaAVRS0FJ16dQKjQaysDRelgdFrQZNGLJqSf2Y4ipP6D/HWi5HLE9aaySD5T7AJTBAg/NCosfr0KXSuKd2axDv++2pUX80+VBz/rko2UMOgzaHVobNvbmLq+WyfqrbrIPYutj2k8lHgsOnSiinEhxaXx+Yu4dg9Mi8Rkg9wVjP9nvsg5ZKqlX9nOsnUknJl+vHx8m4hA0++kyLkM8VydnlIv10WjTKTud4xWhoCpWZ8rZMUk+jHLOEUCriyc4THCbe63Y0ZZyn963wS1YZUuQK4iFVM//g+W+bgFq6k0it34lBW1oMWEwWANnYU9lkYNrMIvXnjIG2ybhGXIZDkAVML2zy2ZURG/u26yU86ekTWo0RpBN1N8kX6xNxBruPH0a1r4CVbwXKb7kCrw2EfX4LkiaGjGWPzJZ18FIEkEmY9JI5w8ycLcKWUynjMsMsAWiBCUMeMK2OjZNLY1ZrhrFvYb/KQp5p+EG/w5+xNwmUXRmzz2E/pwM4V2OGPkPyqGfr66+/Htb3CDlmL52U8YFA5BZwFoYGWa3ZWYB3Arzw9+1G8HILILoZJD0UdJ54X8FXOo13hmF8CIutY97JrMCiuzyY/VI7ZcVBWdyXZ0lYO07zEmTNCiSfR95xA7O5nEAgaphRkdOfXRnlLqUjZA2YTkf9tF51bpThrvUaLt2LSsu42I8HqnCWhvbhn4d6pPFbc7UawzEIA8f1T5Ulj4TKA4AnJN0t1QHOiR6gojEywf4dovzcqn26nT7JFdmATwZvwZQvbUHXyq7AnBqHJfcQagwb+e5kOCi5ZtZhKgh1qplbjfSNArRt5yIlvm3Uq20M2eZmGXK3232lRQV0as+CtweDqeaaKNXE5NdinFwgfQvFIICO1QYazax7OfBlbK0DCPb4WMgYTZwbF2RU7MERg6QTPIDZKsIWM16q6L4LA9ohQYwMmMk8WlkANAVn+a0g4BOfyaQp9oswrSUlWA3fqGdRkCcmitJC5h4K0Do4pD69WEKQAVK4WKM+k+coOzjnnahydCTX5c19/BsAvxXVPgYvXzObfdDrLUgaxQIYq3VmzEL0TBHmLJEy+hkp4x5bhmPLfM4vy+zylzVmPpt/qCHIxfM8s5oD0O/EF+CPv9kH+oV/lk5wexin5E9jl/+sGbjnZPSRLdeK6W8BXCsQdAtg2gM9C9h/E0g6AB6nlt1pl0dpr1vbZa+9VqBuwX4dMYz3bq92d8qSqJjI0awbh+AYI+BGBeJMPHXVHgZr1p9jP7/Mce2IQQMMP9XNyIjDaSThghwn90bIDb3JSSxKFgMQgxh9iPd/bzMx4q40eNTPBHipDLFBq0L7y+wYsyZsr2CdSatAcFlUCWMFQuSzyhlrgDEMFJ10Tr3cjFgrYwkcIrY1jNyyYXPvoT6s0ijS4cOQoMsJY7TCiLKrlAOmnpc+ndoIVvcDoFdQ9lmTO1ZOWh81mcPwhLw03SlXDds6t+Vkq5oDo/POBDbuKt/02mScRtvFoedVcsysS5TbTnqrw3Pljq4Xrm+5be61A6nr+8bp2GMKwVtuXJNwgkDYYO96FJwP1nMEbdPsTGPFoKArcZOYpADUeU3Ad18YiMWQKuPVnK6xFkChCj0Xt0WI82KsUJujq30pnByvJ/sQE7m5NItt8jirs/iAu08T9FkI1BWbmTJImRfngncyKysFy+5c5qKp1EkJX3CZi1ugFbxl4ivHHwXsB1DLNwH2njRQerPJ9xYm3RJbCkn/WIliM3O2kjLWPSkjxGYex+BskjcmNvmh7iyrN6tSi5a5M0q2mZfdmrPPeMGf9xf4zreCyclrzFY9iO9OtLyyy3+GD871uoEh22XEbgVzR58pSEuyvB4KJm4FYDe//xCQm8gQ/RZp5GOxbwvgnC3fXRld/SlMMsPqyOfsmczimohtdq7duJ3xjJO0Ajmu2XOTDwBDas1in0dTsJP7YdbpSYhP12hyOOkBMAMiS1bbAB4j2TP4lNdYX7YolnMy7MBUxcUCx7lIsPbBIQS2gfixOVA62uGD4N2QxwExhyuakWyD01qxIjOZPULWl3H4nfyeSt9YuDckdRZ4DZfRtXMWUo1Oj4lXIqJccuzMrMokiZRRbQ4xVw2chZorgdttGw11uoDNhzQ1sJmNafRu1RjYuDF5Qu23sXp12o8o+QzCUecatAZGB6jLAsD6sfHoGOk1ssd5voeP9jNsThNCKDF5FOgbnwFcn6wRbZ/NnfTOEGlnSOKbwY4J/zrO7SYytiA/tO2b1kFblpBmEp6RgcflVJWU3BmXavE8AEXCtQkTEy8kI23bJFHckS2auO0Gkovn01JW0wigr4BXBlJr0mKsmnjLqmIqgI/A8Y9xKf8AtXxZs8O/Shob9VUGIKuYzT/YcZFCppmAqwtA5isZo+2HS6fGHxDwRX8nlgy0P5hrzNhKv+pzMQJZsWVu+CTu8AdQ8J/fKrBwrTFbTffY3vB4OZR7VWP2jB579u0MKNrMZPbd5DO1wU/BCdvMY9/1cZoW0PytZJvbuh2JpHELlQZyuWOW8aW/nzJ8yfvLz3ZYqtUxyiiYs8DztJzxxDlz9B3TuCetK4PHLOQW+VVpBrUmcDWAKouMGJNJzIC55OB2wxGSrsmYOz+rPMl9kpn85MPA3kyjeaxoPY8bNhXJER2UUX4hC8DToZaTKb1+7pRkFv0cr59ewvh1ODIagS0jcaTEBGMWnc6vLZjnb+tLCqK6JUGoAfPIWnjCaDBISDLt5otThGRO+WZTyHcd8sN0qskp22pxA83yuCoxbv37G2Ayk3YezCBLLivmDDs2PhnvzKxfZPkaU8LWqy3g26T9mL6aGacp+yz8iETQ9T7FUZuE06MDac5ZcrD2cPa8dlZlBl+pzR+k5gwzYAt2g5gy3gZLvRMpMHV9Rt2TTTcCB3AX7HnmvLJCgK3VnkWYl2WfRceMLGTaVhutzJlIFk3xDCjqsVA9me/Y4GNtlc/tw6abqZZU7SU16yLYrKrxB/dnBQu/37fi8R/h+B1wez9Q/jJgd8MqvwzJIjFmVUKlqyU2+QTW0tqrE1b54Z++5zuvEykjs2MMxjTLLLgy+syU6euLEyC9bufna8EH8QLfZMD/eSsP7Fxj5vsM7i70egJgpjVhj5Bj9rIyZisGLICzFUtzw2cTS5YZU9zIsK0AB4Ohyb3xrCX9CTbsST7DwqnxHgzZaZbs5GdHLFqpHuukw02dJSYsVZRoMFAYafucyabMTR6+YM48kQ554qlxeEvds2l0mTWtycxq1an4KMRf7QDkeRUakoGj1xhEHQZ00aYbIXGqTiMW3fKME4wsQJYeB+DgfQsiSshzxsBSq9YBDoVTT4P6OvbYWaw3QqV7jZXUivlC+xSjAaz/JLkHIar7HFZtsu13AZnTqLaBvx6qbYHNavuROniQdivIOXuLeFyX6fUwwGWv4VImvC0VcqDm/LtWL9fNZxw5kygTHg2ANRBKUHibYKlhbkIrO02cScOvbdJN76N6kTCGSzyhaqT+LsocgRyVazCERcCIzOHUwn7bdBU1Nm2uJ/MgU2ywQZ0VLWXMIrayCWuFXDpgylE3S+dAeoLA5K/RmGZy7V0dlqzMD2KSuOq1beWZkDGdjDpDkjUWzifP7vGzAD6Aap+A219DLV/ZWDO1xue8MicJ4+TKSADN+XZjUksm9WWhlFrqy/JwlTw9JrBmiazRBZSlrowC0porI7/fQ6cBeMHH/Q7fgIJPPYeD+gKfTTipI8v8bIJ23Pdf2eU/T2B2K0jAAUg4AlM3AbEzYOwhgOMME/SU7XP03Sdo30dvHwZmviCcQo0B38jrAF2qXBr24cJmlJkwCkN+i6QRSyQrclC2lu+wPiaxdMyy1sNsrCMLcQ3ADIkJyATMMDNDwTJ/tVcMgvLhl0+dtSWDZwuBtzONy0YenryOrAybfIwtnION0WdMK+Vhxcy16tvyzQmQZwLa4N55uxno1AEejKR1ZvBuxx+dA/teWR0xD0yK8ngOm7V+DUVx2/I+AqvNgvV8BKMeJYOhxaxrwyzaE1L93WYQsWmIOzA1dmccv+/G4Cw6WJq5OJp6CINu+2LCtF3BVrSXMbMAdTuxuW1Pbe81o5GeXyZMepcmyj44CMolLHz1IWVMY77Uq10G86HQyXOkMo/4YTu8npNkODhXytXSRI7DAzXWi5VwtQ72LLJl/L4CwxxWYrH73KVNBLXNE3GmogIbcsYMdNnqENBvl6TFNShgfxgpbHt6R0KiivAUNj+Tx78C7Pei2h8G7Our49dUAmGVasvqDmN2+A87z7HzPPvnO893mLO9oOnJrbHO1vnBuRH44VrwmhX8PXGweouB2eeQx9Ia1vVmixwzexog9azX95yMPrLlGJgdgItTnz8WyLgnGLsVcDjyEOr7ALOwTMgUunGZvTq1J26/PVDqN3xeapz4HjddzA6MoetQC3SbX/db32XM2CFxlQ9MGd1bU+d5O1P3oXpMAWjZtDG2u146WBPnE3YzgbgxMhM2jctFJoaMonQagFWZtzepNPOJd8jgW0DiCUPBhh8M2thlMZqARGDHtVEdTFVPbOJHVpXLLIDxOeW+mDsUZ1pmfQjYeWA64sp9GV3nM3HZAYz8hoCwjNGFa0KdR6Dks5gx7rNTeaRjElNrAWY4qTwCoQ3rZOagDjkeMlHhpGl2T+rwnCAKgWJwDl0AZeJkaghOLfNVJ9dec5dgtGFi9KFaONbOwRauFHPfoPVhlnJlJkw3pnFhSxaMoki26EEAaUbQpBBY498qAShOItb+eRjQCVHNk25muZDKbcze9ck6aWKT9ZiaIyJKHaHMGS03Za6tbq9KrZlj984QPjKsZOPPZR4ewEfh+D6veL87/oQbvqgDGq4hy2rLjOLQDmzymTVb1phhBmmcX+YLUMZs2eTKCGHIstoyYc68xuU2oPYzXvEdbvgwCn76uR3IKzBbDRH9tnPRX0Jg9twfZ4KVbwRnp5c5AHG3LHcTYFkAkSP27ibgI7V7h6HWZ0DfWRB1j+UevIw8ShfxSVF23Zt+TW54Kn/UYvLAiAmcUPA1ATx57/hWunJB2vsmB0Ol0ayxoGm54S5MGpKaNEsAZM6MmQ7WJ+Egf0vn12dJU+0cSH4UYoB0tPgImVjTFsQbTbhOVMEXzhGyzA/7bJCkssA9QJhACFy0LLU6ID2LrorLkVwu98tBNdc12hYNMB8rjfdy0zqxYe0R6rnS09fk+MgnPJqW3fPVZZHWbCIFLi5zGxws2OSNzYEzlm1qenwiQ1W6HriW3yxNPRSk2SxphKCO3oFZBgcJiDkxWXHvdUoEUxB8jIS/6/WDWjMGMg5R1m7u20xYNo2eTq3yqdl0noqbjA9nJxlb1hjisQzNbjMzFuSNlpObsBkQmq/GsD7LGVMbSQwpY/G3oyvBTwH4Oq/45mp4X3X8qVrxnu6kz/VkLiCMLfKLyBYXoCzki4pdvuaYHdrlI3FlRO7EmDFoWc4ZM2XV8Rl3fDsc3wLgvz3XA3iVMp4dkr0FNWavcsweOIVS61OBqjNA5ywL9uDlbgErNwKl02D/ndpeCXArFbPPgroeWnJz1xq0EN0lticuAI0H6ynGwb7dxHKSKfhA04DLD9DlJGFUOJMAsxSg2RwYfbSM+w5rolKo7HSIkC3O50eAN4s0XZivyBBZECx6qE/z5LMQd+2eDvQtEk+UtaVAS/PScirKF2gimsmnDjzBZ8R5EJefdYEX8fRnRSKVGMisMKDLvjtyXBl3Xz0dZzxlq77P5DyUCZBshRMLm036agQCg/kdlnA5A6RKnh5yZWtDPksoGWRsGdkSBuasyPUQa8ci64UA38ZVWEJ9ZN34r7ItXYI0MQNc6x3T4VkEfzOfXhDl4VO/rgY6qgZPvJJM5L+GBGTZTvqa5Te3UAub5ZmZ5TSYKbq02MnwRuUn7XN+/ASA98Pxre7409XxJ2vFF3VjD4qkqSUyZE6OjX6D6ccEzjDXlZ11Z+yfqazR1zVnVd0aB5P2M9XxEQDfBuC/PPcD98I+l9yvz7C0iXPjyyhlfBsCs9Og5ARTdQvb9KgA5IjRekSG6AyQfXB7PWL7Pnp7Jb1BaR2rIXgChEGhiVQRMhOrZBDf3Fm95IkkJuCWQqTVDlCDLdi5zLo8gC6/oU9cUH8pWkxsLF06V60/S3+0IgqoVuYC2dxZrDXz4OHmU1ONiozZGl9Bm9bOmByRWI+WMGbTCchrnFKgd5afyZYg3tzqm1TaFbBCcnPr1V9tFGM7Yb0pyMNkFpJEt9/wyC64AzC66Al9cmJsY1afBttTqLsElvuqN/HDiONpMmf+xHZnjPvybJdvi5E9lI5BZNkmeigV8W3vlIm/tl2wzv6JZbtmCu4Cn51udOC551oyrj8b37epFde3xECe2ux4O01LSfdlfHlI51xs51AkOJovF1sMOG2vg870mFiAtukmYUdX9HN9/CcAfwkV3+KG9znwB93xy1ttWQdEwozVM1JGLBwZE3CWZpkldWae/F1JGadcszpiPzdg9l8d+Bgcfwv2fBmyCZjhs1hb/mYd90rWmN/1XwGzt/hxQ1DyY7BCj/adhwCWRwSFuh9ZpMCZersz37Mbjqnf4zs7w7CbQazVg4HnxFh47CayVnMZZ2k4tSMHX6jz+0i6KV/JrjL2QvGrn5i1cuSf++o3FzpNeLLDR5eB7zMIApTmoUZmOoEwlHORMuaCwHmH5/+z13yeRhnYPELfzsBmJ199k/UxO+A9yypkhSNK5LI6sDFkvgY3s0W8J7HSTuYTYQDcjRJ05iKe0G4EqjfzEFuBy8Ut2RRoC0YrFOvNrqhIkkS8B1lv7diMNmrCNlR2zTRRGvrMXmxW9twdVsI9174y7lx3jPR4HKfSObsKbocqcosP8A2YZaN+HACzie5Z8TVt2TJ9zxZuqevZcKPJDxMxcAk8G8LVgiBMnIMaon0+/xZ2hnU1qfMKUY8iR3RurnZcufmHj82QRyI39cCivswzkObREV/SUSloTVHkwZ3RGSFWPNP6sjOPH4fj62D4gFf8fr/KHX+9MmdpwDTOSxkDEFtlmXkEaqeljJAcsxVT5vjXAD4M4BNw/Nzb7UBda8zOGH+cH1K/VMDsORl9ZMtljNkDQNN9gNOpNr9V2veIbNARiD1a5hRLtve9N7E9Hwv8lWyMtsxlRiJFE3lif7/MQdVh1hY5CPMzOAjLbGK643siTdthJ4CEKQNSTea0UVktE0831wVI9B1sGPzwpL6LZ999GsDF1CtMgzqwZb2wXzbJE+NvcOZZtN6X574GflPzs/GDI4muHsBphqjIzTcm4OhzePIEvD04RE4431dnZZwxcNqoPZCcAtrslUfwo1LBfMaC9sHrAkLr7Igj2fOpjSM4S5sghnGHdayY1Hm5iLGZ8ZLBeMqcMVgjuDB9L4PHJVwpM9TiKzSDRPEKLAmA8gDITISMNu3Uylw7q2abbhLbR3erG4klsYGWN496I03W+FgcEpvr3CZIbNJlLzOjRQER5F47seBLuerbdo7/DQAfdcd3OfAb3PFVteL3ueFXV7bGLwNc3SJl9HtKGdX8g6WMWdi0z/9+xIFPAPhuOD4Fw+XteoCujFkyObScRTie53+VY/aMHjvA7KEA7bA9H8KUPTXwuC8wu3UfHgp87wlm790WJ9m4UjFP9nLNzZTfuehGQr2OAbiM555MWiIJsNaxpSd1Lx3Y1Z3Wqpk9/hn3I1/MNWMGZmFn6syyhXoy+V3XpNasU7bUfsKW9hs2gRm2MYimIS7OcSqT1F/Q+rK89o2BoNdKDBK1rshdBxOT3KRcptrlME3iMLfOsOigOuOq0vfpOI5AbI9FLzrNL6xGts+w+Hx8tirygRTZ+CJ0yqjt04TkHi2gFiPrQKwW7Ly1Jek/VXGa1SVNEzuIJhqRuZjbaVfdU0oyQMcMtHSAntEyhwDNpqvRE9iVAzq9PkzWvhbu+QTELPmF+UxbBWx0ILS89g7uPst6XkxW+7aDhVIMpZef5Yd2WuOhlPFoR4B7CE+e6+PnAby+/fur7vjN7viqCvyuavh1wQgkkTD6I0sZ3fcljZn5R3X8kAPf48A/dOCfv1PG7S/wBh6PlX0JGbO3OzBrEjsKavb7gpRErncmE2sJkMxsD0CcOY437cSZdfI2HbTRoxuRPNK57Sd/286vBHmtiYClXUdXxSae4BlPJuwzr4gFoeR+codWNpEndNzp65Te8IMNyyiFve/kACsfiiNlteIve8KszdvlkYvBMnyYwF1s3cjHXIPLr9O21WQ7ndbjFpwUXcbPTUpnCbjllLM+6N+6yauszrvdezX1pLmeXHUbBQ6pY7N+byPXitadGGKKas//6qHSVNFHYKbnezXgSBkVlSSGfYOMjrDLMF0yLIb0UwKk+40DPRcuunFuv0BANIR7O7GznPHnV0dBeDKnEJSem5wT6MHZVzkdcb0aNO1xG8IAvO1LKTu9W5JhmC23nGnyZBAUZa/zVEPeb7SY6Jm1NumRWE7b0s5M4i2sP8dywsHSq7tgVhl0GSLh2wDSuL44wUJxYLLf1OH9DEcfLWeLLrUsfrGFr+FovvcdA8qyxz/b/v0Vd/xGd/z2DaT9qgr8ymo5g3arlDGAL+xLGSfzD+DHquM/VMf3u+GfAPgUgM+/0w7Evl3+rcPbJwBmJwfgpwe9tjfafwc+jgb9jymxuxFgPApgeQrW6DH28RHB1qNOMpyJSzgF+I9gqK+AbUIGLZZ3uw1t+31mcHfx9JETkp/b+b0uzB/p/TQsOvtk3eBRdpXLHu1Q2unS5Bo+vXZEDIN+O5L0rdbC2YEm0dm5QNKXDoieuo0ifOzJRIGPoGvfcXYMkwwiB3RucY+MdMdYOvuhreXJKcJyxljJlnvmL1o6fL6y1Pd0tiStBw2f+dw2Imf0M/2aWsQuL5sd+ZoaVtj5LtMW5icKqmz5wxkutAXTtObEdF2rYdqeUM8ypssSr5pE3pg1vZUbbj52EiMf3blsZ2BrRxYiN5d1v50fPw/gkwA+CceHAbwbjt8EwxdXx1dXwy+uwG/bQNgvDOYgoHo05FJGRx4sLQzZ/93+/mB1fMYNH3fHp93wL96ONWM3A7M3Pk8X4wFj68rmS49T7W1x5r5izJ5Bu73JLNE7HmC/6efVCrL4OdxjOHajPzslk0kXd4HZubXugof9m3e2I2eRYeZ1jpPfy8FlllSVeb0dYb+cQWM/yLpoK1/uif71lYvL6UO4NkHxdA2Om1b55l/56824tU/wG3bM8YB2eYbmCKXc/67ywDuMnT44tvsdT2Acg3BbmsTYyV99grvtCg/77T+eQqcHEVj2hDv+jnp8DsAPbs8/vp04X7J1QV/uhvdsDNfvrIZfEZgxS9gyAWTb6x+rhh/Y1vNpN3z/xrj/z5exwf8/KN3SXB79k9cAAAAASUVORK5CYII=) 0 0;cursor:row-resize}.redux-main .minicolors-slider-saturation .minicolors-slider{background-position:-60px 0}.redux-main .minicolors-slider-brightness .minicolors-slider{background-position:-20px 0}.redux-main .minicolors-slider-wheel .minicolors-slider{background-position:-20px 0}.redux-main .minicolors-opacity-slider{left:173px;background-position:-40px 0;display:none}.redux-main .minicolors-with-opacity .minicolors-opacity-slider{display:block}.redux-main .minicolors-grid .minicolors-picker{position:absolute;top:70px;left:70px;width:12px;height:12px;border:solid 1px #000;border-radius:10px;margin-top:-6px;margin-left:-6px;background:0 0}.redux-main .minicolors-grid .minicolors-picker>div{position:absolute;top:0;left:0;width:8px;height:8px;border-radius:8px;border:solid 2px #fff;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.redux-main .minicolors-picker{position:absolute;top:0;left:0;width:18px;height:2px;background:#fff;border:solid 1px #000;margin-top:-2px;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}.redux-main .minicolors-inline{display:inline-block}.redux-main .minicolors-inline .minicolors-input{display:none!important}.redux-main .minicolors-inline .minicolors-panel{position:relative;top:auto;left:auto;box-shadow:none;z-index:auto;display:inline-block}.redux-main .minicolors-theme-default .minicolors-swatch{top:5px;left:5px;width:18px;height:18px}.redux-main .minicolors-theme-default.minicolors-position-right .minicolors-swatch{left:auto;right:5px}.redux-main .minicolors-theme-default.minicolors{width:auto;display:inline-block}.redux-main .minicolors-theme-default .minicolors-input{height:28px;width:102px;display:inline-block;padding-left:26px}.redux-main .minicolors-theme-default.minicolors-position-right .minicolors-input{padding-right:26px;padding-left:inherit}.redux-main .minicolors-theme-bootstrap .minicolors-swatch{top:3px;left:3px;width:28px;height:28px;border-radius:3px}.redux-main .minicolors-theme-bootstrap.minicolors-position-right .minicolors-swatch{left:auto;right:3px}.redux-main .minicolors-theme-bootstrap .minicolors-input{padding-left:44px}.redux-main .minicolors-theme-bootstrap.minicolors-position-right .minicolors-input{padding-right:44px;padding-left:12px}.redux-main input.color_rgba-transparency{margin-left:10px;margin-right:3px}#ui-datepicker-div{z-index:15!important}.ui-datepicker-header{background-color:#00abef}.redux-dimensions-container select,.redux-dimensions-container .select_wrapper{width:80px!important;float:left}.redux-dimensions-container .field-dimensions-input{margin-right:10px;margin-bottom:7px}@media screen and (max-width:782px){.redux-dimensions-container .field-dimensions-input input{display:inline-block!important;width:100px!important}.redux-dimensions-container .field-dimensions-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-dimensions-container .select_wrapper{margin-top:6px}}.redux-container-editor .mceLayout td{border-width:1px;margin:0;padding:1px}.redux-container-editor input,.redux-container-editor textarea{margin:inherit}.redux-container-editor textarea{border-style:none;border:0;border-width:0}.redux-container-editor .wp-editor-container{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-container-editor .wp-editor-container textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border-style:inherit}.redux-container-editor .quicktags-toolbar input{margin:2px 1px 4px;line-height:18px;display:inline-block;min-width:26px;padding:2px 4px;font:12px/18px Arial,Helvetica,sans-serif normal;color:#464646;border:1px solid #c3c3c3;-webkit-border-radius:3px;border-radius:3px;background:#eee;background-image:-webkit-gradient(linear,left bottom,left top,from(#e3e3e3),to(#fff));background-image:-webkit-linear-gradient(bottom,#e3e3e3,#fff);background-image:-moz-linear-gradient(bottom,#e3e3e3,#fff);background-image:-o-linear-gradient(bottom,#e3e3e3,#fff);background-image:linear-gradient(to top,#e3e3e3,#fff)}.redux-container-image_select .redux-table-container{display:table;table-layout:fixed;width:100%}.redux-container-image_select .redux-image-select input[type=radio]{display:none}.redux-container-image_select .redux-image-select-presets img{width:100%}.redux-container-image_select ul.redux-image-select li{margin:0 10px 3px 10px;display:inline-block;padding:0 10px;padding-left:0}.redux-container-image_select .redux-image-select li:last-child{margin-bottom:0}.redux-container-image_select .redux-image-select-selected{background-color:#f9f9f9}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select .tiles,.redux-container-image_select .redux-image-select-selected .tiles{border-width:4px;border-style:solid}.redux-container-image_select .redux-image-select img,.redux-container-image_select .redux-image-select .tiles{border-color:#d9d9d9}.redux-container-image_select .redux-image-select-selected img,.redux-container-image_select .redux-image-select-selected .tiles{border-color:#7a7a7a}.redux-container-image_select .redux-image-select{margin:0!important}.redux-container-image_select .redux-image-select .tiles{display:block;background-color:#FFF;background-repeat:repeat;width:40px;height:40px}.redux-info-field{min-height:20px;padding:8px 19px;margin:10px 0;border-radius:4px;border:1px solid;position:relative}.redux-info-field h1,.redux-info-field h2,.redux-info-field h3,.redux-info-field h4,.redux-info-field h5,.redux-info-field h6{border-bottom:0!important}.redux-info-field h3{color:#777}.redux-info-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-info-field .redux-info-icon i{font-size:2em}.redux-info-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-info-field.redux-normal{background-color:#eee;border-color:#ccc;color:#666}.redux-info-field.redux-normal i{color:#c5c5c5}.redux-info-field.redux-warning{background-color:#fbeba4;border-color:#d7c281;color:#958234}.redux-info-field.redux-warning i{color:#dcca81}.redux-info-field.redux-success{background-color:#c4ee91;border-color:#71af5d;color:#4d7615}.redux-info-field.redux-success i{color:#a0ca6c}.redux-info-field.redux-critical{background-color:#fba1a3;border-color:#b84f5b;color:#981225}.redux-info-field.redux-critical i{color:#dd767d}.redux-info-field.redux-info{background-color:#d3e4f4;border-color:#a9b6c2;color:#5c80a1}.redux-info-field.redux-info i{color:#afc6da}.redux-notice-field{margin:5px 0 15px;background-color:#fff;border:0;border-left:4px solid #f3f3f3;-webkit-box-shadow:0 1px 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 1px 0 rgba(0,0,0,.1);padding:1px 12px}.redux-notice-field p{margin:.5em 0;padding:2px}.redux-notice-field .redux-info-icon{display:inline-block;margin-right:15px}.redux-notice-field .redux-info-icon i{font-size:2em}.redux-notice-field .redux-info-desc{display:inline-block;vertical-align:top}.redux-notice-field.redux-info{border-left:4px solid #0099d5}.redux-notice-field.redux-success{border-left:4px solid #7ad03a}.redux-notice-field.redux-warning{border-left:4px solid #fbeba4}.redux-notice-field.redux-critical{border-left:4px solid #dd3d36}.redux-container-link_color .linkColor{display:inline-block;padding-right:10px;padding-bottom:7px}.redux-main .button.remove-image,.redux-main .removeCSS{margin-left:10px;color:#ef521d}.redux-main .button.remove-image:hover,.redux-main .removeCSS:hover{color:red}.redux-main .upload_button_div{margin-bottom:5px}.redux-main .upload-error{float:left;color:#666;font-size:10px;font-weight:700;text-decoration:none;text-shadow:1px 1px 0 #FFF;margin:0 10px 0 0;padding:3px 10px;background:#FFDFEC;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .reset-button{font-family:Arial,Verdana,sans-serif;float:left;margin:0;color:#ef521d;border-color:#bbb}.redux-main .redux-option-image{max-height:340px;max-width:340px;padding:5px;margin-bottom:0;margin-top:10px;margin-right:15px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-main .redux-main .upload{width:80%!important}.redux-main .button{margin-top:2px}.redux-container-multi_text ul.redux-multi-text{margin:0;padding:0}.redux-container-multi_text .redux-multi-text-remove{color:red;padding:2px 4px;margin-left:5px}.redux-container-multi_text .redux-multi-text-remove:hover{background:red;color:#fff;text-decoration:none}.redux-container-multi_text .redux-multi-text-add{margin:5px 0}@media screen and (max-width:782px){.redux-container-multi_text input{clear:both}.redux-container-multi_text .redux-multi-text-remove{margin:0;float:right}}.redux-main .form-table-section-indented{width:95%;margin-left:5%}.redux-main .form-table-section tr:first-of-type th:first-of-type{padding:0!important}.redux-main h3{margin-top:10px}.redux-main .form-table-section-indented>tbody>tr:first-child{display:none}.redux-main .form-table-section-indented>tbody>tr:nth-last-child(2){border-bottom:0}.redux-container-select li.ui-state-highlight{height:20px;margin-top:2px;margin-left:5px;width:64px;margin-bottom:0}.redux-container-select_image{margin-top:2px;margin-left:5px;width:100%;margin-bottom:0}.redux-preview-image{max-height:250px;max-width:250px;padding:5px;margin-top:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slider .redux-slider-container{margin-left:25px;margin-right:25px;width:200px;display:inline-block}.redux-container-slider .redux-slider-input,.redux-container-slider .redux-slider-select-one,.redux-container-slider .redux-slider-select-two{width:100px!important;text-align:center}.redux-container-slider .redux-slider-label{position:absolute;margin-left:-5px}.redux-container-slider .redux-slider-label-one{position:absolute;margin-left:-22px}.redux-container-slider .redux-slider-label-two{position:absolute;margin-top:-21px;margin-left:245px}@media screen and (max-width:782px){.redux-container-slider input{display:inline-block!important}}@media screen and (max-width:570px){.redux-container-slider{text-align:center}.redux-container-slider input,.redux-container-slider select,.redux-container-slider .redux-slider-label,.redux-container-slider .select2-container{display:block!important;position:inherit;margin:10px auto}.redux-container-slider .redux-slider-container{margin-top:3px;width:80%}}.redux-container-slides .redux-slides-list .select2-container{margin-bottom:10px;width:100%}.redux-container-slides .redux-slides-accordion-group{margin-bottom:10px}.redux-container-slides .ui-accordion-header{margin-bottom:0}.redux-container-slides .full-text,.redux-container-slides .large-text{width:100%}.redux-container-slides .redux-slides-accordion-group{border:1px solid #dfdfdf!important;border-radius:3px!important;margin-top:0!important;background:#f9f9f9;padding:5px}.redux-container-slides .redux-slides-accordion-group h3{border:1px solid #dfdfdf;cursor:move!important;font-weight:700;padding:0 10px!important;height:40px;line-height:40px!important;background-color:#f1f1f1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-slides #redux-slides-accordion .redux-slides-image{height:250px;padding:5px;margin-top:10px;margin-bottom:10px;border:1px solid #e3e3e3;background:#f7f7f7;-moz-border-radius:3px;-khtml-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.redux-container-slides .redux-slides-add{float:right;margin-right:10%;display:block;margin-bottom:10px}.redux-container-slides .redux-slides-remove{color:#ef521d!important;float:right;margin-top:5px}.redux-container-slides .redux-slides-header{font-weight:700}.redux-container-slides .redux_slides_add_remove{margin-bottom:10px}.redux-container-slides .ui-state-hover{background-color:#ececec!important}.redux-container-sortable label{margin-right:10px;width:300px}.redux-container-sortable label.bugger{margin-bottom:0!important;font-size:12px!important;color:#999}.redux-container-sortable input{margin-right:10px}.redux-container-sortable .checkbox-container{width:364px}.redux-container-sortable .checkbox-container .drag{float:right;margin-left:10px}.redux-container-sortable li.ui-state-highlight{height:30px;width:364px;margin-bottom:13px}.redux-container-sortable li{line-height:30px}.redux-container-sortable li.placeholder{height:30px;margin:10px 0}.redux-container-sorter{margin-right:-20px}.redux-container-sorter ul{background:#F9F9F9;border:1px solid #E3E3E3;min-height:40px;padding:10px 10px 0;width:145px;float:left;margin:0 15px 0 0}.redux-container-sorter ul.filled{opacity:.7;filter:alpha(opacity=70);background:#efecec}.redux-container-sorter ul li{border:1px solid #DFDFDF;cursor:move;font-weight:700;margin-bottom:10px!important;padding:0 10px;height:40px;line-height:40px!important;background-color:#F1F1F1;background-image:-ms-linear-gradient(top,#f9f9f9,#ececec);background-image:-moz-linear-gradient(top,#f9f9f9,#ececec);background-image:-o-linear-gradient(top,#f9f9f9,#ececec);background-image:-webkit-gradient(linear,left top,left bottom,from(#f9f9f9),to(#ececec));background-image:-webkit-linear-gradient(top,#f9f9f9,#ececec);background-image:linear-gradient(top,#f9f9f9,#ececec);overflow:hidden;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #fff;box-shadow:inset 0 1px 0 #fff;text-align:center}.redux-container-sorter ul li h3{margin:0 0 10px;text-align:center;color:#777;text-transform:capitalize;word-wrap:break-word}.redux-container-sorter ul li.placeholder{height:40px}.redux-container-spacing select,.redux-container-spacing .select_wrapper{width:80px!important;float:left}.redux-container-spacing .field-spacing-input{margin-right:10px;margin-bottom:7px}.redux-container-spacing .dovy{margin:10px}@media screen and (max-width:782px){.redux-container-spacing .field-spacing-input input{display:inline-block!important;width:70px!important}.redux-container-spacing .field-spacing-input .add-on{padding:7px 4px;font-size:16px;line-height:1.5}.redux-container-spacing .select_wrapper{margin-top:6px}}.redux-container-spinner .spinner-wrpr{position:relative;display:block;height:30px;overflow:hidden}.redux-container-spinner .ui-spinner{position:static;display:inline}.redux-container-spinner .spinner-wrpr .spinner-input{position:relative!important;z-index:1;width:45px!important;height:30px!important;background:#e7e7e7!important;border:1px solid #bfbfbf!important;border-right:0!important;border-left:0!important;-webkit-border-radius:0!important;-moz-border-radius:0!important;border-radius:0!important}.redux-container-spinner .ui-spinner-buttons{position:absolute;padding:0}.redux-container-spinner .ui-widget .ui-spinner-button{position:absolute;top:0;padding:0 0 30px;overflow:hidden;cursor:pointer;background:-moz-linear-gradient(#fff,#f3f3f3);background:-o-linear-gradient(#fff,#f3f3f3);background:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f3f3f3));background:linear-gradient(#fff,#f3f3f3);background-color:#fff;border:none;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.redux-container-spinner .ui-spinner-button:hover,.redux-container-spinner .ui-state-hover{background:-moz-linear-gradient(#f3f3f3,#fff);background:-o-linear-gradient(#f3f3f3,#fff);background:-webkit-gradient(linear,left top,left bottom,from(#f3f3f3),to(#fff));background:linear-gradient(#f3f3f3,#fff);background-color:#f3f3f3}.redux-container-spinner .ui-corner-tr,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{-webkit-border-radius:0 5px 5px 0;-moz-border-radius:0 5px 5px 0;border-radius:0 5px 5px 0}.redux-container-spinner .ui-corner-br,.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{-webkit-border-radius:5px 0 0 5px;-moz-border-radius:5px 0 0 5px;border-radius:5px 0 0 5px}.redux-container-spinner .ui-spinner-button .ui-icon{top:0;display:block;width:28px;height:28px;margin:0;border:1px solid #b7b7b7}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-n{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADxJREFUeNpsjwsKADAIQu3u3tsRY6M5gz7w0AqSQFLdZ3ZRgmf44JQ/EOZ9oYOsiDviVemP2oYoWCwBBgDpO6VXVo3RyQAAAABJRU5ErkJggg==) 10px 10px no-repeat}.redux-container-spinner .ui-spinner-button .ui-icon-triangle-1-s{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAKCAYAAACXDi8zAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADhJREFUeNpi+P//PwM6bmlpwS4IorEKokggC8Il0AVhEv9x6sAmiaz9P05XIUsygmVRAUiAESDAAFHcpVdWtdj/AAAAAElFTkSuQmCC) 10px 10px no-repeat}.redux-container-switch .switch-options{min-height:30px;margin-right:10px}.redux-container-switch .switch-options label{cursor:pointer}.redux-container-switch .switch-options input{display:none}.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-o-user-select:none;-ms-user-select:none;user-select:none}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable,.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{display:block;float:left}.redux-container-switch .cb-enable span,.redux-container-switch .cb-disable span{line-height:30px;display:block;font-weight:700}.redux-container-switch .cb-enable,.redux-container-switch .cb-disable{padding:0 10px;border-width:1px;border-style:solid;-webkit-appearance:none;white-space:nowrap;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.redux-container-switch .cb-enable{border-right:0;border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;-webkit-border-radius:3px 0 0 3px}.redux-container-switch .cb-disable{border-left:0;border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;-webkit-border-radius:0 3px 3px 0}.redux-container-switch .cb-disable.selected{color:#fff}.redux-container-switch .cb-enable.selected{color:#fff}.redux-container-text label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px 0!important;cursor:default;top:5px;width:100px}.redux-container-text input{clear:left}.redux-container-text .input_wrapper{display:block;position:relative;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:left;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container{display:block;position:relative;margin:0;padding:0;width:100%;max-width:660px}.redux-main .redux-typography-container .clearfix{clear:both}.redux-main .redux-typography-container .clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.redux-main .redux-typography-container input.wp-picker-default,.redux-main .redux-typography-container .redux-typography-color{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;height:24px;padding:0 14px!important;margin-top:0;margin-bottom:0;margin-left:4px!important;font-size:12px!important}.redux-main .redux-typography-container .select_wrapper{display:block;position:relative;float:left;clear:none;margin:0 10px 0 0;width:48%!important;min-width:210px!important;max-width:324px!important;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper.typography-family .select2-container{width:100%}.redux-main .redux-typography-container .select_wrapper .redux-typography{font-size:14px!important;display:block;float:left;height:28px!important;line-height:50px!important;padding:0!important;width:100%!important;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.redux-main .redux-typography-container .select_wrapper:nth-child(even){margin-right:10px!important}.redux-main .redux-typography-container .select_wrapper:nth-child(odd){margin-right:10px!important}.redux-main .redux-typography-container .wp-picker-container{float:left;clear:left;margin-bottom:12px;padding:3px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.redux-main .redux-typography-container .input_wrapper{display:block;position:relative;margin:0 4px 0 5px;padding:0;width:23%;max-width:23%;min-width:70px;float:left;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper input.mini{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;width:78%;text-align:center;margin:0;height:28px;top:3px;padding:0 2px 0 5px;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .redux-typography-container .picker-wrapper{display:block;position:relative;margin:0 4px 0 5px;margin:0;padding:0;width:23%;width:100%;max-width:23%;min-width:70px;min-width:100%;clear:none;height:57px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;vertical-align:baseline}.redux-main .redux-typography-container .input_wrapper.font-size{margin-left:0}.redux-main .redux-typography-container label{display:block;position:relative;font-size:12px!important;text-align:left;color:#999;margin:4px 0 2px 0!important;cursor:default}.redux-main .redux-typography-container .typography-preview{display:none;width:100%;border:1px dotted #d3d3d3;max-width:850px;padding:10px;font-size:10pt;height:auto;margin:5px 0 10px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.redux-main .redux-typography-container .typography-color{border:0 none;margin:0}.redux-main .redux-typography-container ::-webkit-input-placeholder{line-height:19px}@media screen and (max-width:540px){.redux-main .redux-typography-container{max-width:230px;margin:0 auto}.redux-main .redux-typography-container .select_wrapper{max-width:210px;min-width:210px;width:210px;margin-left:0!important;margin-right:0!important}.redux-main .redux-typography-container .input_wrapper{max-width:101px;min-width:101px;width:101px;margin-left:0!important;margin-right:5px!important}.redux-main .redux-typography-container .input_wrapper input.mini{width:73%}.redux-main .redux-typography-container .input-append .add-on{width:30%;padding:5px!important}.redux-main .wp-picker-container .wp-picker-input-wrap{margin-top:7px}}@media screen and (max-width:360px){.redux-main .redux-typography-container .iris-picker .iris-square{margin-right:3%}}.redux-main .description{margin-top:7px}.form-table>tbody>tr>th{width:30%}.redux-container{background-color:#f5f5f5;background-repeat:repeat-x;background-image:-moz-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f2f2f2),color-stop(100%,#f5f5f5));background-image:-webkit-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);background-image:-ms-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);background-image:-o-linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#eeeeee', GradientType=0);background-image:linear-gradient(top,#f2f2f2 0,#f5f5f5 100%);border:1px solid #dedede;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.04);box-shadow:0 1px 1px rgba(0,0,0,.04);-moz-box-shadow:0 1px 5px rgba(0,0,0,.4);margin-top:5px;overflow:hidden}.redux-container .hr{height:20px;line-height:20px;float:none;border-color:#E7E7E7;display:block;width:100%;height:35px!important;line-height:35px!important;position:relative;margin:15px 0 10px 0}.redux-container .hr .inner span{background-color:#FCFCFC;border-color:#E7E7E7;height:5px;width:5px;border-width:2px;border-style:solid;display:block;position:absolute;left:50%;margin-left:-5px;margin-top:-5px}.redux-container .inner{width:42%!important;left:40%!important;margin-left:-6%;background-color:#FCFCFC;border-color:#E7E7E7;position:absolute;height:1px;top:50%;width:100%;margin-top:-1px;border-top-width:1px;border-top-style:solid}.redux-container #redux-header,.redux-container #redux-footer{text-align:right;padding:6px 10px}.redux-container #redux-header{background:#f1f1f1;border-bottom:3px solid #00f}.redux-container #redux-header .display_header{float:left;margin:20px 10px}.redux-container #redux-header .display_header h2{display:inline-block;font-style:normal;padding-right:5px}.redux-container #redux-header .display_header span{color:#888}.redux-container #redux-header .icon32{float:right;margin:16px 16px 0}.redux-container #redux-footer{border-top:1px solid #E7E7E7;z-index:9999}.redux-container #redux-footer #redux-share{float:left;line-height:28px;font-size:15px}.redux-container #redux-footer #redux-share a{text-decoration:none;margin-right:10px}.redux-container #redux-footer #redux-share a img{margin-bottom:-3px}.redux-container .notice-green{margin:0;border-bottom:1px solid #E7E7E7;background-color:#DFF0D8;color:#468847;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .notice-blue{margin:0;border-bottom:1px solid #BCE8F1;background-color:#D9EDF7;color:#3A87AD;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .notice-yellow{margin:0;border-bottom:1px solid #E7E7E7;background-color:#FCF8E3;color:#C09853;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .notice-red,.redux-container .redux-field-errors{margin:0;border-bottom:1px solid #E7E7E7;background-color:#F2DEDE;color:#B94A48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-container .redux-field-errors,.redux-container .redux-field-warnings,.redux-container .redux-save-warn{display:none}.redux-container .sticky-save-warn{min-height:76px}.redux-container .sticky-save-warn .redux-save-warn{position:fixed;top:32px;right:21px;left:183px;opacity:1;z-index:9999}.redux-container #info_bar{background:#f3f3f3;border-bottom:1px solid #dedede;padding:6px 10px 6px 6px;text-align:right;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}.redux-container .redux-group-tab{display:none;margin-bottom:30px}.redux-container .redux-group-tab .redux-theme-data{padding:20px 0;border-top:1px solid #E7E7E7}.redux-container .redux-group-tab .redux-theme-data.theme-description{padding:10px 0;border-width:0}.redux-container .redux-group-tab .redux-theme-data.theme-uri,.redux-container .redux-group-tab .redux-theme-data.theme-author,.redux-container .redux-group-tab .redux-theme-data.theme-version{padding:0;border-width:0}.redux-container .redux-group-tab h3{margin-top:0;line-height:2em;border-bottom:1px solid #E7E7E7}.redux-container .redux-group-tab .redux-section-desc{margin-bottom:15px;color:#666}.redux-container .redux-action_bar{float:right}.redux-container .redux-ajax-loading{display:none;background:red url(../img/ajax.gif) no-repeat;width:16px;height:16px;margin:3px 4px 0;float:right}.redux-container #redux-intro-text{background:#f3f3f3;border-bottom:1px solid #dedede;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc;padding:3px;padding:10px 10px}.redux-container #redux-intro-text p{margin:0;font-family:"Lucida Grande",Sans-serif;color:#888}.redux-container .expand_options{cursor:pointer;display:block;height:22px;width:21px;float:left;font-size:0;text-indent:-9999px;margin:1px 0 0 5px;border:1px solid #bbb;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px;background:url(../img/toggle_tabs.png) no-repeat -2px -26px}.redux-container .expand_options.expanded{background:url(../img/toggle_tabs.png) no-repeat -2px -1px}.redux-container .expand_options:hover{border-color:#888}.redux-container .sticky-footer-fixed{background:#f3f3f3;border-top:1px solid #dedede!important;-moz-box-shadow:inset 0 1px 0 #fcfcfc;-webkit-box-shadow:inset 0 1px 0 #fcfcfc;box-shadow:inset 0 1px 0 #fcfcfc}.redux-container .redux-sidebar,.redux-container .redux-main{min-height:300px}.no-js{border:1px solid #ffbaba;margin:0;border-bottom:1px solid #E7E7E7;background-color:#F2DEDE;color:#B94A48;padding:8px 35px 8px 14px;text-shadow:0 1px 0 rgba(255,255,255,.5)}.redux-main{background:#FCFCFC;margin-left:201px;border-left:1px solid #D8D8D8;padding:10px 20px;-moz-box-shadow:inset 0 1px 0 #fff;-webkit-box-shadow:inset 0 1px 0 #FFF;box-shadow:inset 0 1px 0 #FFF}.redux-main .form-table.no-border{border-top:none}.redux-main .form-table tr{border-bottom:1px solid #E7E7E7}.redux-main .form-table tr:last-child{border-bottom:none!important}.redux-main .form-table tr th,.redux-main .form-table tr td{color:#333}.redux-main .form-table tr td table.mceLayout,.redux-main .form-table tr td table.mceLayout tr,.redux-main .form-table tr td table.mceLayout tr td{padding:0;border-width:0}.redux-main .form-table tr td .redux-th-warning{font-size:1em;color:#C09853;font-weight:400;display:block}.redux-main .form-table tr td .redux-field-warning{border-color:#C09853}.redux-main .form-table tr td .redux-th-error{font-size:1em;color:#B94A48;font-weight:400;display:block}.redux-main input.large-text{width:100%}.redux-main .hide{display:none}.redux-main .redux-field-container{padding:20px 0}.redux-main .mini,.redux-main input[type=text].mini{width:50px;text-align:center}.redux-main input{line-height:19px}.redux-main img{max-width:100%;height:auto;width:auto!important}.redux-main .select2-default{width:auto!important}.redux-main .showDefaults{display:block;font-weight:400;font-size:.8em;color:#888}.redux-main span.description{display:block;font-style:normal;font-weight:400}.redux-main #redux-system-info textarea{min-height:730px;width:100%}.redux-main .field-desc{clear:both;font-size:13px}.redux-main .data-full li{width:100%}.redux-main .data-half li{width:50%;float:left}.redux-main .data-third li{width:33.3%;float:left}.redux-main .data-quarter li{width:25%;float:left}.redux-main .ui-helper-hidden-accessible{top:inherit}.redux-main .form-table:first-child tr th,.redux-main .redux-main .form-table:first-child tr td{padding-top:0!important}.redux-main .form-table{clear:none;margin-top:0!important}.redux-main .form-table:first-child tr th,.redux-main .form-table:first-child tr td{padding-top:0!important}.redux-main .form-table tr:first-child th,.redux-main .form-table tr:first-child td{padding-top:0}.redux-main .input-append input{border-right:0;margin-bottom:0;border-top-right-radius:0;border-bottom-right-radius:0;margin-right:0;float:left;margin-top:0;display:block}.redux-main .input-append .add-on{border-top-right-radius:3px;border-bottom-right-radius:3px;margin-left:-2px;padding-top:4px!important;padding-bottom:2px!important;float:left}.redux-main .input-prepend input{border-left:0;margin-bottom:0;border-top-left-radius:0;border-bottom-left-radius:0;margin-left:0;padding-top:2px;padding-bottom:5px;float:left;margin-top:0;display:block}.redux-main .input-prepend .add-on{border-top-left-radius:3px;border-bottom-left-radius:3px;float:left}.redux-main .input-append{margin-right:10px;font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:6px}.redux-main .input-append .add-on,.redux-main .input-prepend .add-on{width:auto;display:inline-block;min-width:16px;padding:3px 4px;font-size:12px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.redux-main .input-prepend{font-size:0;white-space:nowrap;float:left;display:inline-block;margin-bottom:6px}.redux-main #redux-object-browser{overflow:auto;word-wrap:break-word;max-height:600px;max-width:100%}.redux-sidebar{width:202px;float:left}.redux-sidebar .redux-group-menu{margin-top:0!important}.redux-sidebar .redux-group-menu li{margin-top:0}.redux-sidebar .redux-group-menu li.active a,.redux-sidebar .redux-group-menu li.active a:hover,.redux-sidebar .redux-group-menu li.activeChild a,.redux-sidebar .redux-group-menu li.activeChild a:hover{background:#FCFCFC;color:#269ad6;width:184px;opacity:1}.redux-sidebar .redux-group-menu li.active a li a{background:#333;padding-left:5px}.redux-sidebar .redux-group-menu li.divide{padding:0;border-width:1px 0;border-style:solid;border-bottom-color:#E7E7E7;border-top-color:#F9F9F9}.redux-sidebar .redux-group-menu li a:first-child{border-top:none}.redux-sidebar .redux-group-menu li a{display:block;padding:10px 4px 10px 14px;background:#e0e0e0;background:0 0;border-width:1px 0;border-style:solid;border-bottom-color:#E7E7E7;border-top-color:#F9F9F9;opacity:.7;color:#555;font-weight:700;text-decoration:none;-webkit-transition:none;transition:none}.redux-sidebar .redux-group-menu li a.custom-tab{background:#f6f6f6}.redux-sidebar .redux-group-menu li a img{width:16px;height:16px;position:absolute;left:15px}.redux-sidebar .redux-group-menu li a:hover{background:#e5e5e5;color:#777;opacity:1}.redux-sidebar .redux-menu-warning,.redux-sidebar .redux-menu-error,.redux-sidebar .hasSubSections .extraIconSubsections{display:inline-block;float:right;padding:6px 7px 4px 7px;margin-left:4px;font-family:sans-serif;font-size:9px;font-weight:700;line-height:9px;border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;margin-right:5px}.redux-sidebar .redux-menu-warning i,.redux-sidebar .redux-menu-error i,.redux-sidebar .hasSubSections .extraIconSubsections i{margin-left:-3px;margin-top:-3px}.redux-sidebar .redux-menu-error{background-color:#b94a48;color:#f2dede}.redux-sidebar .redux-menu-warning{background-color:#C09853;color:#FCF8E3}.redux-sidebar ul .subsection{display:none}.redux-sidebar .redux-group-tab-link-a{position:relative;outline:0}.redux-sidebar .redux-group-tab-link-a i{vertical-align:middle;font-size:1.35em;position:absolute}.redux-sidebar .redux-group-tab-link-a span{display:block}.redux-sidebar .redux-group-tab-link-a span.group_title{padding-left:30px}.redux-sidebar .redux-group-tab-link-li a.hasError span.group_title{padding-right:25px}.form-table th,.form-table td{margin:0;padding:0;width:auto}.redux_field_th{font-weight:700;padding:20px 10px 20px 0;display:block}.redux_field_th span:first-child{font-weight:400;display:block;color:#666}.farb-popup-wrapper{position:relative;display:block}.farb-popup{position:absolute;left:40px;top:40px;background-color:#fff;border:1px solid #222;padding:5px;z-index:100}#ui-datepicker-div{display:none}.mp6 .icon-themes{display:none}.mp6 .redux-container #info_bar{padding:6px 10px 6px 6px}.mp6 .redux-container #info_bar a{margin-top:2px}.redux-timer{text-align:center;font-size:10px;color:#888}.wrap{margin-top:0}@media screen and (max-width:1124px){.redux-sidebar{width:44px}.redux-sidebar .extraIconSubsections{display:none!important}.redux-sidebar .redux-group-menu li a,.redux-sidebar .redux-group-menu li a:hover,.redux-sidebar .redux-group-menu li.active a,.redux-sidebar .redux-group-menu li.active a:hover,.redux-sidebar .redux-group-menu li.activeChild a,.redux-sidebar .redux-group-menu li.activeChild a:hover{width:auto}.redux-sidebar .redux-group-tab-link-a{position:relative}.redux-sidebar .redux-group-tab-link-a i{position:inherit}.redux-sidebar .redux-group-tab-link-a span{display:none;position:absolute;top:0;left:44px;padding:12px;width:200px;background:#eee;border:1px solid #ccc;-webkit-box-shadow:2px 2px 8px rgba(0,0,0,.2);-moz-box-shadow:2px 2px 8px rgba(0,0,0,.2);box-shadow:2px 2px 8px rgba(0,0,0,.2);border-width:1px 1px 1px 0;z-index:3}.redux-sidebar .redux-group-tab-link-a:hover>span{display:block}.redux-main{margin-left:43px;width:auto;max-width:100%}table.form-table,.form-table>thead,.form-table>tbody,.form-table>tbody>tr>th,.form-table>tbody>tr>td,.form-table>tbody>tr{display:block;width:100%!important;padding:0!important}.form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px!important}.form-table>tbody>tr>th,.form-table>tbody>tr>td{padding:10px!important}}@media screen and (max-width:783px){.mp6 .redux-container #info_bar{height:auto;padding-bottom:1px}.mp6 .redux-container #info_bar a{margin-top:5px}}pre{overflow:hidden}#redux-header h2{color:#fff}.admin-color-fresh .redux-container .button.ui-datepicker-current,.admin-color-fresh .redux-container button.ui-datepicker-close{background-color:#007fb1!important}.admin-color-fresh .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#1e8cbe!important;color:#fff!important;border:1px solid #104b66!important}.admin-color-fresh .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-fresh .redux-container .ui-datepicker-header{background-color:#222!important;color:#fff!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-active{background-color:#007fb1!important;color:#fff!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-hover{color:#007fb1!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-highlight{background:#0074a2!important;border:1px solid #222!important;color:#fff!important}.admin-color-fresh .redux-container-switch .cb-disable,.admin-color-fresh .redux-container-switch .cb-enable,.admin-color-fresh .redux-container .ui-state-default,.admin-color-fresh .redux-container .ui-widget-content .ui-state-default,.admin-color-fresh .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-fresh .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-fresh .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-fresh .redux-container-switch .cb-enable.selected,.admin-color-fresh .redux-container .ui-buttonset .ui-state-active{background-color:#0074a2!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#008ec6),to(#0074a2))!important;background-image:-moz-linear-gradient(top,#008ec6,#0074a2)!important;background-image:-ms-linear-gradient(top,#008ec6,#0074a2)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#008ec6),color-stop(100%,#0074a2))!important;background-image:-webkit-linear-gradient(top,#008ec6,#0074a2)!important;background-image:-o-linear-gradient(top,#008ec6,#0074a2)!important;background-image:linear-gradient(top,#008ec6,#0074a2)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#003d56!important;border-color:#004f6f!important;-webkit-box-shadow:inset 0 1px 0 #00abef,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #00abef,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-fresh #redux-header .display_header span{color:#bbb}.admin-color-fresh #redux-header{background:#222;border-color:#0074a2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-fresh .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-fresh .redux-sidebar .redux-group-menu li.active a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild a{color:#222}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#0074a2}.admin-color-fresh .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#222}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#bbb}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#222}.admin-color-fresh .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#0074a2}.admin-color-fresh .redux-container-image_select .redux-image-select-selected img{border-color:#0074a2}.admin-color-fresh #redux-footer #redux-share a{color:#0074a2}.admin-color-fresh #redux-footer #redux-share a:hover{color:#002b3c}.admin-color-fresh .select2-results .select2-highlighted{background:#0074a2}.admin-color-fresh .select2-drop-active,.admin-color-fresh .select2-container-multi.select2-container-active .select2-choices,.admin-color-fresh .select2-drop.select2-drop-above.select2-drop-active,.admin-color-fresh .select2-container-active .select2-choice,.admin-color-fresh .select2-container-active .select2-choices,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#0074a2}.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-fresh .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-fresh .noUi-connect{background-color:#007fb1;background-image:-khtml-gradient(linear,left top,left bottom,from(#0099d5),to(#007fb1));background-image:-moz-linear-gradient(top,#0099d5,#007fb1);background-image:-ms-linear-gradient(top,#0099d5,#007fb1);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#0099d5),color-stop(100%,#007fb1));background-image:-webkit-linear-gradient(top,#0099d5,#007fb1);background-image:-o-linear-gradient(top,#0099d5,#007fb1);background-image:linear-gradient(top,#0099d5,#007fb1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-light .redux-container .button.ui-datepicker-current,.admin-color-light .redux-container button.ui-datepicker-close{background-color:#04b0db!important}.admin-color-light .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#0384a4!important;color:#fff!important;border:1px solid #013340!important}.admin-color-light .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-light .redux-container .ui-datepicker-header{background-color:#888!important;color:#fff!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-active{background-color:#04b0db!important;color:#fff!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-hover{color:#04b0db!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-highlight{background:#04a4cc!important;border:1px solid #888!important;color:#fff!important}.admin-color-light .redux-container-switch .cb-disable,.admin-color-light .redux-container-switch .cb-enable,.admin-color-light .redux-container .ui-state-default,.admin-color-light .redux-container .ui-widget-content .ui-state-default,.admin-color-light .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-light .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-light .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-light .redux-container-switch .cb-enable.selected,.admin-color-light .redux-container .ui-buttonset .ui-state-active{background-color:#04a4cc!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#05c0ef),to(#04a4cc))!important;background-image:-moz-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:-ms-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#05c0ef),color-stop(100%,#04a4cc))!important;background-image:-webkit-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:-o-linear-gradient(top,#05c0ef,#04a4cc)!important;background-image:linear-gradient(top,#05c0ef,#04a4cc)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#036881!important;border-color:#037c9a!important;-webkit-box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #22cffb,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-light #redux-header .display_header span{color:#e6e6e6}.admin-color-light #redux-header{background:#888;border-color:#04a4cc}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-light .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-light .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-light .redux-sidebar .redux-group-menu li.active,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-light .redux-sidebar .redux-group-menu li.active a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild a{color:#888}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#04a4cc}.admin-color-light .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#888}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#e6e6e6}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#888}.admin-color-light .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#04a4cc}.admin-color-light .redux-container-image_select .redux-image-select-selected img{border-color:#04a4cc}.admin-color-light #redux-footer #redux-share a{color:#04a4cc}.admin-color-light #redux-footer #redux-share a:hover{color:#025468}.admin-color-light .select2-results .select2-highlighted{background:#04a4cc}.admin-color-light .select2-drop-active,.admin-color-light .select2-container-multi.select2-container-active .select2-choices,.admin-color-light .select2-drop.select2-drop-above.select2-drop-active,.admin-color-light .select2-container-active .select2-choice,.admin-color-light .select2-container-active .select2-choices,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#04a4cc}.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-light .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-light .noUi-connect{background-color:#04b0db;background-image:-khtml-gradient(linear,left top,left bottom,from(#09cafa),to(#04b0db));background-image:-moz-linear-gradient(top,#09cafa,#04b0db);background-image:-ms-linear-gradient(top,#09cafa,#04b0db);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#09cafa),color-stop(100%,#04b0db));background-image:-webkit-linear-gradient(top,#09cafa,#04b0db);background-image:-o-linear-gradient(top,#09cafa,#04b0db);background-image:linear-gradient(top,#09cafa,#04b0db);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-blue .redux-container .button.ui-datepicker-current,.admin-color-blue .redux-container button.ui-datepicker-close{background-color:#509dba!important}.admin-color-blue .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#db9825!important;color:#fff!important;border:1px solid #845c16!important}.admin-color-blue .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-blue .redux-container .ui-datepicker-header{background-color:#096484!important;color:#fff!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-active{background-color:#509dba!important;color:#fff!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-hover{color:#509dba!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-highlight{background:#4796b3!important;border:1px solid #096484!important;color:#fff!important}.admin-color-blue .redux-container-switch .cb-disable,.admin-color-blue .redux-container-switch .cb-enable,.admin-color-blue .redux-container .ui-state-default,.admin-color-blue .redux-container .ui-widget-content .ui-state-default,.admin-color-blue .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-blue .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-blue .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-blue .redux-container-switch .cb-enable.selected,.admin-color-blue .redux-container .ui-buttonset .ui-state-active{background-color:#4796b3!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#5ea5bf),to(#4796b3))!important;background-image:-moz-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:-ms-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#5ea5bf),color-stop(100%,#4796b3))!important;background-image:-webkit-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:-o-linear-gradient(top,#5ea5bf,#4796b3)!important;background-image:linear-gradient(top,#5ea5bf,#4796b3)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#31687c!important;border-color:#39778e!important;-webkit-box-shadow:inset 0 1px 0 #7cb6cb,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #7cb6cb,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-blue #redux-header .display_header span{color:#e2ecf1}.admin-color-blue #redux-header{background:#096484;border-color:#4796b3}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-blue .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-blue .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-blue .redux-sidebar .redux-group-menu li.active,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-blue .redux-sidebar .redux-group-menu li.active a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild a{color:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#4796b3}.admin-color-blue .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#e2ecf1}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#096484}.admin-color-blue .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#4796b3}.admin-color-blue .redux-container-image_select .redux-image-select-selected img{border-color:#4796b3}.admin-color-blue #redux-footer #redux-share a{color:#4796b3}.admin-color-blue #redux-footer #redux-share a:hover{color:#2a596a}.admin-color-blue .select2-results .select2-highlighted{background:#4796b3}.admin-color-blue .select2-drop-active,.admin-color-blue .select2-container-multi.select2-container-active .select2-choices,.admin-color-blue .select2-drop.select2-drop-above.select2-drop-active,.admin-color-blue .select2-container-active .select2-choice,.admin-color-blue .select2-container-active .select2-choices,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#4796b3}.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-blue .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-blue .noUi-connect{background-color:#509dba;background-image:-khtml-gradient(linear,left top,left bottom,from(#69abc4),to(#509dba));background-image:-moz-linear-gradient(top,#69abc4,#509dba);background-image:-ms-linear-gradient(top,#69abc4,#509dba);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#69abc4),color-stop(100%,#509dba));background-image:-webkit-linear-gradient(top,#69abc4,#509dba);background-image:-o-linear-gradient(top,#69abc4,#509dba);background-image:linear-gradient(top,#69abc4,#509dba);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-coffee .redux-container .button.ui-datepicker-current,.admin-color-coffee .redux-container button.ui-datepicker-close{background-color:#ccad93!important}.admin-color-coffee .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#ba906d!important;color:#fff!important;border:1px solid #835d3e!important}.admin-color-coffee .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-coffee .redux-container .ui-datepicker-header{background-color:#46403c!important;color:#fff!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-active{background-color:#ccad93!important;color:#fff!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-hover{color:#ccad93!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-highlight{background:#c7a589!important;border:1px solid #46403c!important;color:#fff!important}.admin-color-coffee .redux-container-switch .cb-disable,.admin-color-coffee .redux-container-switch .cb-enable,.admin-color-coffee .redux-container .ui-state-default,.admin-color-coffee .redux-container .ui-widget-content .ui-state-default,.admin-color-coffee .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-coffee .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-coffee .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-coffee .redux-container-switch .cb-enable.selected,.admin-color-coffee .redux-container .ui-buttonset .ui-state-active{background-color:#c7a589!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#d2b7a1),to(#c7a589))!important;background-image:-moz-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:-ms-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d2b7a1),color-stop(100%,#c7a589))!important;background-image:-webkit-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:-o-linear-gradient(top,#d2b7a1,#c7a589)!important;background-image:linear-gradient(top,#d2b7a1,#c7a589)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ae7d55!important;border-color:#b78b66!important;-webkit-box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #e0cdbd,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-coffee #redux-header .display_header span{color:#cdcbc9}.admin-color-coffee #redux-header{background:#46403c;border-color:#c7a589}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-coffee .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-coffee .redux-sidebar .redux-group-menu li.active a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild a{color:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#c7a589}.admin-color-coffee .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#cdcbc9}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#46403c}.admin-color-coffee .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#c7a589}.admin-color-coffee .redux-container-image_select .redux-image-select-selected img{border-color:#c7a589}.admin-color-coffee #redux-footer #redux-share a{color:#c7a589}.admin-color-coffee #redux-footer #redux-share a:hover{color:#9f714b}.admin-color-coffee .select2-results .select2-highlighted{background:#c7a589}.admin-color-coffee .select2-drop-active,.admin-color-coffee .select2-container-multi.select2-container-active .select2-choices,.admin-color-coffee .select2-drop.select2-drop-above.select2-drop-active,.admin-color-coffee .select2-container-active .select2-choice,.admin-color-coffee .select2-container-active .select2-choices,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#c7a589}.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-coffee .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-coffee .noUi-connect{background-color:#ccad93;background-image:-khtml-gradient(linear,left top,left bottom,from(#d7bfac),to(#ccad93));background-image:-moz-linear-gradient(top,#d7bfac,#ccad93);background-image:-ms-linear-gradient(top,#d7bfac,#ccad93);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#d7bfac),color-stop(100%,#ccad93));background-image:-webkit-linear-gradient(top,#d7bfac,#ccad93);background-image:-o-linear-gradient(top,#d7bfac,#ccad93);background-image:linear-gradient(top,#d7bfac,#ccad93);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-ectoplasm .redux-container .button.ui-datepicker-current,.admin-color-ectoplasm .redux-container button.ui-datepicker-close{background-color:#a9bd4f!important}.admin-color-ectoplasm .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#89993a!important;color:#fff!important;border:1px solid #474f1e!important}.admin-color-ectoplasm .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-ectoplasm .redux-container .ui-datepicker-header{background-color:#413256!important;color:#fff!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-active{background-color:#a9bd4f!important;color:#fff!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-hover{color:#a9bd4f!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-highlight{background:#a3b745!important;border:1px solid #413256!important;color:#fff!important}.admin-color-ectoplasm .redux-container-switch .cb-disable,.admin-color-ectoplasm .redux-container-switch .cb-enable,.admin-color-ectoplasm .redux-container .ui-state-default,.admin-color-ectoplasm .redux-container .ui-widget-content .ui-state-default,.admin-color-ectoplasm .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-ectoplasm .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-ectoplasm .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-ectoplasm .redux-container-switch .cb-enable.selected,.admin-color-ectoplasm .redux-container .ui-buttonset .ui-state-active{background-color:#a3b745!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#b0c25e),to(#a3b745))!important;background-image:-moz-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:-ms-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#b0c25e),color-stop(100%,#a3b745))!important;background-image:-webkit-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:-o-linear-gradient(top,#b0c25e,#a3b745)!important;background-image:linear-gradient(top,#b0c25e,#a3b745)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#727f30!important;border-color:#829237!important;-webkit-box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #bfcd7b,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-ectoplasm #redux-header .display_header span{color:#cbc5d3}.admin-color-ectoplasm #redux-header{background:#413256;border-color:#a3b745}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild a{color:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#a3b745}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#cbc5d3}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#413256}.admin-color-ectoplasm .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#a3b745}.admin-color-ectoplasm .redux-container-image_select .redux-image-select-selected img{border-color:#a3b745}.admin-color-ectoplasm #redux-footer #redux-share a{color:#a3b745}.admin-color-ectoplasm #redux-footer #redux-share a:hover{color:#616d29}.admin-color-ectoplasm .select2-results .select2-highlighted{background:#a3b745}.admin-color-ectoplasm .select2-drop-active,.admin-color-ectoplasm .select2-container-multi.select2-container-active .select2-choices,.admin-color-ectoplasm .select2-drop.select2-drop-above.select2-drop-active,.admin-color-ectoplasm .select2-container-active .select2-choice,.admin-color-ectoplasm .select2-container-active .select2-choices,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#a3b745}.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ectoplasm .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-ectoplasm .noUi-connect{background-color:#a9bd4f;background-image:-khtml-gradient(linear,left top,left bottom,from(#b6c669),to(#a9bd4f));background-image:-moz-linear-gradient(top,#b6c669,#a9bd4f);background-image:-ms-linear-gradient(top,#b6c669,#a9bd4f);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#b6c669),color-stop(100%,#a9bd4f));background-image:-webkit-linear-gradient(top,#b6c669,#a9bd4f);background-image:-o-linear-gradient(top,#b6c669,#a9bd4f);background-image:linear-gradient(top,#b6c669,#a9bd4f);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-midnight .redux-container .button.ui-datepicker-current,.admin-color-midnight .redux-container button.ui-datepicker-close{background-color:#e35950!important}.admin-color-midnight .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#d92c23!important;color:#fff!important;border:1px solid #811a15!important}.admin-color-midnight .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-midnight .redux-container .ui-datepicker-header{background-color:#363b3f!important;color:#fff!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-active{background-color:#e35950!important;color:#fff!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-hover{color:#e35950!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-highlight{background:#e14d43!important;border:1px solid #363b3f!important;color:#fff!important}.admin-color-midnight .redux-container-switch .cb-disable,.admin-color-midnight .redux-container-switch .cb-enable,.admin-color-midnight .redux-container .ui-state-default,.admin-color-midnight .redux-container .ui-widget-content .ui-state-default,.admin-color-midnight .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-midnight .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-midnight .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-midnight .redux-container-switch .cb-enable.selected,.admin-color-midnight .redux-container .ui-buttonset .ui-state-active{background-color:#e14d43!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#e66a62),to(#e14d43))!important;background-image:-moz-linear-gradient(top,#e66a62,#e14d43)!important;background-image:-ms-linear-gradient(top,#e66a62,#e14d43)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e66a62),color-stop(100%,#e14d43))!important;background-image:-webkit-linear-gradient(top,#e66a62,#e14d43)!important;background-image:-o-linear-gradient(top,#e66a62,#e14d43)!important;background-image:linear-gradient(top,#e66a62,#e14d43)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ba281e!important;border-color:#d02c21!important;-webkit-box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #ec8b85,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-midnight #redux-header .display_header span{color:#c2c4c5}.admin-color-midnight #redux-header{background:#363b3f;border-color:#e14d43}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-midnight .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-midnight .redux-sidebar .redux-group-menu li.active a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild a{color:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#e14d43}.admin-color-midnight .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#c2c4c5}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#363b3f}.admin-color-midnight .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#e14d43}.admin-color-midnight .redux-container-image_select .redux-image-select-selected img{border-color:#e14d43}.admin-color-midnight #redux-footer #redux-share a{color:#e14d43}.admin-color-midnight #redux-footer #redux-share a:hover{color:#a4231a}.admin-color-midnight .select2-results .select2-highlighted{background:#e14d43}.admin-color-midnight .select2-drop-active,.admin-color-midnight .select2-container-multi.select2-container-active .select2-choices,.admin-color-midnight .select2-drop.select2-drop-above.select2-drop-active,.admin-color-midnight .select2-container-active .select2-choice,.admin-color-midnight .select2-container-active .select2-choices,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#e14d43}.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-midnight .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-midnight .noUi-connect{background-color:#e35950;background-image:-khtml-gradient(linear,left top,left bottom,from(#e8776f),to(#e35950));background-image:-moz-linear-gradient(top,#e8776f,#e35950);background-image:-ms-linear-gradient(top,#e8776f,#e35950);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e8776f),color-stop(100%,#e35950));background-image:-webkit-linear-gradient(top,#e8776f,#e35950);background-image:-o-linear-gradient(top,#e8776f,#e35950);background-image:linear-gradient(top,#e8776f,#e35950);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-ocean .redux-container .button.ui-datepicker-current,.admin-color-ocean .redux-container button.ui-datepicker-close{background-color:#a7c0a9!important}.admin-color-ocean .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#86a988!important;color:#fff!important;border:1px solid #547555!important}.admin-color-ocean .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-ocean .redux-container .ui-datepicker-header{background-color:#627c83!important;color:#fff!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-active{background-color:#a7c0a9!important;color:#fff!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-hover{color:#a7c0a9!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-highlight{background:#9ebaa0!important;border:1px solid #627c83!important;color:#fff!important}.admin-color-ocean .redux-container-switch .cb-disable,.admin-color-ocean .redux-container-switch .cb-enable,.admin-color-ocean .redux-container .ui-state-default,.admin-color-ocean .redux-container .ui-widget-content .ui-state-default,.admin-color-ocean .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-ocean .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-ocean .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-ocean .redux-container-switch .cb-enable.selected,.admin-color-ocean .redux-container .ui-buttonset .ui-state-active{background-color:#9ebaa0!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#b3c9b4),to(#9ebaa0))!important;background-image:-moz-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:-ms-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#b3c9b4),color-stop(100%,#9ebaa0))!important;background-image:-webkit-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:-o-linear-gradient(top,#b3c9b4,#9ebaa0)!important;background-image:linear-gradient(top,#b3c9b4,#9ebaa0)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#719a74!important;border-color:#80a583!important;-webkit-box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #cbdacc,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-ocean #redux-header .display_header span{color:#d5dddf}.admin-color-ocean #redux-header{background:#627c83;border-color:#9ebaa0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-ocean .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-ocean .redux-sidebar .redux-group-menu li.active a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild a{color:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#9ebaa0}.admin-color-ocean .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#d5dddf}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#627c83}.admin-color-ocean .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#9ebaa0}.admin-color-ocean .redux-container-image_select .redux-image-select-selected img{border-color:#9ebaa0}.admin-color-ocean #redux-footer #redux-share a{color:#9ebaa0}.admin-color-ocean #redux-footer #redux-share a:hover{color:#658d68}.admin-color-ocean .select2-results .select2-highlighted{background:#9ebaa0}.admin-color-ocean .select2-drop-active,.admin-color-ocean .select2-container-multi.select2-container-active .select2-choices,.admin-color-ocean .select2-drop.select2-drop-above.select2-drop-active,.admin-color-ocean .select2-container-active .select2-choice,.admin-color-ocean .select2-container-active .select2-choices,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#9ebaa0}.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-ocean .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-ocean .noUi-connect{background-color:#a7c0a9;background-image:-khtml-gradient(linear,left top,left bottom,from(#bccfbd),to(#a7c0a9));background-image:-moz-linear-gradient(top,#bccfbd,#a7c0a9);background-image:-ms-linear-gradient(top,#bccfbd,#a7c0a9);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#bccfbd),color-stop(100%,#a7c0a9));background-image:-webkit-linear-gradient(top,#bccfbd,#a7c0a9);background-image:-o-linear-gradient(top,#bccfbd,#a7c0a9);background-image:linear-gradient(top,#bccfbd,#a7c0a9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}.admin-color-sunrise .redux-container .button.ui-datepicker-current,.admin-color-sunrise .redux-container button.ui-datepicker-close{background-color:#df8a48!important}.admin-color-sunrise .redux-container .ui-datepicker-buttonpane button.ui-datepicker-current{background:#cc6c23!important;color:#fff!important;border:1px solid #753e14!important}.admin-color-sunrise .redux-container .ui-datepicker-header .ui-icon{background-image:url(vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png)!important}.admin-color-sunrise .redux-container .ui-datepicker-header{background-color:#b43c38!important;color:#fff!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-active{background-color:#df8a48!important;color:#fff!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-hover{color:#df8a48!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-highlight{background:#dd823b!important;border:1px solid #b43c38!important;color:#fff!important}.admin-color-sunrise .redux-container-switch .cb-disable,.admin-color-sunrise .redux-container-switch .cb-enable,.admin-color-sunrise .redux-container .ui-state-default,.admin-color-sunrise .redux-container .ui-widget-content .ui-state-default,.admin-color-sunrise .redux-container .ui-widget-header .ui-state-default{background-color:#f5f5f5!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f5f5f5))!important;background-image:-moz-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-ms-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#f8f8f8),color-stop(100%,#f5f5f5))!important;background-image:-webkit-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:-o-linear-gradient(top,#f8f8f8,#f5f5f5)!important;background-image:linear-gradient(top,#f8f8f8,#f5f5f5)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ccc!important}.admin-color-sunrise .redux-container .ui-datepicker td .ui-state-active{color:#000!important;font-weight:700!important;background:#fff!important}.admin-color-sunrise .redux-container-switch .cb-disable.selected{background-color:#646464!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#929292),to(#646464))!important;background-image:-moz-linear-gradient(top,#929292,#646464)!important;background-image:-ms-linear-gradient(top,#929292,#646464)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#929292),color-stop(100%,#646464))!important;background-image:-webkit-linear-gradient(top,#929292,#646464)!important;background-image:-o-linear-gradient(top,#929292,#646464)!important;background-image:linear-gradient(top,#929292,#646464)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#767676!important}.admin-color-sunrise .redux-container-switch .cb-enable.selected,.admin-color-sunrise .redux-container .ui-buttonset .ui-state-active{background-color:#dd823b!important;background-image:-khtml-gradient(linear,left top,left bottom,from(#e29559),to(#dd823b))!important;background-image:-moz-linear-gradient(top,#e29559,#dd823b)!important;background-image:-ms-linear-gradient(top,#e29559,#dd823b)!important;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e29559),color-stop(100%,#dd823b))!important;background-image:-webkit-linear-gradient(top,#e29559,#dd823b)!important;background-image:-o-linear-gradient(top,#e29559,#dd823b)!important;background-image:linear-gradient(top,#e29559,#dd823b)!important;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)!important;border-color:#ad5d1e!important;border-color:#c36922!important;-webkit-box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)!important;box-shadow:inset 0 1px 0 #e8ac7c,0 1px 0 rgba(0,0,0,.15)!important}.admin-color-sunrise #redux-header .display_header span{color:#f0c8c6}.admin-color-sunrise #redux-header{background:#b43c38;border-color:#dd823b}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a{position:relative}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:after{border:0 none!important;content:"\0020"!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections .redux-menu-error{display:none;margin-right:5px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections a.hasError .extraIconSubsections{background-color:#b94a48;color:#f2dede}.admin-color-sunrise .redux-sidebar .redux-group-menu li.hasSubSections a .extraIconSubsections{border-radius:10px;-moz-border-radius:10px;-webkit-border-radius:10px;border:0 solid transparent;float:right;font-size:9px;height:9px;line-height:9px;margin-right:5px;padding:6px 7px 4px 7px;width:5px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active a .extraIconSubsections,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild a .extraIconSubsections{display:none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .redux-menu-error,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .redux-menu-error{display:block}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .subsection .redux-menu-error,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .subsection .redux-menu-error{margin-right:2px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild{border-left:0 none}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild a{color:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections .active a:after,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections .active a:after{right:0;border:solid 8px transparent;content:"\0020";height:0;width:0;position:absolute;pointer-events:none;border-right-color:#fff;top:50%;margin-top:-8px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{-webkit-transition:all .2s;-moz-transition:all .2s;transition:all .2s;color:#fff;width:auto;border-bottom:0}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li{border-top:0 none!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.active a:hover,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a:hover{color:#fff}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{width:auto;border-top:0!important;padding:7px;color:#fff;padding-left:15px;-webkit-transition:all .2;-moz-transition:all .2;-ms-transition:all .2;-o-transition:all .2;transition:all .2}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a:hover,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a:hover{color:#2ea2cc;background:#000}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a span.group_title,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a span.group_title{padding-left:5px!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a{padding-left:14px}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li.hasIcon a span.group_title,.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.hasIcon a span.group_title{padding-left:30px!important}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections a{background:#dd823b}.admin-color-sunrise .redux-sidebar .redux-group-menu li.active.hasSubSections ul.subsection li a{background:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections a{background:#f0c8c6}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li a{background:#b43c38}.admin-color-sunrise .redux-sidebar .redux-group-menu li.activeChild.hasSubSections ul.subsection li.active a{background:#dd823b}.admin-color-sunrise .redux-container-image_select .redux-image-select-selected img{border-color:#dd823b}.admin-color-sunrise #redux-footer #redux-share a{color:#dd823b}.admin-color-sunrise #redux-footer #redux-share a:hover{color:#98511a}.admin-color-sunrise .select2-results .select2-highlighted{background:#dd823b}.admin-color-sunrise .select2-drop-active,.admin-color-sunrise .select2-container-multi.select2-container-active .select2-choices,.admin-color-sunrise .select2-drop.select2-drop-above.select2-drop-active,.admin-color-sunrise .select2-container-active .select2-choice,.admin-color-sunrise .select2-container-active .select2-choices,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choices{border-color:#dd823b}.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choice,.admin-color-sunrise .select2-dropdown-open.select2-drop-above .select2-choices{border-top:inherit}.admin-color-sunrise .noUi-connect{background-color:#df8a48;background-image:-khtml-gradient(linear,left top,left bottom,from(#e59e66),to(#df8a48));background-image:-moz-linear-gradient(top,#e59e66,#df8a48);background-image:-ms-linear-gradient(top,#e59e66,#df8a48);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#e59e66),color-stop(100%,#df8a48));background-image:-webkit-linear-gradient(top,#e59e66,#df8a48);background-image:-o-linear-gradient(top,#e59e66,#df8a48);background-image:linear-gradient(top,#e59e66,#df8a48);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='@from', endColorstr='@to', GradientType=0)}@media screen and (max-width:1124px){.redux-group-tab-link-a span{padding:11px 12px;color:#555;-webkit-transition:all .3s;-moz-transition:all .3s;transition:all .3s}.redux-group-tab-link-a span:hover{background:#e5e5e5}}@media screen and (max-width:782px){#redux-footer #redux-share{line-height:38px;font-size:18px}.sticky-save-warn .redux-save-warn{right:13px;top:46px}.redux-container .expand_options{margin-top:5px}.redux-action_bar input{margin-bottom:0!important}}@media screen and (max-width:650px){#redux-footer #redux-share,.redux-hint-qtip{display:none}.redux-container .redux-action_bar{float:none}}@media screen and (max-width:476px){.redux-container .expand_options{display:none}#redux-footer,.redux-container #info_bar{text-align:center}}.redux-sidebar .icon-large,.redux-main .icon-large{background-image:inherit!important;width:inherit;height:inherit}.redux-main dd,.redux-main li,.redux-sidebar li{margin-bottom:0!important}.fully-expanded .redux-sidebar{margin-left:-500px}.fully-expanded .redux-main{margin-left:0}.fully-expanded .redux-group-tab{display:block}@media screen and (max-width:1124px){.form-table>tbody>tr>th{padding-bottom:0!important}.redux_field_th{padding-top:0;padding-bottom:0}.redux-main .redux-field-container{padding-top:0;padding-bottom:0}}@media screen and (min-width:601px) and (max-width:782px){.redux-container .sticky-save-warn .redux-save-warn{top:47px!important;right:13px!important}}@media screen and (max-width:782px){.redux-main .form-table-section-indented input[type=text]{width:95%!important}.redux-main .redux-container-sortable input[type=text]{width:80%;display:initial}.redux-main .redux-typography-container .input_wrapper input.mini{font-size:16px!important;height:40px!important;padding:7px 10px!important;line-height:24px!important}.redux-main .redux-typography-container .picker-wrapper label{margin-top:16px!important}.redux-main .input-append{height:50px!important}.redux-main .input-append .add-on{font-size:16px;line-height:24px!important;padding:7px;height:32px!important;float:right;margin-top:-40px}.redux-main .redux-hint-qtip{float:left!important}}@media screen and (max-width:600px){.sticky-save-warn .redux-save-warn{top:0!important;right:14px!important}}@media screen and (max-width:570px){.redux-main .redux-container-sortable .checkbox-container{width:85%;padding-bottom:5px}.redux-main .redux-container-sortable .checkbox-container label{display:initial}}#redux-header{position:relative}.redux-container #redux-header .display_header span.redux-dev-mode-notice{position:absolute;left:20px;bottom:9px;background-color:#f0ad4e;display:inline;padding:.2em .6em .3em;font-weight:700;line-height:1;color:#fff!important;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#redux-import-link-wrapper,#redux-import-code-wrapper{display:none}#redux-export-code,#redux-export-link-value{display:none}#redux-import-action span{color:#B94A48}.redux-main input.redux-color{float:left;width:70px;margin-left:5px}.redux-main input.color-transparency{margin-left:10px;margin-right:3px}.redux-main input.wp-color-picker{width:80px}.redux-main .section-color .controls{width:345px}.redux-main .section-color .explain{width:225px}.redux-main .iris-picker .iris-strip .ui-slider-handle{position:absolute;background:none!important;right:-3px;left:-3px;border:4px solid #aaa!important;border-width:4px 3px;width:auto;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.2);opacity:.9;z-index:5;cursor:ns-resize}.redux-main .iris-picker .iris-slider-offset{position:absolute;top:2px;left:0;right:0;bottom:4px;width:28px;background:none!important;border:0!important;height:auto}.redux-main .wp-picker-container input{margin-bottom:inherit;margin-top:inherit;padding:2px}.redux-main .wp-picker-container .wp-color-result{outline:0;margin:0}.redux-main .wp-picker-container .wp-picker-default{padding:0 10px 1px}.redux-main .redux-color-gradient{line-height:24px}.redux-main .color-transparency-check{line-height:1;margin-top:0!important}.redux-main .wp-picker-clear{margin-top:0!important} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/rtl.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/rtl.css new file mode 100644 index 00000000..8c4e2ab2 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/rtl.css @@ -0,0 +1,24 @@ +#redux-container .redux-action_bar { + float: left; +} + +#redux-container #expand_options, #redux-sidebar, .cb-enable, .cb-disable, .cb-enable span, .cb-disable span, #redux-footer #redux-share { + float: right; +} + +#redux-main { + border-left: 0px; + margin-left: 0px; + border-right: 1px solid #d8d8d8; + margin-right: 201px; +} + +.redux-group-tab-link-a span.group_title { + padding-left: 0px; + padding-right: 30px; +} + +.redux_slider { + margin-left: 0px; + margin-right: 15px; +} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont-ie7.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont-ie7.css new file mode 100644 index 00000000..9c6de368 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont-ie7.css @@ -0,0 +1,845 @@ +[class^="icon-"], +[class*=" icon-"] { + padding-right: .3em +} +.icon-large { + font-size: 1.3333333333333333em; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + vertical-align: -20%; +} +.btn [class^="icon-"], +.nav [class^="icon-"], +.btn [class*=" icon-"], +.nav [class*=" icon-"] { + vertical-align: inherit; + margin-top: -4px; + padding-top: 3px; + margin-bottom: -4px; + padding-bottom: 3px; + line-height: .9em; +} +a [class^="icon-"], +a [class*=" icon-"] { + cursor: pointer +} +ul.icons { + text-indent: -1.5em; + margin-left: 3em; +} + +.icon-zoom-out:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-zoom-in:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-youtube:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-wrench-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-wrench:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-wordpress:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-wheelchair:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-website-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-website:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-warning-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-w3c:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-volume-up:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-volume-off:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-volume-down:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-vimeo:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-view-mode:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-video-chat:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-video-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-video:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-user:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-upload:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-unlock-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-unlock:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-universal-access:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-twitter:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-tumblr:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-trash-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-trash:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-torso:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-tint:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-time-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-time:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-thumbs-up:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-thumbs-down:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-th-list:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-th-large:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-th:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-text-width:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-text-height:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-tasks:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-tags:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-tag:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-stumbleupon:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-stop-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-stop:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-step-forward:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-step-backward:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-star-empty:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-star-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-star:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-stackoverflow:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-speaker:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-smiley-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-smiley:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-slideshare:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-skype:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-signal:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-shopping-cart-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-shopping-cart:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-share-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-share:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-search-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-search:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-screenshot:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-screen-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-screen:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-rss:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-road:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-reverse-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-retweet:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-resize-vertical:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-resize-small:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-resize-horizontal:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-resize-full:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-repeat-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-repeat:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-remove-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-remove-circle:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-remove:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-refresh:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-reddit:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-record:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-random:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-quotes-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-quotes:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-question-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-question:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-qrcode:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-print:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-plus-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-plus:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-play-circle:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-play-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-play:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-plane:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-pinterest:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-picture:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-picasa:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-photo-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-photo:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-phone-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-phone:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-person:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-pencil-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-pencil:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-pause-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-pause:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-path:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-paper-clip-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-paper-clip:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-ok-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-ok-circle:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-ok:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-off:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-network:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-music:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-move:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-minus-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-minus:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-mic-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-mic:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-map-marker-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-map-marker:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-male:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-magnet:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-lock-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-lock:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-list-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-list:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-linkedin:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-leaf:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-laptop-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-laptop:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-key:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-italic:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-iphone-home:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-instagram:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-info-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-indent-right:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-indent-left:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-hand-right:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-hand-left:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-hand-down:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-guidedog:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-group-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-group:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-forward-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-forward:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-fontsize:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-font:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-folder-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-folder-open:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-female:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-fast-forward:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-fast-backward:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-facetime-video:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-facebook:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-eye-open:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-dashboard:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-css:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-credit-card:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-compass-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-compass:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-comment-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-chevron-down:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-check-empty:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-check:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-certificate:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-cc:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-camera:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-ban-circle:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-backward:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-asterisk:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-asl:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-arrow-up:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-arrow-right:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-heart-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-heart:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-hearing-impaired:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-headphones:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-hdd:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-hand-up:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-github:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-gift:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-fullscreen:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-friendfeed-rect:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-friendfeed:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-foursquare:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-file-new-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-file-new:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-file-edit-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-file-edit:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-file-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-file:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-dribble:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-download-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-download:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-digg:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-deviantart:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-delicious:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-circle-arrow-left:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-circle-arrow-down:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-child:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-chevron-up:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-chevron-right:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-chevron-left:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-bold:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-blogger:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-blind:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-bell:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-behance:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-barcode:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-arrow-left:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-arrow-down:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-align-right:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-align-left:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-align-justify:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-align-center:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-adult:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-adjust:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-address-book-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-address-book:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-idea:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-home-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-home:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-heart-empty:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-globe:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-glasses:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-glass:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-github-text:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-flag:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-fire:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-filter:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-film:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-envelope-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-envelope:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-eject:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-edit:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-cloud-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-cloud:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-circle-arrow-up:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-circle-arrow-right:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-braille:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-bookmark-empty:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-bookmark:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-book:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-inbox-box:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-inbox-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-inbox:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-idea-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-graph-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-graph:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-googleplus:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-globe-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-folder-close:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-folder:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-flickr:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-flag-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-eye-close:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-exclamation-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-error-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-error:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-comment:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-cogs:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-cog-alt:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-cog:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-calendar-sign:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-calendar:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-bullhorn:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-briefcase:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} +.icon-vkontakte:before { + *zoom: expression(this.runtimeStyle['zoom'] = '1',this.innerHTML = ''): ; +} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.css new file mode 100644 index 00000000..5e009f73 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.css @@ -0,0 +1,301 @@ +@font-face{font-family:'Elusive-Icons';src:url('font/Elusive-Icons.eot?v=2');src:url('font/Elusive-Icons.eot?#iefix&v=2') format('embedded-opentype'),url('font/Elusive-Icons.svg#Elusive-Icons?v=2') format('svg'),url('font/Elusive-Icons.woff?v=2') format('woff'),url('font/Elusive-Icons.ttf?v=2') format('truetype');font-weight:normal;font-style:normal}[class*="el-icon-"]{font-family:'Elusive-Icons';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale} +.btn-large [class^="el-icon-"],.btn-large [class*=" el-icon-"]{margin-top:0} +.el-icon-zoom-out:before{content:"\e600"} +.el-icon-zoom-in:before{content:"\e601"} +.el-icon-youtube:before{content:"\e602"} +.el-icon-wrench-alt:before{content:"\e603"} +.el-icon-wrench:before{content:"\e604"} +.el-icon-wordpress:before{content:"\e605"} +.el-icon-wheelchair:before{content:"\e606"} +.el-icon-website-alt:before{content:"\e607"} +.el-icon-website:before{content:"\e608"} +.el-icon-warning-sign:before{content:"\e609"} +.el-icon-w3c:before{content:"\e60a"} +.el-icon-volume-up:before{content:"\e60b"} +.el-icon-volume-off:before{content:"\e60c"} +.el-icon-volume-down:before{content:"\e60d"} +.el-icon-vkontakte:before{content:"\e60e"} +.el-icon-vimeo:before{content:"\e60f"} +.el-icon-view-mode:before{content:"\e610"} +.el-icon-video-chat:before{content:"\e611"} +.el-icon-video-alt:before{content:"\e612"} +.el-icon-video:before{content:"\e613"} +.el-icon-viadeo:before{content:"\e614"} +.el-icon-user:before{content:"\e615"} +.el-icon-usd:before{content:"\e616"} +.el-icon-upload:before{content:"\e617"} +.el-icon-unlock-alt:before{content:"\e618"} +.el-icon-unlock:before{content:"\e619"} +.el-icon-universal-access:before{content:"\e61a"} +.el-icon-twitter:before{content:"\e61b"} +.el-icon-tumblr:before{content:"\e61c"} +.el-icon-trash-alt:before{content:"\e61d"} +.el-icon-trash:before{content:"\e61e"} +.el-icon-torso:before{content:"\e61f"} +.el-icon-tint:before{content:"\e620"} +.el-icon-time-alt:before{content:"\e621"} +.el-icon-time:before{content:"\e622"} +.el-icon-thumbs-up:before{content:"\e623"} +.el-icon-thumbs-down:before{content:"\e624"} +.el-icon-th-list:before{content:"\e625"} +.el-icon-th-large:before{content:"\e626"} +.el-icon-th:before{content:"\e627"} +.el-icon-text-width:before{content:"\e628"} +.el-icon-text-height:before{content:"\e629"} +.el-icon-tasks:before{content:"\e62a"} +.el-icon-tags:before{content:"\e62b"} +.el-icon-tag:before{content:"\e62c"} +.el-icon-stumbleupon:before{content:"\e62d"} +.el-icon-stop-alt:before{content:"\e62e"} +.el-icon-stop:before{content:"\e62f"} +.el-icon-step-forward:before{content:"\e630"} +.el-icon-step-backward:before{content:"\e631"} +.el-icon-star-empty:before{content:"\e632"} +.el-icon-star-alt:before{content:"\e633"} +.el-icon-star:before{content:"\e634"} +.el-icon-stackoverflow:before{content:"\e635"} +.el-icon-spotify:before{content:"\e636"} +.el-icon-speaker:before{content:"\e637"} +.el-icon-soundcloud:before{content:"\e638"} +.el-icon-smiley-alt:before{content:"\e639"} +.el-icon-smiley:before{content:"\e63a"} +.el-icon-slideshare:before{content:"\e63b"} +.el-icon-skype:before{content:"\e63c"} +.el-icon-signal:before{content:"\e63d"} +.el-icon-shopping-cart-sign:before{content:"\e63e"} +.el-icon-shopping-cart:before{content:"\e63f"} +.el-icon-share-alt:before{content:"\e640"} +.el-icon-share:before{content:"\e641"} +.el-icon-search-alt:before{content:"\e642"} +.el-icon-search:before{content:"\e643"} +.el-icon-screenshot:before{content:"\e644"} +.el-icon-screen-alt:before{content:"\e645"} +.el-icon-screen:before{content:"\e646"} +.el-icon-scissors:before{content:"\e647"} +.el-icon-rss:before{content:"\e648"} +.el-icon-road:before{content:"\e649"} +.el-icon-reverse-alt:before{content:"\e64a"} +.el-icon-retweet:before{content:"\e64b"} +.el-icon-return-key:before{content:"\e64c"} +.el-icon-resize-vertical:before{content:"\e64d"} +.el-icon-resize-small:before{content:"\e64e"} +.el-icon-resize-horizontal:before{content:"\e64f"} +.el-icon-resize-full:before{content:"\e650"} +.el-icon-repeat-alt:before{content:"\e651"} +.el-icon-repeat:before{content:"\e652"} +.el-icon-remove-sign:before{content:"\e653"} +.el-icon-remove-circle:before{content:"\e654"} +.el-icon-remove:before{content:"\e655"} +.el-icon-refresh:before{content:"\e656"} +.el-icon-reddit:before{content:"\e657"} +.el-icon-record:before{content:"\e658"} +.el-icon-random:before{content:"\e659"} +.el-icon-quotes-alt:before{content:"\e65a"} +.el-icon-quotes:before{content:"\e65b"} +.el-icon-question-sign:before{content:"\e65c"} +.el-icon-question:before{content:"\e65d"} +.el-icon-qrcode:before{content:"\e65e"} +.el-icon-puzzle:before{content:"\e65f"} +.el-icon-print:before{content:"\e660"} +.el-icon-podcast:before{content:"\e661"} +.el-icon-plus-sign:before{content:"\e662"} +.el-icon-plus:before{content:"\e663"} +.el-icon-play-circle:before{content:"\e664"} +.el-icon-play-alt:before{content:"\e665"} +.el-icon-play:before{content:"\e666"} +.el-icon-plane:before{content:"\e667"} +.el-icon-pinterest:before{content:"\e668"} +.el-icon-picture:before{content:"\e669"} +.el-icon-picasa:before{content:"\e66a"} +.el-icon-photo-alt:before{content:"\e66b"} +.el-icon-photo:before{content:"\e66c"} +.el-icon-phone-alt:before{content:"\e66d"} +.el-icon-phone:before,.el-icon-earphone:before{content:"\e66e"} +.el-icon-person:before{content:"\e66f"} +.el-icon-pencil-alt:before{content:"\e670"} +.el-icon-pencil:before{content:"\e671"} +.el-icon-pause-alt:before{content:"\e672"} +.el-icon-pause:before{content:"\e673"} +.el-icon-path:before{content:"\e674"} +.el-icon-paper-clip-alt:before,.el-icon-paperclip-alt:before{content:"\e675"} +.el-icon-paper-clip:before,.el-icon-paperclip:before{content:"\e676"} +.el-icon-opensource:before{content:"\e677"} +.el-icon-ok-sign:before{content:"\e678"} +.el-icon-ok-circle:before{content:"\e679"} +.el-icon-ok:before{content:"\e67a"} +.el-icon-off:before{content:"\e67b"} +.el-icon-network:before{content:"\e67c"} +.el-icon-myspace:before{content:"\e67d"} +.el-icon-music:before{content:"\e67e"} +.el-icon-move:before{content:"\e67f"} +.el-icon-minus-sign:before{content:"\e680"} +.el-icon-minus:before{content:"\e681"} +.el-icon-mic-alt:before{content:"\e682"} +.el-icon-mic:before{content:"\e683"} +.el-icon-map-marker-alt:before{content:"\e684"} +.el-icon-map-marker:before{content:"\e685"} +.el-icon-male:before{content:"\e686"} +.el-icon-magnet:before{content:"\e687"} +.el-icon-magic:before{content:"\e688"} +.el-icon-lock-alt:before{content:"\e689"} +.el-icon-lock:before{content:"\e68a"} +.el-icon-livejournal:before{content:"\e68b"} +.el-icon-list-alt:before{content:"\e68c"} +.el-icon-list:before{content:"\e68d"} +.el-icon-linkedin:before{content:"\e68e"} +.el-icon-link:before{content:"\e68f"} +.el-icon-lines:before{content:"\e690"} +.el-icon-leaf:before{content:"\e691"} +.el-icon-lastfm:before{content:"\e692"} +.el-icon-laptop-alt:before{content:"\e693"} +.el-icon-laptop:before{content:"\e694"} +.el-icon-key:before{content:"\e695"} +.el-icon-italic:before{content:"\e696"} +.el-icon-iphone-home:before{content:"\e697"} +.el-icon-instagram:before{content:"\e698"} +.el-icon-info-sign:before{content:"\e699"} +.el-icon-indent-right:before{content:"\e69a"} +.el-icon-indent-left:before{content:"\e69b"} +.el-icon-inbox-box:before{content:"\e69c"} +.el-icon-inbox-alt:before{content:"\e69d"} +.el-icon-inbox:before{content:"\e69e"} +.el-icon-idea-alt:before{content:"\e69f"} +.el-icon-idea:before{content:"\e6a0"} +.el-icon-hourglass:before{content:"\e6a1"} +.el-icon-home-alt:before{content:"\e6a2"} +.el-icon-home:before{content:"\e6a3"} +.el-icon-heart-empty:before{content:"\e6a4"} +.el-icon-heart-alt:before{content:"\e6a5"} +.el-icon-heart:before{content:"\e6a6"} +.el-icon-hearing-impaired:before{content:"\e6a7"} +.el-icon-headphones:before{content:"\e6a8"} +.el-icon-hdd:before{content:"\e6a9"} +.el-icon-hand-up:before{content:"\e6aa"} +.el-icon-hand-right:before{content:"\e6ab"} +.el-icon-hand-left:before{content:"\e6ac"} +.el-icon-hand-down:before{content:"\e6ad"} +.el-icon-guidedog:before{content:"\e6ae"} +.el-icon-group-alt:before{content:"\e6af"} +.el-icon-group:before{content:"\e6b0"} +.el-icon-graph-alt:before{content:"\e6b1"} +.el-icon-graph:before{content:"\e6b2"} +.el-icon-googleplus:before{content:"\e6b3"} +.el-icon-globe-alt:before{content:"\e6b4"} +.el-icon-globe:before{content:"\e6b5"} +.el-icon-glasses:before{content:"\e6b6"} +.el-icon-glass:before{content:"\e6b7"} +.el-icon-github-text:before{content:"\e6b8"} +.el-icon-github:before{content:"\e6b9"} +.el-icon-gift:before{content:"\e6ba"} +.el-icon-gbp:before{content:"\e6bb"} +.el-icon-fullscreen:before{content:"\e6bc"} +.el-icon-friendfeed-rect:before{content:"\e6bd"} +.el-icon-friendfeed:before{content:"\e6be"} +.el-icon-foursquare:before{content:"\e6bf"} +.el-icon-forward-alt:before{content:"\e6c0"} +.el-icon-forward:before{content:"\e6c1"} +.el-icon-fork:before{content:"\e6c2"} +.el-icon-fontsize:before{content:"\e6c3"} +.el-icon-font:before{content:"\e6c4"} +.el-icon-folder-sign:before{content:"\e6c5"} +.el-icon-folder-open:before{content:"\e6c6"} +.el-icon-folder-close:before{content:"\e6c7"} +.el-icon-folder:before{content:"\e6c8"} +.el-icon-flickr:before{content:"\e6c9"} +.el-icon-flag-alt:before{content:"\e6ca"} +.el-icon-flag:before{content:"\e6cb"} +.el-icon-fire:before{content:"\e6cc"} +.el-icon-filter:before{content:"\e6cd"} +.el-icon-film:before{content:"\e6ce"} +.el-icon-file-new-alt:before{content:"\e6cf"} +.el-icon-file-new:before{content:"\e6d0"} +.el-icon-file-edit-alt:before{content:"\e6d1"} +.el-icon-file-edit:before{content:"\e6d2"} +.el-icon-file-alt:before{content:"\e6d3"} +.el-icon-file:before{content:"\e6d4"} +.el-icon-female:before{content:"\e6d5"} +.el-icon-fast-forward:before{content:"\e6d6"} +.el-icon-fast-backward:before{content:"\e6d7"} +.el-icon-facetime-video:before{content:"\e6d8"} +.el-icon-facebook:before{content:"\e6d9"} +.el-icon-eye-open:before{content:"\e6da"} +.el-icon-eye-close:before{content:"\e6db"} +.el-icon-exclamation-sign:before{content:"\e6dc"} +.el-icon-eur:before{content:"\e6dd"} +.el-icon-error-alt:before{content:"\e6de"} +.el-icon-error:before{content:"\e6df"} +.el-icon-envelope-alt:before{content:"\e6e0"} +.el-icon-envelope:before{content:"\e6e1"} +.el-icon-eject:before{content:"\e6e2"} +.el-icon-edit:before{content:"\e6e3"} +.el-icon-dribbble:before{content:"\e6e4"} +.el-icon-download-alt:before{content:"\e6e5"} +.el-icon-download:before{content:"\e6e6"} +.el-icon-digg:before{content:"\e6e7"} +.el-icon-deviantart:before{content:"\e6e8"} +.el-icon-delicious:before{content:"\e6e9"} +.el-icon-dashboard:before{content:"\e6ea"} +.el-icon-css:before{content:"\e6eb"} +.el-icon-credit-card:before{content:"\e6ec"} +.el-icon-compass-alt:before{content:"\e6ed"} +.el-icon-compass:before{content:"\e6ee"} +.el-icon-comment-alt:before{content:"\e6ef"} +.el-icon-comment:before{content:"\e6f0"} +.el-icon-cogs:before{content:"\e6f1"} +.el-icon-cog-alt:before{content:"\e6f2"} +.el-icon-cog:before{content:"\e6f3"} +.el-icon-cloud-alt:before{content:"\e6f4"} +.el-icon-cloud:before{content:"\e6f5"} +.el-icon-circle-arrow-up:before{content:"\e6f6"} +.el-icon-circle-arrow-right:before{content:"\e6f7"} +.el-icon-circle-arrow-left:before{content:"\e6f8"} +.el-icon-circle-arrow-down:before{content:"\e6f9"} +.el-icon-child:before{content:"\e6fa"} +.el-icon-chevron-up:before{content:"\e6fb"} +.el-icon-chevron-right:before{content:"\e6fc"} +.el-icon-chevron-left:before{content:"\e6fd"} +.el-icon-chevron-down:before{content:"\e6fe"} +.el-icon-check-empty:before,.el-icon-unchecked:before{content:"\e6ff"} +.el-icon-check:before{content:"\e700"} +.el-icon-certificate:before{content:"\e701"} +.el-icon-cc:before{content:"\e702"} +.el-icon-caret-up:before{content:"\e703"} +.el-icon-caret-right:before{content:"\e704"} +.el-icon-caret-left:before{content:"\e705"} +.el-icon-caret-down:before{content:"\e706"} +.el-icon-car:before{content:"\e707"} +.el-icon-camera:before{content:"\e708"} +.el-icon-calendar-sign:before{content:"\e709"} +.el-icon-calendar:before{content:"\e70a"} +.el-icon-bullhorn:before{content:"\e70b"} +.el-icon-bulb:before{content:"\e70c"} +.el-icon-brush:before{content:"\e70d"} +.el-icon-broom:before{content:"\e70e"} +.el-icon-briefcase:before{content:"\e70f"} +.el-icon-braille:before{content:"\e710"} +.el-icon-bookmark-empty:before{content:"\e711"} +.el-icon-bookmark:before{content:"\e712"} +.el-icon-book:before{content:"\e713"} +.el-icon-bold:before{content:"\e714"} +.el-icon-blogger:before{content:"\e715"} +.el-icon-blind:before{content:"\e716"} +.el-icon-bell:before{content:"\e717"} +.el-icon-behance:before{content:"\e718"} +.el-icon-barcode:before{content:"\e719"} +.el-icon-ban-circle:before{content:"\e71a"} +.el-icon-backward:before{content:"\e71b"} +.el-icon-asl:before{content:"\e71c"} +.el-icon-arrow-up:before{content:"\e71d"} +.el-icon-arrow-right:before{content:"\e71e"} +.el-icon-arrow-left:before{content:"\e71f"} +.el-icon-arrow-down:before{content:"\e720"} +.el-icon-align-right:before{content:"\e721"} +.el-icon-align-left:before{content:"\e722"} +.el-icon-align-justify:before{content:"\e723"} +.el-icon-align-center:before{content:"\e724"} +.el-icon-adult:before{content:"\e725"} +.el-icon-adjust-alt:before{content:"\e726"} +.el-icon-adjust:before{content:"\e727"} +.el-icon-address-book-alt:before{content:"\e728"} +.el-icon-address-book:before{content:"\e729"} +.el-icon-asterisk:before{content:"\e72a"} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.less b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.less new file mode 100644 index 00000000..8466780b --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/elusive-webfont.less @@ -0,0 +1,932 @@ +@elusiveWebfontPath: 'font/'; +@Elusive-iconfontVersion: 2; +@font-face { + font-family: 'Elusive-Icons'; + src:url('@{elusiveWebfontPath}Elusive-Icons.eot?v=@{Elusive-iconfontVersion}'); + src:url('@{elusiveWebfontPath}Elusive-Icons.eot?#iefix&v=@{Elusive-iconfontVersion}') format('embedded-opentype'), + url('@{elusiveWebfontPath}Elusive-Icons.svg#Elusive-Icons?v=@{Elusive-iconfontVersion}') format('svg'), + url('@{elusiveWebfontPath}Elusive-Icons.woff?v=@{Elusive-iconfontVersion}') format('woff'), + url('@{elusiveWebfontPath}Elusive-Icons.ttf?v=@{Elusive-iconfontVersion}') format('truetype'); + font-weight: normal; + font-style: normal; +} + +[class*="el-icon-"] { + font-family: 'Elusive-Icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.btn-large [class^="el-icon-"], .btn-large [class*=" el-icon-"]{ + margin-top: 0; +} + +.el-icon-zoom-out:before { + content: "\e600"; +} +.el-icon-zoom-in:before { + content: "\e601"; +} +.el-icon-youtube:before { + content: "\e602"; +} +.el-icon-wrench-alt:before { + content: "\e603"; +} +.el-icon-wrench:before { + content: "\e604"; +} +.el-icon-wordpress:before { + content: "\e605"; +} +.el-icon-wheelchair:before { + content: "\e606"; +} +.el-icon-website-alt:before { + content: "\e607"; +} +.el-icon-website:before { + content: "\e608"; +} +.el-icon-warning-sign:before { + content: "\e609"; +} +.el-icon-w3c:before { + content: "\e60a"; +} +.el-icon-volume-up:before { + content: "\e60b"; +} +.el-icon-volume-off:before { + content: "\e60c"; +} +.el-icon-volume-down:before { + content: "\e60d"; +} +.el-icon-vkontakte:before { + content: "\e60e"; +} +.el-icon-vimeo:before { + content: "\e60f"; +} +.el-icon-view-mode:before { + content: "\e610"; +} +.el-icon-video-chat:before { + content: "\e611"; +} +.el-icon-video-alt:before { + content: "\e612"; +} +.el-icon-video:before { + content: "\e613"; +} +.el-icon-viadeo:before { + content: "\e614"; +} +.el-icon-user:before { + content: "\e615"; +} +.el-icon-usd:before { + content: "\e616"; +} +.el-icon-upload:before { + content: "\e617"; +} +.el-icon-unlock-alt:before { + content: "\e618"; +} +.el-icon-unlock:before { + content: "\e619"; +} +.el-icon-universal-access:before { + content: "\e61a"; +} +.el-icon-twitter:before { + content: "\e61b"; +} +.el-icon-tumblr:before { + content: "\e61c"; +} +.el-icon-trash-alt:before { + content: "\e61d"; +} +.el-icon-trash:before { + content: "\e61e"; +} +.el-icon-torso:before { + content: "\e61f"; +} +.el-icon-tint:before { + content: "\e620"; +} +.el-icon-time-alt:before { + content: "\e621"; +} +.el-icon-time:before { + content: "\e622"; +} +.el-icon-thumbs-up:before { + content: "\e623"; +} +.el-icon-thumbs-down:before { + content: "\e624"; +} +.el-icon-th-list:before { + content: "\e625"; +} +.el-icon-th-large:before { + content: "\e626"; +} +.el-icon-th:before { + content: "\e627"; +} +.el-icon-text-width:before { + content: "\e628"; +} +.el-icon-text-height:before { + content: "\e629"; +} +.el-icon-tasks:before { + content: "\e62a"; +} +.el-icon-tags:before { + content: "\e62b"; +} +.el-icon-tag:before { + content: "\e62c"; +} +.el-icon-stumbleupon:before { + content: "\e62d"; +} +.el-icon-stop-alt:before { + content: "\e62e"; +} +.el-icon-stop:before { + content: "\e62f"; +} +.el-icon-step-forward:before { + content: "\e630"; +} +.el-icon-step-backward:before { + content: "\e631"; +} +.el-icon-star-empty:before { + content: "\e632"; +} +.el-icon-star-alt:before { + content: "\e633"; +} +.el-icon-star:before { + content: "\e634"; +} +.el-icon-stackoverflow:before { + content: "\e635"; +} +.el-icon-spotify:before { + content: "\e636"; +} +.el-icon-speaker:before { + content: "\e637"; +} +.el-icon-soundcloud:before { + content: "\e638"; +} +.el-icon-smiley-alt:before { + content: "\e639"; +} +.el-icon-smiley:before { + content: "\e63a"; +} +.el-icon-slideshare:before { + content: "\e63b"; +} +.el-icon-skype:before { + content: "\e63c"; +} +.el-icon-signal:before { + content: "\e63d"; +} +.el-icon-shopping-cart-sign:before { + content: "\e63e"; +} +.el-icon-shopping-cart:before { + content: "\e63f"; +} +.el-icon-share-alt:before { + content: "\e640"; +} +.el-icon-share:before { + content: "\e641"; +} +.el-icon-search-alt:before { + content: "\e642"; +} +.el-icon-search:before { + content: "\e643"; +} +.el-icon-screenshot:before { + content: "\e644"; +} +.el-icon-screen-alt:before { + content: "\e645"; +} +.el-icon-screen:before { + content: "\e646"; +} +.el-icon-scissors:before { + content: "\e647"; +} +.el-icon-rss:before { + content: "\e648"; +} +.el-icon-road:before { + content: "\e649"; +} +.el-icon-reverse-alt:before { + content: "\e64a"; +} +.el-icon-retweet:before { + content: "\e64b"; +} +.el-icon-return-key:before { + content: "\e64c"; +} +.el-icon-resize-vertical:before { + content: "\e64d"; +} +.el-icon-resize-small:before { + content: "\e64e"; +} +.el-icon-resize-horizontal:before { + content: "\e64f"; +} +.el-icon-resize-full:before { + content: "\e650"; +} +.el-icon-repeat-alt:before { + content: "\e651"; +} +.el-icon-repeat:before { + content: "\e652"; +} +.el-icon-remove-sign:before { + content: "\e653"; +} +.el-icon-remove-circle:before { + content: "\e654"; +} +.el-icon-remove:before { + content: "\e655"; +} +.el-icon-refresh:before { + content: "\e656"; +} +.el-icon-reddit:before { + content: "\e657"; +} +.el-icon-record:before { + content: "\e658"; +} +.el-icon-random:before { + content: "\e659"; +} +.el-icon-quotes-alt:before { + content: "\e65a"; +} +.el-icon-quotes:before { + content: "\e65b"; +} +.el-icon-question-sign:before { + content: "\e65c"; +} +.el-icon-question:before { + content: "\e65d"; +} +.el-icon-qrcode:before { + content: "\e65e"; +} +.el-icon-puzzle:before { + content: "\e65f"; +} +.el-icon-print:before { + content: "\e660"; +} +.el-icon-podcast:before { + content: "\e661"; +} +.el-icon-plus-sign:before { + content: "\e662"; +} +.el-icon-plus:before { + content: "\e663"; +} +.el-icon-play-circle:before { + content: "\e664"; +} +.el-icon-play-alt:before { + content: "\e665"; +} +.el-icon-play:before { + content: "\e666"; +} +.el-icon-plane:before { + content: "\e667"; +} +.el-icon-pinterest:before { + content: "\e668"; +} +.el-icon-picture:before { + content: "\e669"; +} +.el-icon-picasa:before { + content: "\e66a"; +} +.el-icon-photo-alt:before { + content: "\e66b"; +} +.el-icon-photo:before { + content: "\e66c"; +} +.el-icon-phone-alt:before { + content: "\e66d"; +} +.el-icon-phone:before, +.el-icon-earphone:before { + content: "\e66e"; +} +.el-icon-person:before { + content: "\e66f"; +} +.el-icon-pencil-alt:before { + content: "\e670"; +} +.el-icon-pencil:before { + content: "\e671"; +} +.el-icon-pause-alt:before { + content: "\e672"; +} +.el-icon-pause:before { + content: "\e673"; +} +.el-icon-path:before { + content: "\e674"; +} +.el-icon-paper-clip-alt:before, +.el-icon-paperclip-alt:before { + content: "\e675"; +} +.el-icon-paper-clip:before, +.el-icon-paperclip:before { + content: "\e676"; +} +.el-icon-opensource:before { + content: "\e677"; +} +.el-icon-ok-sign:before { + content: "\e678"; +} +.el-icon-ok-circle:before { + content: "\e679"; +} +.el-icon-ok:before { + content: "\e67a"; +} +.el-icon-off:before { + content: "\e67b"; +} +.el-icon-network:before { + content: "\e67c"; +} +.el-icon-myspace:before { + content: "\e67d"; +} +.el-icon-music:before { + content: "\e67e"; +} +.el-icon-move:before { + content: "\e67f"; +} +.el-icon-minus-sign:before { + content: "\e680"; +} +.el-icon-minus:before { + content: "\e681"; +} +.el-icon-mic-alt:before { + content: "\e682"; +} +.el-icon-mic:before { + content: "\e683"; +} +.el-icon-map-marker-alt:before { + content: "\e684"; +} +.el-icon-map-marker:before { + content: "\e685"; +} +.el-icon-male:before { + content: "\e686"; +} +.el-icon-magnet:before { + content: "\e687"; +} +.el-icon-magic:before { + content: "\e688"; +} +.el-icon-lock-alt:before { + content: "\e689"; +} +.el-icon-lock:before { + content: "\e68a"; +} +.el-icon-livejournal:before { + content: "\e68b"; +} +.el-icon-list-alt:before { + content: "\e68c"; +} +.el-icon-list:before { + content: "\e68d"; +} +.el-icon-linkedin:before { + content: "\e68e"; +} +.el-icon-link:before { + content: "\e68f"; +} +.el-icon-lines:before { + content: "\e690"; +} +.el-icon-leaf:before { + content: "\e691"; +} +.el-icon-lastfm:before { + content: "\e692"; +} +.el-icon-laptop-alt:before { + content: "\e693"; +} +.el-icon-laptop:before { + content: "\e694"; +} +.el-icon-key:before { + content: "\e695"; +} +.el-icon-italic:before { + content: "\e696"; +} +.el-icon-iphone-home:before { + content: "\e697"; +} +.el-icon-instagram:before { + content: "\e698"; +} +.el-icon-info-sign:before { + content: "\e699"; +} +.el-icon-indent-right:before { + content: "\e69a"; +} +.el-icon-indent-left:before { + content: "\e69b"; +} +.el-icon-inbox-box:before { + content: "\e69c"; +} +.el-icon-inbox-alt:before { + content: "\e69d"; +} +.el-icon-inbox:before { + content: "\e69e"; +} +.el-icon-idea-alt:before { + content: "\e69f"; +} +.el-icon-idea:before { + content: "\e6a0"; +} +.el-icon-hourglass:before { + content: "\e6a1"; +} +.el-icon-home-alt:before { + content: "\e6a2"; +} +.el-icon-home:before { + content: "\e6a3"; +} +.el-icon-heart-empty:before { + content: "\e6a4"; +} +.el-icon-heart-alt:before { + content: "\e6a5"; +} +.el-icon-heart:before { + content: "\e6a6"; +} +.el-icon-hearing-impaired:before { + content: "\e6a7"; +} +.el-icon-headphones:before { + content: "\e6a8"; +} +.el-icon-hdd:before { + content: "\e6a9"; +} +.el-icon-hand-up:before { + content: "\e6aa"; +} +.el-icon-hand-right:before { + content: "\e6ab"; +} +.el-icon-hand-left:before { + content: "\e6ac"; +} +.el-icon-hand-down:before { + content: "\e6ad"; +} +.el-icon-guidedog:before { + content: "\e6ae"; +} +.el-icon-group-alt:before { + content: "\e6af"; +} +.el-icon-group:before { + content: "\e6b0"; +} +.el-icon-graph-alt:before { + content: "\e6b1"; +} +.el-icon-graph:before { + content: "\e6b2"; +} +.el-icon-googleplus:before { + content: "\e6b3"; +} +.el-icon-globe-alt:before { + content: "\e6b4"; +} +.el-icon-globe:before { + content: "\e6b5"; +} +.el-icon-glasses:before { + content: "\e6b6"; +} +.el-icon-glass:before { + content: "\e6b7"; +} +.el-icon-github-text:before { + content: "\e6b8"; +} +.el-icon-github:before { + content: "\e6b9"; +} +.el-icon-gift:before { + content: "\e6ba"; +} +.el-icon-gbp:before { + content: "\e6bb"; +} +.el-icon-fullscreen:before { + content: "\e6bc"; +} +.el-icon-friendfeed-rect:before { + content: "\e6bd"; +} +.el-icon-friendfeed:before { + content: "\e6be"; +} +.el-icon-foursquare:before { + content: "\e6bf"; +} +.el-icon-forward-alt:before { + content: "\e6c0"; +} +.el-icon-forward:before { + content: "\e6c1"; +} +.el-icon-fork:before { + content: "\e6c2"; +} +.el-icon-fontsize:before { + content: "\e6c3"; +} +.el-icon-font:before { + content: "\e6c4"; +} +.el-icon-folder-sign:before { + content: "\e6c5"; +} +.el-icon-folder-open:before { + content: "\e6c6"; +} +.el-icon-folder-close:before { + content: "\e6c7"; +} +.el-icon-folder:before { + content: "\e6c8"; +} +.el-icon-flickr:before { + content: "\e6c9"; +} +.el-icon-flag-alt:before { + content: "\e6ca"; +} +.el-icon-flag:before { + content: "\e6cb"; +} +.el-icon-fire:before { + content: "\e6cc"; +} +.el-icon-filter:before { + content: "\e6cd"; +} +.el-icon-film:before { + content: "\e6ce"; +} +.el-icon-file-new-alt:before { + content: "\e6cf"; +} +.el-icon-file-new:before { + content: "\e6d0"; +} +.el-icon-file-edit-alt:before { + content: "\e6d1"; +} +.el-icon-file-edit:before { + content: "\e6d2"; +} +.el-icon-file-alt:before { + content: "\e6d3"; +} +.el-icon-file:before { + content: "\e6d4"; +} +.el-icon-female:before { + content: "\e6d5"; +} +.el-icon-fast-forward:before { + content: "\e6d6"; +} +.el-icon-fast-backward:before { + content: "\e6d7"; +} +.el-icon-facetime-video:before { + content: "\e6d8"; +} +.el-icon-facebook:before { + content: "\e6d9"; +} +.el-icon-eye-open:before { + content: "\e6da"; +} +.el-icon-eye-close:before { + content: "\e6db"; +} +.el-icon-exclamation-sign:before { + content: "\e6dc"; +} +.el-icon-eur:before { + content: "\e6dd"; +} +.el-icon-error-alt:before { + content: "\e6de"; +} +.el-icon-error:before { + content: "\e6df"; +} +.el-icon-envelope-alt:before { + content: "\e6e0"; +} +.el-icon-envelope:before { + content: "\e6e1"; +} +.el-icon-eject:before { + content: "\e6e2"; +} +.el-icon-edit:before { + content: "\e6e3"; +} +.el-icon-dribbble:before { + content: "\e6e4"; +} +.el-icon-download-alt:before { + content: "\e6e5"; +} +.el-icon-download:before { + content: "\e6e6"; +} +.el-icon-digg:before { + content: "\e6e7"; +} +.el-icon-deviantart:before { + content: "\e6e8"; +} +.el-icon-delicious:before { + content: "\e6e9"; +} +.el-icon-dashboard:before { + content: "\e6ea"; +} +.el-icon-css:before { + content: "\e6eb"; +} +.el-icon-credit-card:before { + content: "\e6ec"; +} +.el-icon-compass-alt:before { + content: "\e6ed"; +} +.el-icon-compass:before { + content: "\e6ee"; +} +.el-icon-comment-alt:before { + content: "\e6ef"; +} +.el-icon-comment:before { + content: "\e6f0"; +} +.el-icon-cogs:before { + content: "\e6f1"; +} +.el-icon-cog-alt:before { + content: "\e6f2"; +} +.el-icon-cog:before { + content: "\e6f3"; +} +.el-icon-cloud-alt:before { + content: "\e6f4"; +} +.el-icon-cloud:before { + content: "\e6f5"; +} +.el-icon-circle-arrow-up:before { + content: "\e6f6"; +} +.el-icon-circle-arrow-right:before { + content: "\e6f7"; +} +.el-icon-circle-arrow-left:before { + content: "\e6f8"; +} +.el-icon-circle-arrow-down:before { + content: "\e6f9"; +} +.el-icon-child:before { + content: "\e6fa"; +} +.el-icon-chevron-up:before { + content: "\e6fb"; +} +.el-icon-chevron-right:before { + content: "\e6fc"; +} +.el-icon-chevron-left:before { + content: "\e6fd"; +} +.el-icon-chevron-down:before { + content: "\e6fe"; +} +.el-icon-check-empty:before, +.el-icon-unchecked:before { + content: "\e6ff"; +} +.el-icon-check:before { + content: "\e700"; +} +.el-icon-certificate:before { + content: "\e701"; +} +.el-icon-cc:before { + content: "\e702"; +} +.el-icon-caret-up:before { + content: "\e703"; +} +.el-icon-caret-right:before { + content: "\e704"; +} +.el-icon-caret-left:before { + content: "\e705"; +} +.el-icon-caret-down:before { + content: "\e706"; +} +.el-icon-car:before { + content: "\e707"; +} +.el-icon-camera:before { + content: "\e708"; +} +.el-icon-calendar-sign:before { + content: "\e709"; +} +.el-icon-calendar:before { + content: "\e70a"; +} +.el-icon-bullhorn:before { + content: "\e70b"; +} +.el-icon-bulb:before { + content: "\e70c"; +} +.el-icon-brush:before { + content: "\e70d"; +} +.el-icon-broom:before { + content: "\e70e"; +} +.el-icon-briefcase:before { + content: "\e70f"; +} +.el-icon-braille:before { + content: "\e710"; +} +.el-icon-bookmark-empty:before { + content: "\e711"; +} +.el-icon-bookmark:before { + content: "\e712"; +} +.el-icon-book:before { + content: "\e713"; +} +.el-icon-bold:before { + content: "\e714"; +} +.el-icon-blogger:before { + content: "\e715"; +} +.el-icon-blind:before { + content: "\e716"; +} +.el-icon-bell:before { + content: "\e717"; +} +.el-icon-behance:before { + content: "\e718"; +} +.el-icon-barcode:before { + content: "\e719"; +} +.el-icon-ban-circle:before { + content: "\e71a"; +} +.el-icon-backward:before { + content: "\e71b"; +} +.el-icon-asl:before { + content: "\e71c"; +} +.el-icon-arrow-up:before { + content: "\e71d"; +} +.el-icon-arrow-right:before { + content: "\e71e"; +} +.el-icon-arrow-left:before { + content: "\e71f"; +} +.el-icon-arrow-down:before { + content: "\e720"; +} +.el-icon-align-right:before { + content: "\e721"; +} +.el-icon-align-left:before { + content: "\e722"; +} +.el-icon-align-justify:before { + content: "\e723"; +} +.el-icon-align-center:before { + content: "\e724"; +} +.el-icon-adult:before { + content: "\e725"; +} +.el-icon-adjust-alt:before { + content: "\e726"; +} +.el-icon-adjust:before { + content: "\e727"; +} +.el-icon-address-book-alt:before { + content: "\e728"; +} +.el-icon-address-book:before { + content: "\e729"; +} +.el-icon-asterisk:before { + content: "\e72a"; +} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.eot b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.eot new file mode 100644 index 00000000..822d1819 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.eot differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.svg b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.svg new file mode 100644 index 00000000..1dc2e76d --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.svg @@ -0,0 +1,309 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.ttf b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.ttf new file mode 100644 index 00000000..ba2bafe7 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.ttf differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.woff b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.woff new file mode 100644 index 00000000..0d9e2740 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/elusive-icons/font/Elusive-Icons.woff differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 00000000..5b5dab2a Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_flat_0_aaaaaa_40x100.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 00000000..ad3d6346 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 00000000..42ccba26 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_65_ffffff_1x400.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 00000000..5a46b47c Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 00000000..86c2baa6 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png new file mode 100644 index 00000000..e65ca129 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_glass_75_ffffff_1x400.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 00000000..7c9fa6c6 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png new file mode 100644 index 00000000..0e05810f Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-bg_inset-soft_95_fef1ec_1x100.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png new file mode 100644 index 00000000..b273ff11 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_222222_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 00000000..09d1cdc8 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_2e83ff_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png new file mode 100644 index 00000000..59bd45b9 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_454545_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png new file mode 100644 index 00000000..6d02426c Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_888888_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 00000000..2ab019b7 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_cd0a0a_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png new file mode 100644 index 00000000..c9869351 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_f6cf3b_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png new file mode 100644 index 00000000..42f8f992 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/images/ui-icons_ffffff_256x240.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css new file mode 100644 index 00000000..2639e6fa --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css @@ -0,0 +1,9 @@ +/*! + * jQuery UI Bootstrap (0.5) + * http://addyosmani.github.com/jquery-ui-bootstrap + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */.redux-main .ui-state-disabled{cursor:default!important}.redux-main .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.redux-main .ui-widget{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px}.redux-main .ui-widget .ui-widget{font-size:1em}.redux-main .ui-widget input,.redux-main .ui-widget select,.redux-main .ui-widget textarea,.redux-main .ui-widget button{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:1em}.redux-main .ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x;color:#404040}.redux-main .ui-widget-content a{color:#404040}.redux-main .ui-widget-header{font-weight:700;border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);border:1px solid #666}.redux-main .ui-widget-header a{color:#222}.redux-main .ui-state-default,.redux-main .ui-widget-content .ui-state-default,.redux-main .ui-widget-header .ui-state-default{background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),color-stop(25%,#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(#fff,#fff 25%,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#fff 25%,#e6e6e6);background-image:-ms-linear-gradient(#fff,#fff 25%,#e6e6e6);background-image:-o-linear-gradient(#fff,#fff 25%,#e6e6e6);background-image:linear-gradient(#fff,#fff 25%,#e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);text-shadow:0 1px 1px rgba(255,255,255,.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-webkit-transition:.1s linear background-image;-moz-transition:.1s linear background-image;-ms-transition:.1s linear background-image;-o-transition:.1s linear background-image;transition:.1s linear background-image;overflow:visible}.redux-main .ui-state-default a,.redux-main .ui-state-default a:link,.redux-main .ui-state-default a:visited{color:#555;text-decoration:none}.redux-main .ui-state-hover,.redux-main .ui-widget-content .ui-state-hover,.redux-main .ui-widget-header .ui-state-hover,.redux-main .ui-state-focus,.redux-main .ui-widget-content .ui-state-focus,.redux-main .ui-widget-header .ui-state-focus{background-position:0 -15px;color:#333;text-decoration:none}.redux-main .ui-state-hover a,.redux-main .ui-state-hover a:hover,.redux-main .ui-state-hover a:link,.redux-main .ui-state-hover a:visited{color:#212121;text-decoration:none}.redux-main .ui-state-active,.redux-main .ui-widget-content .ui-state-active,.redux-main .ui-widget-header .ui-state-active{border:1px solid #aaa;font-weight:400;color:#212121}.redux-main .ui-state-active a,.redux-main .ui-state-active a:link,.redux-main .ui-state-active a:visited{color:#212121;text-decoration:none}.redux-main .ui-widget :active{outline:0}.redux-main .ui-state-highlight p,.redux-main .ui-state-error p,.redux-main .ui-state-default p{font-size:13px;font-weight:400;line-height:18px;margin:7px 15px}.redux-main .ui-state-highlight,.redux-main .ui-widget-content .ui-state-highlight,.redux-main .ui-widget-header .ui-state-highlight{position:relative;margin-bottom:18px;color:#404040;background-color:#eedc94;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#fceec1),to(#eedc94));background-image:-moz-linear-gradient(top,#fceec1,#eedc94);background-image:-ms-linear-gradient(top,#fceec1,#eedc94);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#fceec1),color-stop(100%,#eedc94));background-image:-webkit-linear-gradient(top,#fceec1,#eedc94);background-image:-o-linear-gradient(top,#fceec1,#eedc94);background-image:linear-gradient(top,#fceec1,#eedc94);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#eedc94 #eedc94 #e4c652;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);text-shadow:0 1px 0 rgba(255,255,255,.5);border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}.redux-main .ui-state-highlight a,.redux-main .ui-widget-content .ui-state-highlight a,.redux-main .ui-widget-header .ui-state-highlight a{color:#363636}.redux-main .ui-state-error,.redux-main .ui-widget-content .ui-state-error,.redux-main .ui-widget-header .ui-state-error{position:relative;margin-bottom:18px;color:#fff;border-width:1px;border-style:solid;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.25);background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#ee5f5b),to(#c43c35));background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ee5f5b),color-stop(100%,#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25)}.redux-main .ui-state-error a,.redux-main .ui-widget-content .ui-state-error a,.redux-main .ui-widget-header .ui-state-error a{color:#cd0a0a}.redux-main .ui-state-error-text,.redux-main .ui-widget-content .ui-state-error-text,.redux-main .ui-widget-header .ui-state-error-text{color:#cd0a0a}.redux-main .ui-priority-primary,.redux-main .ui-widget-content .ui-priority-primary,.redux-main .ui-widget-header .ui-priority-primary{font-weight:700}.redux-main .ui-priority-secondary,.redux-main .ui-widget-content .ui-priority-secondary,.redux-main .ui-widget-header .ui-priority-secondary{opacity:.7;filter:alpha(opacity=70);font-weight:400}.redux-main .ui-state-disabled,.redux-main .ui-widget-content .ui-state-disabled,.redux-main .ui-widget-header .ui-state-disabled{opacity:.35;filter:alpha(opacity=35);background-image:none}.redux-main .ui-state-disabled .ui-icon{filter:alpha(opacity=35)}.redux-main .ui-icon{width:16px;height:16px;background-image:url(images/ui-icons_222222_256x240.png)}.redux-main .ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-main .ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.redux-main .ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.redux-main .ui-state-hover .ui-icon,.redux-main .ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-main .ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.redux-main .ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.redux-main .ui-state-error .ui-icon,.redux-main .ui-state-error-text .ui-icon{background-image:url(images/ui-icons_f6cf3b_256x240.png)}.redux-main .ui-icon-carat-1-n{background-position:0 0}.redux-main .ui-icon-carat-1-ne{background-position:-16px 0}.redux-main .ui-icon-carat-1-e{background-position:-32px 0}.redux-main .ui-icon-carat-1-se{background-position:-48px 0}.redux-main .ui-icon-carat-1-s{background-position:-64px 0}.redux-main .ui-icon-carat-1-sw{background-position:-80px 0}.redux-main .ui-icon-carat-1-w{background-position:-96px 0}.redux-main .ui-icon-carat-1-nw{background-position:-112px 0}.redux-main .ui-icon-carat-2-n-s{background-position:-128px 0}.redux-main .ui-icon-carat-2-e-w{background-position:-144px 0}.redux-main .ui-icon-triangle-1-n{background-position:0 -16px}.redux-main .ui-icon-triangle-1-ne{background-position:-16px -16px}.redux-main .ui-icon-triangle-1-e{background-position:-32px -16px}.redux-main .ui-icon-triangle-1-se{background-position:-48px -16px}.redux-main .ui-icon-triangle-1-s{background-position:-64px -16px}.redux-main .ui-icon-triangle-1-sw{background-position:-80px -16px}.redux-main .ui-icon-triangle-1-w{background-position:-96px -16px}.redux-main .ui-icon-triangle-1-nw{background-position:-112px -16px}.redux-main .ui-icon-triangle-2-n-s{background-position:-128px -16px}.redux-main .ui-icon-triangle-2-e-w{background-position:-144px -16px}.redux-main .ui-icon-arrow-1-n{background-position:0 -32px}.redux-main .ui-icon-arrow-1-ne{background-position:-16px -32px}.redux-main .ui-icon-arrow-1-e{background-position:-32px -32px}.redux-main .ui-icon-arrow-1-se{background-position:-48px -32px}.redux-main .ui-icon-arrow-1-s{background-position:-64px -32px}.redux-main .ui-icon-arrow-1-sw{background-position:-80px -32px}.redux-main .ui-icon-arrow-1-w{background-position:-96px -32px}.redux-main .ui-icon-arrow-1-nw{background-position:-112px -32px}.redux-main .ui-icon-arrow-2-n-s{background-position:-128px -32px}.redux-main .ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.redux-main .ui-icon-arrow-2-e-w{background-position:-160px -32px}.redux-main .ui-icon-arrow-2-se-nw{background-position:-176px -32px}.redux-main .ui-icon-arrowstop-1-n{background-position:-192px -32px}.redux-main .ui-icon-arrowstop-1-e{background-position:-208px -32px}.redux-main .ui-icon-arrowstop-1-s{background-position:-224px -32px}.redux-main .ui-icon-arrowstop-1-w{background-position:-240px -32px}.redux-main .ui-icon-arrowthick-1-n{background-position:0 -48px}.redux-main .ui-icon-arrowthick-1-ne{background-position:-16px -48px}.redux-main .ui-icon-arrowthick-1-e{background-position:-32px -48px}.redux-main .ui-icon-arrowthick-1-se{background-position:-48px -48px}.redux-main .ui-icon-arrowthick-1-s{background-position:-64px -48px}.redux-main .ui-icon-arrowthick-1-sw{background-position:-80px -48px}.redux-main .ui-icon-arrowthick-1-w{background-position:-96px -48px}.redux-main .ui-icon-arrowthick-1-nw{background-position:-112px -48px}.redux-main .ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.redux-main .ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.redux-main .ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.redux-main .ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.redux-main .ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.redux-main .ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.redux-main .ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.redux-main .ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.redux-main .ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.redux-main .ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.redux-main .ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.redux-main .ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.redux-main .ui-icon-arrowreturn-1-w{background-position:-64px -64px}.redux-main .ui-icon-arrowreturn-1-n{background-position:-80px -64px}.redux-main .ui-icon-arrowreturn-1-e{background-position:-96px -64px}.redux-main .ui-icon-arrowreturn-1-s{background-position:-112px -64px}.redux-main .ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.redux-main .ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.redux-main .ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.redux-main .ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.redux-main .ui-icon-arrow-4{background-position:0 -80px}.redux-main .ui-icon-arrow-4-diag{background-position:-16px -80px}.redux-main .ui-icon-extlink{background-position:-32px -80px}.redux-main .ui-icon-newwin{background-position:-48px -80px}.redux-main .ui-icon-refresh{background-position:-64px -80px}.redux-main .ui-icon-shuffle{background-position:-80px -80px}.redux-main .ui-icon-transfer-e-w{background-position:-96px -80px}.redux-main .ui-icon-transferthick-e-w{background-position:-112px -80px}.redux-main .ui-icon-folder-collapsed{background-position:0 -96px}.redux-main .ui-icon-folder-open{background-position:-16px -96px}.redux-main .ui-icon-document{background-position:-32px -96px}.redux-main .ui-icon-document-b{background-position:-48px -96px}.redux-main .ui-icon-note{background-position:-64px -96px}.redux-main .ui-icon-mail-closed{background-position:-80px -96px}.redux-main .ui-icon-mail-open{background-position:-96px -96px}.redux-main .ui-icon-suitcase{background-position:-112px -96px}.redux-main .ui-icon-comment{background-position:-128px -96px}.redux-main .ui-icon-person{background-position:-144px -96px}.redux-main .ui-icon-print{background-position:-160px -96px}.redux-main .ui-icon-trash{background-position:-176px -96px}.redux-main .ui-icon-locked{background-position:-192px -96px}.redux-main .ui-icon-unlocked{background-position:-208px -96px}.redux-main .ui-icon-bookmark{background-position:-224px -96px}.redux-main .ui-icon-tag{background-position:-240px -96px}.redux-main .ui-icon-home{background-position:0 -112px}.redux-main .ui-icon-flag{background-position:-16px -112px}.redux-main .ui-icon-calendar{background-position:-32px -112px}.redux-main .ui-icon-cart{background-position:-48px -112px}.redux-main .ui-icon-pencil{background-position:-64px -112px}.redux-main .ui-icon-clock{background-position:-80px -112px}.redux-main .ui-icon-disk{background-position:-96px -112px}.redux-main .ui-icon-calculator{background-position:-112px -112px}.redux-main .ui-icon-zoomin{background-position:-128px -112px}.redux-main .ui-icon-zoomout{background-position:-144px -112px}.redux-main .ui-icon-search{background-position:-160px -112px}.redux-main .ui-icon-wrench{background-position:-176px -112px}.redux-main .ui-icon-gear{background-position:-192px -112px}.redux-main .ui-icon-heart{background-position:-208px -112px}.redux-main .ui-icon-star{background-position:-224px -112px}.redux-main .ui-icon-link{background-position:-240px -112px}.redux-main .ui-icon-cancel{background-position:0 -128px}.redux-main .ui-icon-plus{background-position:-16px -128px}.redux-main .ui-icon-plusthick{background-position:-32px -128px}.redux-main .ui-icon-minus{background-position:-48px -128px}.redux-main .ui-icon-minusthick{background-position:-64px -128px}.redux-main .ui-icon-close{background-position:-80px -128px}.redux-main .ui-icon-closethick{background-position:-96px -128px}.redux-main .ui-icon-key{background-position:-112px -128px}.redux-main .ui-icon-lightbulb{background-position:-128px -128px}.redux-main .ui-icon-scissors{background-position:-144px -128px}.redux-main .ui-icon-clipboard{background-position:-160px -128px}.redux-main .ui-icon-copy{background-position:-176px -128px}.redux-main .ui-icon-contact{background-position:-192px -128px}.redux-main .ui-icon-image{background-position:-208px -128px}.redux-main .ui-icon-video{background-position:-224px -128px}.redux-main .ui-icon-script{background-position:-240px -128px}.redux-main .ui-icon-alert{background-position:0 -144px}.redux-main .ui-icon-info{background-position:-16px -144px}.redux-main .ui-icon-notice{background-position:-32px -144px}.redux-main .ui-icon-help{background-position:-48px -144px}.redux-main .ui-icon-check{background-position:-64px -144px}.redux-main .ui-icon-bullet{background-position:-80px -144px}.redux-main .ui-icon-radio-off{background-position:-96px -144px}.redux-main .ui-icon-radio-on{background-position:-112px -144px}.redux-main .ui-icon-pin-w{background-position:-128px -144px}.redux-main .ui-icon-pin-s{background-position:-144px -144px}.redux-main .ui-icon-play{background-position:0 -160px}.redux-main .ui-icon-pause{background-position:-16px -160px}.redux-main .ui-icon-seek-next{background-position:-32px -160px}.redux-main .ui-icon-seek-prev{background-position:-48px -160px}.redux-main .ui-icon-seek-end{background-position:-64px -160px}.redux-main .ui-icon-seek-start{background-position:-80px -160px}.redux-main .ui-icon-seek-first{background-position:-80px -160px}.redux-main .ui-icon-stop{background-position:-96px -160px}.redux-main .ui-icon-eject{background-position:-112px -160px}.redux-main .ui-icon-volume-off{background-position:-128px -160px}.redux-main .ui-icon-volume-on{background-position:-144px -160px}.redux-main .ui-icon-power{background-position:0 -176px}.redux-main .ui-icon-signal-diag{background-position:-16px -176px}.redux-main .ui-icon-signal{background-position:-32px -176px}.redux-main .ui-icon-battery-0{background-position:-48px -176px}.redux-main .ui-icon-battery-1{background-position:-64px -176px}.redux-main .ui-icon-battery-2{background-position:-80px -176px}.redux-main .ui-icon-battery-3{background-position:-96px -176px}.redux-main .ui-icon-circle-plus{background-position:0 -192px}.redux-main .ui-icon-circle-minus{background-position:-16px -192px}.redux-main .ui-icon-circle-close{background-position:-32px -192px}.redux-main .ui-icon-circle-triangle-e{background-position:-48px -192px}.redux-main .ui-icon-circle-triangle-s{background-position:-64px -192px}.redux-main .ui-icon-circle-triangle-w{background-position:-80px -192px}.redux-main .ui-icon-circle-triangle-n{background-position:-96px -192px}.redux-main .ui-icon-circle-arrow-e{background-position:-112px -192px}.redux-main .ui-icon-circle-arrow-s{background-position:-128px -192px}.redux-main .ui-icon-circle-arrow-w{background-position:-144px -192px}.redux-main .ui-icon-circle-arrow-n{background-position:-160px -192px}.redux-main .ui-icon-circle-zoomin{background-position:-176px -192px}.redux-main .ui-icon-circle-zoomout{background-position:-192px -192px}.redux-main .ui-icon-circle-check{background-position:-208px -192px}.redux-main .ui-icon-circlesmall-plus{background-position:0 -208px}.redux-main .ui-icon-circlesmall-minus{background-position:-16px -208px}.redux-main .ui-icon-circlesmall-close{background-position:-32px -208px}.redux-main .ui-icon-squaresmall-plus{background-position:-48px -208px}.redux-main .ui-icon-squaresmall-minus{background-position:-64px -208px}.redux-main .ui-icon-squaresmall-close{background-position:-80px -208px}.redux-main .ui-icon-grip-dotted-vertical{background-position:0 -224px}.redux-main .ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.redux-main .ui-icon-grip-solid-vertical{background-position:-32px -224px}.redux-main .ui-icon-grip-solid-horizontal{background-position:-48px -224px}.redux-main .ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.redux-main .ui-icon-grip-diagonal-se{background-position:-80px -224px}.redux-main .ui-corner-all,.redux-main .ui-corner-top,.redux-main .ui-corner-left,.redux-main .ui-corner-tl{-moz-border-radius-topleft:4px;-webkit-border-top-left-radius:4px;-khtml-border-top-left-radius:4px;border-top-left-radius:4px}.redux-main .ui-corner-all,.redux-main .ui-corner-top,.redux-main .ui-corner-right,.redux-main .ui-corner-tr{-moz-border-radius-topright:4px;-webkit-border-top-right-radius:4px;-khtml-border-top-right-radius:4px;border-top-right-radius:4px}.redux-main .ui-corner-all,.redux-main .ui-corner-bottom,.redux-main .ui-corner-left,.redux-main .ui-corner-bl{-moz-border-radius-bottomleft:4px;-webkit-border-bottom-left-radius:4px;-khtml-border-bottom-left-radius:4px;border-bottom-left-radius:4px}.redux-main .ui-corner-all,.redux-main .ui-corner-bottom,.redux-main .ui-corner-right,.redux-main .ui-corner-br{-moz-border-radius-bottomright:4px;-webkit-border-bottom-right-radius:4px;-khtml-border-bottom-right-radius:4px;border-bottom-right-radius:4px}.redux-main .ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:alpha(opacity=30)}.redux-main .ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:alpha(opacity=30);-moz-border-radius:8px;-khtml-border-radius:8px;-webkit-border-radius:8px;border-radius:8px}.redux-main .ui-accordion{width:100%}.redux-main .ui-accordion .ui-accordion-header{cursor:pointer;position:relative;margin-top:1px;zoom:1;font-weight:700}.redux-main .ui-accordion .ui-accordion-li-fix{display:inline}.redux-main .ui-accordion .ui-accordion-header-active{border-bottom:0!important}.redux-main .ui-accordion .ui-accordion-header a{display:block;font-size:1em;padding:.5em .5em .5em 1.7em}.redux-main .ui-accordion-icons .ui-accordion-header a{padding-left:2.2em}.redux-main .ui-accordion .ui-accordion-header .ui-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.redux-main .ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;margin-top:-2px;position:relative;top:1px;margin-bottom:2px;overflow:auto;display:none;zoom:1}.redux-main .ui-accordion .ui-accordion-content-active{display:block}.redux-main .ui-button{cursor:pointer;display:inline-block;background-color:#e6e6e6;background-repeat:no-repeat;background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),color-stop(25%,#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(#fff,#fff 25%,#e6e6e6);background-image:-moz-linear-gradient(top,#fff,#fff 25%,#e6e6e6);background-image:-ms-linear-gradient(#fff,#fff 25%,#e6e6e6);background-image:-o-linear-gradient(#fff,#fff 25%,#e6e6e6);background-image:linear-gradient(#fff,#fff 25%,#e6e6e6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);padding:5px 14px 6px;margin:0;text-shadow:0 1px 1px rgba(255,255,255,.75);color:#333;font-size:13px;line-height:normal;border:1px solid #ccc;border-bottom-color:#bbb;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-moz-box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05);-webkit-transition:.1s linear background-image;-moz-transition:.1s linear background-image;-ms-transition:.1s linear background-image;-o-transition:.1s linear background-image;transition:.1s linear background-image;overflow:visible}.redux-main .ui-button-primary{color:#fff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#049cdb),to(#0064cd));background-image:-moz-linear-gradient(top,#049cdb,#0064cd);background-image:-ms-linear-gradient(top,#049cdb,#0064cd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#049cdb),color-stop(100%,#0064cd));background-image:-webkit-linear-gradient(top,#049cdb,#0064cd);background-image:-o-linear-gradient(top,#049cdb,#0064cd);background-image:linear-gradient(top,#049cdb,#0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25)}.redux-main .ui-button-success{color:#fff;background-color:#57a957;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#62c462),to(#57a957));background-image:-moz-linear-gradient(top,#62c462,#57a957);background-image:-ms-linear-gradient(top,#62c462,#57a957);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#62c462),color-stop(100%,#57a957));background-image:-webkit-linear-gradient(top,#62c462,#57a957);background-image:-o-linear-gradient(top,#62c462,#57a957);background-image:linear-gradient(top,#62c462,#57a957);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#57a957 #57a957 #3d773d;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25)}.redux-main .ui-button-error{color:#fff;background-color:#c43c35;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#ee5f5b),to(#c43c35));background-image:-moz-linear-gradient(top,#ee5f5b,#c43c35);background-image:-ms-linear-gradient(top,#ee5f5b,#c43c35);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#ee5f5b),color-stop(100%,#c43c35));background-image:-webkit-linear-gradient(top,#ee5f5b,#c43c35);background-image:-o-linear-gradient(top,#ee5f5b,#c43c35);background-image:linear-gradient(top,#ee5f5b,#c43c35);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#c43c35 #c43c35 #882a25;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25)}.redux-main .ui-button-icon-only{width:2.2em}.redux-main .ui-button-icons-only{width:3.4em}.redux-main button.ui-button-icons-only{width:3.7em}.redux-main .ui-button .ui-button-text{display:block}.redux-main .ui-button-icon-only .ui-button-text,.redux-main .ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px;display:none}.redux-main .ui-button-text-icon-primary .ui-button-text,.redux-main .ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.redux-main .ui-button-text-icon-secondary .ui-button-text,.redux-main .ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.redux-main .ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}.redux-main .ui-button-icon-only .ui-icon,.redux-main .ui-button-text-icon-primary .ui-icon,.redux-main .ui-button-text-icon-secondary .ui-icon,.redux-main .ui-button-text-icons .ui-icon,.redux-main .ui-button-icons-only .ui-icon{top:50%;margin-top:-3px;margin-bottom:3px}.redux-main .ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.redux-main .ui-button-text-icon-primary .ui-button-icon-primary,.redux-main .ui-button-text-icons .ui-button-icon-primary,.redux-main .ui-button-icons-only .ui-button-icon-primary{left:.5em}.redux-main .ui-button-text-icon-secondary .ui-button-icon-secondary,.redux-main .ui-button-text-icons .ui-button-icon-secondary,.redux-main .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-main .ui-button-text-icons .ui-button-icon-secondary,.redux-main .ui-button-icons-only .ui-button-icon-secondary{right:.5em}.redux-main .ui-buttonset{margin-right:7px}.redux-main .ui-buttonset .ui-state-active{color:#fff;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#049cdb),to(#0064cd));background-image:-moz-linear-gradient(top,#049cdb,#0064cd);background-image:-ms-linear-gradient(top,#049cdb,#0064cd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#049cdb),color-stop(100%,#0064cd));background-image:-webkit-linear-gradient(top,#049cdb,#0064cd);background-image:-o-linear-gradient(top,#049cdb,#0064cd);background-image:linear-gradient(top,#049cdb,#0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25)}.redux-main .ui-buttonset .ui-button{margin-left:0;margin-right:0}.redux-main button.ui-button::-moz-focus-inner{border:0;padding:0}.redux-main .ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.redux-main .ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0;border:0;font-weight:700;width:100%;padding:4px 0;background-color:#f5f5f5;color:gray}.redux-main .ui-datepicker .ui-datepicker-prev,.redux-main .ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.redux-main .ui-datepicker .ui-datepicker-prev{left:2px}.redux-main .ui-datepicker .ui-datepicker-next{right:2px}.redux-main .ui-datepicker .ui-datepicker-prev span,.redux-main .ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.redux-main .ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.redux-main .ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.redux-main .ui-datepicker select.ui-datepicker-month-year{width:100%}.redux-main .ui-datepicker select.ui-datepicker-month,.redux-main .ui-datepicker select.ui-datepicker-year{width:49%}.redux-main .ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.redux-main .ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:700;border:0}.redux-main .ui-datepicker td{border:0;padding:1px}.redux-main .ui-datepicker td span,.redux-main .ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.redux-main .ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.redux-main .ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.redux-main .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.redux-main .ui-datepicker.ui-datepicker-multi{width:auto}.redux-main .ui-datepicker-multi .ui-datepicker-group{float:left}.redux-main .ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.redux-main .ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.redux-main .ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.redux-main .ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.redux-main .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header{border-left-width:0}.redux-main .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.redux-main .ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.redux-main .ui-datepicker-row-break{clear:both;width:100%;font-size:0}.redux-main .ui-datepicker-rtl{direction:rtl}.redux-main .ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.redux-main .ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.redux-main .ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.redux-main .ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.redux-main .ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.redux-main .ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.redux-main .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current{float:right}.redux-main .ui-datepicker-rtl .ui-datepicker-group{float:right}.redux-main .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-main .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.redux-main .ui-datepicker-cover{display:none;display:block;position:absolute;z-index:-1;filter:mask();top:-4px;left:-4px;width:200px;height:200px}.redux-main .ui-datepicker th{font-weight:700;color:gray}.redux-main .ui-datepicker-today a:hover{background-color:gray;color:#fff}.redux-main .ui-datepicker-today a{background-color:#BFBFBF;cursor:pointer;padding:0 4px;margin-bottom:0}.redux-main .ui-datepicker td a{margin-bottom:0;border:0}.redux-main .ui-datepicker td:hover{color:#fff}.redux-main .ui-datepicker td .ui-state-default{border:0;background:0 0;margin-bottom:0;padding:5px;color:gray;text-align:center;filter:none}.redux-main .ui-datepicker td .ui-state-active{background:#BFBFBF;margin-bottom:0;font-size:normal;text-shadow:0;color:#fff;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px}.redux-main .ui-datepicker td .ui-state-hover{color:#fff;background:#0064cd;background-color:#0064cd;background-repeat:repeat-x;background-image:-khtml-gradient(linear,left top,left bottom,from(#049cdb),to(#0064cd));background-image:-moz-linear-gradient(top,#049cdb,#0064cd);background-image:-ms-linear-gradient(top,#049cdb,#0064cd);background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#049cdb),color-stop(100%,#0064cd));background-image:-webkit-linear-gradient(top,#049cdb,#0064cd);background-image:-o-linear-gradient(top,#049cdb,#0064cd);background-image:linear-gradient(top,#049cdb,#0064cd);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0);text-shadow:0 -1px 0 rgba(0,0,0,.25);border-color:#0064cd #0064cd #003f81;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);-webkit-border-radius:4px;-moz-border-radius:4px;-khtml-border-radius:4px;border-radius:4px}.redux-main .ui-widget-content{border:1px solid #dfdfdf}.redux-main .ui-datepicker table{background:#fff}.redux-main .placeholder{background:#f9f9f9!important;border:1px dashed #bbb!important} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.less b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.less new file mode 100644 index 00000000..c49bc414 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.less @@ -0,0 +1,793 @@ +/*! + * jQuery UI Bootstrap (0.5) + * http://addyosmani.github.com/jquery-ui-bootstrap + * + * Copyright 2012 - 2013, Addy Osmani + * Dual licensed under the MIT or GPL Version 2 licenses. + * + * Portions copyright jQuery UI & Twitter Bootstrap + */ + +.redux-main { + /* Interaction Cues +----------------------------------*/ + .ui-state-disabled { cursor: default !important; } + + + /* Icons + ----------------------------------*/ + + /* states and images */ + .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + } + + + /* Misc visuals + ----------------------------------*/ + + + /* + * jQuery UI CSS Framework 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * + * + * To view and modify this theme, visit http://jqueryui.com/themeroller/ + */ + + /* Component containers + ----------------------------------*/ + .ui-widget { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size:13px; } + .ui-widget .ui-widget { font-size: 1em; } + .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 1em; } + .ui-widget-content { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_75_ffffff_1x400.png) 50% 50% repeat-x; color: #404040; } + .ui-widget-content a { color: #404040; } + .ui-widget-header { + font-weight:bold; + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + border:1px solid #666; + } + .ui-widget-header a { color: #222222; } + + /* Interaction states + ----------------------------------*/ + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { + + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; + + } + + + .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; } + .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { + background-position: 0 -15px; + color: #333; + text-decoration: none; + } + + .ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121; text-decoration: none; } + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; font-weight: normal; color: #212121; } + .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; } + .ui-widget :active { outline: none; } + + /* Interaction Cues + ----------------------------------*/ + + + .ui-state-highlight p, .ui-state-error p, .ui-state-default p{ + font-size: 13px; + font-weight: normal; + line-height: 18px; + margin:7px 15px; + } + .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + + + position: relative; + margin-bottom: 18px; + color: #404040; + background-color: #eedc94; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#fceec1), to(#eedc94)); + background-image: -moz-linear-gradient(top, #fceec1, #eedc94); + background-image: -ms-linear-gradient(top, #fceec1, #eedc94); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #fceec1), color-stop(100%, #eedc94)); + background-image: -webkit-linear-gradient(top, #fceec1, #eedc94); + background-image: -o-linear-gradient(top, #fceec1, #eedc94); + background-image: linear-gradient(top, #fceec1, #eedc94); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fceec1', endColorstr='#eedc94', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #eedc94 #eedc94 #e4c652; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + + + } + .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; } + .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error { + + + position: relative; + margin-bottom: 18px; + color: #ffffff; + border-width: 1px; + border-style: solid; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.25); + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + + + } + .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; } + .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; } + .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } + .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } + .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } + .ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */ + + + /* Icons + ----------------------------------*/ + + /* states and images */ + .ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); } + .ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } + .ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); } + .ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); } + .ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } + .ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); } + .ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); } + .ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_f6cf3b_256x240.png); } + + /* positioning */ + .ui-icon-carat-1-n { background-position: 0 0; } + .ui-icon-carat-1-ne { background-position: -16px 0; } + .ui-icon-carat-1-e { background-position: -32px 0; } + .ui-icon-carat-1-se { background-position: -48px 0; } + .ui-icon-carat-1-s { background-position: -64px 0; } + .ui-icon-carat-1-sw { background-position: -80px 0; } + .ui-icon-carat-1-w { background-position: -96px 0; } + .ui-icon-carat-1-nw { background-position: -112px 0; } + .ui-icon-carat-2-n-s { background-position: -128px 0; } + .ui-icon-carat-2-e-w { background-position: -144px 0; } + .ui-icon-triangle-1-n { background-position: 0 -16px; } + .ui-icon-triangle-1-ne { background-position: -16px -16px; } + .ui-icon-triangle-1-e { background-position: -32px -16px; } + .ui-icon-triangle-1-se { background-position: -48px -16px; } + .ui-icon-triangle-1-s { background-position: -64px -16px; } + .ui-icon-triangle-1-sw { background-position: -80px -16px; } + .ui-icon-triangle-1-w { background-position: -96px -16px; } + .ui-icon-triangle-1-nw { background-position: -112px -16px; } + .ui-icon-triangle-2-n-s { background-position: -128px -16px; } + .ui-icon-triangle-2-e-w { background-position: -144px -16px; } + .ui-icon-arrow-1-n { background-position: 0 -32px; } + .ui-icon-arrow-1-ne { background-position: -16px -32px; } + .ui-icon-arrow-1-e { background-position: -32px -32px; } + .ui-icon-arrow-1-se { background-position: -48px -32px; } + .ui-icon-arrow-1-s { background-position: -64px -32px; } + .ui-icon-arrow-1-sw { background-position: -80px -32px; } + .ui-icon-arrow-1-w { background-position: -96px -32px; } + .ui-icon-arrow-1-nw { background-position: -112px -32px; } + .ui-icon-arrow-2-n-s { background-position: -128px -32px; } + .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } + .ui-icon-arrow-2-e-w { background-position: -160px -32px; } + .ui-icon-arrow-2-se-nw { background-position: -176px -32px; } + .ui-icon-arrowstop-1-n { background-position: -192px -32px; } + .ui-icon-arrowstop-1-e { background-position: -208px -32px; } + .ui-icon-arrowstop-1-s { background-position: -224px -32px; } + .ui-icon-arrowstop-1-w { background-position: -240px -32px; } + .ui-icon-arrowthick-1-n { background-position: 0 -48px; } + .ui-icon-arrowthick-1-ne { background-position: -16px -48px; } + .ui-icon-arrowthick-1-e { background-position: -32px -48px; } + .ui-icon-arrowthick-1-se { background-position: -48px -48px; } + .ui-icon-arrowthick-1-s { background-position: -64px -48px; } + .ui-icon-arrowthick-1-sw { background-position: -80px -48px; } + .ui-icon-arrowthick-1-w { background-position: -96px -48px; } + .ui-icon-arrowthick-1-nw { background-position: -112px -48px; } + .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } + .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } + .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } + .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } + .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } + .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } + .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } + .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } + .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } + .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } + .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } + .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } + .ui-icon-arrowreturn-1-w { background-position: -64px -64px; } + .ui-icon-arrowreturn-1-n { background-position: -80px -64px; } + .ui-icon-arrowreturn-1-e { background-position: -96px -64px; } + .ui-icon-arrowreturn-1-s { background-position: -112px -64px; } + .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } + .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } + .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } + .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } + .ui-icon-arrow-4 { background-position: 0 -80px; } + .ui-icon-arrow-4-diag { background-position: -16px -80px; } + .ui-icon-extlink { background-position: -32px -80px; } + .ui-icon-newwin { background-position: -48px -80px; } + .ui-icon-refresh { background-position: -64px -80px; } + .ui-icon-shuffle { background-position: -80px -80px; } + .ui-icon-transfer-e-w { background-position: -96px -80px; } + .ui-icon-transferthick-e-w { background-position: -112px -80px; } + .ui-icon-folder-collapsed { background-position: 0 -96px; } + .ui-icon-folder-open { background-position: -16px -96px; } + .ui-icon-document { background-position: -32px -96px; } + .ui-icon-document-b { background-position: -48px -96px; } + .ui-icon-note { background-position: -64px -96px; } + .ui-icon-mail-closed { background-position: -80px -96px; } + .ui-icon-mail-open { background-position: -96px -96px; } + .ui-icon-suitcase { background-position: -112px -96px; } + .ui-icon-comment { background-position: -128px -96px; } + .ui-icon-person { background-position: -144px -96px; } + .ui-icon-print { background-position: -160px -96px; } + .ui-icon-trash { background-position: -176px -96px; } + .ui-icon-locked { background-position: -192px -96px; } + .ui-icon-unlocked { background-position: -208px -96px; } + .ui-icon-bookmark { background-position: -224px -96px; } + .ui-icon-tag { background-position: -240px -96px; } + .ui-icon-home { background-position: 0 -112px; } + .ui-icon-flag { background-position: -16px -112px; } + .ui-icon-calendar { background-position: -32px -112px; } + .ui-icon-cart { background-position: -48px -112px; } + .ui-icon-pencil { background-position: -64px -112px; } + .ui-icon-clock { background-position: -80px -112px; } + .ui-icon-disk { background-position: -96px -112px; } + .ui-icon-calculator { background-position: -112px -112px; } + .ui-icon-zoomin { background-position: -128px -112px; } + .ui-icon-zoomout { background-position: -144px -112px; } + .ui-icon-search { background-position: -160px -112px; } + .ui-icon-wrench { background-position: -176px -112px; } + .ui-icon-gear { background-position: -192px -112px; } + .ui-icon-heart { background-position: -208px -112px; } + .ui-icon-star { background-position: -224px -112px; } + .ui-icon-link { background-position: -240px -112px; } + .ui-icon-cancel { background-position: 0 -128px; } + .ui-icon-plus { background-position: -16px -128px; } + .ui-icon-plusthick { background-position: -32px -128px; } + .ui-icon-minus { background-position: -48px -128px; } + .ui-icon-minusthick { background-position: -64px -128px; } + .ui-icon-close { background-position: -80px -128px; } + .ui-icon-closethick { background-position: -96px -128px; } + .ui-icon-key { background-position: -112px -128px; } + .ui-icon-lightbulb { background-position: -128px -128px; } + .ui-icon-scissors { background-position: -144px -128px; } + .ui-icon-clipboard { background-position: -160px -128px; } + .ui-icon-copy { background-position: -176px -128px; } + .ui-icon-contact { background-position: -192px -128px; } + .ui-icon-image { background-position: -208px -128px; } + .ui-icon-video { background-position: -224px -128px; } + .ui-icon-script { background-position: -240px -128px; } + .ui-icon-alert { background-position: 0 -144px; } + .ui-icon-info { background-position: -16px -144px; } + .ui-icon-notice { background-position: -32px -144px; } + .ui-icon-help { background-position: -48px -144px; } + .ui-icon-check { background-position: -64px -144px; } + .ui-icon-bullet { background-position: -80px -144px; } + .ui-icon-radio-off { background-position: -96px -144px; } + .ui-icon-radio-on { background-position: -112px -144px; } + .ui-icon-pin-w { background-position: -128px -144px; } + .ui-icon-pin-s { background-position: -144px -144px; } + .ui-icon-play { background-position: 0 -160px; } + .ui-icon-pause { background-position: -16px -160px; } + .ui-icon-seek-next { background-position: -32px -160px; } + .ui-icon-seek-prev { background-position: -48px -160px; } + .ui-icon-seek-end { background-position: -64px -160px; } + .ui-icon-seek-start { background-position: -80px -160px; } + /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ + .ui-icon-seek-first { background-position: -80px -160px; } + .ui-icon-stop { background-position: -96px -160px; } + .ui-icon-eject { background-position: -112px -160px; } + .ui-icon-volume-off { background-position: -128px -160px; } + .ui-icon-volume-on { background-position: -144px -160px; } + .ui-icon-power { background-position: 0 -176px; } + .ui-icon-signal-diag { background-position: -16px -176px; } + .ui-icon-signal { background-position: -32px -176px; } + .ui-icon-battery-0 { background-position: -48px -176px; } + .ui-icon-battery-1 { background-position: -64px -176px; } + .ui-icon-battery-2 { background-position: -80px -176px; } + .ui-icon-battery-3 { background-position: -96px -176px; } + .ui-icon-circle-plus { background-position: 0 -192px; } + .ui-icon-circle-minus { background-position: -16px -192px; } + .ui-icon-circle-close { background-position: -32px -192px; } + .ui-icon-circle-triangle-e { background-position: -48px -192px; } + .ui-icon-circle-triangle-s { background-position: -64px -192px; } + .ui-icon-circle-triangle-w { background-position: -80px -192px; } + .ui-icon-circle-triangle-n { background-position: -96px -192px; } + .ui-icon-circle-arrow-e { background-position: -112px -192px; } + .ui-icon-circle-arrow-s { background-position: -128px -192px; } + .ui-icon-circle-arrow-w { background-position: -144px -192px; } + .ui-icon-circle-arrow-n { background-position: -160px -192px; } + .ui-icon-circle-zoomin { background-position: -176px -192px; } + .ui-icon-circle-zoomout { background-position: -192px -192px; } + .ui-icon-circle-check { background-position: -208px -192px; } + .ui-icon-circlesmall-plus { background-position: 0 -208px; } + .ui-icon-circlesmall-minus { background-position: -16px -208px; } + .ui-icon-circlesmall-close { background-position: -32px -208px; } + .ui-icon-squaresmall-plus { background-position: -48px -208px; } + .ui-icon-squaresmall-minus { background-position: -64px -208px; } + .ui-icon-squaresmall-close { background-position: -80px -208px; } + .ui-icon-grip-dotted-vertical { background-position: 0 -224px; } + .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } + .ui-icon-grip-solid-vertical { background-position: -32px -224px; } + .ui-icon-grip-solid-horizontal { background-position: -48px -224px; } + .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } + .ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + + /* Misc visuals + ----------------------------------*/ + + /* Corner radius */ + .ui-corner-all, + .ui-corner-top, + .ui-corner-left, + .ui-corner-tl { + -moz-border-radius-topleft: 4px; + -webkit-border-top-left-radius: 4px; + -khtml-border-top-left-radius: 4px; + border-top-left-radius: 4px; + } + .ui-corner-all, + .ui-corner-top, + .ui-corner-right, + .ui-corner-tr { + -moz-border-radius-topright: 4px; + -webkit-border-top-right-radius: 4px; + -khtml-border-top-right-radius: 4px; + border-top-right-radius: 4px; + } + .ui-corner-all, + .ui-corner-bottom, + .ui-corner-left, + .ui-corner-bl { + -moz-border-radius-bottomleft: 4px; + -webkit-border-bottom-left-radius: 4px; + -khtml-border-bottom-left-radius: 4px; + border-bottom-left-radius: 4px; + } + .ui-corner-all, + .ui-corner-bottom, + .ui-corner-right, + .ui-corner-br { + -moz-border-radius-bottomright: 4px; + -webkit-border-bottom-right-radius: 4px; + -khtml-border-bottom-right-radius: 4px; + border-bottom-right-radius: 4px; + } + + + /* Overlays */ + + .ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30; + filter:Alpha(Opacity=30); + } + + .ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .30;filter:Alpha(Opacity=30); + -moz-border-radius: 8px; + -khtml-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + } + + /* + * jQuery UI Accordion 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/accordion/ + */ + + /* IE/Win - Fix animation bug - #4615 */ + + .ui-accordion { + width: 100%; + } + .ui-accordion .ui-accordion-header { + cursor: pointer; + position: relative; + margin-top: 1px; + zoom: 1; + font-weight:bold; + } + .ui-accordion .ui-accordion-li-fix { + display: inline; + } + .ui-accordion .ui-accordion-header-active { + border-bottom: 0 !important; + } + .ui-accordion .ui-accordion-header a { + display: block; + font-size: 1em; + padding: .5em .5em .5em 1.7em; + } + .ui-accordion-icons .ui-accordion-header a { + padding-left: 2.2em; + } + .ui-accordion .ui-accordion-header .ui-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; + } + .ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + margin-top: -2px; + position: relative; + top: 1px; + margin-bottom: 2px; + overflow: auto; + display: none; + zoom: 1; + } + .ui-accordion .ui-accordion-content-active { + display: block; + } + + + /* + * jQuery UI Button 1.10.0 + * + * Copyright 2013, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Button#theming + */ + + .ui-button { + + cursor: pointer; + display: inline-block; + background-color: #e6e6e6; + background-repeat: no-repeat; + background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6)); + background-image: -webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6); + background-image: -ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: -o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + background-image: linear-gradient(#ffffff, #ffffff 25%, #e6e6e6); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0); + padding: 5px 14px 6px; + margin: 0; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); + color: #333; + font-size: 13px; + line-height: normal; + border: 1px solid #ccc; + border-bottom-color: #bbb; + + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); + -webkit-transition: 0.1s linear background-image; + -moz-transition: 0.1s linear background-image; + -ms-transition: 0.1s linear background-image; + -o-transition: 0.1s linear background-image; + transition: 0.1s linear background-image; + overflow: visible; + } /* the overflow property removes extra width in IE */ + + .ui-button-primary { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + + .ui-button-success{ + color:#ffffff; + background-color: #57a957; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#62c462), to(#57a957)); + background-image: -moz-linear-gradient(top, #62c462, #57a957); + background-image: -ms-linear-gradient(top, #62c462, #57a957); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #62c462), color-stop(100%, #57a957)); + background-image: -webkit-linear-gradient(top, #62c462, #57a957); + background-image: -o-linear-gradient(top, #62c462, #57a957); + background-image: linear-gradient(top, #62c462, #57a957); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #57a957 #57a957 #3d773d; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + .ui-button-error{ + color:#ffffff; + background-color: #c43c35; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#ee5f5b), to(#c43c35)); + background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -ms-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ee5f5b), color-stop(100%, #c43c35)); + background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); + background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); + background-image: linear-gradient(top, #ee5f5b, #c43c35); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #c43c35 #c43c35 #882a25; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + + .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ + button.ui-button-icon-only { } /* button elements seem to need a little more width */ + .ui-button-icons-only { width: 3.4em; } + button.ui-button-icons-only { width: 3.7em; } + + /*button text element */ + + .ui-button .ui-button-text { display: block; } + .ui-button-text-only .ui-button-text { } + .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; /*tempfix*/ display:none;} + .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } + .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } + .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } + /* no icon support for input elements, provide padding by default */ + /* input.ui-button { padding: .4em 1em; } */ + + /*button icon element(s) */ + .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { top: 50%; margin-top:-3px; margin-bottom:3px; } + .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } + .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } + .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } + + /*button sets*/ + + + .ui-buttonset { margin-right: 7px; } + .ui-buttonset .ui-state-active { + color: #ffffff; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + } + .ui-buttonset .ui-button { margin-left: 0; margin-right: 0; } + + /* workarounds */ + button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ + + /* + * jQuery UI Datepicker 1.9.0 + * + * Copyright 2012-10-11, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://jqueryui.com/datepicker/ + */ + .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } + .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; border:0px; font-weight: bold; width: 100%; padding: 4px 0; background-color: #f5f5f5; color: #808080; } + .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } + + .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { /*top: 1px;*/ } + .ui-datepicker .ui-datepicker-prev { left:2px; } + .ui-datepicker .ui-datepicker-next { right:2px; } + + .ui-datepicker .ui-datepicker-prev-hover { /*left:1px;*/ } + .ui-datepicker .ui-datepicker-next-hover { /*right:1px;*/ } + + .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } + .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } + .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } + .ui-datepicker select.ui-datepicker-month-year {width: 100%;} + .ui-datepicker select.ui-datepicker-month, + .ui-datepicker select.ui-datepicker-year { width: 49%;} + .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } + .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } + .ui-datepicker td { border: 0; padding: 1px; } + .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } + .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } + .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } + .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } + + /* with multiple calendars */ + .ui-datepicker.ui-datepicker-multi { width:auto; } + .ui-datepicker-multi .ui-datepicker-group { float:left; } + .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } + .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } + .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } + .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } + .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } + .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } + .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } + .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } + + /* RTL support */ + .ui-datepicker-rtl { direction: rtl; } + .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } + .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } + .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } + .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } + .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } + .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } + .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } + .ui-datepicker-rtl .ui-datepicker-group { float:right; } + .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } + + /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ + .ui-datepicker-cover { + display: none; /*sorry for IE5*/ + display: block; /*sorry for IE5*/ + position: absolute; /*must have*/ + z-index: -1; /*must have*/ + filter: mask(); /*must have*/ + top: -4px; /*must have*/ + left: -4px; /*must have*/ + width: 200px; /*must have*/ + height: 200px; /*must have*/ + } + + .ui-datepicker th{ + font-weight: bold; + color: gray; + } + + .ui-datepicker-today a:hover{ + background-color: #808080; + color: #ffffff; + + } + .ui-datepicker-today a{ + background-color: #BFBFBF; + cursor: pointer; + padding: 0 4px; + margin-bottom:0px; + + } + + + .ui-datepicker td a{ + margin-bottom:0px; + border:0px; + } + + .ui-datepicker td:hover{ + color: #ffffff; + } + + .ui-datepicker td .ui-state-default { + border:0px; + background:none; + margin-bottom:0px; + padding:5px; + color:gray; + text-align: center; + filter:none; + } + + + .ui-datepicker td .ui-state-active{ + background:#BFBFBF; + margin-bottom:0px; + font-size:normal; + text-shadow: 0px; + color: #ffffff; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + } + + .ui-datepicker td .ui-state-hover { + color: #ffffff; + background: #0064cd; + background-color: #0064cd; + background-repeat: repeat-x; + background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd)); + background-image: -moz-linear-gradient(top, #049cdb, #0064cd); + background-image: -ms-linear-gradient(top, #049cdb, #0064cd); + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd)); + background-image: -webkit-linear-gradient(top, #049cdb, #0064cd); + background-image: -o-linear-gradient(top, #049cdb, #0064cd); + background-image: linear-gradient(top, #049cdb, #0064cd); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#049cdb', endColorstr='#0064cd', GradientType=0); + text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); + border-color: #0064cd #0064cd #003f81; + border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + -khtml-border-radius: 4px; + border-radius: 4px; + } + + .ui-widget-content { + border: 1px solid #dfdfdf; + } + .ui-datepicker table { background: #fff; } + + .placeholder { + background:#f9f9f9 !important; + border: 1px dashed #bbb !important; + } + +} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css new file mode 100644 index 00000000..c2dcb306 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/qtip/jquery.qtip.css @@ -0,0 +1,623 @@ +/* + * qTip2 - Pretty powerful tooltips - v2.2.0 + * http://qtip2.com + * + * Copyright (c) 2013 Craig Michael Thompson + * Released under the MIT, GPL licenses + * http://jquery.org/license + * + * Date: Thu Nov 21 2013 08:34 GMT+0000 + * Plugins: tips modal viewport svg imagemap ie6 + * Styles: basic css3 + */ +.qtip{ + position: absolute; + left: -28000px; + top: -28000px; + display: none; + + max-width: 280px; + min-width: 50px; + + font-size: 10.5px; + line-height: 12px; + + direction: ltr; + + box-shadow: none; + padding: 0; +} + + .qtip-content{ + position: relative; + padding: 5px 9px; + overflow: hidden; + + text-align: left; + word-wrap: break-word; + } + + .qtip-titlebar{ + position: relative; + padding: 5px 35px 5px 10px; + overflow: hidden; + + border-width: 0 0 1px; + font-weight: bold; + } + + .qtip-titlebar + .qtip-content{ border-top-width: 0 !important; } + + /* Default close button class */ + .qtip-close{ + position: absolute; + right: -9px; top: -9px; + + cursor: pointer; + outline: medium none; + + border-width: 1px; + border-style: solid; + border-color: transparent; + } + + .qtip-titlebar .qtip-close{ + right: 4px; top: 50%; + margin-top: -9px; + } + + * html .qtip-titlebar .qtip-close{ top: 16px; } /* IE fix */ + + .qtip-titlebar .ui-icon, + .qtip-icon .ui-icon{ + display: block; + text-indent: -1000em; + direction: ltr; + } + + .qtip-icon, .qtip-icon .ui-icon{ + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + text-decoration: none; + } + + .qtip-icon .ui-icon{ + width: 18px; + height: 14px; + + line-height: 14px; + text-align: center; + text-indent: 0; + font: normal bold 10px/13px Tahoma,sans-serif; + + color: inherit; + background: transparent none no-repeat -100em -100em; + } + +/* Applied to 'focused' tooltips e.g. most recently displayed/interacted with */ +.qtip-focus{} + +/* Applied on hover of tooltips i.e. added/removed on mouseenter/mouseleave respectively */ +.qtip-hover{} + +/* Default tooltip style */ +.qtip-default{ + border-width: 1px; + border-style: solid; + border-color: #F1D031; + + background-color: #FFFFA3; + color: #555; +} + + .qtip-default .qtip-titlebar{ + background-color: #FFEF93; + } + + .qtip-default .qtip-icon{ + border-color: #CCC; + background: #F1F1F1; + color: #777; + } + + .qtip-default .qtip-titlebar .qtip-close{ + border-color: #AAA; + color: #111; + } + + + +/*! Light tooltip style */ +.qtip-light{ + background-color: white; + border-color: #E2E2E2; + color: #454545; +} + + .qtip-light .qtip-titlebar{ + background-color: #f1f1f1; + } + + +/*! Dark tooltip style */ +.qtip-dark{ + background-color: #505050; + border-color: #303030; + color: #f3f3f3; +} + + .qtip-dark .qtip-titlebar{ + background-color: #404040; + } + + .qtip-dark .qtip-icon{ + border-color: #444; + } + + .qtip-dark .qtip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/*! Cream tooltip style */ +.qtip-cream{ + background-color: #FBF7AA; + border-color: #F9E98E; + color: #A27D35; +} + + .qtip-cream .qtip-titlebar{ + background-color: #F0DE7D; + } + + .qtip-cream .qtip-close .qtip-icon{ + background-position: -82px 0; + } + + +/*! Red tooltip style */ +.qtip-red{ + background-color: #F78B83; + border-color: #D95252; + color: #912323; +} + + .qtip-red .qtip-titlebar{ + background-color: #F06D65; + } + + .qtip-red .qtip-close .qtip-icon{ + background-position: -102px 0; + } + + .qtip-red .qtip-icon{ + border-color: #D95252; + } + + .qtip-red .qtip-titlebar .ui-state-hover{ + border-color: #D95252; + } + + +/*! Green tooltip style */ +.qtip-green{ + background-color: #CAED9E; + border-color: #90D93F; + color: #3F6219; +} + + .qtip-green .qtip-titlebar{ + background-color: #B0DE78; + } + + .qtip-green .qtip-close .qtip-icon{ + background-position: -42px 0; + } + + +/*! Blue tooltip style */ +.qtip-blue{ + background-color: #E5F6FE; + border-color: #ADD9ED; + color: #5E99BD; +} + + .qtip-blue .qtip-titlebar{ + background-color: #D0E9F5; + } + + .qtip-blue .qtip-close .qtip-icon{ + background-position: -2px 0; + } + + + +.qtip-shadow{ + -webkit-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); + box-shadow: 1px 1px 3px 1px rgba(0, 0, 0, 0.15); +} + +/* Add rounded corners to your tooltips in: FF3+, Chrome 2+, Opera 10.6+, IE9+, Safari 2+ */ +.qtip-rounded, +.qtip-tipsy, +.qtip-bootstrap{ + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +.qtip-rounded .qtip-titlebar{ + -moz-border-radius: 4px 4px 0 0; + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} + +/* Youtube tooltip style */ +.qtip-youtube{ + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 3px #333; + -moz-box-shadow: 0 0 3px #333; + box-shadow: 0 0 3px #333; + + color: white; + border-width: 0; + + background: #4A4A4A; + background-image: -webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,black)); + background-image: -webkit-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -moz-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -ms-linear-gradient(top,#4A4A4A 0,black 100%); + background-image: -o-linear-gradient(top,#4A4A4A 0,black 100%); +} + + .qtip-youtube .qtip-titlebar{ + background-color: #4A4A4A; + background-color: rgba(0,0,0,0); + } + + .qtip-youtube .qtip-content{ + padding: .75em; + font: 12px arial,sans-serif; + + filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000); + -ms-filter: "progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#4a4a4a,EndColorStr=#000000);"; + } + + .qtip-youtube .qtip-icon{ + border-color: #222; + } + + .qtip-youtube .qtip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/* jQuery TOOLS Tooltip style */ +.qtip-jtools{ + background: #232323; + background: rgba(0, 0, 0, 0.7); + background-image: -webkit-gradient(linear, left top, left bottom, from(#717171), to(#232323)); + background-image: -moz-linear-gradient(top, #717171, #232323); + background-image: -webkit-linear-gradient(top, #717171, #232323); + background-image: -ms-linear-gradient(top, #717171, #232323); + background-image: -o-linear-gradient(top, #717171, #232323); + + border: 2px solid #ddd; + border: 2px solid rgba(241,241,241,1); + + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + + -webkit-box-shadow: 0 0 12px #333; + -moz-box-shadow: 0 0 12px #333; + box-shadow: 0 0 12px #333; +} + + /* IE Specific */ + .qtip-jtools .qtip-titlebar{ + background-color: transparent; + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171,endColorstr=#4A4A4A)"; + } + .qtip-jtools .qtip-content{ + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A,endColorstr=#232323)"; + } + + .qtip-jtools .qtip-titlebar, + .qtip-jtools .qtip-content{ + background: transparent; + color: white; + border: 0 dashed transparent; + } + + .qtip-jtools .qtip-icon{ + border-color: #555; + } + + .qtip-jtools .qtip-titlebar .ui-state-hover{ + border-color: #333; + } + + +/* Cluetip style */ +.qtip-cluetip{ + -webkit-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + -moz-box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + box-shadow: 4px 4px 5px rgba(0, 0, 0, 0.4); + + background-color: #D9D9C2; + color: #111; + border: 0 dashed transparent; +} + + .qtip-cluetip .qtip-titlebar{ + background-color: #87876A; + color: white; + border: 0 dashed transparent; + } + + .qtip-cluetip .qtip-icon{ + border-color: #808064; + } + + .qtip-cluetip .qtip-titlebar .ui-state-hover{ + border-color: #696952; + color: #696952; + } + + +/* Tipsy style */ +.qtip-tipsy{ + background: black; + background: rgba(0, 0, 0, .87); + + color: white; + border: 0 solid transparent; + + font-size: 11px; + font-family: 'Lucida Grande', sans-serif; + font-weight: bold; + line-height: 16px; + text-shadow: 0 1px black; +} + + .qtip-tipsy .qtip-titlebar{ + padding: 6px 35px 0 10px; + background-color: transparent; + } + + .qtip-tipsy .qtip-content{ + padding: 6px 10px; + } + + .qtip-tipsy .qtip-icon{ + border-color: #222; + text-shadow: none; + } + + .qtip-tipsy .qtip-titlebar .ui-state-hover{ + border-color: #303030; + } + + +/* Tipped style */ +.qtip-tipped{ + border: 3px solid #959FA9; + + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + + background-color: #F9F9F9; + color: #454545; + + font-weight: normal; + font-family: serif; +} + + .qtip-tipped .qtip-titlebar{ + border-bottom-width: 0; + + color: white; + background: #3A79B8; + background-image: -webkit-gradient(linear, left top, left bottom, from(#3A79B8), to(#2E629D)); + background-image: -webkit-linear-gradient(top, #3A79B8, #2E629D); + background-image: -moz-linear-gradient(top, #3A79B8, #2E629D); + background-image: -ms-linear-gradient(top, #3A79B8, #2E629D); + background-image: -o-linear-gradient(top, #3A79B8, #2E629D); + filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D); + -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8,endColorstr=#2E629D)"; + } + + .qtip-tipped .qtip-icon{ + border: 2px solid #285589; + background: #285589; + } + + .qtip-tipped .qtip-icon .ui-icon{ + background-color: #FBFBFB; + color: #555; + } + + +/** + * Twitter Bootstrap style. + * + * Tested with IE 8, IE 9, Chrome 18, Firefox 9, Opera 11. + * Does not work with IE 7. + */ +.qtip-bootstrap{ + /** Taken from Bootstrap body */ + font-size: 14px; + line-height: 20px; + color: #333333; + + /** Taken from Bootstrap .popover */ + padding: 1px; + background-color: #ffffff; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, 0.2); + -webkit-border-radius: 6px; + -moz-border-radius: 6px; + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); + -webkit-background-clip: padding-box; + -moz-background-clip: padding; + background-clip: padding-box; +} + + .qtip-bootstrap .qtip-titlebar{ + /** Taken from Bootstrap .popover-title */ + padding: 8px 14px; + margin: 0; + font-size: 14px; + font-weight: normal; + line-height: 18px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + -webkit-border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + } + + .qtip-bootstrap .qtip-titlebar .qtip-close{ + /** + * Overrides qTip2: + * .qtip-titlebar .qtip-close{ + * [...] + * right: 4px; + * top: 50%; + * [...] + * border-style: solid; + * } + */ + right: 11px; + top: 45%; + border-style: none; + } + + .qtip-bootstrap .qtip-content{ + /** Taken from Bootstrap .popover-content */ + padding: 9px 14px; + } + + .qtip-bootstrap .qtip-icon{ + /** + * Overrides qTip2: + * .qtip-default .qtip-icon { + * border-color: #CCC; + * background: #F1F1F1; + * color: #777; + * } + */ + background: transparent; + } + + .qtip-bootstrap .qtip-icon .ui-icon{ + /** + * Overrides qTip2: + * .qtip-icon .ui-icon{ + * width: 18px; + * height: 14px; + * } + */ + width: auto; + height: auto; + + /* Taken from Bootstrap .close */ + float: right; + font-size: 20px; + font-weight: bold; + line-height: 18px; + color: #000000; + text-shadow: 0 1px 0 #ffffff; + opacity: 0.2; + filter: alpha(opacity=20); + } + + .qtip-bootstrap .qtip-icon .ui-icon:hover{ + /* Taken from Bootstrap .close:hover */ + color: #000000; + text-decoration: none; + cursor: pointer; + opacity: 0.4; + filter: alpha(opacity=40); + } + + +/* IE9 fix - removes all filters */ +.qtip:not(.ie9haxors) div.qtip-content, +.qtip:not(.ie9haxors) div.qtip-titlebar{ + filter: none; + -ms-filter: none; +} + + + +.qtip .qtip-tip{ + margin: 0 auto; + overflow: hidden; + z-index: 10; + +} + + /* Opera bug #357 - Incorrect tip position + https://github.com/Craga89/qTip2/issues/367 */ + x:-o-prefocus, .qtip .qtip-tip{ + visibility: hidden; + } + + .qtip .qtip-tip, + .qtip .qtip-tip .qtip-vml, + .qtip .qtip-tip canvas{ + position: absolute; + + color: #123456; + background: transparent; + border: 0 dashed transparent; + } + + .qtip .qtip-tip canvas{ top: 0; left: 0; } + + .qtip .qtip-tip .qtip-vml{ + behavior: url(#default#VML); + display: inline-block; + visibility: visible; + } + +#qtip-overlay{ + position: fixed; + left: 0; top: 0; + width: 100%; height: 100%; +} + + /* Applied to modals with show.modal.blur set to true */ + #qtip-overlay.blurs{ cursor: pointer; } + + /* Change opacity of overlay here */ + #qtip-overlay div{ + position: absolute; + left: 0; top: 0; + width: 100%; height: 100%; + + background-color: black; + + opacity: 0.7; + filter:alpha(opacity=70); + -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=70)"; + } + + + +.qtipmodal-ie6fix{ + position: absolute !important; +} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/qtip/jquery.qtip.min.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/qtip/jquery.qtip.min.css new file mode 100644 index 00000000..6942e10f --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/css/vendor/qtip/jquery.qtip.min.css @@ -0,0 +1,2 @@ +/* qTip2 v2.2.0 basic css3 | qtip2.com | Licensed MIT, GPL | Sun Dec 15 2013 23:29:06 */ +.qtip{position:absolute;left:-28000px;top:-28000px;display:none;max-width:280px;min-width:50px;font-size:10.5px;line-height:12px;direction:ltr;box-shadow:none;padding:0}.qtip-content{position:relative;padding:5px 9px;overflow:hidden;text-align:left;word-wrap:break-word}.qtip-titlebar{position:relative;padding:5px 35px 5px 10px;overflow:hidden;border-width:0 0 1px;font-weight:700}.qtip-titlebar+.qtip-content{border-top-width:0!important}.qtip-close{position:absolute;right:-9px;top:-9px;cursor:pointer;outline:medium none;border-width:1px;border-style:solid;border-color:transparent}.qtip-titlebar .qtip-close{right:4px;top:50%;margin-top:-9px}* html .qtip-titlebar .qtip-close{top:16px}.qtip-titlebar .ui-icon,.qtip-icon .ui-icon{display:block;text-indent:-1000em;direction:ltr}.qtip-icon,.qtip-icon .ui-icon{-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;text-decoration:none}.qtip-icon .ui-icon{width:18px;height:14px;line-height:14px;text-align:center;text-indent:0;font:400 bold 10px/13px Tahoma,sans-serif;color:inherit;background:transparent none no-repeat -100em -100em}.qtip-focus{}.qtip-hover{}.qtip-default{border-width:1px;border-style:solid;border-color:#F1D031;background-color:#FFFFA3;color:#555}.qtip-default .qtip-titlebar{background-color:#FFEF93}.qtip-default .qtip-icon{border-color:#CCC;background:#F1F1F1;color:#777}.qtip-default .qtip-titlebar .qtip-close{border-color:#AAA;color:#111} .qtip-light{background-color:#fff;border-color:#E2E2E2;color:#454545}.qtip-light .qtip-titlebar{background-color:#f1f1f1} .qtip-dark{background-color:#505050;border-color:#303030;color:#f3f3f3}.qtip-dark .qtip-titlebar{background-color:#404040}.qtip-dark .qtip-icon{border-color:#444}.qtip-dark .qtip-titlebar .ui-state-hover{border-color:#303030} .qtip-cream{background-color:#FBF7AA;border-color:#F9E98E;color:#A27D35}.qtip-cream .qtip-titlebar{background-color:#F0DE7D}.qtip-cream .qtip-close .qtip-icon{background-position:-82px 0} .qtip-red{background-color:#F78B83;border-color:#D95252;color:#912323}.qtip-red .qtip-titlebar{background-color:#F06D65}.qtip-red .qtip-close .qtip-icon{background-position:-102px 0}.qtip-red .qtip-icon{border-color:#D95252}.qtip-red .qtip-titlebar .ui-state-hover{border-color:#D95252} .qtip-green{background-color:#CAED9E;border-color:#90D93F;color:#3F6219}.qtip-green .qtip-titlebar{background-color:#B0DE78}.qtip-green .qtip-close .qtip-icon{background-position:-42px 0} .qtip-blue{background-color:#E5F6FE;border-color:#ADD9ED;color:#5E99BD}.qtip-blue .qtip-titlebar{background-color:#D0E9F5}.qtip-blue .qtip-close .qtip-icon{background-position:-2px 0}.qtip-shadow{-webkit-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);-moz-box-shadow:1px 1px 3px 1px rgba(0,0,0,.15);box-shadow:1px 1px 3px 1px rgba(0,0,0,.15)}.qtip-rounded,.qtip-tipsy,.qtip-bootstrap{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.qtip-rounded .qtip-titlebar{-moz-border-radius:4px 4px 0 0;-webkit-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0}.qtip-youtube{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 3px #333;-moz-box-shadow:0 0 3px #333;box-shadow:0 0 3px #333;color:#fff;border-width:0;background:#4A4A4A;background-image:-webkit-gradient(linear,left top,left bottom,color-stop(0,#4A4A4A),color-stop(100%,#000));background-image:-webkit-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-moz-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-ms-linear-gradient(top,#4A4A4A 0,#000 100%);background-image:-o-linear-gradient(top,#4A4A4A 0,#000 100%)}.qtip-youtube .qtip-titlebar{background-color:#4A4A4A;background-color:rgba(0,0,0,0)}.qtip-youtube .qtip-content{padding:.75em;font:12px arial,sans-serif;filter:progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);-ms-filter:"progid:DXImageTransform.Microsoft.Gradient(GradientType=0, StartColorStr=#4a4a4a, EndColorStr=#000000);"}.qtip-youtube .qtip-icon{border-color:#222}.qtip-youtube .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-jtools{background:#232323;background:rgba(0,0,0,.7);background-image:-webkit-gradient(linear,left top,left bottom,from(#717171),to(#232323));background-image:-moz-linear-gradient(top,#717171,#232323);background-image:-webkit-linear-gradient(top,#717171,#232323);background-image:-ms-linear-gradient(top,#717171,#232323);background-image:-o-linear-gradient(top,#717171,#232323);border:2px solid #ddd;border:2px solid rgba(241,241,241,1);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-webkit-box-shadow:0 0 12px #333;-moz-box-shadow:0 0 12px #333;box-shadow:0 0 12px #333}.qtip-jtools .qtip-titlebar{background-color:transparent;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#717171, endColorstr=#4A4A4A)"}.qtip-jtools .qtip-content{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4A4A4A, endColorstr=#232323)"}.qtip-jtools .qtip-titlebar,.qtip-jtools .qtip-content{background:transparent;color:#fff;border:0 dashed transparent}.qtip-jtools .qtip-icon{border-color:#555}.qtip-jtools .qtip-titlebar .ui-state-hover{border-color:#333}.qtip-cluetip{-webkit-box-shadow:4px 4px 5px rgba(0,0,0,.4);-moz-box-shadow:4px 4px 5px rgba(0,0,0,.4);box-shadow:4px 4px 5px rgba(0,0,0,.4);background-color:#D9D9C2;color:#111;border:0 dashed transparent}.qtip-cluetip .qtip-titlebar{background-color:#87876A;color:#fff;border:0 dashed transparent}.qtip-cluetip .qtip-icon{border-color:#808064}.qtip-cluetip .qtip-titlebar .ui-state-hover{border-color:#696952;color:#696952}.qtip-tipsy{background:#000;background:rgba(0,0,0,.87);color:#fff;border:0 solid transparent;font-size:11px;font-family:'Lucida Grande',sans-serif;font-weight:700;line-height:16px;text-shadow:0 1px #000}.qtip-tipsy .qtip-titlebar{padding:6px 35px 0 10px;background-color:transparent}.qtip-tipsy .qtip-content{padding:6px 10px}.qtip-tipsy .qtip-icon{border-color:#222;text-shadow:none}.qtip-tipsy .qtip-titlebar .ui-state-hover{border-color:#303030}.qtip-tipped{border:3px solid #959FA9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-color:#F9F9F9;color:#454545;font-weight:400;font-family:serif}.qtip-tipped .qtip-titlebar{border-bottom-width:0;color:#fff;background:#3A79B8;background-image:-webkit-gradient(linear,left top,left bottom,from(#3A79B8),to(#2E629D));background-image:-webkit-linear-gradient(top,#3A79B8,#2E629D);background-image:-moz-linear-gradient(top,#3A79B8,#2E629D);background-image:-ms-linear-gradient(top,#3A79B8,#2E629D);background-image:-o-linear-gradient(top,#3A79B8,#2E629D);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#3A79B8, endColorstr=#2E629D)"}.qtip-tipped .qtip-icon{border:2px solid #285589;background:#285589}.qtip-tipped .qtip-icon .ui-icon{background-color:#FBFBFB;color:#555}.qtip-bootstrap{font-size:14px;line-height:20px;color:#333;padding:1px;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box}.qtip-bootstrap .qtip-titlebar{padding:8px 14px;margin:0;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.qtip-bootstrap .qtip-titlebar .qtip-close{right:11px;top:45%;border-style:none}.qtip-bootstrap .qtip-content{padding:9px 14px}.qtip-bootstrap .qtip-icon{background:transparent}.qtip-bootstrap .qtip-icon .ui-icon{width:auto;height:auto;float:right;font-size:20px;font-weight:700;line-height:18px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.qtip-bootstrap .qtip-icon .ui-icon:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}.qtip:not(.ie9haxors) div.qtip-content,.qtip:not(.ie9haxors) div.qtip-titlebar{filter:none;-ms-filter:none} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/1c.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/1c.png new file mode 100644 index 00000000..6bbb1c31 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/1c.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/1col.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/1col.png new file mode 100644 index 00000000..1664aa73 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/1col.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2-col-portfolio.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2-col-portfolio.png new file mode 100644 index 00000000..be72cb13 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2-col-portfolio.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2cl.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2cl.png new file mode 100644 index 00000000..5a9baf7e Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2cl.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2cr.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2cr.png new file mode 100644 index 00000000..0624bfc7 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/2cr.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3-col-portfolio.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3-col-portfolio.png new file mode 100644 index 00000000..aa7d45ac Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3-col-portfolio.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cl.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cl.png new file mode 100644 index 00000000..865634cf Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cl.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cm.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cm.png new file mode 100644 index 00000000..bb8c4fe0 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cm.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cr.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cr.png new file mode 100644 index 00000000..61773a55 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/3cr.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/4-col-portfolio.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/4-col-portfolio.png new file mode 100644 index 00000000..907eba23 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/4-col-portfolio.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/ajax.gif b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/ajax.gif new file mode 100644 index 00000000..e1469616 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/ajax.gif differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/menu_icon.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/menu_icon.png new file mode 100644 index 00000000..da87bf70 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/menu_icon.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/img/toggle_tabs.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/toggle_tabs.png new file mode 100644 index 00000000..ff435fb3 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/img/toggle_tabs.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/import_export/import_export.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/import_export/import_export.js new file mode 100644 index 00000000..baeda932 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/import_export/import_export.js @@ -0,0 +1,101 @@ +/*global redux_change, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.import_export = redux.field_objects.import_export || {}; + + $( document ).ready( + function() { + redux.field_objects.import_export.init(); + } + ); + + redux.field_objects.import_export.init = function( selector ) { + + if ( !selector ) { + selector = $( document ).find( '.redux-container-import_export' ); + } + + var parent = selector; + if ( !selector.hasClass( 'redux-field-container' ) ) { + parent = selector.parents( '.redux-field-container:first' ); + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + $( '#redux-import' ).click( + function( e ) { + if ( $( '#import-code-value' ).val() === "" && $( '#import-link-value' ).val() === "" ) { + e.preventDefault(); + return false; + } + window.onbeforeunload = null; + } + ); + + $( '#redux-import-code-button' ).click( + function() { + if ( $( '#redux-import-link-wrapper' ).is( ':visible' ) ) { + $( '#redux-import-link-wrapper' ).hide(); + $( '#import-link-value' ).val( '' ); + } + $( '#redux-import-code-wrapper' ).fadeIn( 'fast' ); + } + ); + + $( '#redux-import-link-button' ).click( + function() { + if ( $( '#redux-import-code-wrapper' ).is( ':visible' ) ) { + $( '#redux-import-code-wrapper' ).hide(); + $( '#import-code-value' ).val( '' ); + } + $( '#redux-import-link-wrapper' ).fadeIn( 'fast' ); + } + ); + + $( '#redux-export-code-copy' ).click( + function() { + if ( $( '#redux-export-link-value' ).is( ':visible' ) ) { + $( '#redux-export-link-value' ).hide(); + } + $( '#redux-export-code' ).fadeIn( 'fast' ); + } + ); + + $( '#redux-export-link' ).click( + function() { + if ( $( '#redux-export-code' ).is( ':visible' ) ) { + $( '#redux-export-code' ).hide(); + } + $( '#redux-export-link-value' ).fadeIn( 'fast' ); + } + ); + + var textBox1 = document.getElementById("redux-export-code"); + textBox1.onfocus = function() { + textBox1.select(); + // Work around Chrome's little problem + textBox1.onmouseup = function() { + // Prevent further mouseup intervention + textBox1.onmouseup = null; + return false; + }; + }; + var textBox2 = document.getElementById("import-code-value"); + textBox2.onfocus = function() { + textBox2.select(); + // Work around Chrome's little problem + textBox2.onmouseup = function() { + // Prevent further mouseup intervention + textBox2.onmouseup = null; + return false; + }; + }; + }; +})( jQuery ); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/import_export/import_export.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/import_export/import_export.min.js new file mode 100644 index 00000000..343ab566 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/import_export/import_export.min.js @@ -0,0 +1 @@ +!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.import_export=redux.field_objects.import_export||{},a(document).ready(function(){redux.field_objects.import_export.init()}),redux.field_objects.import_export.init=function(b){b||(b=a(document).find(".redux-container-import_export"));var c=b;if(b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.hasClass("redux-field-init")){c.removeClass("redux-field-init"),a("#redux-import").click(function(b){return""===a("#import-code-value").val()&&""===a("#import-link-value").val()?(b.preventDefault(),!1):void(window.onbeforeunload=null)}),a("#redux-import-code-button").click(function(){a("#redux-import-link-wrapper").is(":visible")&&(a("#redux-import-link-wrapper").hide(),a("#import-link-value").val("")),a("#redux-import-code-wrapper").fadeIn("fast")}),a("#redux-import-link-button").click(function(){a("#redux-import-code-wrapper").is(":visible")&&(a("#redux-import-code-wrapper").hide(),a("#import-code-value").val("")),a("#redux-import-link-wrapper").fadeIn("fast")}),a("#redux-export-code-copy").click(function(){a("#redux-export-link-value").is(":visible")&&a("#redux-export-link-value").hide(),a("#redux-export-code").fadeIn("fast")}),a("#redux-export-link").click(function(){a("#redux-export-code").is(":visible")&&a("#redux-export-code").hide(),a("#redux-export-link-value").fadeIn("fast")});var d=document.getElementById("redux-export-code");d.onfocus=function(){d.select(),d.onmouseup=function(){return d.onmouseup=null,!1}};var e=document.getElementById("import-code-value");e.onfocus=function(){e.select(),e.onmouseup=function(){return e.onmouseup=null,!1}}}}}(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/media/media.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/media/media.js new file mode 100644 index 00000000..958e2a7c --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/media/media.js @@ -0,0 +1,218 @@ +/*global redux_change, wp, redux*/ + +/** + * Media Uploader + * Dependencies : jquery, wp media uploader + * Feature added by : Smartik - http://smartik.ws/ + * Date : 05.28.2013 + */ + +(function($){ + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.media = redux.field_objects.media || {}; + + var isFiltered; + + $( document ).ready( + function() { + //redux.field_objects.media.init(); + } + ); + + redux.field_objects.media.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( '.redux-container-media' ); + } + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + + isFiltered = false; + + // Remove the image button + el.find( '.remove-image, .remove-file' ).unbind( 'click' ).on( + 'click', function() { + redux.field_objects.media.removeFile( $( this ).parents( 'fieldset.redux-field:first' ) ); + } + ); + // Upload media button + el.find( '.media_upload_button' ).unbind().on( + 'click', function( event ) { + redux.field_objects.media.addFile( event, $( this ).parents( 'fieldset.redux-field:first' ) ); + } + ); + } + ); + }; + + // Add a file via the wp.media function + redux.field_objects.media.addFile = function( event, selector ) { + event.preventDefault(); + + var frame; + var jQueryel = $( this ); + + // If the media frame already exists, reopen it. + if ( frame ) { + frame.open(); + return; + } + + // Get library filter data + var filter = $( selector ).find('.library-filter').data('lib-filter'); + var libFilter = []; + + // Must exist to do decoding + if (filter !== undefined) { + if (filter !== ''){ + isFiltered = true; + + filter = decodeURIComponent(filter); + filter = JSON.parse(filter); + + $.each(filter, function(index, value) { + libFilter.push(value); + }); + } + } + + // Create the media frame. + frame = wp.media( + { + multiple: false, + library: { + type: libFilter //Only allow images + }, + + // Set the title of the modal. + title: jQueryel.data( 'choose' ), + + // Customize the submit button. + button: { + // Set the text of the button. + text: jQueryel.data( 'update' ) + // Tell the button not to close the modal, since we're + // going to refresh the page when the image is selected. + } + } + ); + + // When an image is selected, run a callback. + frame.on( + 'select', function() { + + // Grab the selected attachment. + var attachment = frame.state().get( 'selection' ).first(); + frame.close(); + + var data = $( selector ).find('.data').data(); + + if ( typeof redux.field_objects.media === 'undefined' || typeof redux.field_objects.media === undefined ) { + redux.field_objects.media = {}; + } + + if ( data === undefined || data.mode === 'undefined' ) { + data = {}; + data.mode = "image"; + } + + if (isFiltered === true) { + data.mode = 0; + } + + if (data.mode === 0) { + + } else { + if ( data.mode !== false) { + if (attachment.attributes.type !== data.mode) { + if (attachment.attributes.subtype !== data.mode ) { + return; + } + } + } + } + + selector.find( '.upload' ).val( attachment.attributes.url ); + selector.find( '.upload-id' ).val( attachment.attributes.id ); + selector.find( '.upload-height' ).val( attachment.attributes.height ); + selector.find( '.upload-width' ).val( attachment.attributes.width ); + + redux_change( $( selector ).find( '.upload-id' ) ); + + var thumbSrc = attachment.attributes.url; + if ( typeof attachment.attributes.sizes !== 'undefined' && typeof attachment.attributes.sizes.thumbnail !== 'undefined' ) { + thumbSrc = attachment.attributes.sizes.thumbnail.url; + } else if ( typeof attachment.attributes.sizes !== 'undefined' ) { + var height = attachment.attributes.height; + + for ( var key in attachment.attributes.sizes ) { + var object = attachment.attributes.sizes[key]; + + if ( object.height < height ) { + height = object.height; + thumbSrc = object.url; + } + } + } else { + thumbSrc = attachment.attributes.icon; + } + + selector.find( '.upload-thumbnail' ).val( thumbSrc ); + if ( !selector.find( '.upload' ).hasClass( 'noPreview' ) ) { + selector.find( '.screenshot' ).empty().hide().append( '' ).slideDown( 'fast' ); + } + + //selector.find('.media_upload_button').unbind(); + selector.find( '.remove-image' ).removeClass( 'hide' );//show "Remove" button + selector.find( '.redux-background-properties' ).slideDown(); + } + ); + + // Finally, open the modal. + frame.open(); + }; + + // Function to remove the image on click. Still requires a save + redux.field_objects.media.removeFile = function( selector ) { + + // This shouldn't have been run... + if ( !selector.find( '.remove-image' ).addClass( 'hide' ) ) { + return; + } + + selector.find( '.remove-image' ).addClass( 'hide' );//hide "Remove" button + selector.find( '.upload' ).val( '' ); + selector.find( '.upload-id' ).val( '' ); + selector.find( '.upload-height' ).val( '' ); + selector.find( '.upload-width' ).val( '' ); + selector.find( '.upload-thumbnail' ).val( '' ); + redux_change( $( selector ).find( '.upload-id' ) ); + selector.find( '.redux-background-properties' ).hide(); + + var screenshot = selector.find( '.screenshot' ); + + // Hide the screenshot + screenshot.slideUp(); + + selector.find( '.remove-file' ).unbind(); + + // We don't display the upload button if .upload-notice is present + // This means the user doesn't have the WordPress 3.5 Media Library Support + if ( selector.find( '.section-upload .upload-notice' ).length > 0 ) { + selector.find( '.media_upload_button' ).remove(); + } + }; +})( jQuery ); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/media/media.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/media/media.min.js new file mode 100644 index 00000000..05684046 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/media/media.min.js @@ -0,0 +1 @@ +!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.media=redux.field_objects.media||{};var b;a(document).ready(function(){}),redux.field_objects.media.init=function(c){c||(c=a(document).find(".redux-container-media")),a(c).each(function(){var c=a(this),d=c;c.hasClass("redux-field-container")||(d=c.parents(".redux-field-container:first")),d.hasClass("redux-field-init")&&(d.removeClass("redux-field-init"),b=!1,c.find(".remove-image, .remove-file").unbind("click").on("click",function(){redux.field_objects.media.removeFile(a(this).parents("fieldset.redux-field:first"))}),c.find(".media_upload_button").unbind().on("click",function(b){redux.field_objects.media.addFile(b,a(this).parents("fieldset.redux-field:first"))}))})},redux.field_objects.media.addFile=function(c,d){c.preventDefault();var e,f=a(this);if(e)return void e.open();var g=a(d).find(".library-filter").data("lib-filter"),h=[];void 0!==g&&""!==g&&(b=!0,g=decodeURIComponent(g),g=JSON.parse(g),a.each(g,function(a,b){h.push(b)})),e=wp.media({multiple:!1,library:{type:h},title:f.data("choose"),button:{text:f.data("update")}}),e.on("select",function(){var c=e.state().get("selection").first();e.close();var f=a(d).find(".data").data();if(("undefined"==typeof redux.field_objects.media||void 0===typeof redux.field_objects.media)&&(redux.field_objects.media={}),(void 0===f||"undefined"===f.mode)&&(f={},f.mode="image"),b===!0&&(f.mode=0),0===f.mode);else if(f.mode!==!1&&c.attributes.type!==f.mode&&c.attributes.subtype!==f.mode)return;d.find(".upload").val(c.attributes.url),d.find(".upload-id").val(c.attributes.id),d.find(".upload-height").val(c.attributes.height),d.find(".upload-width").val(c.attributes.width),redux_change(a(d).find(".upload-id"));var g=c.attributes.url;if("undefined"!=typeof c.attributes.sizes&&"undefined"!=typeof c.attributes.sizes.thumbnail)g=c.attributes.sizes.thumbnail.url;else if("undefined"!=typeof c.attributes.sizes){var h=c.attributes.height;for(var i in c.attributes.sizes){var j=c.attributes.sizes[i];j.height').slideDown("fast"),d.find(".remove-image").removeClass("hide"),d.find(".redux-background-properties").slideDown()}),e.open()},redux.field_objects.media.removeFile=function(b){if(b.find(".remove-image").addClass("hide")){b.find(".remove-image").addClass("hide"),b.find(".upload").val(""),b.find(".upload-id").val(""),b.find(".upload-height").val(""),b.find(".upload-width").val(""),b.find(".upload-thumbnail").val(""),redux_change(a(b).find(".upload-id")),b.find(".redux-background-properties").hide();var c=b.find(".screenshot");c.slideUp(),b.find(".remove-file").unbind(),b.find(".section-upload .upload-notice").length>0&&b.find(".media_upload_button").remove()}}}(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/redux.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/redux.js new file mode 100644 index 00000000..677823eb --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/redux.js @@ -0,0 +1,1361 @@ +/* global confirm, relid:true, jsonView */ + +(function( $ ) { + 'use strict'; + + $.redux = $.redux || {}; + + $( document ).ready( + function() { + $.fn.isOnScreen = function() { + if ( !window ) { + return; + } + + var win = $( window ); + var viewport = { + top: win.scrollTop(), + left: win.scrollLeft() + }; + + viewport.right = viewport.left + win.width(); + viewport.bottom = viewport.top + win.height(); + + var bounds = this.offset(); + + bounds.right = bounds.left + this.outerWidth(); + bounds.bottom = bounds.top + this.outerHeight(); + + return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom)); + }; + + $.redux.checkRequired(); + $.redux.initEvents(); + $.redux.initQtip(); + $.redux.tabCheck(); + $.redux.notices(); + $.redux.tabControl(); + $.redux.devFunctions(); + + + } + ); + + $.redux.initEvents = function() { + $( '.redux-action_bar, .redux-presets-bar' ).on( + 'click', function() { + window.onbeforeunload = null; + } + ); + + $( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a, #wp-admin-bar-' + redux.args.slug + ' a.ab-item' ).click( + function( e ) { + + if ( ( $( '#toplevel_page_' + redux.args.slug ).hasClass( 'wp-menu-open' ) || $( this ).hasClass( 'ab-item' ) ) && !$( this ).parents( 'ul.ab-submenu:first' ).hasClass( 'ab-sub-secondary' ) ) { + e.preventDefault(); + var url = $( this ).attr( 'href' ).split( '&tab=' ); + $( '#' + url[1] + '_section_group_li_a' ).click(); + $( this ).parents( 'ul:first' ).find( '.current' ).removeClass( 'current' ); + $( this ).addClass( 'current' ); + $( this ).parent().addClass( 'current' ); + return false; + } + } + ); + + + // Default button clicked + $( 'input[name="' + redux.args.opt_name + '[defaults]"]' ).click( + function() { + if ( !confirm( redux.args.reset_confirm ) ) { + return false; + } + window.onbeforeunload = null; + } + ); + + // Default button clicked + $( 'input[name="' + redux.args.opt_name + '[defaults-section]"]' ).click( + function() { + if ( !confirm( redux.args.reset_section_confirm ) ) { + return false; + } + + window.onbeforeunload = null; + } + ); + + $( '.expand_options' ).click( + function( e ) { + e.preventDefault(); + + $.redux.expandOptions( $( this ).parents( '.redux-container:first' ) ); + return false; + } + ); + + if ( $( '.saved_notice' ).is( ':visible' ) ) { + $( '.saved_notice' ).slideDown(); + } + + $( document.body ).on( + 'change', '.redux-field input, .redux-field textarea, .redux-field select', function() { + if ( !$( this ).hasClass( 'noUpdate' ) ) { + redux_change( $( this ) ); + } + } + ); + + var stickyHeight = $( '#redux-footer' ).height(); + + $( '#redux-sticky-padder' ).css( + { + height: stickyHeight + } + ); + + if ( $( '#redux-footer' ).length !== 0 ) { + $( window ).scroll( + function() { + $.redux.stickyInfo(); + } + ); + + $( window ).resize( + function() { + $.redux.stickyInfo(); + } + ); + } + + $( '.saved_notice' ).delay( 4000 ).slideUp(); + + $( '.redux-save' ).click( + function() { + window.onbeforeunload = null; + } + ); + + }; + + $.redux.checkRequired = function() { + $.redux.required(); + + $( "body" ).on( + 'change', + '.redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]', + function( e ) { + $.redux.check_dependencies( this ); + } + ); + + $( "body" ).on( + 'check_dependencies', function( e, variable ) { + $.redux.check_dependencies( variable ); + } + ); + + $( 'td > fieldset:empty,td > div:empty' ).parent().parent().hide(); + }; + + $.redux.initQtip = function() { + if ( $().qtip ) { + // Shadow + var shadow = ''; + var tip_shadow = redux.args.hints.tip_style.shadow; + + if ( tip_shadow === true ) { + shadow = 'qtip-shadow'; + } + + // Color + var color = ''; + var tip_color = redux.args.hints.tip_style.color; + + if ( tip_color !== '' ) { + color = 'qtip-' + tip_color; + } + + // Rounded + var rounded = ''; + var tip_rounded = redux.args.hints.tip_style.rounded; + + if ( tip_rounded === true ) { + rounded = 'qtip-rounded'; + } + + // Tip style + var style = ''; + var tip_style = redux.args.hints.tip_style.style; + + if ( tip_style !== '' ) { + style = 'qtip-' + tip_style; + } + + var classes = shadow + ',' + color + ',' + rounded + ',' + style; + classes = classes.replace( /,/g, ' ' ); + + // Get position data + var myPos = redux.args.hints.tip_position.my; + var atPos = redux.args.hints.tip_position.at; + + // Gotta be lowercase, and in proper format + myPos = $.redux.verifyPos( myPos.toLowerCase(), true ); + atPos = $.redux.verifyPos( atPos.toLowerCase(), false ); + + // Tooltip trigger action + var showEvent = redux.args.hints.tip_effect.show.event; + var hideEvent = redux.args.hints.tip_effect.hide.event; + + // Tip show effect + var tipShowEffect = redux.args.hints.tip_effect.show.effect; + var tipShowDuration = redux.args.hints.tip_effect.show.duration; + + // Tip hide effect + var tipHideEffect = redux.args.hints.tip_effect.hide.effect; + var tipHideDuration = redux.args.hints.tip_effect.hide.duration; + + $( 'div.redux-hint-qtip' ).each( + function() { + $( this ).qtip( + { + content: { + text: $( this ).attr( 'qtip-content' ), + title: $( this ).attr( 'qtip-title' ) + }, + show: { + effect: function() { + switch ( tipShowEffect ) { + case 'slide': + $( this ).slideDown( tipShowDuration ); + break; + case 'fade': + $( this ).fadeIn( tipShowDuration ); + break; + default: + $( this ).show(); + break; + } + }, + event: showEvent, + }, + hide: { + effect: function() { + switch ( tipHideEffect ) { + case 'slide': + $( this ).slideUp( tipHideDuration ); + break; + case 'fade': + $( this ).fadeOut( tipHideDuration ); + break; + default: + $( this ).show( tipHideDuration ); + break; + } + }, + event: hideEvent, + }, + style: { + classes: classes, + }, + position: { + my: myPos, + at: atPos, + }, + } + ); + } + ); + // }); + + $( 'input[qtip-content]' ).each( + function() { + $( this ).qtip( + { + content: { + text: $( this ).attr( 'qtip-content' ), + title: $( this ).attr( 'qtip-title' ) + }, + show: 'focus', + hide: 'blur', + style: classes, + position: { + my: myPos, + at: atPos, + }, + } + ); + } + ); + } + }; + + $.redux.tabCheck = function() { + $( '.redux-group-tab-link-a' ).click( + function() { + var link = $( this ); + if ( link.parent().hasClass( 'empty_section' ) && link.parent().hasClass( 'hasSubSections' ) ) { + var elements = $( this ).closest( 'ul' ).find( '.redux-group-tab-link-a' ); + var index = elements.index( this ); + link = elements.slice( index + 1, index + 2 ); + } + var el = link.parents( '.redux-container:first' ); + var relid = link.data( 'rel' ); // The group ID of interest + var oldid = el.find( '.redux-group-tab-link-li.active .redux-group-tab-link-a' ).data( 'rel' ); + + + if ( oldid === relid ) { + return; + } + + $( '#currentSection' ).val( relid ); + if ( !link.parents( '.postbox-container:first' ).length ) { + // Set the proper page cookie + $.cookie( + 'redux_current_tab', relid, { + expires: 7, + path: '/' + } + ); + } + + if ( el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).length ) { + var parentID = el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).attr( 'id' ).split( '_' ); + parentID = parentID[0]; + } + + el.find( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a.current' ).removeClass( 'current' ); + el.find( '#toplevel_page_' + redux.args.slug + ' .wp-submenu li.current' ).removeClass( 'current' ); + + el.find( '#toplevel_page_' + redux.args.slug + ' .wp-submenu a' ).each( + function() { + var url = $( this ).attr( 'href' ).split( '&tab=' ); + if ( url[1] == relid || url[1] == parentID ) { + $( this ).addClass( 'current' ); + $( this ).parent().addClass( 'current' ); + } + } + ); + + if ( el.find( '#' + oldid + '_section_group_li' ).find( '#' + oldid + '_section_group_li' ).length ) { + //console.log('RELID is child of oldid'); + el.find( '#' + oldid + '_section_group_li' ).addClass( 'activeChild' ); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ); + } else if ( el.find( '#' + relid + '_section_group_li' ).parents( '#' + oldid + '_section_group_li' ).length || el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).find( '#' + relid + '_section_group_li' ).length ) { + //console.log('RELID is sibling or child of OLDID'); + if ( el.find( '#' + relid + '_section_group_li' ).parents( '#' + oldid + '_section_group_li' ).length ) { + //console.log('child of oldid'); + el.find( '#' + oldid + '_section_group_li' ).addClass( 'activeChild' ).removeClass( 'active' ); + } else { + //console.log('sibling'); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ); + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + } + el.find( '#' + relid + '_section_group_li' ).removeClass( 'activeChild' ).addClass( 'active' ); + } else { + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ).removeClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + + if ( el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).length ) { + //console.log('oldid is parent') + el.find( '#' + oldid + '_section_group_li' ).find( 'ul.subsection' ).slideUp( + 'fast', function() { + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ).removeClass( 'activeChild' ); + } + ); + } else if ( el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).length ) { + //console.log('oldid is a child'); + if ( !el.find( '#' + oldid + '_section_group_li' ).parents( '#' + relid + '_section_group_li' ).length ) { + //console.log('oldid is child, but not of relid'); + el.find( '#' + oldid + '_section_group_li' ).parents( 'ul.subsection' ).slideUp( + 'fast', function() { + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + el.find( '#' + oldid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).removeClass( 'active' ).removeClass( 'activeChild' ); + el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).addClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ); + } + ); + } else { + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + } + } else { + //console.log('Normal remove active from child'); + el.find( '#' + oldid + '_section_group_li' ).removeClass( 'active' ); + if ( el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).length ) { + //console.log('here'); + el.find( '#' + relid + '_section_group_li' ).parents( '.redux-group-tab-link-li' ).addClass( 'activeChild' ).find( 'ul.subsection' ).slideDown(); + el.find( '#' + relid + '_section_group_li' ).addClass( 'active' ); + } + } + } + + // Show the group + el.find( '#' + oldid + '_section_group' ).hide(); + + el.find( '#' + relid + '_section_group' ).fadeIn( + 200, function() { + if ( el.find( '#redux-footer' ).length !== 0 ) { + $.redux.stickyInfo(); // race condition fix + } + $.redux.initFields(); + } + ); + $( '#toplevel_page_' + redux.args.slug ).find( '.current' ).removeClass( 'current' ); + + } + ); + + var tab = decodeURI( (new RegExp( 'tab' + '=' + '(.+?)(&|$)' ).exec( location.search ) || [, ''])[1] ); + + if ( tab !== "" ) { + if ( $.cookie( "redux_current_tab_get" ) !== tab ) { + $.cookie( + 'redux_current_tab', tab, { + expires: 7, + path: '/' + } + ); + $.cookie( + 'redux_current_tab_get', tab, { + expires: 7, + path: '/' + } + ); + + $( '#' + tab + '_section_group_li' ).click(); + } + } else if ( $.cookie( 'redux_current_tab_get' ) !== "" ) { + $.removeCookie( 'redux_current_tab_get' ); + } + + var sTab = $( '#' + $.cookie( "redux_current_tab" ) + '_section_group_li_a' ); + + // Tab the first item or the saved one + if ( $.cookie( "redux_current_tab" ) === null || typeof ($.cookie( "redux_current_tab" )) === "undefined" || sTab.length === 0 ) { + $( '.redux-container' ).find( '.redux-group-tab-link-a:first' ).click(); + } else { + sTab.click(); + } + + }; + + $.redux.initFields = function() { + $( ".redux-field-init:visible" ).each( + function() { + var type = $( this ).attr( 'data-type' ); + //console.log(type); + if ( redux.field_objects[type] ) { + redux.field_objects[type].init(); + } + } + ); + }; + + $.redux.notices = function() { + if ( redux.errors !== undefined ) { + $.each( + redux.errors.errors, function( sectionID, sectionArray ) { + $.each( + sectionArray.errors, function( key, value ) { + $( "#" + redux.args.opt_name + '-' + value.id ).addClass( "redux-field-error" ); + if ( $( "#" + redux.args.opt_name + '-' + value.id ).parent().find( '.redux-th-error' ).length === 0 ) { + $( "#" + redux.args.opt_name + '-' + value.id ).append( '
' + value.msg + '
' ); + } + } + ); + } + ); + + $( '.redux-container' ).each( + function() { + var container = $( this ); + var totalErrors = container.find( '.redux-field-error' ).length; + if ( totalErrors > 0 ) { + container.find( ".redux-field-errors span" ).text( totalErrors ); + container.find( ".redux-field-errors" ).slideDown(); + container.find( '.redux-group-tab' ).each( + function() { + var total = $( this ).find( '.redux-field-error' ).length; + if ( total > 0 ) { + var sectionID = $( this ).attr( 'id' ).split( '_' ); + sectionID = sectionID[0]; + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).prepend( '' + total + '' ); + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).addClass( "hasError" ); + var subParent = container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).parents( '.hasSubSections:first' ); + if ( subParent ) { + subParent.find( '.redux-group-tab-link-a:first' ).addClass( 'hasError' ); + } + } + } + ); + } + var totalWarnings = container.find( '.redux-field-warning' ).length; + if ( totalWarnings > 0 ) { + container.find( ".redux-field-warnings span" ).text( totalWarnings ); + container.find( ".redux-field-warnings" ).slideDown(); + container.find( '.redux-group-tab' ).each( + function() { + var warning = $( this ).find( '.redux-field-warning' ).length; + if ( warning > 0 ) { + var sectionID = $( this ).attr( 'id' ).split( '_' ); + sectionID = sectionID[0]; + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).prepend( '' + total + '' ); + container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).addClass( "hasWarning" ); + var subParent = container.find( '.redux-group-tab-link-a[data-key="' + sectionID + '"]' ).parents( '.hasSubSections:first' ); + if ( subParent ) { + subParent.find( '.redux-group-tab-link-a:first' ).addClass( 'hasWarning' ); + } + } + } + ); + } + } + ); + } + }; + + $.redux.tabControl = function() { + $( '.redux-section-tabs div' ).hide(); + $( '.redux-section-tabs div:first' ).show(); + $( '.redux-section-tabs ul li:first' ).addClass( 'active' ); + + $( '.redux-section-tabs ul li a' ).click( + function() { + $( '.redux-section-tabs ul li' ).removeClass( 'active' ); + $( this ).parent().addClass( 'active' ); + + var currentTab = $( this ).attr( 'href' ); + + $( '.redux-section-tabs div' ).hide(); + $( currentTab ).fadeIn( + 'medium', function() { + $.redux.initFields(); + } + ); + + return false; + } + ); + }; + + $.redux.devFunctions = function() { + $( '#consolePrintObject' ).on( + 'click', function( e ) { + e.preventDefault(); + console.log( $.parseJSON( $( "#redux-object-json" ).html() ) ); + } + ); + + if ( typeof jsonView === 'function' ) { + jsonView( '#redux-object-json', '#redux-object-browser' ); + } + }; + + $.redux.required = function() { + + // Hide the fold elements on load , + // It's better to do this by PHP but there is no filter in tr tag , so is not possible + // we going to move each attributes we may need for folding to tr tag + $.each( + redux.folds, function( i, v ) { + var fieldset = $( '#' + redux.args.opt_name + '-' + i ); + + fieldset.parents( 'tr:first' ).addClass( 'fold' ); + + if ( v == "hide" ) { + fieldset.parents( 'tr:first' ).addClass( 'hide' ); + + if ( fieldset.hasClass( 'redux-container-section' ) ) { + var div = $( '#section-' + i ); + + if ( div.hasClass( 'redux-section-indent-start' ) ) { + $( '#section-table-' + i ).hide().addClass( 'hide' ); + div.hide().addClass( 'hide' ); + } + } + + if ( fieldset.hasClass( 'redux-container-info' ) ) { + $( '#info-' + i ).hide().addClass( 'hide' ); + } + + if ( fieldset.hasClass( 'redux-container-divide' ) ) { + $( '#divide-' + i ).hide().addClass( 'hide' ); + } + + if ( fieldset.hasClass( 'redux-container-raw' ) ) { + var rawTable = fieldset.parents().find( 'table#' + redux.args.opt_name + '-' + i ); + rawTable.hide().addClass( 'hide' ); + } + } + } + ); + }; + + $.redux.get_container_value = function( id ) { + var value = $( '#' + redux.args.opt_name + '-' + id ).serializeForm(); + + if ( value !== null && typeof value === 'object' && value.hasOwnProperty( redux.args.opt_name ) ) { + //console.log('object'); + //console.log(value); + value = value[redux.args.opt_name][id]; + } + //console.log(value); + return value; + }; + + $.redux.check_dependencies = function( variable ) { + if ( redux.required === null ) { + return; + } + var current = $( variable ), + id = current.parents( '.redux-field:first' ).data( 'id' ); + + if ( !redux.required.hasOwnProperty( id ) ) { + return; + } + + var container = current.parents( '.redux-field-container:first' ), + is_hidden = container.parents( 'tr:first' ).hasClass( '.hide' ), + hadSections = false; + + $.each( + redux.required[id], function( child, dependents ) { + + var current = $( this ), + show = false, + childFieldset = $( '#' + redux.args.opt_name + '-' + child ), + tr = childFieldset.parents( 'tr:first' ); + + if ( !is_hidden ) { + show = $.redux.check_parents_dependencies( child ); + } + + if ( show === true ) { + // Shim for sections + if ( childFieldset.hasClass( 'redux-container-section' ) ) { + var div = $( '#section-' + child ); + + if ( div.hasClass( 'redux-section-indent-start' ) && div.hasClass( 'hide' ) ) { + $( '#section-table-' + child ).fadeIn( 300 ).removeClass( 'hide' ); + div.fadeIn( 300 ).removeClass( 'hide' ); + } + } + + if ( childFieldset.hasClass( 'redux-container-info' ) ) { + $( '#info-' + child ).fadeIn( 300 ).removeClass( 'hide' ); + } + + if ( childFieldset.hasClass( 'redux-container-divide' ) ) { + $( '#divide-' + child ).fadeIn( 300 ).removeClass( 'hide' ); + } + + if ( childFieldset.hasClass( 'redux-container-raw' ) ) { + var rawTable = childFieldset.parents().find( 'table#' + redux.args.opt_name + '-' + child ); + rawTable.fadeIn( 300 ).removeClass( 'hide' ); + } + + tr.fadeIn( + 300, function() { + $( this ).removeClass( 'hide' ); + if ( redux.required.hasOwnProperty( child ) ) { + $.redux.check_dependencies( $( '#' + redux.args.opt_name + '-' + child ).children().first() ); + } + $.redux.initFields(); + } + ); + if ( childFieldset.hasClass( 'redux-container-section' ) || childFieldset.hasClass( 'redux-container-info' ) ) { + tr.css( {display: 'none'} ); + } + } else if ( show === false ) { + tr.fadeOut( + 100, function() { + $( this ).addClass( 'hide' ); + if ( redux.required.hasOwnProperty( child ) ) { + //console.log('Now check, reverse: '+child); + $.redux.required_recursive_hide( child ); + } + } + ); + } + + current.find( 'select, radio, input[type=checkbox]' ).trigger( 'change' ); + } + ); + }; + + $.redux.required_recursive_hide = function( id ) { + var toFade = $( '#' + redux.args.opt_name + '-' + id ).parents( 'tr:first' ); + + toFade.fadeOut( + 50, function() { + $( this ).addClass( 'hide' ); + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-section' ) ) { + var div = $( '#section-' + id ); + if ( div.hasClass( 'redux-section-indent-start' ) ) { + $( '#section-table-' + id ).fadeOut( 50 ).addClass( 'hide' ); + div.fadeOut( 50 ).addClass( 'hide' ); + } + } + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-info' ) ) { + $( '#info-' + id ).fadeOut( 50 ).addClass( 'hide' ); + } + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-divide' ) ) { + $( '#divide-' + id ).fadeOut( 50 ).addClass( 'hide' ); + } + + if ( $( '#' + redux.args.opt_name + '-' + id ).hasClass( 'redux-container-raw' ) ) { + var rawTable = $( '#' + redux.args.opt_name + '-' + id ).parents().find( 'table#' + redux.args.opt_name + '-' + id ); + rawTable.fadeOut( 50 ).addClass( 'hide' ); + } + + if ( redux.required.hasOwnProperty( id ) ) { + $.each( + redux.required[id], function( child ) { + $.redux.required_recursive_hide( child ); + } + ); + } + } + ); + }; + + $.redux.check_parents_dependencies = function( id ) { + var show = ""; + + if ( redux.required_child.hasOwnProperty( id ) ) { + $.each( + redux.required_child[id], function( i, parentData ) { + if ( $( '#' + redux.args.opt_name + '-' + parentData.parent ).parents( 'tr:first' ).hasClass( '.hide' ) ) { + show = false; + } else { + if ( show !== false ) { + var parentValue = $.redux.get_container_value( parentData.parent ); + show = $.redux.check_dependencies_visibility( parentValue, parentData ); + } + } + } + ); + } else { + show = true; + } + return show; + }; + + $.redux.check_dependencies_visibility = function( parentValue, data ) { + var show = false, + checkValue_array, + checkValue = data.checkValue, + operation = data.operation; + + switch ( operation ) { + case '=': + case 'equals': + //if value was array + if ( $.isArray( checkValue ) ) { + if ( $.inArray( parentValue, checkValue ) != -1 ) { + show = true; + } + } else { + if ( parentValue == checkValue ) { + show = true; + } else if ( $.isArray( parentValue ) ) { + if ( $.inArray( checkValue, parentValue ) != -1 ) { + show = true; + } + } + } + break; + case '!=': + case 'not': + //if value was array + if ( $.isArray( checkValue ) ) { + //if (checkValue.toString().indexOf('|') !== -1) { + // checkValue_array = checkValue.split('|'); + if ( $.inArray( parentValue, checkValue ) == -1 ) { + show = true; + } + } else { + if ( parentValue != checkValue ) { + show = true; + } else if ( $.isArray( parentValue ) ) { + if ( $.inArray( checkValue, parentValue ) == -1 ) { + show = true; + } + } + } + break; + case '>': + case 'greater': + case 'is_larger': + if ( parseFloat( parentValue ) > parseFloat( checkValue ) ) + show = true; + break; + case '>=': + case 'greater_equal': + case 'is_larger_equal': + if ( parseFloat( parentValue ) >= parseFloat( checkValue ) ) + show = true; + break; + case '<': + case 'less': + case 'is_smaller': + if ( parseFloat( parentValue ) < parseFloat( checkValue ) ) + show = true; + break; + case '<=': + case 'less_equal': + case 'is_smaller_equal': + if ( parseFloat( parentValue ) <= parseFloat( checkValue ) ) + show = true; + break; + case 'contains': + if ( parentValue.toString().indexOf( checkValue ) != -1 ) + show = true; + break; + case 'doesnt_contain': + case 'not_contain': + if ( parentValue.toString().indexOf( checkValue ) == -1 ) + show = true; + break; + case 'is_empty_or': + if ( parentValue === "" || parentValue == checkValue ) + show = true; + break; + case 'not_empty_and': + if ( parentValue !== "" && parentValue != checkValue ) + show = true; + break; + case 'is_empty': + case 'empty': + case '!isset': + if ( !parentValue || parentValue === "" || parentValue === null ) + show = true; + break; + case 'not_empty': + case '!empty': + case 'isset': + if ( parentValue && parentValue !== "" && parentValue !== null ) + show = true; + break; + } + return show; + + }; + + $.redux.verifyPos = function( s, b ) { + + // trim off spaces + s = s.replace( /^\s+|\s+$/gm, '' ); + + // position value is blank, set the default + if ( s === '' || s.search( ' ' ) == -1 ) { + if ( b === true ) { + return 'top left'; + } else { + return 'bottom right'; + } + } + + // split string into array + var split = s.split( ' ' ); + + // Evaluate first string. Must be top, center, or bottom + var paramOne = b ? 'top' : 'bottom'; + if ( split[0] == 'top' || split[0] == 'center' || split[0] == 'bottom' ) { + paramOne = split[0]; + } + + // Evaluate second string. Must be left, center, or right. + var paramTwo = b ? 'left' : 'right'; + if ( split[1] == 'left' || split[1] == 'center' || split[1] == 'right' ) { + paramTwo = split[1]; + } + + return paramOne + ' ' + paramTwo; + }; + + $.redux.stickyInfo = function() { + var stickyWidth = $( '#info_bar' ).width() - 4; + + if ( !$( '#info_bar' ).isOnScreen() && !$( '#redux-footer-sticky' ).isOnScreen() ) { + $( '#redux-sticky' ).addClass( 'sticky-save-warn' ); + + $( '#redux-footer' ).css( + { + position: 'fixed', + bottom: '0', + width: stickyWidth + } + ); + + $( '#redux-footer' ).addClass( 'sticky-footer-fixed' ); + $( '.redux-save-warn' ).css( 'left', $( '#redux-sticky' ).offset().left ); + $( '#redux-sticky-padder' ).show(); + } else { + $( '#redux-sticky' ).removeClass( 'sticky-save-warn' ); + + $( '#redux-footer' ).css( + { + background: '#eee', + position: 'inherit', + bottom: 'inherit', + width: 'inherit' + } + ); + + $( '#redux-sticky-padder' ).hide(); + $( '#redux-footer' ).removeClass( 'sticky-footer-fixed' ); + } + }; + + $.redux.expandOptions = function( parent ) { + var trigger = parent.find( '.expand_options' ); + var width = parent.find( '.redux-sidebar' ).width() - 1; + var id = $( '.redux-group-menu .active a' ).data( 'rel' ) + '_section_group'; + + if ( trigger.hasClass( 'expanded' ) ) { + trigger.removeClass( 'expanded' ); + parent.find( '.redux-main' ).removeClass( 'expand' ); + + parent.find( '.redux-sidebar' ).stop().animate( + { + 'margin-left': '0px' + }, 500 + ); + + parent.find( '.redux-main' ).stop().animate( + { + 'margin-left': width + }, 500, function() { + parent.find( '.redux-main' ).attr( 'style', '' ); + } + ); + + parent.find( '.redux-group-tab' ).each( + function() { + if ( $( this ).attr( 'id' ) !== id ) { + $( this ).fadeOut( 'fast' ); + } + } + ); + // Show the only active one + } else { + trigger.addClass( 'expanded' ); + parent.find( '.redux-main' ).addClass( 'expand' ); + + parent.find( '.redux-sidebar' ).stop().animate( + { + 'margin-left': -width - 113 + }, 500 + ); + + parent.find( '.redux-main' ).stop().animate( + { + 'margin-left': '-1px' + }, 500 + ); + + parent.find( '.redux-group-tab' ).fadeIn( + 'medium', function() { + $.redux.initFields(); + } + ); + } + return false; + }; + + + $.redux.scaleToRatio = function( el, maxHeight, maxWidth ) { + var ratio = 0; // Used for aspect ratio + + var width = el.attr( 'data-width' ); + if ( !width ) { + width = el.width(); + el.attr( 'data-width', width ); + } + var height = el.attr( 'data-height' ); + var eHeight = el.height(); + if ( !height || eHeight > height ) { + height = eHeight; + el.attr( 'data-height', height ); + el.css( "width", 'auto' ); + el.attr( 'data-width', el.width() ); + width = el.width(); + } + + + // Check if the current width is larger than the max + if ( width > maxWidth ) { + ratio = maxWidth / width; // get ratio for scaling image + el.css( "width", maxWidth ); // Set new width + el.css( "height", height * ratio ); // Scale height based on ratio + height = height * ratio; // Reset height to match scaled image + width = width * ratio; // Reset width to match scaled image + + } else { + el.css( "width", 'auto' ); // Set new height + + } + + // Check if current height is larger than max + if ( height > maxHeight ) { + ratio = maxHeight / height; // get ratio for scaling image + el.css( "height", maxHeight ); // Set new height + el.css( "width", width * ratio ); // Scale width based on ratio + width = width * ratio; // Reset width to match scaled image + height = height * ratio; // Reset height to match scaled image + + + } else { + el.css( "height", 'auto' ); // Set new height + + } + + var test = ($( document.getElementById( 'redux-header' ) ).height() - el.height()) / 2; + if ( test > 0 ) { + el.css( "margin-top", test ); + } else { + el.css( "margin-top", 0 ); + } + + if ( $( '#redux-header .redux_field_search' ) ) { + $( '#redux-header .redux_field_search' ).css( 'right', ($( el ).width() + 20) ); + } + + + }; + $.redux.resizeAds = function() { + var el = $( '#redux-header' ); + var rAds = el.find( '.rAds' ); + + var maxHeight = el.height(); + var maxWidth = el.width() - el.find( '.display_header' ).width() - 30; + $( rAds ).find( 'video' ).each( + function() { + $.redux.scaleToRatio( $( this ), maxHeight, maxWidth ); + } + ); + $( rAds ).find( 'img' ).each( + function() { + $.redux.scaleToRatio( $( this ), maxHeight, maxWidth ); + } + ); + $( rAds ).find( 'div' ).each( + function() { + $.redux.scaleToRatio( $( this ), maxHeight, maxWidth ); + } + ); + + if ( rAds.css( 'left' ) == "-99999px" ) { + rAds.css( 'display', 'none' ).css( 'left', 'auto' ); + } + rAds.fadeIn( 'slow' ); + }; + $( document ).ready( + function() { + if ( redux.rAds ) { + setTimeout( + function() { + $( '#redux-header' ).append( '
' ); + var el = $( '#redux-header' ); + el.css( 'position', 'relative' ); + + el.find( '.rAds' ).attr( + 'style', + 'position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;' + ).css( 'left', '-99999px' ); + el.find( '.rAds' ).html( redux.rAds.replace( //, '' ) ); + var rAds = el.find( '.rAds' ); + + var maxHeight = el.height(); + var maxWidth = el.width() - el.find( '.display_header' ).width() - 30; + + rAds.find( 'a' ).css( 'float', 'right' ).css( 'line-height', el.height() + 'px' ).css( + 'margin-left', '5px' + ); + + $( document ).ajaxComplete( + function() { + rAds.find( 'a' ).hide(); + setTimeout( + function() { + $.redux.resizeAds(); + rAds.find( 'a' ).fadeIn(); + }, 1400 + ); + setTimeout( + function() { + $.redux.resizeAds(); + + }, 1500 + ); + $( document ).unbind( 'ajaxComplete' ); + } + ); + + $( window ).resize( + function() { + $.redux.resizeAds(); + } + ); + }, 400 + ); + + } + } + ); +})( jQuery ); + +jQuery.noConflict(); + +var confirmOnPageExit = function( e ) { + //return; // ONLY FOR DEBUGGING + // If we haven't been passed the event get the window.event + e = e || window.event; + + var message = redux.args.save_pending; + + // For IE6-8 and Firefox prior to version 4 + if ( e ) { + e.returnValue = message; + } + + window.onbeforeunload = null; + + // For Chrome, Safari, IE8+ and Opera 12+ + return message; +}; + +function redux_change( variable ) { + jQuery( 'body' ).trigger( 'check_dependencies', variable ); + + if ( variable.hasClass( 'compiler' ) ) { + jQuery( '#redux-compiler-hook' ).val( 1 ); + } + + window.onbeforeunload = confirmOnPageExit; + + var rContainer = jQuery( variable ).parents( '.redux-container:first' ); + + if ( jQuery( variable ).parents( 'fieldset.redux-field:first' ).hasClass( 'redux-field-error' ) ) { + jQuery( variable ).parents( 'fieldset.redux-field:first' ).removeClass( 'redux-field-error' ); + jQuery( variable ).parent().find( '.redux-th-error' ).slideUp(); + + var parentID = jQuery( variable ).closest( '.redux-group-tab' ).attr( 'id' ); + + + var errorCount = (parseInt( rContainer.find( '.redux-field-errors span' ).text() ) - 1); + var warningCount = (parseInt( rContainer.find( '.redux-field-warnings span' ).text() ) - 1); + + if ( errorCount <= 0 ) { + //console.log('HERE'); + jQuery( '#' + parentID + '_li .redux-menu-error' ).fadeOut( 'fast' ).remove(); + jQuery( '#' + parentID + '_li .redux-group-tab-link-a' ).removeClass( 'hasError' ); + + jQuery( '#' + parentID + '_li' ).parents( '.inside:first' ).find( '.redux-field-errors' ).slideUp(); + jQuery( variable ).parents( '.redux-container:first' ).find( '.redux-field-errors' ).slideUp(); + jQuery( '#redux_metaboxes_errors' ).slideUp(); + } else { + // Let's count down the errors now. Fancy. ;) + var id = parentID.split( '_' ); + id = id[0]; + + var th = rContainer.find( '.redux-group-tab-link-a[data-key="' + id + '"]' ).parents( '.redux-group-tab-link-li:first' ); + + var errorsLeft = (parseInt( th.find( '.redux-menu-error:first' ).text() ) - 1); + if ( errorsLeft <= 0 ) { + th.find( '.redux-menu-error:first' ).fadeOut().remove(); + } else { + th.find( '.redux-menu-error:first' ).text( errorsLeft ); + } + + var warningsLeft = (parseInt( th.find( '.redux-menu-warning:first' ).text() ) - 1); + if ( warningsLeft <= 0 ) { + th.find( '.redux-menu-warning:first' ).fadeOut().remove(); + } else { + th.find( '.redux-menu-warning:first' ).text( warningsLeft ); + } + + rContainer.find( '.redux-field-errors span' ).text( errorCount ); + rContainer.find( '.redux-field-warning span' ).text( warningCount ); + + } + var subParent = jQuery( '#' + parentID + '_li' ).parents( '.hasSubSections:first' ); + if ( subParent.length !== 0 ) { + if ( subParent.find( '.redux-menu-error' ).length === 0 ) { + subParent.find( '.hasError' ).removeClass( 'hasError' ); + } + } + } + if ( !redux.args.disable_save_warn ) { + rContainer.find( '.redux-save-warn' ).slideDown(); + } +} + +function colorValidate( field ) { + var value = jQuery( field ).val(); + + var hex = colorNameToHex( value ); + if ( hex !== value.replace( '#', '' ) ) { + return hex; + } + + return value; +} + +function colorNameToHex( colour ) { + var tcolour = colour.replace( /^\s\s*/, '' ).replace( /\s\s*$/, '' ).replace( "#", "" ); + + var colours = { + "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", + "lightgrey": "#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", + "redux": "#01a3e3", + "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" + }; + + if ( colours[tcolour.toLowerCase()] !== 'undefined' ) { + return colours[tcolour.toLowerCase()]; + } + + return colour; +} + diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/redux.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/redux.min.js new file mode 100644 index 00000000..153ad1e6 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/redux.min.js @@ -0,0 +1,3 @@ +function redux_change(a){jQuery("body").trigger("check_dependencies",a),a.hasClass("compiler")&&jQuery("#redux-compiler-hook").val(1),window.onbeforeunload=confirmOnPageExit;var b=jQuery(a).parents(".redux-container:first");if(jQuery(a).parents("fieldset.redux-field:first").hasClass("redux-field-error")){jQuery(a).parents("fieldset.redux-field:first").removeClass("redux-field-error"),jQuery(a).parent().find(".redux-th-error").slideUp();var c=jQuery(a).closest(".redux-group-tab").attr("id"),d=parseInt(b.find(".redux-field-errors span").text())-1,e=parseInt(b.find(".redux-field-warnings span").text())-1;if(0>=d)jQuery("#"+c+"_li .redux-menu-error").fadeOut("fast").remove(),jQuery("#"+c+"_li .redux-group-tab-link-a").removeClass("hasError"),jQuery("#"+c+"_li").parents(".inside:first").find(".redux-field-errors").slideUp(),jQuery(a).parents(".redux-container:first").find(".redux-field-errors").slideUp(),jQuery("#redux_metaboxes_errors").slideUp();else{var f=c.split("_");f=f[0];var g=b.find('.redux-group-tab-link-a[data-key="'+f+'"]').parents(".redux-group-tab-link-li:first"),h=parseInt(g.find(".redux-menu-error:first").text())-1;0>=h?g.find(".redux-menu-error:first").fadeOut().remove():g.find(".redux-menu-error:first").text(h);var i=parseInt(g.find(".redux-menu-warning:first").text())-1;0>=i?g.find(".redux-menu-warning:first").fadeOut().remove():g.find(".redux-menu-warning:first").text(i),b.find(".redux-field-errors span").text(d),b.find(".redux-field-warning span").text(e)}var j=jQuery("#"+c+"_li").parents(".hasSubSections:first");0!==j.length&&0===j.find(".redux-menu-error").length&&j.find(".hasError").removeClass("hasError")}redux.args.disable_save_warn||b.find(".redux-save-warn").slideDown()}function colorValidate(a){var b=jQuery(a).val(),c=colorNameToHex(b);return c!==b.replace("#","")?c:b}function colorNameToHex(a){var b=a.replace(/^\s\s*/,"").replace(/\s\s*$/,"").replace("#",""),c={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",lightgrey:"#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",redux:"#01a3e3",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"};return"undefined"!==c[b.toLowerCase()]?c[b.toLowerCase()]:a}!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),"undefined"==typeof jQuery.qtip&&!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=G,this.elements={target:a},this._id=T+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:F,attr:e,onTooltip:F,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=F}function f(a){return a===G||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?F:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?F:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==F,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,G,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||F)&&(b.title=F))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===E?{ready:E}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(S,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d0?setTimeout(d.proxy(a,this),b):void a.call(this)}function n(a){return this.tooltip.hasClass(bb)?F:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),void(this.timers.show=m.call(this,function(){this.toggle(E,a)},this.options.show.delay)))}function o(a){if(this.tooltip.hasClass(bb))return F;var b=d(a.relatedTarget),c=b.closest(X)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(F,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(bb)||!this.options.hide.inactive?F:(clearTimeout(this.timers.inactive),void(this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive)))}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(ib+" "))+ib,function(){var a=z.api[d.attr(this,V)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):G,p="html5"===f.metadata.type&&o?o[f.metadata.name]:G,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(E,{},z.defaults,f,"object"==typeof q?h(q):G,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===F||!j)return F;k.content.text=j}if(i.container.length||(i.container=m),i.target===F&&(i.target=n),k.show.target===F&&(k.show.target=n),k.show.solo===E&&(k.show.solo=i.container.closest("body")),k.hide.target===F&&(k.hide.target=n),k.position.viewport===E&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new B(i.at,E),i.my=new B(i.my),a.data(T))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===F)return F;return a.attr(U,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(db,l).attr("title",""),g=new e(a,k,c,!!j),a.data(T,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(T))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+tb.join(f+" ")+f).split(" "),h=0;if(sb[b])return a.css(sb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return sb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function y(a){this._ns="ie6",this.init(this.qtip=a)}var z,A,B,C,D,E=!0,F=!1,G=null,H="x",I="y",J="width",K="height",L="top",M="left",N="bottom",O="right",P="center",Q="flipinvert",R="shift",S={},T="qtip",U="data-hasqtip",V="data-qtip-id",W=["ui-widget","ui-tooltip"],X="."+T,Y="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Z=T+"-fixed",$=T+"-default",_=T+"-focus",ab=T+"-hover",bb=T+"-disabled",cb="_replacedByqTip",db="oldtitle",eb={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||F};A=e.prototype,A._when=function(a){return d.when.apply(d,a)},A.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("
",{id:this._id,"class":[T,$,e.style.classes,T+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":F,"aria-describedby":this._id+"-content","aria-hidden":E}).toggleClass(bb,this.disabled).attr(V,this.id).data(T,this).appendTo(k.container).append(g.content=d("
",{"class":T+"-content",id:this._id+"-content","aria-atomic":E})),this.rendered=-1,this.positioning=E,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,F))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,F)),this.rendered=E,this._setWidget(),d.each(S,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=F,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(E,f.event,F),c.hiddenDuringWait=F}),z.api[this.id]=this,this},A.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=E;var a=this.target,b=a.attr(db);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(T).removeAttr(V).removeAttr(U).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(db),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=G,delete z.api[this.id]}}return this.destroyed?this.target:(a===E&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},C=A.checks={builtin:{"^id$":function(a,b,c,e){var f=c===E?z.nextid:c,g=T+"-"+f;f!==F&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new B(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(E)||this.toggle(E))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass($,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},A.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var fb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,gb=/^prerender|show\.ready/i;A.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=F,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&gb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=fb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=E,d.each(a,d.proxy(j,this)),this.positioning=F,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?G:this.cache.event),this},A._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=E,a.then(function(a){return e.waiting=F,c._update(a,b)},G,function(a){return c._update(a,b)})):a===F||!a&&""!==a?F:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):F},A._waitForContent=function(a){var b=this.cache;return b.waiting=E,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=F}).promise()},A._updateContent=function(a,b){this._update(a,this.elements.content,b)},A._updateTitle=function(a,b){this._update(a,this.elements.title,b)===F&&this._removeTitle(F)},A._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("
",{"class":T+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("
",{id:b,"class":T+"-title","aria-atomic":E})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},A._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=G,a!==F&&this.reposition())},A.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=E;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(F),s=i.outerHeight(F),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:M,y:L},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:M,y:L},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=eb.iOS?a.innerWidth:k.width(),u=eb.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):S.imagemap&&k.is("area")?f=S.imagemap(this,k,m,S.viewport?q:F):S.svg&&k&&k[0].ownerSVGElement?f=S.svg(this,k,m,S.viewport?q:F):(t=k.outerWidth(F),u=k.outerHeight(F),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(eb.iOS>3.1&&eb.iOS<4.1||eb.iOS>=4.3&&eb.iOS<4.33||!eb.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==F)&&(w.left+=m.x===O?t:m.x===P?t/2:0,w.top+=m.y===N?u:m.y===P?u/2:0)}return w.left+=p.x+(l.x===O?-r:l.x===P?-r/2:0),w.top+=p.y+(l.y===N?-s:l.y===P?-s/2:0),S.viewport?(w.adjusted=S.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===F||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),eb.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=F,this):this},A.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!eb.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var hb=(B=A.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,P).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?I:H}).prototype;hb.invert=function(a,b){this[a]=this[a]===M?O:this[a]===O?M:b||this[a]},hb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===I||this.forceY&&"center"!==b?b+" "+a:a+" "+b},hb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},hb.clone=function(){return new B(this.string(),this.forceY)},A.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=E),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?G:!!this._trigger(k,[90]),this.destroyed?this:(i!==F&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,F),d.isFunction(o.title)&&this._updateTitle(o.title,F),!D&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+T,this._storeMouse),D=E),p||g.css("width",g.outerWidth(F)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(X,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,D&&!d(X+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+T),D=F),this.blur(c)),j=d.proxy(function(){a?(eb.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===F||r===F?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},A.show=function(a){return this.toggle(E,a)},A.hide=function(a){return this.toggle(F,a)},A.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(X),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=z.zindex+b.length;return c.hasClass(_)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+_).qtip("blur",a)),c.addClass(_)[0].style.zIndex=f),this},A.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(_),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},A.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(bb):this.disabled):"boolean"!=typeof a&&(a=E),this.rendered&&this.tooltip.toggleClass(bb,a).attr("aria-disabled",a),this.disabled=!!a,this)},A.enable=function(){return this.disable(F)},A._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("",{"class":"qtip-close "+(this.options.style.widget?"":T+"-icon"),title:g,"aria-label":g}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(bb)||a.hide(b),F})},A._updateButton=function(a){if(!this.rendered)return F;var b=this.elements.button;a?this._createButton():b.remove()},A._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(bb);c.removeClass(bb),bb=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(bb,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass($,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(T+"-icon",!a)},A._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},A._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},A._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var ib="."+T;d(function(){r(X,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Z)&&!c.hasClass(bb)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(ab,b)}),r("["+V+"]",Y,p)}),A._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||G,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=F,!e.isDefaultPrevented()},A._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?void h.push(a.splice(c,1)[0]):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},A._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?F:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),void(this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay)))}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=E}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},A._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Z)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0,e=b.parents(X).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),z.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},A._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},z=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=G,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],T):G;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,T);if(!a)return E;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),F;a.set(b,e)}}),g!==G?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(E,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===F||c.length<1||z.api[c]?z.nextid++:c,b=s(d(this),c,k),b===F?E:(z.api[c]=b,d.each(S,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,z.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,db):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(db,b))}return d.fn["attr"+cb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+cb].apply(this,arguments));return a||b.filter("["+db+"]").attr("title",function(){return d.attr(this,db)}).removeAttr(db),b}},function(a,b){if(!b||d.fn[a+cb])return E;var c=d.fn[a+cb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+cb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(U))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+cb].apply(this,arguments)}),z.version="2.2.0",z.nextid=0,z.inactiveEvents=Y,z.zindex=15e3,z.defaults={prerender:F,id:F,overwrite:E,suppress:E,content:{text:E,attr:"title",title:F,button:F},position:{my:"top left",at:"bottom right",target:F,container:F,viewport:F,adjust:{x:0,y:0,mouse:E,scroll:E,resize:E,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:F})}},show:{target:F,event:"mouseenter",effect:E,delay:90,solo:F,ready:F,autofocus:F},hide:{target:F,event:"mouseleave",effect:E,delay:0,fixed:F,inactive:F,leave:"window",distance:F},style:{classes:"",widget:F,width:F,height:F,def:E},events:{render:G,move:G,show:G,hide:G,toggle:G,visible:G,hidden:G,focus:G,blur:G}}; +var jb,kb="margin",lb="border",mb="color",nb="background-color",ob="transparent",pb=" !important",qb=!!b.createElement("canvas").getContext,rb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,sb={},tb=["Webkit","O","Moz","ms"];if(qb)var ub=a.devicePixelRatio||1,vb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),wb=ub/vb;else var xb=function(a,b,c){return"'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("
",{"class":T+"-tip"}).prependTo(a.tooltip),qb?(b=d("").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=xb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===L||a.y===P&&this.element.position().top+this.size[1]/2+this.options.offsetl&&!rb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==E?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===I?[s(r.x===M?l:r.x===O?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===L?k[1]-q[1]:0)]:[s(r.x===M?k[0]-q[0]:0),s(r.y===L?l:r.y===N?k[1]-q[1]-l:(k[1]-q[1])/2)],qb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,wb),i=this._calculateTip(r,this.size,wb),o.attr(J,k[0]*wb).attr(K,k[1]*wb),o.css(J,k[0]).css(K,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*wb,j[1]*wb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===eb.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(P)>-1),left:j[0]-j[2]*Number(f===H),top:j[1]-j[2]*Number(f===I),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this);b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(xb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==F&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return F;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===H&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===P?(h=c===I?M:L,j[h]="50%",j[kb+"-"+h]=-Math.round(b[c===I?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===H?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===R&&j.precedance===b&&k[d]&&j[c]!==P?j.precedance=j.precedance===H?I:H:a!==R&&k[d]&&(j[b]=j[b]===P?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===P?p[kb+"-"+b]=o[a]=g[kb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=F),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:F,top:F,x:0,y:0},p={};this.corner.fixed!==E&&(e(m,H,I,M,O),e(n,I,H,L,N),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,F)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===R&&!!k.left)&&f(H,M,O),(o.top=n===R&&!!k.top)&&f(I,L,N),this.element.css(p).toggle(!(o.x&&o.y||j.x===P&&o.y||j.y===P&&o.x)),d.left-=g.left.charAt?g.user:m!==R||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==R||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),jb=S.tip=function(a){return new w(a,a.options.style.tip)},jb.initialize="render",jb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=E)}},C.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(E,z.defaults,{style:{tip:{corner:E,mimic:F,width:6,height:6,border:E,offset:0}}});var yb,zb,Ab="qtip-modal",Bb="."+Ab;zb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(X);b=j.length<1?F:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(X)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("
",{id:"qtip-overlay",html:"
",mousedown:function(){return F}}).hide(),d(b.body).bind("focusin"+Bb,e),d(b).bind("keydown"+Bb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Bb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==F?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Bb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==F&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==F||!e&&p.length?j:(i.stop(E,F),d.isFunction(m)?m.call(i,e):m===F?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Bb).length||i.detach(),a()}),h=e,f.destroyed&&(f=G),j)}}),j.init()},zb=new zb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=zb.elem,b.addClass(Ab).css("z-index",z.modal_zindex+d(Bb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(zb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Bb),f=z.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);zb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+_).qtip("blur",a.originalEvent),b.addClass(_)[0].style.zIndex=f,zb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Bb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void zb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(Ab),this.qtip._unbind(this.qtip.tooltip,this._ns),zb.toggle(this.qtip,F),delete this.qtip.elements.overlay}}),yb=S.modal=function(a){return new x(a,a.options.show.modal)},yb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=E))},z.modal_zindex=z.zindex-200,yb.initialize="render",C.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(E,z.defaults,{show:{modal:{on:F,effect:E,blur:E,stealfocus:E,escape:E}}}),S.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===R,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===J?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===P?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===J?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===Q?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===P?-C:C)+e,l.invert(a,g)),d[f]B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,E={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||E,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(F),q=B[0]===a?B.height():B.outerHeight(F),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||E,("shift"!==z||"shift"!==A)&&(l=v.clone()),E={left:"none"!==z?j(H,I,z,x.x,M,O,J,f,h):0,top:"none"!==A?j(I,H,A,x.y,L,N,K,g,i):0},l&&D.lastClass!==(m=T+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),E):E},S.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:F},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]f.position.bottom&&(f.position.bottom=c[1]),c[1]0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===M?i=d:b.x===O?i=f.width-d:i+=Math.floor(d/2),b.y===L?j=e:b.y===N?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===M&&k>=i||b.x===O&&i>=k||b.x===P&&(i>k||k>f.width-i)||b.y===L&&l>=j||b.y===N&&j>=l||b.y===P&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=S.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:F}},circle:function(a,b,c,d){return S.polys.ellipse(a,b,c,c,d)}},S.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return F;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=S.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m';d.extend(y.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Db).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("
",{id:T+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(F),width:c.outerWidth(F)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[J,M]:[K,L],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(K,f.height),f.width?e.css(J,f.width):(e.css(J,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(J,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Cb=S.ie6=function(a){return 6===eb.ie?new y(a):F},Cb.initialize="render",C.ie6={"^content|style$":function(){this.redraw()}}})}(window,document),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&dc.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),a.alphanum_caret(e.length==f.length+1?g-1:g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c=0)return!1;var c=a.indexOf(I);if(0>c)return!0;var d=a.lastIndexOf(I),e=a.length-d-1;if(3>e)return!1;var f=m(a.substring(c));return f%3>0?!1:!0}function B(a){this.map="string"==typeof a?C(a):{}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e=0?d.toString().length:startPos+c.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]d.right||c.bottomd.bottom)}},a.redux.checkRequired(),a.redux.initEvents(),a.redux.initQtip(),a.redux.tabCheck(),a.redux.notices(),a.redux.tabControl(),a.redux.devFunctions()}),a.redux.initEvents=function(){a(".redux-action_bar, .redux-presets-bar").on("click",function(){window.onbeforeunload=null}),a("#toplevel_page_"+redux.args.slug+" .wp-submenu a, #wp-admin-bar-"+redux.args.slug+" a.ab-item").click(function(b){if((a("#toplevel_page_"+redux.args.slug).hasClass("wp-menu-open")||a(this).hasClass("ab-item"))&&!a(this).parents("ul.ab-submenu:first").hasClass("ab-sub-secondary")){b.preventDefault();var c=a(this).attr("href").split("&tab=");return a("#"+c[1]+"_section_group_li_a").click(),a(this).parents("ul:first").find(".current").removeClass("current"),a(this).addClass("current"),a(this).parent().addClass("current"),!1}}),a('input[name="'+redux.args.opt_name+'[defaults]"]').click(function(){return confirm(redux.args.reset_confirm)?void(window.onbeforeunload=null):!1}),a('input[name="'+redux.args.opt_name+'[defaults-section]"]').click(function(){return confirm(redux.args.reset_section_confirm)?void(window.onbeforeunload=null):!1}),a(".expand_options").click(function(b){return b.preventDefault(),a.redux.expandOptions(a(this).parents(".redux-container:first")),!1}),a(".saved_notice").is(":visible")&&a(".saved_notice").slideDown(),a(document.body).on("change",".redux-field input, .redux-field textarea, .redux-field select",function(){a(this).hasClass("noUpdate")||redux_change(a(this))});var b=a("#redux-footer").height();a("#redux-sticky-padder").css({height:b}),0!==a("#redux-footer").length&&(a(window).scroll(function(){a.redux.stickyInfo()}),a(window).resize(function(){a.redux.stickyInfo()})),a(".saved_notice").delay(4e3).slideUp(),a(".redux-save").click(function(){window.onbeforeunload=null})},a.redux.checkRequired=function(){a.redux.required(),a("body").on("change",".redux-main select, .redux-main radio, .redux-main input[type=checkbox], .redux-main input[type=hidden]",function(){a.redux.check_dependencies(this)}),a("body").on("check_dependencies",function(b,c){a.redux.check_dependencies(c)}),a("td > fieldset:empty,td > div:empty").parent().parent().hide()},a.redux.initQtip=function(){if(a().qtip){var b="",c=redux.args.hints.tip_style.shadow;c===!0&&(b="qtip-shadow");var d="",e=redux.args.hints.tip_style.color;""!==e&&(d="qtip-"+e);var f="",g=redux.args.hints.tip_style.rounded;g===!0&&(f="qtip-rounded");var h="",i=redux.args.hints.tip_style.style;""!==i&&(h="qtip-"+i);var j=b+","+d+","+f+","+h;j=j.replace(/,/g," ");var k=redux.args.hints.tip_position.my,l=redux.args.hints.tip_position.at;k=a.redux.verifyPos(k.toLowerCase(),!0),l=a.redux.verifyPos(l.toLowerCase(),!1);var m=redux.args.hints.tip_effect.show.event,n=redux.args.hints.tip_effect.hide.event,o=redux.args.hints.tip_effect.show.effect,p=redux.args.hints.tip_effect.show.duration,q=redux.args.hints.tip_effect.hide.effect,r=redux.args.hints.tip_effect.hide.duration;a("div.redux-hint-qtip").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:{effect:function(){switch(o){case"slide":a(this).slideDown(p);break;case"fade":a(this).fadeIn(p);break;default:a(this).show()}},event:m},hide:{effect:function(){switch(q){case"slide":a(this).slideUp(r);break;case"fade":a(this).fadeOut(r);break;default:a(this).show(r)}},event:n},style:{classes:j},position:{my:k,at:l}})}),a("input[qtip-content]").each(function(){a(this).qtip({content:{text:a(this).attr("qtip-content"),title:a(this).attr("qtip-title")},show:"focus",hide:"blur",style:j,position:{my:k,at:l}})})}},a.redux.tabCheck=function(){a(".redux-group-tab-link-a").click(function(){var b=a(this);if(b.parent().hasClass("empty_section")&&b.parent().hasClass("hasSubSections")){var c=a(this).closest("ul").find(".redux-group-tab-link-a"),d=c.index(this);b=c.slice(d+1,d+2)}var e=b.parents(".redux-container:first"),f=b.data("rel"),g=e.find(".redux-group-tab-link-li.active .redux-group-tab-link-a").data("rel");if(g!==f){if(a("#currentSection").val(f),b.parents(".postbox-container:first").length||a.cookie("redux_current_tab",f,{expires:7,path:"/"}),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length){var h=e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").attr("id").split("_");h=h[0]}e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu li.current").removeClass("current"),e.find("#toplevel_page_"+redux.args.slug+" .wp-submenu a").each(function(){var b=a(this).attr("href").split("&tab="); +(b[1]==f||b[1]==h)&&(a(this).addClass("current"),a(this).parent().addClass("current"))}),e.find("#"+g+"_section_group_li").find("#"+g+"_section_group_li").length?(e.find("#"+g+"_section_group_li").addClass("activeChild"),e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild")):e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length||e.find("#"+g+"_section_group_li").parents("ul.subsection").find("#"+f+"_section_group_li").length?(e.find("#"+f+"_section_group_li").parents("#"+g+"_section_group_li").length?e.find("#"+g+"_section_group_li").addClass("activeChild").removeClass("active"):(e.find("#"+f+"_section_group_li").addClass("active"),e.find("#"+g+"_section_group_li").removeClass("active")),e.find("#"+f+"_section_group_li").removeClass("activeChild").addClass("active")):(e.find("#"+f+"_section_group_li").addClass("active").removeClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+g+"_section_group_li").find("ul.subsection").length?e.find("#"+g+"_section_group_li").find("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active").removeClass("activeChild")}):e.find("#"+g+"_section_group_li").parents("ul.subsection").length?e.find("#"+g+"_section_group_li").parents("#"+f+"_section_group_li").length?e.find("#"+g+"_section_group_li").removeClass("active"):e.find("#"+g+"_section_group_li").parents("ul.subsection").slideUp("fast",function(){e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+g+"_section_group_li").parents(".redux-group-tab-link-li").removeClass("active").removeClass("activeChild"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")}):(e.find("#"+g+"_section_group_li").removeClass("active"),e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").length&&(e.find("#"+f+"_section_group_li").parents(".redux-group-tab-link-li").addClass("activeChild").find("ul.subsection").slideDown(),e.find("#"+f+"_section_group_li").addClass("active")))),e.find("#"+g+"_section_group").hide(),e.find("#"+f+"_section_group").fadeIn(200,function(){0!==e.find("#redux-footer").length&&a.redux.stickyInfo(),a.redux.initFields()}),a("#toplevel_page_"+redux.args.slug).find(".current").removeClass("current")}});var b=decodeURI((new RegExp("tab=(.+?)(&|$)").exec(location.search)||[,""])[1]);""!==b?a.cookie("redux_current_tab_get")!==b&&(a.cookie("redux_current_tab",b,{expires:7,path:"/"}),a.cookie("redux_current_tab_get",b,{expires:7,path:"/"}),a("#"+b+"_section_group_li").click()):""!==a.cookie("redux_current_tab_get")&&a.removeCookie("redux_current_tab_get");var c=a("#"+a.cookie("redux_current_tab")+"_section_group_li_a");null===a.cookie("redux_current_tab")||"undefined"==typeof a.cookie("redux_current_tab")||0===c.length?a(".redux-container").find(".redux-group-tab-link-a:first").click():c.click()},a.redux.initFields=function(){a(".redux-field-init:visible").each(function(){var b=a(this).attr("data-type");redux.field_objects[b]&&redux.field_objects[b].init()})},a.redux.notices=function(){void 0!==redux.errors&&(a.each(redux.errors.errors,function(b,c){a.each(c.errors,function(b,c){a("#"+redux.args.opt_name+"-"+c.id).addClass("redux-field-error"),0===a("#"+redux.args.opt_name+"-"+c.id).parent().find(".redux-th-error").length&&a("#"+redux.args.opt_name+"-"+c.id).append('
'+c.msg+"
")})}),a(".redux-container").each(function(){var b=a(this),c=b.find(".redux-field-error").length;c>0&&(b.find(".redux-field-errors span").text(c),b.find(".redux-field-errors").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-error").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend(''+c+""),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasError");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasError")}}));var d=b.find(".redux-field-warning").length;d>0&&(b.find(".redux-field-warnings span").text(d),b.find(".redux-field-warnings").slideDown(),b.find(".redux-group-tab").each(function(){var c=a(this).find(".redux-field-warning").length;if(c>0){var d=a(this).attr("id").split("_");d=d[0],b.find('.redux-group-tab-link-a[data-key="'+d+'"]').prepend(''+total+""),b.find('.redux-group-tab-link-a[data-key="'+d+'"]').addClass("hasWarning");var e=b.find('.redux-group-tab-link-a[data-key="'+d+'"]').parents(".hasSubSections:first");e&&e.find(".redux-group-tab-link-a:first").addClass("hasWarning")}}))}))},a.redux.tabControl=function(){a(".redux-section-tabs div").hide(),a(".redux-section-tabs div:first").show(),a(".redux-section-tabs ul li:first").addClass("active"),a(".redux-section-tabs ul li a").click(function(){a(".redux-section-tabs ul li").removeClass("active"),a(this).parent().addClass("active");var b=a(this).attr("href");return a(".redux-section-tabs div").hide(),a(b).fadeIn("medium",function(){a.redux.initFields()}),!1})},a.redux.devFunctions=function(){a("#consolePrintObject").on("click",function(b){b.preventDefault(),console.log(a.parseJSON(a("#redux-object-json").html()))}),"function"==typeof jsonView&&jsonView("#redux-object-json","#redux-object-browser")},a.redux.required=function(){a.each(redux.folds,function(b,c){var d=a("#"+redux.args.opt_name+"-"+b);if(d.parents("tr:first").addClass("fold"),"hide"==c){if(d.parents("tr:first").addClass("hide"),d.hasClass("redux-container-section")){var e=a("#section-"+b);e.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).hide().addClass("hide"),e.hide().addClass("hide"))}if(d.hasClass("redux-container-info")&&a("#info-"+b).hide().addClass("hide"),d.hasClass("redux-container-divide")&&a("#divide-"+b).hide().addClass("hide"),d.hasClass("redux-container-raw")){var f=d.parents().find("table#"+redux.args.opt_name+"-"+b);f.hide().addClass("hide")}}})},a.redux.get_container_value=function(b){var c=a("#"+redux.args.opt_name+"-"+b).serializeForm();return null!==c&&"object"==typeof c&&c.hasOwnProperty(redux.args.opt_name)&&(c=c[redux.args.opt_name][b]),c},a.redux.check_dependencies=function(b){if(null!==redux.required){var c=a(b),d=c.parents(".redux-field:first").data("id");if(redux.required.hasOwnProperty(d)){var e=c.parents(".redux-field-container:first"),f=e.parents("tr:first").hasClass(".hide");a.each(redux.required[d],function(b){var c=a(this),d=!1,e=a("#"+redux.args.opt_name+"-"+b),g=e.parents("tr:first");if(f||(d=a.redux.check_parents_dependencies(b)),d===!0){if(e.hasClass("redux-container-section")){var h=a("#section-"+b);h.hasClass("redux-section-indent-start")&&h.hasClass("hide")&&(a("#section-table-"+b).fadeIn(300).removeClass("hide"),h.fadeIn(300).removeClass("hide"))}if(e.hasClass("redux-container-info")&&a("#info-"+b).fadeIn(300).removeClass("hide"),e.hasClass("redux-container-divide")&&a("#divide-"+b).fadeIn(300).removeClass("hide"),e.hasClass("redux-container-raw")){var i=e.parents().find("table#"+redux.args.opt_name+"-"+b);i.fadeIn(300).removeClass("hide")}g.fadeIn(300,function(){a(this).removeClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.check_dependencies(a("#"+redux.args.opt_name+"-"+b).children().first()),a.redux.initFields()}),(e.hasClass("redux-container-section")||e.hasClass("redux-container-info"))&&g.css({display:"none"})}else d===!1&&g.fadeOut(100,function(){a(this).addClass("hide"),redux.required.hasOwnProperty(b)&&a.redux.required_recursive_hide(b)});c.find("select, radio, input[type=checkbox]").trigger("change")})}}},a.redux.required_recursive_hide=function(b){var c=a("#"+redux.args.opt_name+"-"+b).parents("tr:first");c.fadeOut(50,function(){if(a(this).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-section")){var c=a("#section-"+b);c.hasClass("redux-section-indent-start")&&(a("#section-table-"+b).fadeOut(50).addClass("hide"),c.fadeOut(50).addClass("hide"))}if(a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-info")&&a("#info-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-divide")&&a("#divide-"+b).fadeOut(50).addClass("hide"),a("#"+redux.args.opt_name+"-"+b).hasClass("redux-container-raw")){var d=a("#"+redux.args.opt_name+"-"+b).parents().find("table#"+redux.args.opt_name+"-"+b);d.fadeOut(50).addClass("hide")}redux.required.hasOwnProperty(b)&&a.each(redux.required[b],function(b){a.redux.required_recursive_hide(b)})})},a.redux.check_parents_dependencies=function(b){var c="";return redux.required_child.hasOwnProperty(b)?a.each(redux.required_child[b],function(b,d){if(a("#"+redux.args.opt_name+"-"+d.parent).parents("tr:first").hasClass(".hide"))c=!1;else if(c!==!1){var e=a.redux.get_container_value(d.parent);c=a.redux.check_dependencies_visibility(e,d)}}):c=!0,c},a.redux.check_dependencies_visibility=function(b,c){var d=!1,e=c.checkValue,f=c.operation;switch(f){case"=":case"equals":a.isArray(e)?-1!=a.inArray(b,e)&&(d=!0):b==e?d=!0:a.isArray(b)&&-1!=a.inArray(e,b)&&(d=!0);break;case"!=":case"not":a.isArray(e)?-1==a.inArray(b,e)&&(d=!0):b!=e?d=!0:a.isArray(b)&&-1==a.inArray(e,b)&&(d=!0);break;case">":case"greater":case"is_larger":parseFloat(b)>parseFloat(e)&&(d=!0);break;case">=":case"greater_equal":case"is_larger_equal":parseFloat(b)>=parseFloat(e)&&(d=!0);break;case"<":case"less":case"is_smaller":parseFloat(b)g)&&(g=h,b.attr("data-height",g),b.css("width","auto"),b.attr("data-width",b.width()),f=b.width()),f>d?(e=d/f,b.css("width",d),b.css("height",g*e),g*=e,f*=e):b.css("width","auto"),g>c?(e=c/g,b.css("height",c),b.css("width",f*e),f*=e,g*=e):b.css("height","auto");var i=(a(document.getElementById("redux-header")).height()-b.height())/2;i>0?b.css("margin-top",i):b.css("margin-top",0),a("#redux-header .redux_field_search")&&a("#redux-header .redux_field_search").css("right",a(b).width()+20)},a.redux.resizeAds=function(){var b=a("#redux-header"),c=b.find(".rAds"),d=b.height(),e=b.width()-b.find(".display_header").width()-30;a(c).find("video").each(function(){a.redux.scaleToRatio(a(this),d,e)}),a(c).find("img").each(function(){a.redux.scaleToRatio(a(this),d,e)}),a(c).find("div").each(function(){a.redux.scaleToRatio(a(this),d,e)}),"-99999px"==c.css("left")&&c.css("display","none").css("left","auto"),c.fadeIn("slow")},a(document).ready(function(){redux.rAds&&setTimeout(function(){a("#redux-header").append('
');var b=a("#redux-header");b.css("position","relative"),b.find(".rAds").attr("style","position:absolute; top: 6px; right: 6px; display:block !important;overflow:hidden;").css("left","-99999px"),b.find(".rAds").html(redux.rAds.replace(//,""));{var c=b.find(".rAds");b.height(),b.width()-b.find(".display_header").width()-30}c.find("a").css("float","right").css("line-height",b.height()+"px").css("margin-left","5px"),a(document).ajaxComplete(function(){c.find("a").hide(),setTimeout(function(){a.redux.resizeAds(),c.find("a").fadeIn()},1400),setTimeout(function(){a.redux.resizeAds()},1500),a(document).unbind("ajaxComplete")}),a(window).resize(function(){a.redux.resizeAds()})},400)})}(jQuery),jQuery.noConflict();var confirmOnPageExit=function(a){a=a||window.event;var b=redux.args.save_pending;return a&&(a.returnValue=b),window.onbeforeunload=null,b}; \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor.min.js new file mode 100644 index 00000000..f669141d --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor.min.js @@ -0,0 +1,2 @@ +!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a(jQuery)}(function(a){function b(a){return a}function c(a){return decodeURIComponent(a.replace(e," "))}function d(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return f.json?JSON.parse(a):a}catch(b){}}var e=/\+/g,f=a.cookie=function(e,g,h){if(void 0!==g){if(h=a.extend({},f.defaults,h),"number"==typeof h.expires){var i=h.expires,j=h.expires=new Date;j.setDate(j.getDate()+i)}return g=f.json?JSON.stringify(g):String(g),document.cookie=[f.raw?e:encodeURIComponent(e),"=",f.raw?g:encodeURIComponent(g),h.expires?"; expires="+h.expires.toUTCString():"",h.path?"; path="+h.path:"",h.domain?"; domain="+h.domain:"",h.secure?"; secure":""].join("")}for(var k=f.raw?b:c,l=document.cookie.split("; "),m=e?void 0:{},n=0,o=l.length;o>n;n++){var p=l[n].split("="),q=k(p.shift()),r=k(p.join("="));if(e&&e===q){m=d(r);break}e||(m[q]=d(r))}return m};f.defaults={},a.removeCookie=function(b,c){return void 0!==a.cookie(b)?(a.cookie(b,"",a.extend({},c,{expires:-1})),!0):!1}}),"undefined"==typeof jQuery.qtip&&!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=G,this.elements={target:a},this._id=T+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:F,attr:e,onTooltip:F,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=F}function f(a){return a===G||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?F:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?F:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==F,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,G,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||F)&&(b.title=F))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===E?{ready:E}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(S,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d0?setTimeout(d.proxy(a,this),b):void a.call(this)}function n(a){return this.tooltip.hasClass(bb)?F:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),void(this.timers.show=m.call(this,function(){this.toggle(E,a)},this.options.show.delay)))}function o(a){if(this.tooltip.hasClass(bb))return F;var b=d(a.relatedTarget),c=b.closest(X)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(F,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(bb)||!this.options.hide.inactive?F:(clearTimeout(this.timers.inactive),void(this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive)))}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join(ib+" "))+ib,function(){var a=z.api[d.attr(this,V)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):G,p="html5"===f.metadata.type&&o?o[f.metadata.name]:G,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(E,{},z.defaults,f,"object"==typeof q?h(q):G,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===F||!j)return F;k.content.text=j}if(i.container.length||(i.container=m),i.target===F&&(i.target=n),k.show.target===F&&(k.show.target=n),k.show.solo===E&&(k.show.solo=i.container.closest("body")),k.hide.target===F&&(k.hide.target=n),k.position.viewport===E&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new B(i.at,E),i.my=new B(i.my),a.data(T))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===F)return F;return a.attr(U,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(db,l).attr("title",""),g=new e(a,k,c,!!j),a.data(T,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(T))&&a.destroy(!0)}),g}function t(a){return a.charAt(0).toUpperCase()+a.slice(1)}function u(a,b){var d,e,f=b.charAt(0).toUpperCase()+b.slice(1),g=(b+" "+tb.join(f+" ")+f).split(" "),h=0;if(sb[b])return a.css(sb[b]);for(;d=g[h++];)if((e=a.css(d))!==c)return sb[b]=d,e}function v(a,b){return Math.ceil(parseFloat(u(a,b)))}function w(a,b){this._ns="tip",this.options=b,this.offset=b.offset,this.size=[b.width,b.height],this.init(this.qtip=a)}function x(a,b){this.options=b,this._ns="-modal",this.init(this.qtip=a)}function y(a){this._ns="ie6",this.init(this.qtip=a)}var z,A,B,C,D,E=!0,F=!1,G=null,H="x",I="y",J="width",K="height",L="top",M="left",N="bottom",O="right",P="center",Q="flipinvert",R="shift",S={},T="qtip",U="data-hasqtip",V="data-qtip-id",W=["ui-widget","ui-tooltip"],X="."+T,Y="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),Z=T+"-fixed",$=T+"-default",_=T+"-focus",ab=T+"-hover",bb=T+"-disabled",cb="_replacedByqTip",db="oldtitle",eb={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||F};A=e.prototype,A._when=function(a){return d.when.apply(d,a)},A.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("
",{id:this._id,"class":[T,$,e.style.classes,T+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":F,"aria-describedby":this._id+"-content","aria-hidden":E}).toggleClass(bb,this.disabled).attr(V,this.id).data(T,this).appendTo(k.container).append(g.content=d("
",{"class":T+"-content",id:this._id+"-content","aria-atomic":E})),this.rendered=-1,this.positioning=E,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,F))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,F)),this.rendered=E,this._setWidget(),d.each(S,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=F,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(E,f.event,F),c.hiddenDuringWait=F}),z.api[this.id]=this,this},A.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=E;var a=this.target,b=a.attr(db);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(T).removeAttr(V).removeAttr(U).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(db),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=G,delete z.api[this.id]}}return this.destroyed?this.target:(a===E&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},C=A.checks={builtin:{"^id$":function(a,b,c,e){var f=c===E?z.nextid:c,g=T+"-"+f;f!==F&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),void this._updateTitle(c)):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new B(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(E)||this.toggle(E))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass($,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},A.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var fb=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,gb=/^prerender|show\.ready/i;A.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=F,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&gb.test(b))return void delete a[b];var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=fb.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=E,d.each(a,d.proxy(j,this)),this.positioning=F,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?G:this.cache.event),this},A._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=E,a.then(function(a){return e.waiting=F,c._update(a,b)},G,function(a){return c._update(a,b)})):a===F||!a&&""!==a?F:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):F},A._waitForContent=function(a){var b=this.cache;return b.waiting=E,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=F}).promise()},A._updateContent=function(a,b){this._update(a,this.elements.content,b)},A._updateTitle=function(a,b){this._update(a,this.elements.title,b)===F&&this._removeTitle(F)},A._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("
",{"class":T+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("
",{id:b,"class":T+"-title","aria-atomic":E})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},A._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=G,a!==F&&this.reposition())},A.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=E;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(F),s=i.outerHeight(F),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,y=c&&"scroll"===c.type,z=d(a),A=o[0].ownerDocument,B=this.mouse;if(d.isArray(k)&&2===k.length)m={x:M,y:L},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:M,y:L},!B||!B.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=B,"static"!==v&&(w=o.offset()),A.body.offsetWidth!==(a.innerWidth||A.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&y&&B&&(w.left-=(B.scrollX||0)-z.scrollLeft(),w.top-=(B.scrollY||0)-z.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=eb.iOS?a.innerWidth:k.width(),u=eb.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):S.imagemap&&k.is("area")?f=S.imagemap(this,k,m,S.viewport?q:F):S.svg&&k&&k[0].ownerSVGElement?f=S.svg(this,k,m,S.viewport?q:F):(t=k.outerWidth(F),u=k.outerHeight(F),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(eb.iOS>3.1&&eb.iOS<4.1||eb.iOS>=4.3&&eb.iOS<4.33||!eb.iOS&&"fixed"===v)&&(w.left-=z.scrollLeft(),w.top-=z.scrollTop()),(!f||f&&f.adjustable!==F)&&(w.left+=m.x===O?t:m.x===P?t/2:0,w.top+=m.y===N?u:m.y===P?u/2:0)}return w.left+=p.x+(l.x===O?-r:l.x===P?-r/2:0),w.top+=p.y+(l.y===N?-s:l.y===P?-s/2:0),S.viewport?(w.adjusted=S.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===F||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),eb.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=F,this):this},A.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!eb.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var hb=(B=A.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,P).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?I:H}).prototype;hb.invert=function(a,b){this[a]=this[a]===M?O:this[a]===O?M:b||this[a]},hb.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===I||this.forceY&&"center"!==b?b+" "+a:a+" "+b},hb.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},hb.clone=function(){return new B(this.string(),this.forceY)},A.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=E),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?G:!!this._trigger(k,[90]),this.destroyed?this:(i!==F&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,F),d.isFunction(o.title)&&this._updateTitle(o.title,F),!D&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+T,this._storeMouse),D=E),p||g.css("width",g.outerWidth(F)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(X,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,D&&!d(X+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+T),D=F),this.blur(c)),j=d.proxy(function(){a?(eb.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===F||r===F?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},A.show=function(a){return this.toggle(E,a)},A.hide=function(a){return this.toggle(F,a)},A.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(X),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=z.zindex+b.length;return c.hasClass(_)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+_).qtip("blur",a)),c.addClass(_)[0].style.zIndex=f),this},A.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(_),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},A.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(bb):this.disabled):"boolean"!=typeof a&&(a=E),this.rendered&&this.tooltip.toggleClass(bb,a).attr("aria-disabled",a),this.disabled=!!a,this)},A.enable=function(){return this.disable(F)},A._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("",{"class":"qtip-close "+(this.options.style.widget?"":T+"-icon"),title:g,"aria-label":g}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(bb)||a.hide(b),F})},A._updateButton=function(a){if(!this.rendered)return F;var b=this.elements.button;a?this._createButton():b.remove()},A._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(bb);c.removeClass(bb),bb=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(bb,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass($,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(T+"-icon",!a)},A._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},A._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},A._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var ib="."+T;d(function(){r(X,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(Z)&&!c.hasClass(bb)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(ab,b)}),r("["+V+"]",Y,p)}),A._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||G,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=F,!e.isDefaultPrevented()},A._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?void h.push(a.splice(c,1)[0]):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},A._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?F:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),void(this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay)))}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=E}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},A._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(Z)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0,e=b.parents(X).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),z.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(bb)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},A._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},z=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=G,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],T):G;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,T);if(!a)return E;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),F;a.set(b,e)}}),g!==G?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(E,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===F||c.length<1||z.api[c]?z.nextid++:c,b=s(d(this),c,k),b===F?E:(z.api[c]=b,d.each(S,function(){"initialize"===this.initialize&&this(b)}),void b._assignInitialEvents(j))}))},d.qtip=e,z.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,db):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(db,b))}return d.fn["attr"+cb].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+cb].apply(this,arguments));return a||b.filter("["+db+"]").attr("title",function(){return d.attr(this,db)}).removeAttr(db),b}},function(a,b){if(!b||d.fn[a+cb])return E;var c=d.fn[a+cb]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+cb]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(U))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+cb].apply(this,arguments)}),z.version="2.2.0",z.nextid=0,z.inactiveEvents=Y,z.zindex=15e3,z.defaults={prerender:F,id:F,overwrite:E,suppress:E,content:{text:E,attr:"title",title:F,button:F},position:{my:"top left",at:"bottom right",target:F,container:F,viewport:F,adjust:{x:0,y:0,mouse:E,scroll:E,resize:E,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:F})}},show:{target:F,event:"mouseenter",effect:E,delay:90,solo:F,ready:F,autofocus:F},hide:{target:F,event:"mouseleave",effect:E,delay:0,fixed:F,inactive:F,leave:"window",distance:F},style:{classes:"",widget:F,width:F,height:F,def:E},events:{render:G,move:G,show:G,hide:G,toggle:G,visible:G,hidden:G,focus:G,blur:G}};var jb,kb="margin",lb="border",mb="color",nb="background-color",ob="transparent",pb=" !important",qb=!!b.createElement("canvas").getContext,rb=/rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i,sb={},tb=["Webkit","O","Moz","ms"];if(qb)var ub=a.devicePixelRatio||1,vb=function(){var a=b.createElement("canvas").getContext("2d");return a.backingStorePixelRatio||a.webkitBackingStorePixelRatio||a.mozBackingStorePixelRatio||a.msBackingStorePixelRatio||a.oBackingStorePixelRatio||1}(),wb=ub/vb;else var xb=function(a,b,c){return"'};d.extend(w.prototype,{init:function(a){var b,c;c=this.element=a.elements.tip=d("
",{"class":T+"-tip"}).prependTo(a.tooltip),qb?(b=d("").appendTo(this.element)[0].getContext("2d"),b.lineJoin="miter",b.miterLimit=1e5,b.save()):(b=xb("shape",'coordorigin="0,0"',"position:absolute;"),this.element.html(b+b),a._bind(d("*",c).add(c),["click","mousedown"],function(a){a.stopPropagation()},this._ns)),a._bind(a.tooltip,"tooltipmove",this.reposition,this._ns,this),this.create()},_swapDimensions:function(){this.size[0]=this.options.height,this.size[1]=this.options.width},_resetDimensions:function(){this.size[0]=this.options.width,this.size[1]=this.options.height},_useTitle:function(a){var b=this.qtip.elements.titlebar;return b&&(a.y===L||a.y===P&&this.element.position().top+this.size[1]/2+this.options.offsetl&&!rb.test(e[1])&&(e[0]=e[1]),this.border=l=p.border!==E?p.border:l):this.border=l=0,k=this.size=this._calculateSize(b),n.css({width:k[0],height:k[1],lineHeight:k[1]+"px"}),j=b.precedance===I?[s(r.x===M?l:r.x===O?k[0]-q[0]-l:(k[0]-q[0])/2),s(r.y===L?k[1]-q[1]:0)]:[s(r.x===M?k[0]-q[0]:0),s(r.y===L?l:r.y===N?k[1]-q[1]-l:(k[1]-q[1])/2)],qb?(g=o[0].getContext("2d"),g.restore(),g.save(),g.clearRect(0,0,6e3,6e3),h=this._calculateTip(r,q,wb),i=this._calculateTip(r,this.size,wb),o.attr(J,k[0]*wb).attr(K,k[1]*wb),o.css(J,k[0]).css(K,k[1]),this._drawCoords(g,i),g.fillStyle=e[1],g.fill(),g.translate(j[0]*wb,j[1]*wb),this._drawCoords(g,h),g.fillStyle=e[0],g.fill()):(h=this._calculateTip(r),h="m"+h[0]+","+h[1]+" l"+h[2]+","+h[3]+" "+h[4]+","+h[5]+" xe",j[2]=l&&/^(r|b)/i.test(b.string())?8===eb.ie?2:1:0,o.css({coordsize:k[0]+l+" "+(k[1]+l),antialias:""+(r.string().indexOf(P)>-1),left:j[0]-j[2]*Number(f===H),top:j[1]-j[2]*Number(f===I),width:k[0]+l,height:k[1]+l}).each(function(a){var b=d(this); +b[b.prop?"prop":"attr"]({coordsize:k[0]+l+" "+(k[1]+l),path:h,fillcolor:e[0],filled:!!a,stroked:!a}).toggle(!(!l&&!a)),!a&&b.html(xb("stroke",'weight="'+2*l+'px" color="'+e[1]+'" miterlimit="1000" joinstyle="miter"'))})),a.opera&&setTimeout(function(){m.tip.css({display:"inline-block",visibility:"visible"})},1),c!==F&&this.calculate(b,k)},calculate:function(a,b){if(!this.enabled)return F;var c,e,f=this,g=this.qtip.elements,h=this.element,i=this.options.offset,j=(g.tooltip.hasClass("ui-widget"),{});return a=a||this.corner,c=a.precedance,b=b||this._calculateSize(a),e=[a.x,a.y],c===H&&e.reverse(),d.each(e,function(d,e){var h,k,l;e===P?(h=c===I?M:L,j[h]="50%",j[kb+"-"+h]=-Math.round(b[c===I?0:1]/2)+i):(h=f._parseWidth(a,e,g.tooltip),k=f._parseWidth(a,e,g.content),l=f._parseRadius(a),j[e]=Math.max(-f.border,d?k:i+(l>h?l:-h)))}),j[a[c]]-=b[c===H?0:1],h.css({margin:"",top:"",bottom:"",left:"",right:""}).css(j),j},reposition:function(a,b,d){function e(a,b,c,d,e){a===R&&j.precedance===b&&k[d]&&j[c]!==P?j.precedance=j.precedance===H?I:H:a!==R&&k[d]&&(j[b]=j[b]===P?k[d]>0?d:e:j[b]===d?e:d)}function f(a,b,e){j[a]===P?p[kb+"-"+b]=o[a]=g[kb+"-"+b]-k[b]:(h=g[e]!==c?[k[b],-g[b]]:[-k[b],g[b]],(o[a]=Math.max(h[0],h[1]))>h[0]&&(d[b]-=k[b],o[b]=F),p[g[e]!==c?e:b]=o[a])}if(this.enabled){var g,h,i=b.cache,j=this.corner.clone(),k=d.adjusted,l=b.options.position.adjust.method.split(" "),m=l[0],n=l[1]||l[0],o={left:F,top:F,x:0,y:0},p={};this.corner.fixed!==E&&(e(m,H,I,M,O),e(n,I,H,L,N),j.string()===i.corner.string()||i.cornerTop===k.top&&i.cornerLeft===k.left||this.update(j,F)),g=this.calculate(j),g.right!==c&&(g.left=-g.right),g.bottom!==c&&(g.top=-g.bottom),g.user=this.offset,(o.left=m===R&&!!k.left)&&f(H,M,O),(o.top=n===R&&!!k.top)&&f(I,L,N),this.element.css(p).toggle(!(o.x&&o.y||j.x===P&&o.y||j.y===P&&o.x)),d.left-=g.left.charAt?g.user:m!==R||o.top||!o.left&&!o.top?g.left+this.border:0,d.top-=g.top.charAt?g.user:n!==R||o.left||!o.left&&!o.top?g.top+this.border:0,i.cornerLeft=k.left,i.cornerTop=k.top,i.corner=j.clone()}},destroy:function(){this.qtip._unbind(this.qtip.tooltip,this._ns),this.qtip.elements.tip&&this.qtip.elements.tip.find("*").remove().end().remove()}}),jb=S.tip=function(a){return new w(a,a.options.style.tip)},jb.initialize="render",jb.sanitize=function(a){if(a.style&&"tip"in a.style){var b=a.style.tip;"object"!=typeof b&&(b=a.style.tip={corner:b}),/string|boolean/i.test(typeof b.corner)||(b.corner=E)}},C.tip={"^position.my|style.tip.(corner|mimic|border)$":function(){this.create(),this.qtip.reposition()},"^style.tip.(height|width)$":function(a){this.size=[a.width,a.height],this.update(),this.qtip.reposition()},"^content.title|style.(classes|widget)$":function(){this.update()}},d.extend(E,z.defaults,{style:{tip:{corner:E,mimic:F,width:6,height:6,border:E,offset:0}}});var yb,zb,Ab="qtip-modal",Bb="."+Ab;zb=function(){function a(a){if(d.expr[":"].focusable)return d.expr[":"].focusable;var b,c,e,f=!isNaN(d.attr(a,"tabindex")),g=a.nodeName&&a.nodeName.toLowerCase();return"area"===g?(b=a.parentNode,c=b.name,a.href&&c&&"map"===b.nodeName.toLowerCase()?(e=d("img[usemap=#"+c+"]")[0],!!e&&e.is(":visible")):!1):/input|select|textarea|button|object/.test(g)?!a.disabled:"a"===g?a.href||f:f}function c(a){k.length<1&&a.length?a.not("body").blur():k.first().focus()}function e(a){if(i.is(":visible")){var b,e=d(a.target),h=f.tooltip,j=e.closest(X);b=j.length<1?F:parseInt(j[0].style.zIndex,10)>parseInt(h[0].style.zIndex,10),b||e.closest(X)[0]===h[0]||c(e),g=a.target===k[k.length-1]}}var f,g,h,i,j=this,k={};d.extend(j,{init:function(){return i=j.elem=d("
",{id:"qtip-overlay",html:"
",mousedown:function(){return F}}).hide(),d(b.body).bind("focusin"+Bb,e),d(b).bind("keydown"+Bb,function(a){f&&f.options.show.modal.escape&&27===a.keyCode&&f.hide(a)}),i.bind("click"+Bb,function(a){f&&f.options.show.modal.blur&&f.hide(a)}),j},update:function(b){f=b,k=b.options.show.modal.stealfocus!==F?b.tooltip.find("*").filter(function(){return a(this)}):[]},toggle:function(a,e,g){var k=(d(b.body),a.tooltip),l=a.options.show.modal,m=l.effect,n=e?"show":"hide",o=i.is(":visible"),p=d(Bb).filter(":visible:not(:animated)").not(k);return j.update(a),e&&l.stealfocus!==F&&c(d(":focus")),i.toggleClass("blurs",l.blur),e&&i.appendTo(b.body),i.is(":animated")&&o===e&&h!==F||!e&&p.length?j:(i.stop(E,F),d.isFunction(m)?m.call(i,e):m===F?i[n]():i.fadeTo(parseInt(g,10)||90,e?1:0,function(){e||i.hide()}),e||i.queue(function(a){i.css({left:"",top:""}),d(Bb).length||i.detach(),a()}),h=e,f.destroyed&&(f=G),j)}}),j.init()},zb=new zb,d.extend(x.prototype,{init:function(a){var b=a.tooltip;return this.options.on?(a.elements.overlay=zb.elem,b.addClass(Ab).css("z-index",z.modal_zindex+d(Bb).length),a._bind(b,["tooltipshow","tooltiphide"],function(a,c,e){var f=a.originalEvent;if(a.target===b[0])if(f&&"tooltiphide"===a.type&&/mouse(leave|enter)/.test(f.type)&&d(f.relatedTarget).closest(zb.elem[0]).length)try{a.preventDefault()}catch(g){}else(!f||f&&"tooltipsolo"!==f.type)&&this.toggle(a,"tooltipshow"===a.type,e)},this._ns,this),a._bind(b,"tooltipfocus",function(a,c){if(!a.isDefaultPrevented()&&a.target===b[0]){var e=d(Bb),f=z.modal_zindex+e.length,g=parseInt(b[0].style.zIndex,10);zb.elem[0].style.zIndex=f-1,e.each(function(){this.style.zIndex>g&&(this.style.zIndex-=1)}),e.filter("."+_).qtip("blur",a.originalEvent),b.addClass(_)[0].style.zIndex=f,zb.update(c);try{a.preventDefault()}catch(h){}}},this._ns,this),void a._bind(b,"tooltiphide",function(a){a.target===b[0]&&d(Bb).filter(":visible").not(b).last().qtip("focus",a)},this._ns,this)):this},toggle:function(a,b,c){return a&&a.isDefaultPrevented()?this:void zb.toggle(this.qtip,!!b,c)},destroy:function(){this.qtip.tooltip.removeClass(Ab),this.qtip._unbind(this.qtip.tooltip,this._ns),zb.toggle(this.qtip,F),delete this.qtip.elements.overlay}}),yb=S.modal=function(a){return new x(a,a.options.show.modal)},yb.sanitize=function(a){a.show&&("object"!=typeof a.show.modal?a.show.modal={on:!!a.show.modal}:"undefined"==typeof a.show.modal.on&&(a.show.modal.on=E))},z.modal_zindex=z.zindex-200,yb.initialize="render",C.modal={"^show.modal.(on|blur)$":function(){this.destroy(),this.init(),this.qtip.elems.overlay.toggle(this.qtip.tooltip[0].offsetWidth>0)}},d.extend(E,z.defaults,{show:{modal:{on:F,effect:E,blur:E,stealfocus:E,escape:E}}}),S.viewport=function(c,d,e,f,g,h,i){function j(a,b,c,e,f,g,h,i,j){var k=d[f],m=v[a],t=w[a],u=c===R,x=m===f?j:m===g?-j:-j/2,y=t===f?i:t===g?-i:-i/2,z=r[f]+s[f]-(o?0:n[f]),A=z-k,B=k+j-(h===J?p:q)-z,C=x-(v.precedance===a||m===v[b]?y:0)-(t===P?i/2:0);return u?(C=(m===f?1:-1)*x,d[f]+=A>0?A:B>0?-B:0,d[f]=Math.max(-n[f]+s[f],k-C,Math.min(Math.max(-n[f]+s[f]+(h===J?p:q),k+C),d[f],"center"===m?k-x:1e9))):(e*=c===Q?2:0,A>0&&(m!==f||B>0)?(d[f]-=C+e,l.invert(a,f)):B>0&&(m!==g||A>0)&&(d[f]-=(m===P?-C:C)+e,l.invert(a,g)),d[f]B&&(d[f]=k,l=v.clone())),d[f]-k}var k,l,m,n,o,p,q,r,s,t=e.target,u=c.elements.tooltip,v=e.my,w=e.at,x=e.adjust,y=x.method.split(" "),z=y[0],A=y[1]||y[0],B=e.viewport,C=e.container,D=c.cache,E={left:0,top:0};return B.jquery&&t[0]!==a&&t[0]!==b.body&&"none"!==x.method?(n=C.offset()||E,o="static"===C.css("position"),k="fixed"===u.css("position"),p=B[0]===a?B.width():B.outerWidth(F),q=B[0]===a?B.height():B.outerHeight(F),r={left:k?0:B.scrollLeft(),top:k?0:B.scrollTop()},s=B.offset()||E,("shift"!==z||"shift"!==A)&&(l=v.clone()),E={left:"none"!==z?j(H,I,z,x.x,M,O,J,f,h):0,top:"none"!==A?j(I,H,A,x.y,L,N,K,g,i):0},l&&D.lastClass!==(m=T+"-pos-"+l.abbrev())&&u.removeClass(c.cache.lastClass).addClass(c.cache.lastClass=m),E):E},S.polys={polygon:function(a,b){var c,d,e,f={width:0,height:0,position:{top:1e10,right:0,bottom:0,left:1e10},adjustable:F},g=0,h=[],i=1,j=1,k=0,l=0;for(g=a.length;g--;)c=[parseInt(a[--g],10),parseInt(a[g+1],10)],c[0]>f.position.right&&(f.position.right=c[0]),c[0]f.position.bottom&&(f.position.bottom=c[1]),c[1]0&&e>0&&i>0&&j>0;)for(d=Math.floor(d/2),e=Math.floor(e/2),b.x===M?i=d:b.x===O?i=f.width-d:i+=Math.floor(d/2),b.y===L?j=e:b.y===N?j=f.height-e:j+=Math.floor(e/2),g=h.length;g--&&!(h.length<2);)k=h[g][0]-f.position.left,l=h[g][1]-f.position.top,(b.x===M&&k>=i||b.x===O&&i>=k||b.x===P&&(i>k||k>f.width-i)||b.y===L&&l>=j||b.y===N&&j>=l||b.y===P&&(j>l||l>f.height-j))&&h.splice(g,1);f.position={left:h[0][0],top:h[0][1]}}return f},rect:function(a,b,c,d){return{width:Math.abs(c-a),height:Math.abs(d-b),position:{left:Math.min(a,c),top:Math.min(b,d)}}},_angles:{tc:1.5,tr:7/4,tl:5/4,bc:.5,br:.25,bl:.75,rc:2,lc:1,c:0},ellipse:function(a,b,c,d,e){var f=S.polys._angles[e.abbrev()],g=0===f?0:c*Math.cos(f*Math.PI),h=d*Math.sin(f*Math.PI);return{width:2*c-Math.abs(g),height:2*d-Math.abs(h),position:{left:a+g,top:b+h},adjustable:F}},circle:function(a,b,c,d){return S.polys.ellipse(a,b,c,c,d)}},S.svg=function(a,c,e){for(var f,g,h,i,j,k,l,m,n,o,p,q=d(b),r=c[0],s=d(r.ownerSVGElement),t=1,u=1,v=!0;!r.getBBox;)r=r.parentNode;if(!r.getBBox||!r.parentNode)return F;f=s.attr("width")||s.width()||parseInt(s.css("width"),10),g=s.attr("height")||s.height()||parseInt(s.css("height"),10);var w=(parseInt(c.css("stroke-width"),10)||0)/2;switch(w&&(t+=w/f,u+=w/g),r.nodeName){case"ellipse":case"circle":o=S.polys.ellipse(r.cx.baseVal.value,r.cy.baseVal.value,(r.rx||r.r).baseVal.value+w,(r.ry||r.r).baseVal.value+w,e);break;case"line":case"polygon":case"polyline":for(n=r.points||[{x:r.x1.baseVal.value,y:r.y1.baseVal.value},{x:r.x2.baseVal.value,y:r.y2.baseVal.value}],o=[],m=-1,k=n.numberOfItems||n.length;++m';d.extend(y.prototype,{_scroll:function(){var b=this.qtip.elements.overlay;b&&(b[0].style.top=d(a).scrollTop()+"px")},init:function(c){var e=c.tooltip;d("select, object").length<1&&(this.bgiframe=c.elements.bgiframe=d(Db).appendTo(e),c._bind(e,"tooltipmove",this.adjustBGIFrame,this._ns,this)),this.redrawContainer=d("
",{id:T+"-rcontainer"}).appendTo(b.body),c.elements.overlay&&c.elements.overlay.addClass("qtipmodal-ie6fix")&&(c._bind(a,["scroll","resize"],this._scroll,this._ns,this),c._bind(e,["tooltipshow"],this._scroll,this._ns,this)),this.redraw()},adjustBGIFrame:function(){var a,b,c=this.qtip.tooltip,d={height:c.outerHeight(F),width:c.outerWidth(F)},e=this.qtip.plugins.tip,f=this.qtip.elements.tip;b=parseInt(c.css("borderLeftWidth"),10)||0,b={left:-b,top:-b},e&&f&&(a="x"===e.corner.precedance?[J,M]:[K,L],b[a[1]]-=f[a[0]]()),this.bgiframe.css(b).css(d)},redraw:function(){if(this.qtip.rendered<1||this.drawing)return this;var a,b,c,d,e=this.qtip.tooltip,f=this.qtip.options.style,g=this.qtip.options.position.container;return this.qtip.drawing=1,f.height&&e.css(K,f.height),f.width?e.css(J,f.width):(e.css(J,"").appendTo(this.redrawContainer),b=e.width(),1>b%2&&(b+=1),c=e.css("maxWidth")||"",d=e.css("minWidth")||"",a=(c+d).indexOf("%")>-1?g.width()/100:0,c=(c.indexOf("%")>-1?a:1)*parseInt(c,10)||b,d=(d.indexOf("%")>-1?a:1)*parseInt(d,10)||0,b=c+d?Math.min(Math.max(b,d),c):b,e.css(J,Math.round(b)).appendTo(g)),this.drawing=0,this},destroy:function(){this.bgiframe&&this.bgiframe.remove(),this.qtip._unbind([a,this.qtip.tooltip],this._ns)}}),Cb=S.ie6=function(a){return 6===eb.ie?new y(a):F},Cb.initialize="render",C.ie6={"^content|style$":function(){this.redraw()}}})}(window,document),function(a){a.fn.typeWatch=function(b){function c(b,c){var d=a(b.el).val();(d.length>=f.captureLength&&d.toUpperCase()!=b.text||c&&d.length>=f.captureLength)&&(b.text=d.toUpperCase(),b.cb.call(b.el,d))}function d(b){var d=b.type.toUpperCase();if(a.inArray(d,f.inputTypes)>=0){var e={timer:null,text:a(b).val().toUpperCase(),cb:f.callback,el:b,wait:f.wait};f.highlight&&a(b).focus(function(){this.select()});var g=function(b){var d=e.wait,g=!1,h=this.type.toUpperCase();"undefined"!=typeof b.keyCode&&13==b.keyCode&&"TEXTAREA"!=h&&a.inArray(h,f.inputTypes)>=0&&(d=1,g=!0);var i=function(){c(e,g)};clearTimeout(e.timer),e.timer=setTimeout(i,d)};a(b).on("keydown paste cut input",g)}}var e=["TEXT","TEXTAREA","PASSWORD","TEL","SEARCH","URL","EMAIL","DATETIME","DATE","MONTH","WEEK","TIME","DATETIME-LOCAL","NUMBER","RANGE"],f=a.extend({wait:750,callback:function(){},highlight:!0,captureLength:2,inputTypes:e},b);return this.each(function(){d(this)})}}(jQuery),function(a){function b(){var a="!@#$%^&*()+=[]\\';,/{}|\":<>?~`.-_";return a+=" "}function c(){var a="¬€£¦";return a}function d(b,c,d){b.each(function(){var b=a(this);b.bind("keyup change paste",function(a){var e="";a.originalEvent&&a.originalEvent.clipboardData&&a.originalEvent.clipboardData.getData&&(e=a.originalEvent.clipboardData.getData("text/plain")),setTimeout(function(){h(b,c,d,e)},0)}),b.bind("keypress",function(a){var e=a.charCode?a.charCode:a.which;if(!(g(e)||a.ctrlKey||a.metaKey)){var f=String.fromCharCode(e),h=b.selection(),i=h.start,j=h.end,k=b.val(),l=k.substring(0,i)+f+k.substring(j),m=c(l,d);m!=l&&a.preventDefault()}})})}function e(b,c){var d=parseFloat(a(b).val()),e=a(b);return isNaN(d)?void e.val(""):(f(c.min)&&dc.max&&e.val("")))}function f(a){return!isNaN(a)}function g(a){return a>=32?!1:10==a?!1:13==a?!1:!0}function h(a,b,c,d){var e=a.val();""==e&&d.length>0&&(e=d);var f=b(e,c);if(e!=f){var g=a.alphanum_caret();a.val(f),a.alphanum_caret(e.length==f.length+1?g-1:g)}}function i(b,c){"undefined"==typeof c&&(c=D);var d,e={};return d="string"==typeof b?F[b]:"undefined"==typeof b?{}:b,a.extend(e,c,d),"undefined"==typeof e.blacklist&&(e.blacklistSet=x(e.allow,e.disallow)),e}function j(b){var c,d={};return c="string"==typeof b?G[b]:"undefined"==typeof b?{}:b,a.extend(d,E,c),d}function k(a,b,c){return c.maxLength&&a.length>=c.maxLength?!1:c.allow.indexOf(b)>=0?!0:c.allowSpace&&" "==b?!0:c.blacklistSet.contains(b)?!1:!c.allowNumeric&&K[b]?!1:!c.allowUpper&&u(b)?!1:!c.allowLower&&v(b)?!1:!c.allowCaseless&&w(b)?!1:!c.allowLatin&&L.contains(b)?!1:c.allowOtherCharSets?!0:K[b]||L.contains(b)?!0:!1}function l(a,b,c){if(K[b])return n(a,c)?!1:p(a,c)?!1:o(a,c)?!1:q(a+b,c)?!1:r(a+b,c)?!1:!0;if(c.allowPlus&&"+"==b&&""==a)return!0;if(c.allowMinus&&"-"==b&&""==a)return!0;if(b==I&&c.allowThouSep&&A(a,b))return!0;if(b==J){if(a.indexOf(J)>=0)return!1;if(c.allowDecSep)return!0}return!1}function m(a){return a+="",a.replace(/[^0-9]/g,"").length}function n(a,b){var c=b.maxDigits;if(""==c||isNaN(c))return!1;var d=m(a);return d>=c?!0:!1}function o(a,b){var c=b.maxDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(-1==d)return!1;var e=a.substring(d),f=m(e);return f>=c?!0:!1}function p(a,b){var c=b.maxPreDecimalPlaces;if(""==c||isNaN(c))return!1;var d=a.indexOf(J);if(d>=0)return!1;var e=m(a);return e>=c?!0:!1}function q(a,b){if(!b.max||b.max<0)return!1;var c=parseFloat(a);return c>b.max?!0:!1}function r(a,b){if(!b.min||b.min>0)return!1;var c=parseFloat(a);return c=0)return!1;var c=a.indexOf(I);if(0>c)return!0;var d=a.lastIndexOf(I),e=a.length-d-1;if(3>e)return!1;var f=m(a.substring(c));return f%3>0?!1:!0}function B(a){this.map="string"==typeof a?C(a):{}}function C(a){var b,c={},d=a.split(""),e=0;for(e=0;e=0?d.toString().length:startPos+c.toString().length,{start:startPos,end:endPos}):null},d=function(d){var e=b(d);if(void 0!==d.selectionStart)return document.activeElement&&document.activeElement!=d&&d.selectionStart==d.selectionEnd&&0==d.selectionStart?{start:d.value.length,end:d.value.length}:{start:d.selectionStart,end:d.selectionEnd};if(e.getSelection)return c(d,e);try{if("input"==d.nodeName.toLowerCase()){var f=b(d).document.selection.createRange(),g=d.createTextRange();g.setEndPoint("EndToStart",f);var h=g.text.length;return{start:h,end:h+f.text.length}}var i=c(d,e);if(!i)return i;var j=a.Range.current().clone(),k=j.clone().collapse().range,l=j.clone().collapse(!1).range;return k.moveStart("character",-1),l.moveStart("character",-1),0!=i.startPos&&""==k.text&&(i.startPos+=2),0!=i.endPos&&""==l.text&&(i.endPos+=2),i}catch(m){return{start:d.value.length,end:d.value.length}}},e=function(a,c,d){var e=b(a);if(a.setSelectionRange)void 0===d?(a.focus(),a.setSelectionRange(c,c)):(a.select(),a.selectionStart=c,a.selectionEnd=d);else if(a.createTextRange){var f=a.createTextRange();f.moveStart("character",c),d=d||c,f.moveEnd("character",d-a.value.length),f.select()}else if(e.getSelection){var h=e.document,i=e.getSelection(),j=h.createRange(),k=[c,void 0!==d?d:c];g([a],k),j.setStart(k[0].el,k[0].count),j.setEnd(k[1].el,k[1].count),i.removeAllRanges(),i.addRange(j)}else if(e.document.body.createTextRange){var j=document.body.createTextRange();j.moveToElementText(a),j.collapse(),j.moveStart("character",c),j.moveEnd("character",void 0!==d?d:c),j.select()}},f=function(a,b,c,d){"number"==typeof c[0]&&c[0]?~`.-_'; + blacklist += " "; // 'Space' is on the blacklist but can be enabled using the 'allowSpace' config entry + return blacklist; + } + + // Return the blacklisted special chars that are NOT encodable using 7-bit ascii + // We want this .js file to be encoded using 7-bit ascii so it can reach the widest possible audience + // Higher order chars must be escaped eg "\xAC" + // Not too worried about comments containing higher order characters for now (let's wait and see if it becomes a problem) + function getBlacklistNonAscii(){ + var blacklist = + "\xAC" // ¬ + + "\u20AC" // € + + "\xA3" // £ + + "\xA6" // ¦ + ; + return blacklist; + } + + // End Settings //////////////////////////////////////////////////////// + + + // Implementation details go here //////////////////////////////////////////////////////// + + function setupEventHandlers($textboxes, trimFunction, settings) { + + $textboxes.each(function(){ + + var $textbox = $(this); + + $textbox.bind("keyup change paste", function(e){ + + var pastedText = ""; + + if(e.originalEvent && e.originalEvent.clipboardData && e.originalEvent.clipboardData.getData) + pastedText = e.originalEvent.clipboardData.getData("text/plain") + + // setTimeout is necessary for handling the 'paste' event + setTimeout(function(){ + trimTextbox($textbox, trimFunction, settings, pastedText); + }, 0); + }); + + $textbox.bind("keypress", function(e){ + + // Determine which key is pressed. + // If it's a control key, then allow the event's default action to occur eg backspace, tab + var charCode = !e.charCode ? e.which : e.charCode; + if(isControlKey(charCode) + || e.ctrlKey + || e.metaKey ) // cmd on MacOS + return; + + var newChar = String.fromCharCode(charCode); + + // Determine if some text was selected / highlighted when the key was pressed + var selectionObject = $textbox.selection(); + var start = selectionObject.start; + var end = selectionObject.end; + + var textBeforeKeypress = $textbox.val(); + + // The new char may be inserted: + // 1) At the start + // 2) In the middle + // 3) At the end + // 4) User highlights some text and then presses a key which would replace the highlighted text + // + // Here we build the string that would result after the keypress. + // If the resulting string is invalid, we cancel the event. + // Unfortunately, it isn't enough to just check if the new char is valid because some chars + // are position sensitive eg the decimal point '.'' or the minus sign '-'' are only valid in certain positions. + var potentialTextAfterKeypress = textBeforeKeypress.substring(0, start) + newChar + textBeforeKeypress.substring(end); + var validatedText = trimFunction(potentialTextAfterKeypress, settings); + + // If the keypress would cause the textbox to contain invalid characters, then cancel the keypress event + if(validatedText != potentialTextAfterKeypress) + e.preventDefault(); + }); + }); + + } + + // Ensure the text is a valid number when focus leaves the textbox + // This catches the case where a user enters '-' or '.' without entering any digits + function numericField_Blur(inputBox, settings) { + var fieldValueNumeric = parseFloat($(inputBox).val()); + var $inputBox = $(inputBox); + + if(isNaN(fieldValueNumeric)) { + $inputBox.val(""); + return; + } + + if(isNumeric(settings.min) && fieldValueNumeric < settings.min) + $inputBox.val(""); + + if(isNumeric(settings.max) && fieldValueNumeric > settings.max) + $inputBox.val(""); + } + + function isNumeric(value) { + return !isNaN(value); + } + + function isControlKey(charCode) { + + if(charCode >= 32) + return false; + if(charCode == 10) + return false; + if(charCode == 13) + return false; + + return true; + } + + // One way to prevent a character being entered is to cancel the keypress event. + // However, this gets messy when you have to deal with things like copy paste which isn't a keypress. + // Which event gets fired first, keypress or keyup? What about IE6 etc etc? + // Instead, it's easier to allow the 'bad' character to be entered and then to delete it immediately after. + + function trimTextbox($textBox, trimFunction, settings, pastedText){ + + var inputString = $textBox.val(); + + if(inputString == "" && pastedText.length > 0) + inputString = pastedText; + + var outputString = trimFunction(inputString, settings); + + if(inputString == outputString) + return; + + var caretPos = $textBox.alphanum_caret(); + + $textBox.val(outputString); + + //Reset the caret position + if(inputString.length ==(outputString.length + 1)) + $textBox.alphanum_caret(caretPos - 1); + else + $textBox.alphanum_caret(caretPos); + } + + function getCombinedSettingsAlphaNum(settings, defaultSettings){ + if(typeof defaultSettings == "undefined") + defaultSettings = DEFAULT_SETTINGS_ALPHANUM; + var userSettings, combinedSettings = {}; + if(typeof settings === "string") + userSettings = CONVENIENCE_SETTINGS_ALPHANUM[settings]; + else if(typeof settings == "undefined") + userSettings = {}; + else + userSettings = settings; + + $.extend(combinedSettings, defaultSettings, userSettings); + + if(typeof combinedSettings.blacklist == 'undefined') + combinedSettings.blacklistSet = getBlacklistSet(combinedSettings.allow, combinedSettings.disallow); + + return combinedSettings; + } + + function getCombinedSettingsNum(settings){ + var userSettings, combinedSettings = {}; + if(typeof settings === "string") + userSettings = CONVENIENCE_SETTINGS_NUMERIC[settings]; + else if(typeof settings == "undefined") + userSettings = {}; + else + userSettings = settings; + + $.extend(combinedSettings, DEFAULT_SETTINGS_NUM, userSettings); + + return combinedSettings; + } + + + // This is the heart of the algorithm + function alphanum_allowChar(validatedStringFragment, Char, settings){ + + if(settings.maxLength && validatedStringFragment.length >= settings.maxLength) + return false; + + if(settings.allow.indexOf(Char) >=0 ) + return true; + + if(settings.allowSpace && (Char == " ")) + return true; + + if(settings.blacklistSet.contains(Char)) + return false; + + if(!settings.allowNumeric && DIGITS[Char]) + return false; + + if(!settings.allowUpper && isUpper(Char)) + return false; + + if(!settings.allowLower && isLower(Char)) + return false; + + if(!settings.allowCaseless && isCaseless(Char)) + return false; + + if(!settings.allowLatin && LATIN_CHARS.contains(Char)) + return false; + + if(!settings.allowOtherCharSets){ + if(DIGITS[Char] || LATIN_CHARS.contains(Char)) + return true; + else + return false; + } + + return true; + } + + function numeric_allowChar(validatedStringFragment, Char, settings){ + + if(DIGITS[Char]) { + + if(isMaxDigitsReached(validatedStringFragment, settings)) + return false; + + if(isMaxPreDecimalsReached(validatedStringFragment, settings)) + return false; + + if(isMaxDecimalsReached(validatedStringFragment, settings)) + return false; + + if(isGreaterThanMax(validatedStringFragment + Char, settings)) + return false; + + if(isLessThanMin(validatedStringFragment + Char, settings)) + return false; + + return true; + } + + if(settings.allowPlus && Char == '+' && validatedStringFragment == '') + return true; + + if(settings.allowMinus && Char == '-' && validatedStringFragment == '') + return true; + + if(Char == THOU_SEP && settings.allowThouSep && allowThouSep(validatedStringFragment, Char)) + return true; + + if(Char == DEC_SEP) { + // Only one decimal separator allowed + if(validatedStringFragment.indexOf(DEC_SEP) >= 0) + return false; + if(settings.allowDecSep) + return true; + } + + return false; + } + + function countDigits(string) { + + // Error handling, nulls etc + string = string + ""; + + // Count the digits + return string.replace(/[^0-9]/g,"").length; + } + + function isMaxDigitsReached(string, settings) { + + var maxDigits = settings.maxDigits; + + if(maxDigits == "" || isNaN(maxDigits)) + return false; // In this case, there is no maximum + + var numDigits = countDigits(string); + + if(numDigits >= maxDigits) + return true; + + return false; + } + + function isMaxDecimalsReached(string, settings) { + + var maxDecimalPlaces = settings.maxDecimalPlaces; + + if(maxDecimalPlaces == "" || isNaN(maxDecimalPlaces)) + return false; // In this case, there is no maximum + + var indexOfDecimalPoint = string.indexOf(DEC_SEP); + + if(indexOfDecimalPoint == -1) + return false; + + var decimalSubstring = string.substring(indexOfDecimalPoint); + var numDecimals = countDigits(decimalSubstring); + + if(numDecimals >= maxDecimalPlaces) + return true; + + return false; + } + + function isMaxPreDecimalsReached(string, settings) { + + var maxPreDecimalPlaces = settings.maxPreDecimalPlaces; + + if(maxPreDecimalPlaces == "" || isNaN(maxPreDecimalPlaces)) + return false; // In this case, there is no maximum + + var indexOfDecimalPoint = string.indexOf(DEC_SEP); + + if(indexOfDecimalPoint >= 0) + return false; + + var numPreDecimalDigits = countDigits(string); + + if(numPreDecimalDigits >= maxPreDecimalPlaces) + return true; + + return false; + } + + function isGreaterThanMax(numericString, settings) { + + if(!settings.max || settings.max < 0) + return false; + + var outputNumber = parseFloat(numericString); + if(outputNumber > settings.max) + return true; + + return false; + } + + function isLessThanMin(numericString, settings) { + + if(!settings.min || settings.min > 0) + return false; + + var outputNumber = parseFloat(numericString); + if(outputNumber < settings.min) + return true; + + return false; + } + + /******************************** + * Trims a string according to the settings provided + ********************************/ + function trimAlphaNum(inputString, settings){ + + if(typeof inputString != "string") + return inputString; + + var inChars = inputString.split(""); + var outChars = []; + var i = 0; + var Char; + + for(i=0; i= 0) + return false; + + var posOfFirstThouSep = currentString.indexOf(THOU_SEP); + + // Check if this is the first occurrence of a THOU_SEP + if(posOfFirstThouSep < 0) + return true; + + var posOfLastThouSep = currentString.lastIndexOf(THOU_SEP); + var charsSinceLastThouSep = currentString.length - posOfLastThouSep - 1; + + // Check if there has been 3 digits since the last THOU_SEP + if(charsSinceLastThouSep < 3) + return false; + + var digitsSinceFirstThouSep = countDigits(currentString.substring(posOfFirstThouSep)); + + // Check if there has been a multiple of 3 digits since the first THOU_SEP + if((digitsSinceFirstThouSep % 3) > 0) + return false; + + return true; + } + + //////////////////////////////////////////////////////////////////////////////////// + // Implementation of a Set + //////////////////////////////////////////////////////////////////////////////////// + function Set(elems){ + if(typeof elems == "string") + this.map = stringToMap(elems); + else + this.map = {}; + } + + Set.prototype.add = function(set){ + + var newSet = this.clone(); + + for(var key in set.map) + newSet.map[key] = true; + + return newSet; + } + + Set.prototype.subtract = function(set){ + + var newSet = this.clone(); + + for(var key in set.map) + delete newSet.map[key]; + + return newSet; + } + + Set.prototype.contains = function(key){ + if(this.map[key]) + return true; + else + return false; + } + + Set.prototype.clone = function(){ + var newSet = new Set(); + + for(var key in this.map) + newSet.map[key] = true; + + return newSet; + } + //////////////////////////////////////////////////////////////////////////////////// + + function stringToMap(string){ + var map = {}; + var array = string.split(""); + var i=0; + var Char; + + for(i=0; i=0){endPos=i.toString().length}else{endPos=startPos+r.toString().length}return{start:startPos,end:endPos}},s=function(t){var n=r(t);if(t.selectionStart!==undefined){if(document.activeElement&&document.activeElement!=t&&t.selectionStart==t.selectionEnd&&t.selectionStart==0){return{start:t.value.length,end:t.value.length}}return{start:t.selectionStart,end:t.selectionEnd}}else if(n.getSelection){return i(t,n)}else{try{if(t.nodeName.toLowerCase()=="input"){var s=r(t).document.selection.createRange(),o=t.createTextRange();o.setEndPoint("EndToStart",s);var u=o.text.length;return{start:u,end:u+s.text.length}}else{var a=i(t,n);if(!a){return a}var f=e.Range.current().clone(),l=f.clone().collapse().range,c=f.clone().collapse(false).range;l.moveStart("character",-1);c.moveStart("character",-1);if(a.startPos!=0&&l.text==""){a.startPos+=2}if(a.endPos!=0&&c.text==""){a.endPos+=2}return a}}catch(h){return{start:t.value.length,end:t.value.length}}}},o=function(e,t,n){var i=r(e);if(e.setSelectionRange){if(n===undefined){e.focus();e.setSelectionRange(t,t)}else{e.select();e.selectionStart=t;e.selectionEnd=n}}else if(e.createTextRange){var s=e.createTextRange();s.moveStart("character",t);n=n||t;s.moveEnd("character",n-e.value.length);s.select()}else if(i.getSelection){var o=i.document,u=i.getSelection(),f=o.createRange(),l=[t,n!==undefined?n:t];a([e],l);f.setStart(l[0].el,l[0].count);f.setEnd(l[1].el,l[1].count);u.removeAllRanges();u.addRange(f)}else if(i.document.body.createTextRange){var f=document.body.createTextRange();f.moveToElementText(e);f.collapse();f.moveStart("character",t);f.moveEnd("character",n!==undefined?n:t);f.select()}},u=function(e,t,n,r){if(typeof n[0]==="number"&&n[0]= options.captureLength AND text != saved text OR if override AND text >= options.captureLength + if ((value.length >= options.captureLength && value.toUpperCase() != timer.text) + || (override && value.length >= options.captureLength)) + { + timer.text = value.toUpperCase(); + timer.cb.call(timer.el, value); + } + }; + + function watchElement(elem) { + var elementType = elem.type.toUpperCase(); + if (jQuery.inArray(elementType, options.inputTypes) >= 0) { + + // Allocate timer element + var timer = { + timer: null, + text: jQuery(elem).val().toUpperCase(), + cb: options.callback, + el: elem, + wait: options.wait + }; + + // Set focus action (highlight) + if (options.highlight) { + jQuery(elem).focus( + function() { + this.select(); + }); + } + + // Key watcher / clear and reset the timer + var startWatch = function(evt) { + var timerWait = timer.wait; + var overrideBool = false; + var evtElementType = this.type.toUpperCase(); + + // If enter key is pressed and not a TEXTAREA and matched inputTypes + if (typeof evt.keyCode != 'undefined' && evt.keyCode == 13 && evtElementType != 'TEXTAREA' && jQuery.inArray(evtElementType, options.inputTypes) >= 0) { + timerWait = 1; + overrideBool = true; + } + + var timerCallbackFx = function() { + checkElement(timer, overrideBool) + } + + // Clear timer + clearTimeout(timer.timer); + timer.timer = setTimeout(timerCallbackFx, timerWait); + }; + + jQuery(elem).on('keydown paste cut input', startWatch); + } + }; + + // Watch Each Element + return this.each(function() { + watchElement(this); + }); + + }; +})(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/jsonview.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/jsonview.js new file mode 100644 index 00000000..1afe0271 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/jsonview.js @@ -0,0 +1,265 @@ + +/* global console, jsonView */ +/* + * ViewJSON + * Version 1.0 + * A Google Chrome extension to display JSON in a user-friendly format + * + * This is a chromeified version of the JSONView Firefox extension by Ben Hollis: + * http://jsonview.com + * http://code.google.com/p/jsonview + * + * Also based on the XMLTree Chrome extension by Moonty & alan.stroop + * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb + * + * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew + * MIT license / copyfree (f) F.A.T. Lab http://fffff.at + * Speed Project Approved: 2h + */ + +function collapse(evt) { + var collapser = evt.target; + var target = collapser.parentNode.getElementsByClassName('collapsible'); + if (!target.length) { + return; + } + target = target[0]; + if (target.style.display === 'none') { + var ellipsis = target.parentNode.getElementsByClassName('ellipsis')[0]; + target.parentNode.removeChild(ellipsis); + target.style.display = ''; + } else { + target.style.display = 'none'; + var ellipsis = document.createElement('span'); + ellipsis.className = 'ellipsis'; + ellipsis.innerHTML = ' … '; + target.parentNode.insertBefore(ellipsis, target); + } + collapser.innerHTML = (collapser.innerHTML === '-') ? '+' : '-'; +} + +function addCollapser(item) { + // This mainly filters out the root object (which shouldn't be collapsible) + if (item.nodeName !== 'LI') { + return; + } + var collapser = document.createElement('div'); + collapser.className = 'collapser'; + collapser.innerHTML = '-'; + collapser.addEventListener('click', collapse, false); + item.insertBefore(collapser, item.firstChild); +} + +function jsonView(id, target) { + this.debug = false; + if (id.indexOf("#") !== -1) { + this.idType = "id"; + this.id = id.replace('#', ''); + } else if (id.indexOf(".") !== -1) { + this.idType = "class"; + this.id = id.replace('.', ''); + } else { + if (this.debug) { console.log("Can't find that element"); } + return; + } + + this.data = document.getElementById(this.id).innerHTML; + if (typeof(target) !== undefined) { + if (target.indexOf("#") !== -1) { + this.targetType = "id"; + this.target = target.replace('#', ''); + } else if (id.indexOf(".") !== -1) { + this.targetType = "class"; + this.target = target.replace('.', ''); + } else { + if (this.debug) { console.log("Can't find the target element"); } + return; + } + } + // Note: now using "*.json*" URI matching rather than these page regexes -- save CPU cycles! + // var is_json = /^\s*(\{.*\})\s*$/.test(this.data); + // var is_jsonp = /^.*\(\s*(\{.*\})\s*\)$/.test(this.data); + // if(is_json || is_jsonp){ + // Our manifest specifies that we only do URLs matching '.json', so attempt to sanitize any HTML + // added by Chrome's "text/plain" or "text/html" handlers + if (/^\(.*)\<\/pre\>$/.test(this.data)) { + if (this.debug) { console.log("JSONView: data is wrapped in
...
, stripping HTML..."); } + this.data = this.data.replace(/<(?:.|\s)*?>/g, ''); //Aggressively strip HTML. + } + // Test if what remains is JSON or JSONp + var json_regex = /^\s*([\[\{].*[\}\]])\s*$/; // Ghetto, but it works + var jsonp_regex = /^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/; + var jsonp_regex2 = /([\[\{][\s\S]*[\]\}])\)/; // more liberal support... this allows us to pass the jsonp.json & jsonp2.json tests + var is_json = json_regex.test(this.data); + var is_jsonp = jsonp_regex.test(this.data); + if (this.debug) { console.log("JSONView: is_json=" + is_json + " is_jsonp=" + is_jsonp); } + if (is_json || is_jsonp) { + if (this.debug) { console.log("JSONView: sexytime!"); } + // JSONFormatter json->HTML prototype straight from Firefox JSONView + // For reference: http://code.google.com/p/jsonview + + function JSONFormatter() { + // No magic required. + } + JSONFormatter.prototype = { + htmlEncode: function(t) { + return t != null ? t.toString().replace(/&/g, "&").replace(/"/g, """).replace(//g, ">") : ''; + }, + decorateWithSpan: function(value, className) { + return '' + this.htmlEncode(value) + ''; + }, + // Convert a basic JSON datatype (number, string, boolean, null, object, array) into an HTML fragment. + valueToHTML: function(value) { + var valueType = typeof value; + var output = ""; + if (value === null) { + output += this.decorateWithSpan('null', 'null'); + } else if (value && value.constructor === Array) { + output += this.arrayToHTML(value); + } else if (valueType === 'object') { + output += this.objectToHTML(value); + } else if (valueType === 'number') { + output += this.decorateWithSpan(value, 'num'); + } else if (valueType === 'string') { + if (/^(http|https):\/\/[^\s]+$/.test(value)) { + output += '
' + this.htmlEncode(value) + ''; + } else { + output += this.decorateWithSpan('"' + value + '"', 'string'); + } + } else if (valueType === 'boolean') { + output += this.decorateWithSpan(value, 'bool'); + } + return output; + }, + // Convert an array into an HTML fragment + arrayToHTML: function(json) { + var output = '[
    '; + var hasContents = false; + for (var prop in json) { + hasContents = true; + output += '
  • '; + output += this.valueToHTML(json[prop]); + output += '
  • '; + } + output += '
]'; + if (!hasContents) { + output = "[ ]"; + } + return output; + }, + // Convert a JSON object to an HTML fragment + objectToHTML: function(json) { + var output = '{
    '; + var hasContents = false; + for (var prop in json) { + hasContents = true; + output += '
  • '; + output += '' + this.htmlEncode(prop) + ': '; + output += this.valueToHTML(json[prop]); + output += '
  • '; + } + output += '
}'; + if (!hasContents) { + output = "{ }"; + } + return output; + }, + // Convert a whole JSON object into a formatted HTML document. + jsonToHTML: function(json, callback, uri) { + var output = ''; + if (callback) { + output += '
' + callback + ' (
'; + output += '
'; + } else { + output += '
'; + } + output += this.valueToHTML(json); + output += '
'; + if (callback) { + output += '
)
'; + } + return this.toHTML(output, uri); + }, + // Produce an error document for when parsing fails. + errorPage: function(error, data, uri) { + // var output = '
' + this.stringbundle.GetStringFromName('errorParsing') + '
'; + // output += '

' + this.stringbundle.GetStringFromName('docContents') + ':

'; + var output = '
Error parsing JSON: ' + error.message + '
'; + output += '

' + error.stack + ':

'; + output += '
' + this.htmlEncode(data) + '
'; + return this.toHTML(output, uri + ' - Error'); + }, + // Wrap the HTML fragment in a full document. Used by jsonToHTML and errorPage. + toHTML: function(content) { + return content; + } + }; + // Sanitize & output -- all magic from JSONView Firefox + this.jsonFormatter = new JSONFormatter(); + // This regex attempts to match a JSONP structure: + // * Any amount of whitespace (including unicode nonbreaking spaces) between the start of the file and the callback name + // * Callback name (any valid JavaScript function name according to ECMA-262 Edition 3 spec) + // * Any amount of whitespace (including unicode nonbreaking spaces) + // * Open parentheses + // * Any amount of whitespace (including unicode nonbreaking spaces) + // * Either { or [, the only two valid characters to start a JSON string. + // * Any character, any number of times + // * Either } or ], the only two valid closing characters of a JSON string. + // * Any amount of whitespace (including unicode nonbreaking spaces) + // * A closing parenthesis, an optional semicolon, and any amount of whitespace (including unicode nonbreaking spaces) until the end of the file. + // This will miss anything that has comments, or more than one callback, or requires modification before use. + var outputDoc = ''; + // text = text.match(jsonp_regex)[1]; + var cleanData = '', + callback = ''; + var callback_results = jsonp_regex.exec(this.data); + if (callback_results && callback_results.length === 3) { + if (this.debug) { console.log("THIS IS JSONp"); } + callback = callback_results[1]; + cleanData = callback_results[2]; + } else { + if (this.debug) { console.log("Vanilla JSON"); } + cleanData = this.data; + } + if (this.debug) { console.log(cleanData); } + // Covert, and catch exceptions on failure + try { + // var jsonObj = this.nativeJSON.decode(cleanData); + var jsonObj = JSON.parse(cleanData); + if (jsonObj) { + outputDoc = this.jsonFormatter.jsonToHTML(jsonObj, callback); + } else { + throw "There was no object!"; + } + } catch (e) { + if (this.debug) { console.log(e); } + outputDoc = this.jsonFormatter.errorPage(e, this.data); + } + var links = ''; + if (this.targetType !== undefined) { + this.idType = this.targetType; + this.id = this.target; + } + var el; + if (this.idType === "class") { + el = document.getElementsByClassName(this.id); + if (el) { + el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput'; + el.innerHTML = links + outputDoc; + } + } else if (this.idType === "id") { + el = document.getElementById(this.id); + if (el) { + el.className += el.className ? ' jsonViewOutput' : 'jsonViewOutput'; + el.innerHTML = links + outputDoc; + } + el.innerHTML = links + outputDoc; + } + var items = document.getElementsByClassName('collapsible'); + for (var i = 0; i < items.length; i++) { + addCollapser(items[i].parentNode); + } + } else { + // console.log("JSONView: this is not json, not formatting."); + } +} \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/jsonview.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/jsonview.min.js new file mode 100644 index 00000000..b8c4f1bb --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/jsonview.min.js @@ -0,0 +1,16 @@ +/* global console, jsonView *//* + * ViewJSON + * Version 1.0 + * A Google Chrome extension to display JSON in a user-friendly format + * + * This is a chromeified version of the JSONView Firefox extension by Ben Hollis: + * http://jsonview.com + * http://code.google.com/p/jsonview + * + * Also based on the XMLTree Chrome extension by Moonty & alan.stroop + * https://chrome.google.com/extensions/detail/gbammbheopgpmaagmckhpjbfgdfkpadb + * + * port by Jamie Wilkinson (@jamiew) | http://jamiedubs.com | http://github.com/jamiew + * MIT license / copyfree (f) F.A.T. Lab http://fffff.at + * Speed Project Approved: 2h + */function collapse(e){var t=e.target,n=t.parentNode.getElementsByClassName("collapsible");if(!n.length)return;n=n[0];if(n.style.display==="none"){var r=n.parentNode.getElementsByClassName("ellipsis")[0];n.parentNode.removeChild(r),n.style.display=""}else{n.style.display="none";var r=document.createElement("span");r.className="ellipsis",r.innerHTML=" … ",n.parentNode.insertBefore(r,n)}t.innerHTML=t.innerHTML==="-"?"+":"-"}function addCollapser(e){if(e.nodeName!=="LI")return;var t=document.createElement("div");t.className="collapser",t.innerHTML="-",t.addEventListener("click",collapse,!1),e.insertBefore(t,e.firstChild)}function jsonView(e,t){this.debug=!1;if(e.indexOf("#")!==-1)this.idType="id",this.id=e.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find that element");return}this.idType="class",this.id=e.replace(".","")}this.data=document.getElementById(this.id).innerHTML;if(typeof t!==undefined)if(t.indexOf("#")!==-1)this.targetType="id",this.target=t.replace("#","");else{if(e.indexOf(".")===-1){this.debug&&console.log("Can't find the target element");return}this.targetType="class",this.target=t.replace(".","")}/^\(.*)\<\/pre\>$/.test(this.data)&&(this.debug&&console.log("JSONView: data is wrapped in
...
, stripping HTML..."),this.data=this.data.replace(/<(?:.|\s)*?>/g,""));var n=/^\s*([\[\{].*[\}\]])\s*$/,r=/^[\s\u200B\uFEFF]*([\w$\[\]\.]+)[\s\u200B\uFEFF]*\([\s\u200B\uFEFF]*([\[{][\s\S]*[\]}])[\s\u200B\uFEFF]*\);?[\s\u200B\uFEFF]*$/,i=/([\[\{][\s\S]*[\]\}])\)/,s=n.test(this.data),o=r.test(this.data);this.debug&&console.log("JSONView: is_json="+s+" is_jsonp="+o);if(s||o){this.debug&&console.log("JSONView: sexytime!");function u(){}u.prototype={htmlEncode:function(e){return e!=null?e.toString().replace(/&/g,"&").replace(/"/g,""").replace(//g,">"):""},decorateWithSpan:function(e,t){return''+this.htmlEncode(e)+""},valueToHTML:function(e){var t=typeof e,n="";return e===null?n+=this.decorateWithSpan("null","null"):e&&e.constructor===Array?n+=this.arrayToHTML(e):t==="object"?n+=this.objectToHTML(e):t==="number"?n+=this.decorateWithSpan(e,"num"):t==="string"?/^(http|https):\/\/[^\s]+$/.test(e)?n+=''+this.htmlEncode(e)+"":n+=this.decorateWithSpan('"'+e+'"',"string"):t==="boolean"&&(n+=this.decorateWithSpan(e,"bool")),n},arrayToHTML:function(e){var t='[
    ',n=!1;for(var r in e)n=!0,t+="
  • ",t+=this.valueToHTML(e[r]),t+="
  • ";return t+="
]",n||(t="[ ]"),t},objectToHTML:function(e){var t='{
    ',n=!1;for(var r in e)n=!0,t+="
  • ",t+=''+this.htmlEncode(r)+": ",t+=this.valueToHTML(e[r]),t+="
  • ";return t+="
}",n||(t="{ }"),t},jsonToHTML:function(e,t,n){var r="";return t?(r+='
'+t+" (
",r+='
'):r+='
',r+=this.valueToHTML(e),r+="
",t&&(r+='
)
'),this.toHTML(r,n)},errorPage:function(e,t,n){var r='
Error parsing JSON: '+e.message+"
";return r+="

"+e.stack+":

",r+='
'+this.htmlEncode(t)+"
",this.toHTML(r,n+" - Error")},toHTML:function(e){return e}},this.jsonFormatter=new u;var a="",f="",l="",c=r.exec(this.data);c&&c.length===3?(this.debug&&console.log("THIS IS JSONp"),l=c[1],f=c[2]):(this.debug&&console.log("Vanilla JSON"),f=this.data),this.debug&&console.log(f);try{var h=JSON.parse(f);if(!h)throw"There was no object!";a=this.jsonFormatter.jsonToHTML(h,l)}catch(p){this.debug&&console.log(p),a=this.jsonFormatter.errorPage(p,this.data)}var d="";this.targetType!==undefined&&(this.idType=this.targetType,this.id=this.target);var v;this.idType==="class"?(v=document.getElementsByClassName(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a)):this.idType==="id"&&(v=document.getElementById(this.id),v&&(v.className+=v.className?" jsonViewOutput":"jsonViewOutput",v.innerHTML=d+a),v.innerHTML=d+a);var m=document.getElementsByClassName("collapsible");for(var g=0;g' + entity + '' + html; + } + var icons = { + 'icon-move' : '', + 'icon-music' : '', + 'icon-network' : '', + 'icon-off' : '', + 'icon-ok' : '', + 'icon-ok-circle' : '', + 'icon-ok-sign' : '', + 'icon-paper-clip' : '', + 'icon-paper-clip-alt' : '', + 'icon-path' : '', + 'icon-plus-sign' : '', + 'icon-print' : '', + 'icon-qrcode' : '', + 'icon-question' : '', + 'icon-question-sign' : '', + 'icon-quotes' : '', + 'icon-quotes-alt' : '', + 'icon-random' : '', + 'icon-record' : '', + 'icon-reddit' : '', + 'icon-refresh' : '', + 'icon-screenshot' : '', + 'icon-search' : '', + 'icon-search-alt' : '', + 'icon-share' : '', + 'icon-share-alt' : '', + 'icon-shopping-cart' : '', + 'icon-shopping-cart-sign' : '', + 'icon-signal' : '', + 'icon-skype' : '', + 'icon-slideshare' : '', + 'icon-smiley' : '', + 'icon-th-large' : '', + 'icon-th-list' : '', + 'icon-thumbs-down' : '', + 'icon-thumbs-up' : '', + 'icon-time' : '', + 'icon-time-alt' : '', + 'icon-tint' : '', + 'icon-torso' : '', + 'icon-trash' : '', + 'icon-trash-alt' : '', + 'icon-tumblr' : '', + 'icon-w3c' : '', + 'icon-warning-sign' : '', + 'icon-website' : '', + 'icon-website-alt' : '', + 'icon-wheelchair' : '', + 'icon-wordpress' : '', + 'icon-wrench' : '', + 'icon-wrench-alt' : '', + 'icon-youtube' : '', + 'icon-zoom-in' : '', + 'icon-zoom-out' : '', + 'icon-pause-alt' : '', + 'icon-pencil' : '', + 'icon-pencil-alt' : '', + 'icon-person' : '', + 'icon-phone' : '', + 'icon-phone-alt' : '', + 'icon-photo' : '', + 'icon-photo-alt' : '', + 'icon-picasa' : '', + 'icon-picture' : '', + 'icon-pinterest' : '', + 'icon-plane' : '', + 'icon-play-alt' : '', + 'icon-play-circle' : '', + 'icon-plus' : '', + 'icon-remove' : '', + 'icon-remove-circle' : '', + 'icon-remove-sign' : '', + 'icon-repeat' : '', + 'icon-repeat-alt' : '', + 'icon-resize-full' : '', + 'icon-resize-horizontal' : '', + 'icon-resize-small' : '', + 'icon-resize-vertical' : '', + 'icon-retweet' : '', + 'icon-reverse-alt' : '', + 'icon-road' : '', + 'icon-rss' : '', + 'icon-screen' : '', + 'icon-screen-alt' : '', + 'icon-smiley-alt' : '', + 'icon-speaker' : '', + 'icon-stackoverflow' : '', + 'icon-star' : '', + 'icon-star-alt' : '', + 'icon-star-empty' : '', + 'icon-stop-alt' : '', + 'icon-stumbleupon' : '', + 'icon-tag' : '', + 'icon-tags' : '', + 'icon-tasks' : '', + 'icon-text-height' : '', + 'icon-text-width' : '', + 'icon-th' : '', + 'icon-twitter' : '', + 'icon-universal-access' : '', + 'icon-unlock' : '', + 'icon-unlock-alt' : '', + 'icon-upload' : '', + 'icon-user' : '', + 'icon-video' : '', + 'icon-video-alt' : '', + 'icon-video-chat' : '', + 'icon-view-mode' : '', + 'icon-vimeo' : '', + 'icon-vkontakte' : '', + 'icon-volume-down' : '', + 'icon-volume-off' : '', + 'icon-volume-up' : '', + 'icon-backward' : '', + 'icon-fast-backward' : '', + 'icon-fast-forward' : '', + 'icon-forward' : '', + 'icon-play' : '', + 'icon-step-backward' : '', + 'icon-step-forward' : '', + 'icon-briefcase' : '', + 'icon-bullhorn' : '', + 'icon-calendar' : '', + 'icon-calendar-sign' : '', + 'icon-address-book' : '', + 'icon-address-book-alt' : '', + 'icon-adjust' : '', + 'icon-adult' : '', + 'icon-align-center' : '', + 'icon-align-justify' : '', + 'icon-align-left' : '', + 'icon-align-right' : '', + 'icon-arrow-down' : '', + 'icon-arrow-left' : '', + 'icon-arrow-right' : '', + 'icon-arrow-up' : '', + 'icon-asl' : '', + 'icon-asterisk' : '', + 'icon-ban-circle' : '', + 'icon-barcode' : '', + 'icon-behance' : '', + 'icon-bell' : '', + 'icon-blind' : '', + 'icon-blogger' : '', + 'icon-bold' : '', + 'icon-book' : '', + 'icon-bookmark' : '', + 'icon-bookmark-empty' : '', + 'icon-braille' : '', + 'icon-camera' : '', + 'icon-cc' : '', + 'icon-certificate' : '', + 'icon-check' : '', + 'icon-check-empty' : '', + 'icon-chevron-down' : '', + 'icon-chevron-left' : '', + 'icon-chevron-right' : '', + 'icon-chevron-up' : '', + 'icon-child' : '', + 'icon-circle-arrow-down' : '', + 'icon-circle-arrow-left' : '', + 'icon-circle-arrow-right' : '', + 'icon-circle-arrow-up' : '', + 'icon-cloud' : '', + 'icon-cloud-alt' : '', + 'icon-cog' : '', + 'icon-cog-alt' : '', + 'icon-cogs' : '', + 'icon-comment' : '', + 'icon-comment-alt' : '', + 'icon-compass' : '', + 'icon-compass-alt' : '', + 'icon-credit-card' : '', + 'icon-css' : '', + 'icon-dashboard' : '', + 'icon-delicious' : '', + 'icon-deviantart' : '', + 'icon-digg' : '', + 'icon-download' : '', + 'icon-download-alt' : '', + 'icon-dribble' : '', + 'icon-edit' : '', + 'icon-eject' : '', + 'icon-envelope' : '', + 'icon-envelope-alt' : '', + 'icon-error' : '', + 'icon-error-alt' : '', + 'icon-exclamation-sign' : '', + 'icon-eye-close' : '', + 'icon-eye-open' : '', + 'icon-facebook' : '', + 'icon-facetime-video' : '', + 'icon-female' : '', + 'icon-file' : '', + 'icon-file-alt' : '', + 'icon-file-edit' : '', + 'icon-file-edit-alt' : '', + 'icon-file-new' : '', + 'icon-file-new-alt' : '', + 'icon-film' : '', + 'icon-filter' : '', + 'icon-fire' : '', + 'icon-flag' : '', + 'icon-flag-alt' : '', + 'icon-flickr' : '', + 'icon-folder' : '', + 'icon-folder-close' : '', + 'icon-folder-open' : '', + 'icon-folder-sign' : '', + 'icon-font' : '', + 'icon-fontsize' : '', + 'icon-forward-alt' : '', + 'icon-foursquare' : '', + 'icon-friendfeed' : '', + 'icon-friendfeed-rect' : '', + 'icon-fullscreen' : '', + 'icon-gift' : '', + 'icon-github' : '', + 'icon-github-text' : '', + 'icon-glass' : '', + 'icon-glasses' : '', + 'icon-globe' : '', + 'icon-globe-alt' : '', + 'icon-googleplus' : '', + 'icon-graph' : '', + 'icon-graph-alt' : '', + 'icon-group' : '', + 'icon-group-alt' : '', + 'icon-guidedog' : '', + 'icon-hand-down' : '', + 'icon-hand-left' : '', + 'icon-hand-right' : '', + 'icon-hand-up' : '', + 'icon-hdd' : '', + 'icon-headphones' : '', + 'icon-hearing-impaired' : '', + 'icon-heart' : '', + 'icon-heart-alt' : '', + 'icon-heart-empty' : '', + 'icon-home' : '', + 'icon-home-alt' : '', + 'icon-idea' : '', + 'icon-idea-alt' : '', + 'icon-inbox' : '', + 'icon-inbox-alt' : '', + 'icon-inbox-box' : '', + 'icon-indent-left' : '', + 'icon-indent-right' : '', + 'icon-info-sign' : '', + 'icon-instagram' : '', + 'icon-iphone-home' : '', + 'icon-italic' : '', + 'icon-key' : '', + 'icon-laptop' : '', + 'icon-laptop-alt' : '', + 'icon-leaf' : '', + 'icon-linkedin' : '', + 'icon-list' : '', + 'icon-list-alt' : '', + 'icon-lock' : '', + 'icon-lock-alt' : '', + 'icon-magnet' : '', + 'icon-male' : '', + 'icon-map-marker' : '', + 'icon-map-marker-alt' : '', + 'icon-mic' : '', + 'icon-mic-alt' : '', + 'icon-minus' : '', + 'icon-minus-sign' : '', + 'icon-pause' : '', + 'icon-fork' : '', + 'icon-broom' : '', + 'icon-return-key' : '', + 'icon-lastfm' : '', + 'icon-livejournal' : '', + 'icon-myspace' : '', + 'icon-soundcloud' : '', + 'icon-viadeo' : '', + 'icon-spotify' : '', + 'icon-caret-left' : '', + 'icon-caret-up' : '', + 'icon-caret-right' : '', + 'icon-caret-down' : '', + 'icon-stop' : '' + }, + els = document.getElementsByTagName('*'), + i, attr, html, c, el; + for (i = 0; ; i += 1) { + el = els[i]; + if(!el) { + break; + } + attr = el.getAttribute('data-icon'); + if (attr) { + addIcon(el, attr); + } + c = el.className; + c = c.match(/icon-[^\s'"]+/); + if (c && icons[c[0]]) { + addIcon(el, icons[c[0]]); + } + } +}; \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js new file mode 100644 index 00000000..dfec8b8e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/qtip/jquery.qtip.js @@ -0,0 +1,3951 @@ +/* + * qTip2 - Pretty powerful tooltips - v2.2.0 + * http://qtip2.com + * + * Copyright (c) 2013 Craig Michael Thompson + * Released under the MIT, GPL licenses + * http://jquery.org/license + * + * Date: Thu Nov 21 2013 08:34 GMT+0000 + * Plugins: tips modal viewport svg imagemap ie6 + * Styles: basic css3 + */ +/*global window: false, jQuery: false, console: false, define: false */ + +if ( typeof jQuery.qtip === 'undefined' ) { + /* Cache window, document, undefined */ + (function( window, document, undefined ) { + + // Uses AMD or browser globals to create a jQuery plugin. + (function( factory ) { + "use strict"; + if ( typeof define === 'function' && define.amd ) { + define( ['jquery'], factory ); + } + else if ( jQuery && !jQuery.fn.qtip ) { + factory( jQuery ); + } + } + ( + function( $ ) { + "use strict"; // Enable ECMAScript "strict" operation for this function. See more: http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/ + + ;// Munge the primitives - Paul Irish tip + var TRUE = true, + FALSE = false, + NULL = null, + + // Common variables + X = 'x', Y = 'y', + WIDTH = 'width', + HEIGHT = 'height', + + // Positioning sides + TOP = 'top', + LEFT = 'left', + BOTTOM = 'bottom', + RIGHT = 'right', + CENTER = 'center', + + // Position adjustment types + FLIP = 'flip', + FLIPINVERT = 'flipinvert', + SHIFT = 'shift', + + // Shortcut vars + QTIP, PROTOTYPE, CORNER, CHECKS, + PLUGINS = {}, + NAMESPACE = 'qtip', + ATTR_HAS = 'data-hasqtip', + ATTR_ID = 'data-qtip-id', + WIDGET = ['ui-widget', 'ui-tooltip'], + SELECTOR = '.' + NAMESPACE, + INACTIVE_EVENTS = 'click dblclick mousedown mouseup mousemove mouseleave mouseenter'.split( ' ' ), + + CLASS_FIXED = NAMESPACE + '-fixed', + CLASS_DEFAULT = NAMESPACE + '-default', + CLASS_FOCUS = NAMESPACE + '-focus', + CLASS_HOVER = NAMESPACE + '-hover', + CLASS_DISABLED = NAMESPACE + '-disabled', + + replaceSuffix = '_replacedByqTip', + oldtitle = 'oldtitle', + trackingBound, + + // Browser detection + BROWSER = { + /* + * IE version detection + * + * Adapted from: http://ajaxian.com/archives/attack-of-the-ie-conditional-comment + * Credit to James Padolsey for the original implemntation! + */ + ie: (function() { + var v = 3, div = document.createElement( 'div' ); + while ( (div.innerHTML = '') ) { + if ( !div.getElementsByTagName( 'i' )[0] ) { + break; + } + } + return v > 4 ? v : NaN; + }()), + + /* + * iOS version detection + */ + iOS: parseFloat( + ('' + (/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec( navigator.userAgent ) || [0, ''])[1]) + .replace( 'undefined', '3_2' ).replace( '_', '.' ).replace( '_', '' ) + ) || FALSE + }; + + ; + function QTip( target, options, id, attr ) { + // Elements and ID + this.id = id; + this.target = target; + this.tooltip = NULL; + this.elements = {target: target}; + + // Internal constructs + this._id = NAMESPACE + '-' + id; + this.timers = {img: {}}; + this.options = options; + this.plugins = {}; + + // Cache object + this.cache = { + event: {}, + target: $(), + disabled: FALSE, + attr: attr, + onTooltip: FALSE, + lastClass: '' + }; + + // Set the initial flags + this.rendered = this.destroyed = this.disabled = this.waiting = + this.hiddenDuringWait = this.positioning = this.triggering = FALSE; + } + + PROTOTYPE = QTip.prototype; + + PROTOTYPE._when = function( deferreds ) { + return $.when.apply( $, deferreds ); + }; + + PROTOTYPE.render = function( show ) { + if ( this.rendered || this.destroyed ) { + return this; + } // If tooltip has already been rendered, exit + + var self = this, + options = this.options, + cache = this.cache, + elements = this.elements, + text = options.content.text, + title = options.content.title, + button = options.content.button, + posOptions = options.position, + namespace = '.' + this._id + ' ', + deferreds = [], + tooltip; + + // Add ARIA attributes to target + $.attr( this.target[0], 'aria-describedby', this._id ); + + // Create tooltip element + this.tooltip = elements.tooltip = tooltip = $( + '
', { + 'id': this._id, + 'class': [NAMESPACE, CLASS_DEFAULT, options.style.classes, NAMESPACE + '-pos-' + options.position.my.abbrev()].join( ' ' ), + 'width': options.style.width || '', + 'height': options.style.height || '', + 'tracking': posOptions.target === 'mouse' && posOptions.adjust.mouse, + + /* ARIA specific attributes */ + 'role': 'alert', + 'aria-live': 'polite', + 'aria-atomic': FALSE, + 'aria-describedby': this._id + '-content', + 'aria-hidden': TRUE + } + ) + .toggleClass( CLASS_DISABLED, this.disabled ) + .attr( ATTR_ID, this.id ) + .data( NAMESPACE, this ) + .appendTo( posOptions.container ) + .append( + // Create content element + elements.content = $( + '
', { + 'class': NAMESPACE + '-content', + 'id': this._id + '-content', + 'aria-atomic': TRUE + } + ) + ); + + // Set rendered flag and prevent redundant reposition calls for now + this.rendered = -1; + this.positioning = TRUE; + + // Create title... + if ( title ) { + + this._createTitle(); + + // Update title only if its not a callback (called in toggle if so) + if ( !$.isFunction( title ) ) { + deferreds.push( this._updateTitle( title, FALSE ) ); + } + } + + // Create button + if ( button ) { + this._createButton(); + } + + // Set proper rendered flag and update content if not a callback function (called in toggle) + if ( !$.isFunction( text ) ) { + deferreds.push( this._updateContent( text, FALSE ) ); + } + this.rendered = TRUE; + + // Setup widget classes + this._setWidget(); + + // Initialize 'render' plugins + $.each( + PLUGINS, function( name ) { + var instance; + if ( this.initialize === 'render' && (instance = this( self )) ) { + self.plugins[name] = instance; + } + } + ); + + // Unassign initial events and assign proper events + this._unassignEvents(); + this._assignEvents(); + + // When deferreds have completed + this._when( deferreds ).then( + function() { + // tooltiprender event + self._trigger( 'render' ); + + // Reset flags + self.positioning = FALSE; + + // Show tooltip if not hidden during wait period + if ( !self.hiddenDuringWait && (options.show.ready || show) ) { + self.toggle( TRUE, cache.event, FALSE ); + } + self.hiddenDuringWait = FALSE; + } + ); + + // Expose API + QTIP.api[this.id] = this; + + return this; + }; + + PROTOTYPE.destroy = function( immediate ) { + // Set flag the signify destroy is taking place to plugins + // and ensure it only gets destroyed once! + if ( this.destroyed ) { + return this.target; + } + + function process() { + if ( this.destroyed ) { + return; + } + this.destroyed = TRUE; + + var target = this.target, + title = target.attr( oldtitle ); + + // Destroy tooltip if rendered + if ( this.rendered ) { + this.tooltip.stop( 1, 0 ).find( '*' ).remove().end().remove(); + } + + // Destroy all plugins + $.each( + this.plugins, function( name ) { + this.destroy && this.destroy(); + } + ); + + // Clear timers and remove bound events + clearTimeout( this.timers.show ); + clearTimeout( this.timers.hide ); + this._unassignEvents(); + + // Remove api object and ARIA attributes + target.removeData( NAMESPACE ) + .removeAttr( ATTR_ID ) + .removeAttr( ATTR_HAS ) + .removeAttr( 'aria-describedby' ); + + // Reset old title attribute if removed + if ( this.options.suppress && title ) { + target.attr( 'title', title ).removeAttr( oldtitle ); + } + + // Remove qTip events associated with this API + this._unbind( target ); + + // Remove ID from used id objects, and delete object references + // for better garbage collection and leak protection + this.options = this.elements = this.cache = this.timers = + this.plugins = this.mouse = NULL; + + // Delete epoxsed API object + delete QTIP.api[this.id]; + } + + // If an immediate destory is needed + if ( (immediate !== TRUE || this.triggering === 'hide') && this.rendered ) { + this.tooltip.one( 'tooltiphidden', $.proxy( process, this ) ); + !this.triggering && this.hide(); + } + + // If we're not in the process of hiding... process + else { + process.call( this ); + } + + return this.target; + }; + + ; + function invalidOpt( a ) { + return a === NULL || $.type( a ) !== 'object'; + } + + function invalidContent( c ) { + return !( $.isFunction( c ) || (c && c.attr) || c.length || ($.type( c ) === 'object' && (c.jquery || c.then) )); + } + + // Option object sanitizer + function sanitizeOptions( opts ) { + var content, text, ajax, once; + + if ( invalidOpt( opts ) ) { + return FALSE; + } + + if ( invalidOpt( opts.metadata ) ) { + opts.metadata = {type: opts.metadata}; + } + + if ( 'content' in opts ) { + content = opts.content; + + if ( invalidOpt( content ) || content.jquery || content.done ) { + content = opts.content = { + text: (text = invalidContent( content ) ? FALSE : content) + }; + } + else { + text = content.text; + } + + // DEPRECATED - Old content.ajax plugin functionality + // Converts it into the proper Deferred syntax + if ( 'ajax' in content ) { + ajax = content.ajax; + once = ajax && ajax.once !== FALSE; + delete content.ajax; + + content.text = function( event, api ) { + var loading = text || $( this ).attr( api.options.content.attr ) || 'Loading...', + + deferred = $.ajax( + $.extend( {}, ajax, {context: api} ) + ) + .then( ajax.success, NULL, ajax.error ) + .then( + function( content ) { + if ( content && once ) { + api.set( 'content.text', content ); + } + return content; + }, + function( xhr, status, error ) { + if ( api.destroyed || xhr.status === 0 ) { + return; + } + api.set( 'content.text', status + ': ' + error ); + } + ); + + return !once ? (api.set( 'content.text', loading ), deferred) : loading; + }; + } + + if ( 'title' in content ) { + if ( !invalidOpt( content.title ) ) { + content.button = content.title.button; + content.title = content.title.text; + } + + if ( invalidContent( content.title || FALSE ) ) { + content.title = FALSE; + } + } + } + + if ( 'position' in opts && invalidOpt( opts.position ) ) { + opts.position = {my: opts.position, at: opts.position}; + } + + if ( 'show' in opts && invalidOpt( opts.show ) ) { + opts.show = opts.show.jquery ? {target: opts.show} : + opts.show === TRUE ? {ready: TRUE} : {event: opts.show}; + } + + if ( 'hide' in opts && invalidOpt( opts.hide ) ) { + opts.hide = opts.hide.jquery ? {target: opts.hide} : {event: opts.hide}; + } + + if ( 'style' in opts && invalidOpt( opts.style ) ) { + opts.style = {classes: opts.style}; + } + + // Sanitize plugin options + $.each( + PLUGINS, function() { + this.sanitize && this.sanitize( opts ); + } + ); + + return opts; + } + + // Setup builtin .set() option checks + CHECKS = PROTOTYPE.checks = { + builtin: { + // Core checks + '^id$': function( obj, o, v, prev ) { + var id = v === TRUE ? QTIP.nextid : v, + new_id = NAMESPACE + '-' + id; + + if ( id !== FALSE && id.length > 0 && !$( '#' + new_id ).length ) { + this._id = new_id; + + if ( this.rendered ) { + this.tooltip[0].id = this._id; + this.elements.content[0].id = this._id + '-content'; + this.elements.title[0].id = this._id + '-title'; + } + } + else { + obj[o] = prev; + } + }, + '^prerender': function( obj, o, v ) { + v && !this.rendered && this.render( this.options.show.ready ); + }, + + // Content checks + '^content.text$': function( obj, o, v ) { + this._updateContent( v ); + }, + '^content.attr$': function( obj, o, v, prev ) { + if ( this.options.content.text === this.target.attr( prev ) ) { + this._updateContent( this.target.attr( v ) ); + } + }, + '^content.title$': function( obj, o, v ) { + + // Remove title if content is null + if ( !v ) { + return this._removeTitle(); + } + + // If title isn't already created, create it now and update + v && !this.elements.title && this._createTitle(); + this._updateTitle( v ); + }, + '^content.button$': function( obj, o, v ) { + this._updateButton( v ); + }, + '^content.title.(text|button)$': function( obj, o, v ) { + this.set( 'content.' + o, v ); // Backwards title.text/button compat + }, + + // Position checks + '^position.(my|at)$': function( obj, o, v ) { + 'string' === typeof v && (obj[o] = new CORNER( v, o === 'at' )); + }, + '^position.container$': function( obj, o, v ) { + this.rendered && this.tooltip.appendTo( v ); + }, + + // Show checks + '^show.ready$': function( obj, o, v ) { + v && (!this.rendered && this.render( TRUE ) || this.toggle( TRUE )); + }, + + // Style checks + '^style.classes$': function( obj, o, v, p ) { + this.rendered && this.tooltip.removeClass( p ).addClass( v ); + }, + '^style.(width|height)': function( obj, o, v ) { + this.rendered && this.tooltip.css( o, v ); + }, + '^style.widget|content.title': function() { + this.rendered && this._setWidget(); + }, + '^style.def': function( obj, o, v ) { + this.rendered && this.tooltip.toggleClass( CLASS_DEFAULT, !!v ); + }, + + // Events check + '^events.(render|show|move|hide|focus|blur)$': function( obj, o, v ) { + this.rendered && this.tooltip[($.isFunction( v ) ? '' : 'un') + 'bind']( 'tooltip' + o, v ); + }, + + // Properties which require event reassignment + '^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)': function() { + if ( !this.rendered ) { + return; + } + + // Set tracking flag + var posOptions = this.options.position; + this.tooltip.attr( 'tracking', posOptions.target === 'mouse' && posOptions.adjust.mouse ); + + // Reassign events + this._unassignEvents(); + this._assignEvents(); + } + } + }; + + // Dot notation converter + function convertNotation( options, notation ) { + var i = 0, obj, option = options, + + // Split notation into array + levels = notation.split( '.' ); + + // Loop through + while ( option = option[levels[i++]] ) { + if ( i < levels.length ) { + obj = option; + } + } + + return [obj || options, levels.pop()]; + } + + PROTOTYPE.get = function( notation ) { + if ( this.destroyed ) { + return this; + } + + var o = convertNotation( this.options, notation.toLowerCase() ), + result = o[0][o[1]]; + + return result.precedance ? result.string() : result; + }; + + function setCallback( notation, args ) { + var category, rule, match; + + for ( category in this.checks ) { + for ( rule in this.checks[category] ) { + if ( match = (new RegExp( rule, 'i' )).exec( notation ) ) { + args.push( match ); + + if ( category === 'builtin' || this.plugins[category] ) { + this.checks[category][rule].apply( + this.plugins[category] || this, args + ); + } + } + } + } + } + + var rmove = /^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i, + rrender = /^prerender|show\.ready/i; + + PROTOTYPE.set = function( option, value ) { + if ( this.destroyed ) { + return this; + } + + var rendered = this.rendered, + reposition = FALSE, + options = this.options, + checks = this.checks, + name; + + // Convert singular option/value pair into object form + if ( 'string' === typeof option ) { + name = option; + option = {}; + option[name] = value; + } + else { + option = $.extend( {}, option ); + } + + // Set all of the defined options to their new values + $.each( + option, function( notation, value ) { + if ( rendered && rrender.test( notation ) ) { + delete option[notation]; + return; + } + + // Set new obj value + var obj = convertNotation( options, notation.toLowerCase() ), previous; + previous = obj[0][obj[1]]; + obj[0][obj[1]] = value && value.nodeType ? $( value ) : value; + + // Also check if we need to reposition + reposition = rmove.test( notation ) || reposition; + + // Set the new params for the callback + option[notation] = [obj[0], obj[1], value, previous]; + } + ); + + // Re-sanitize options + sanitizeOptions( options ); + + /* + * Execute any valid callbacks for the set options + * Also set positioning flag so we don't get loads of redundant repositioning calls. + */ + this.positioning = TRUE; + $.each( option, $.proxy( setCallback, this ) ); + this.positioning = FALSE; + + // Update position if needed + if ( this.rendered && this.tooltip[0].offsetWidth > 0 && reposition ) { + this.reposition( options.position.target === 'mouse' ? NULL : this.cache.event ); + } + + return this; + }; + + ; + PROTOTYPE._update = function( content, element, reposition ) { + var self = this, + cache = this.cache; + + // Make sure tooltip is rendered and content is defined. If not return + if ( !this.rendered || !content ) { + return FALSE; + } + + // Use function to parse content + if ( $.isFunction( content ) ) { + content = content.call( this.elements.target, cache.event, this ) || ''; + } + + // Handle deferred content + if ( $.isFunction( content.then ) ) { + cache.waiting = TRUE; + return content.then( + function( c ) { + cache.waiting = FALSE; + return self._update( c, element ); + }, NULL, function( e ) { + return self._update( e, element ); + } + ); + } + + // If content is null... return false + if ( content === FALSE || (!content && content !== '') ) { + return FALSE; + } + + // Append new content if its a DOM array and show it if hidden + if ( content.jquery && content.length > 0 ) { + element.empty().append( + content.css( {display: 'block', visibility: 'visible'} ) + ); + } + + // Content is a regular string, insert the new content + else { + element.html( content ); + } + + // Wait for content to be loaded, and reposition + return this._waitForContent( element ).then( + function( images ) { + if ( images.images && images.images.length && self.rendered && self.tooltip[0].offsetWidth > 0 ) { + self.reposition( cache.event, !images.length ); + } + } + ); + }; + + PROTOTYPE._waitForContent = function( element ) { + var cache = this.cache; + + // Set flag + cache.waiting = TRUE; + + // If imagesLoaded is included, ensure images have loaded and return promise + return ( $.fn.imagesLoaded ? element.imagesLoaded() : $.Deferred().resolve( [] ) ) + .done( + function() { + cache.waiting = FALSE; + } + ) + .promise(); + }; + + PROTOTYPE._updateContent = function( content, reposition ) { + this._update( content, this.elements.content, reposition ); + }; + + PROTOTYPE._updateTitle = function( content, reposition ) { + if ( this._update( content, this.elements.title, reposition ) === FALSE ) { + this._removeTitle( FALSE ); + } + }; + + PROTOTYPE._createTitle = function() { + var elements = this.elements, + id = this._id + '-title'; + + // Destroy previous title element, if present + if ( elements.titlebar ) { + this._removeTitle(); + } + + // Create title bar and title elements + elements.titlebar = $( + '
', { + 'class': NAMESPACE + '-titlebar ' + (this.options.style.widget ? createWidgetClass( 'header' ) : '') + } + ) + .append( + elements.title = $( + '
', { + 'id': id, + 'class': NAMESPACE + '-title', + 'aria-atomic': TRUE + } + ) + ) + .insertBefore( elements.content ) + + // Button-specific events + .delegate( + '.qtip-close', 'mousedown keydown mouseup keyup mouseout', function( event ) { + $( this ).toggleClass( + 'ui-state-active ui-state-focus', event.type.substr( -4 ) === 'down' + ); + } + ) + .delegate( + '.qtip-close', 'mouseover mouseout', function( event ) { + $( this ).toggleClass( 'ui-state-hover', event.type === 'mouseover' ); + } + ); + + // Create button if enabled + if ( this.options.content.button ) { + this._createButton(); + } + }; + + PROTOTYPE._removeTitle = function( reposition ) { + var elements = this.elements; + + if ( elements.title ) { + elements.titlebar.remove(); + elements.titlebar = elements.title = elements.button = NULL; + + // Reposition if enabled + if ( reposition !== FALSE ) { + this.reposition(); + } + } + }; + + ; + PROTOTYPE.reposition = function( event, effect ) { + if ( !this.rendered || this.positioning || this.destroyed ) { + return this; + } + + // Set positioning flag + this.positioning = TRUE; + + var cache = this.cache, + tooltip = this.tooltip, + posOptions = this.options.position, + target = posOptions.target, + my = posOptions.my, + at = posOptions.at, + viewport = posOptions.viewport, + container = posOptions.container, + adjust = posOptions.adjust, + method = adjust.method.split( ' ' ), + tooltipWidth = tooltip.outerWidth( FALSE ), + tooltipHeight = tooltip.outerHeight( FALSE ), + targetWidth = 0, + targetHeight = 0, + type = tooltip.css( 'position' ), + position = {left: 0, top: 0}, + visible = tooltip[0].offsetWidth > 0, + isScroll = event && event.type === 'scroll', + win = $( window ), + doc = container[0].ownerDocument, + mouse = this.mouse, + pluginCalculations, offset; + + // Check if absolute position was passed + if ( $.isArray( target ) && target.length === 2 ) { + // Force left top and set position + at = {x: LEFT, y: TOP}; + position = {left: target[0], top: target[1]}; + } + + // Check if mouse was the target + else if ( target === 'mouse' ) { + // Force left top to allow flipping + at = {x: LEFT, y: TOP}; + + // Use the cached mouse coordinates if available, or passed event has no coordinates + if ( mouse && mouse.pageX && (adjust.mouse || !event || !event.pageX) ) { + event = mouse; + } + + // If the passed event has no coordinates (such as a scroll event) + else if ( !event || !event.pageX ) { + // Use the mouse origin that caused the show event, if distance hiding is enabled + if ( (!adjust.mouse || this.options.show.distance) && cache.origin && cache.origin.pageX ) { + event = cache.origin; + } + + // Use cached event for resize/scroll events + else if ( !event || (event && (event.type === 'resize' || event.type === 'scroll')) ) { + event = cache.event; + } + } + + // Calculate body and container offset and take them into account below + if ( type !== 'static' ) { + position = container.offset(); + } + if ( doc.body.offsetWidth !== (window.innerWidth || doc.documentElement.clientWidth) ) { + offset = $( document.body ).offset(); + } + + // Use event coordinates for position + position = { + left: event.pageX - position.left + (offset && offset.left || 0), + top: event.pageY - position.top + (offset && offset.top || 0) + }; + + // Scroll events are a pain, some browsers + if ( adjust.mouse && isScroll && mouse ) { + position.left -= (mouse.scrollX || 0) - win.scrollLeft(); + position.top -= (mouse.scrollY || 0) - win.scrollTop(); + } + } + + // Target wasn't mouse or absolute... + else { + // Check if event targetting is being used + if ( target === 'event' ) { + if ( event && event.target && event.type !== 'scroll' && event.type !== 'resize' ) { + cache.target = $( event.target ); + } + else if ( !event.target ) { + cache.target = this.elements.target; + } + } + else if ( target !== 'event' ) { + cache.target = $( target.jquery ? target : this.elements.target ); + } + target = cache.target; + + // Parse the target into a jQuery object and make sure there's an element present + target = $( target ).eq( 0 ); + if ( target.length === 0 ) { + return this; + } + + // Check if window or document is the target + else if ( target[0] === document || target[0] === window ) { + targetWidth = BROWSER.iOS ? window.innerWidth : target.width(); + targetHeight = BROWSER.iOS ? window.innerHeight : target.height(); + + if ( target[0] === window ) { + position = { + top: (viewport || target).scrollTop(), + left: (viewport || target).scrollLeft() + }; + } + } + + // Check if the target is an element + else if ( PLUGINS.imagemap && target.is( 'area' ) ) { + pluginCalculations = PLUGINS.imagemap( + this, target, at, PLUGINS.viewport ? method : FALSE + ); + } + + // Check if the target is an SVG element + else if ( PLUGINS.svg && target && target[0].ownerSVGElement ) { + pluginCalculations = PLUGINS.svg( this, target, at, PLUGINS.viewport ? method : FALSE ); + } + + // Otherwise use regular jQuery methods + else { + targetWidth = target.outerWidth( FALSE ); + targetHeight = target.outerHeight( FALSE ); + position = target.offset(); + } + + // Parse returned plugin values into proper variables + if ( pluginCalculations ) { + targetWidth = pluginCalculations.width; + targetHeight = pluginCalculations.height; + offset = pluginCalculations.offset; + position = pluginCalculations.position; + } + + // Adjust position to take into account offset parents + position = this.reposition.offset( target, position, container ); + + // Adjust for position.fixed tooltips (and also iOS scroll bug in v3.2-4.0 & v4.3-4.3.2) + if ( (BROWSER.iOS > 3.1 && BROWSER.iOS < 4.1) || + (BROWSER.iOS >= 4.3 && BROWSER.iOS < 4.33) || + (!BROWSER.iOS && type === 'fixed') + ) { + position.left -= win.scrollLeft(); + position.top -= win.scrollTop(); + } + + // Adjust position relative to target + if ( !pluginCalculations || (pluginCalculations && pluginCalculations.adjustable !== FALSE) ) { + position.left += at.x === RIGHT ? targetWidth : at.x === CENTER ? targetWidth / 2 : 0; + position.top += at.y === BOTTOM ? targetHeight : at.y === CENTER ? targetHeight / 2 : 0; + } + } + + // Adjust position relative to tooltip + position.left += adjust.x + (my.x === RIGHT ? -tooltipWidth : my.x === CENTER ? -tooltipWidth / 2 : 0); + position.top += adjust.y + (my.y === BOTTOM ? -tooltipHeight : my.y === CENTER ? -tooltipHeight / 2 : 0); + + // Use viewport adjustment plugin if enabled + if ( PLUGINS.viewport ) { + position.adjusted = PLUGINS.viewport( + this, position, posOptions, targetWidth, targetHeight, tooltipWidth, tooltipHeight + ); + + // Apply offsets supplied by positioning plugin (if used) + if ( offset && position.adjusted.left ) { + position.left += offset.left; + } + if ( offset && position.adjusted.top ) { + position.top += offset.top; + } + } + + // Viewport adjustment is disabled, set values to zero + else { + position.adjusted = {left: 0, top: 0}; + } + + // tooltipmove event + if ( !this._trigger( 'move', [position, viewport.elem || viewport], event ) ) { + return this; + } + delete position.adjusted; + + // If effect is disabled, target it mouse, no animation is defined or positioning gives NaN out, set CSS directly + if ( effect === FALSE || !visible || isNaN( position.left ) || isNaN( position.top ) || target === 'mouse' || !$.isFunction( posOptions.effect ) ) { + tooltip.css( position ); + } + + // Use custom function if provided + else if ( $.isFunction( posOptions.effect ) ) { + posOptions.effect.call( tooltip, this, $.extend( {}, position ) ); + tooltip.queue( + function( next ) { + // Reset attributes to avoid cross-browser rendering bugs + $( this ).css( {opacity: '', height: ''} ); + if ( BROWSER.ie ) { + this.style.removeAttribute( 'filter' ); + } + + next(); + } + ); + } + + // Set positioning flag + this.positioning = FALSE; + + return this; + }; + + // Custom (more correct for qTip!) offset calculator + PROTOTYPE.reposition.offset = function( elem, pos, container ) { + if ( !container[0] ) { + return pos; + } + + var ownerDocument = $( elem[0].ownerDocument ), + quirks = !!BROWSER.ie && document.compatMode !== 'CSS1Compat', + parent = container[0], + scrolled, position, parentOffset, overflow; + + function scroll( e, i ) { + pos.left += i * e.scrollLeft(); + pos.top += i * e.scrollTop(); + } + + // Compensate for non-static containers offset + do { + if ( (position = $.css( parent, 'position' )) !== 'static' ) { + if ( position === 'fixed' ) { + parentOffset = parent.getBoundingClientRect(); + scroll( ownerDocument, -1 ); + } + else { + parentOffset = $( parent ).position(); + parentOffset.left += (parseFloat( $.css( parent, 'borderLeftWidth' ) ) || 0); + parentOffset.top += (parseFloat( $.css( parent, 'borderTopWidth' ) ) || 0); + } + + pos.left -= parentOffset.left + (parseFloat( $.css( parent, 'marginLeft' ) ) || 0); + pos.top -= parentOffset.top + (parseFloat( $.css( parent, 'marginTop' ) ) || 0); + + // If this is the first parent element with an overflow of "scroll" or "auto", store it + if ( !scrolled && (overflow = $.css( + parent, 'overflow' + )) !== 'hidden' && overflow !== 'visible' ) { + scrolled = $( parent ); + } + } + } + while ( (parent = parent.offsetParent) ); + + // Compensate for containers scroll if it also has an offsetParent (or in IE quirks mode) + if ( scrolled && (scrolled[0] !== ownerDocument[0] || quirks) ) { + scroll( scrolled, 1 ); + } + + return pos; + }; + + // Corner class + var C = (CORNER = PROTOTYPE.reposition.Corner = function( corner, forceY ) { + corner = ('' + corner).replace( /([A-Z])/, ' $1' ).replace( /middle/gi, CENTER ).toLowerCase(); + this.x = (corner.match( /left|right/i ) || corner.match( /center/ ) || ['inherit'])[0].toLowerCase(); + this.y = (corner.match( /top|bottom|center/i ) || ['inherit'])[0].toLowerCase(); + this.forceY = !!forceY; + + var f = corner.charAt( 0 ); + this.precedance = (f === 't' || f === 'b' ? Y : X); + }).prototype; + + C.invert = function( z, center ) { + this[z] = this[z] === LEFT ? RIGHT : this[z] === RIGHT ? LEFT : center || this[z]; + }; + + C.string = function() { + var x = this.x, y = this.y; + return x === y ? x : this.precedance === Y || (this.forceY && y !== 'center') ? y + ' ' + x : x + ' ' + y; + }; + + C.abbrev = function() { + var result = this.string().split( ' ' ); + return result[0].charAt( 0 ) + (result[1] && result[1].charAt( 0 ) || ''); + }; + + C.clone = function() { + return new CORNER( this.string(), this.forceY ); + }; + ; + PROTOTYPE.toggle = function( state, event ) { + var cache = this.cache, + options = this.options, + tooltip = this.tooltip; + + // Try to prevent flickering when tooltip overlaps show element + if ( event ) { + if ( (/over|enter/).test( event.type ) && (/out|leave/).test( cache.event.type ) && + options.show.target.add( event.target ).length === options.show.target.length && + tooltip.has( event.relatedTarget ).length ) { + return this; + } + + // Cache event + cache.event = cloneEvent( event ); + } + + // If we're currently waiting and we've just hidden... stop it + this.waiting && !state && (this.hiddenDuringWait = TRUE); + + // Render the tooltip if showing and it isn't already + if ( !this.rendered ) { + return state ? this.render( 1 ) : this; + } + else if ( this.destroyed || this.disabled ) { + return this; + } + + var type = state ? 'show' : 'hide', + opts = this.options[type], + otherOpts = this.options[!state ? 'show' : 'hide'], + posOptions = this.options.position, + contentOptions = this.options.content, + width = this.tooltip.css( 'width' ), + visible = this.tooltip.is( ':visible' ), + animate = state || opts.target.length === 1, + sameTarget = !event || opts.target.length < 2 || cache.target[0] === event.target, + identicalState, allow, showEvent, delay, after; + + // Detect state if valid one isn't provided + if ( (typeof state).search( 'boolean|number' ) ) { + state = !visible; + } + + // Check if the tooltip is in an identical state to the new would-be state + identicalState = !tooltip.is( ':animated' ) && visible === state && sameTarget; + + // Fire tooltip(show/hide) event and check if destroyed + allow = !identicalState ? !!this._trigger( type, [90] ) : NULL; + + // Check to make sure the tooltip wasn't destroyed in the callback + if ( this.destroyed ) { + return this; + } + + // If the user didn't stop the method prematurely and we're showing the tooltip, focus it + if ( allow !== FALSE && state ) { + this.focus( event ); + } + + // If the state hasn't changed or the user stopped it, return early + if ( !allow || identicalState ) { + return this; + } + + // Set ARIA hidden attribute + $.attr( tooltip[0], 'aria-hidden', !!!state ); + + // Execute state specific properties + if ( state ) { + // Store show origin coordinates + cache.origin = cloneEvent( this.mouse ); + + // Update tooltip content & title if it's a dynamic function + if ( $.isFunction( contentOptions.text ) ) { + this._updateContent( contentOptions.text, FALSE ); + } + if ( $.isFunction( contentOptions.title ) ) { + this._updateTitle( contentOptions.title, FALSE ); + } + + // Cache mousemove events for positioning purposes (if not already tracking) + if ( !trackingBound && posOptions.target === 'mouse' && posOptions.adjust.mouse ) { + $( document ).bind( 'mousemove.' + NAMESPACE, this._storeMouse ); + trackingBound = TRUE; + } + + // Update the tooltip position (set width first to prevent viewport/max-width issues) + if ( !width ) { + tooltip.css( 'width', tooltip.outerWidth( FALSE ) ); + } + this.reposition( event, arguments[2] ); + if ( !width ) { + tooltip.css( 'width', '' ); + } + + // Hide other tooltips if tooltip is solo + if ( !!opts.solo ) { + (typeof opts.solo === 'string' ? $( opts.solo ) : $( SELECTOR, opts.solo )) + .not( tooltip ).not( opts.target ).qtip( 'hide', $.Event( 'tooltipsolo' ) ); + } + } + else { + // Clear show timer if we're hiding + clearTimeout( this.timers.show ); + + // Remove cached origin on hide + delete cache.origin; + + // Remove mouse tracking event if not needed (all tracking qTips are hidden) + if ( trackingBound && !$( + SELECTOR + '[tracking="true"]:visible', opts.solo + ).not( tooltip ).length ) { + $( document ).unbind( 'mousemove.' + NAMESPACE ); + trackingBound = FALSE; + } + + // Blur the tooltip + this.blur( event ); + } + + // Define post-animation, state specific properties + after = $.proxy( + function() { + if ( state ) { + // Prevent antialias from disappearing in IE by removing filter + if ( BROWSER.ie ) { + tooltip[0].style.removeAttribute( 'filter' ); + } + + // Remove overflow setting to prevent tip bugs + tooltip.css( 'overflow', '' ); + + // Autofocus elements if enabled + if ( 'string' === typeof opts.autofocus ) { + $( this.options.show.autofocus, tooltip ).focus(); + } + + // If set, hide tooltip when inactive for delay period + this.options.show.target.trigger( 'qtip-' + this.id + '-inactive' ); + } + else { + // Reset CSS states + tooltip.css( + { + display: '', + visibility: '', + opacity: '', + left: '', + top: '' + } + ); + } + + // tooltipvisible/tooltiphidden events + this._trigger( state ? 'visible' : 'hidden' ); + }, this + ); + + // If no effect type is supplied, use a simple toggle + if ( opts.effect === FALSE || animate === FALSE ) { + tooltip[type](); + after(); + } + + // Use custom function if provided + else if ( $.isFunction( opts.effect ) ) { + tooltip.stop( 1, 1 ); + opts.effect.call( tooltip, this ); + tooltip.queue( + 'fx', function( n ) { + after(); + n(); + } + ); + } + + // Use basic fade function by default + else { + tooltip.fadeTo( 90, state ? 1 : 0, after ); + } + + // If inactive hide method is set, active it + if ( state ) { + opts.target.trigger( 'qtip-' + this.id + '-inactive' ); + } + + return this; + }; + + PROTOTYPE.show = function( event ) { + return this.toggle( TRUE, event ); + }; + + PROTOTYPE.hide = function( event ) { + return this.toggle( FALSE, event ); + }; + + ; + PROTOTYPE.focus = function( event ) { + if ( !this.rendered || this.destroyed ) { + return this; + } + + var qtips = $( SELECTOR ), + tooltip = this.tooltip, + curIndex = parseInt( tooltip[0].style.zIndex, 10 ), + newIndex = QTIP.zindex + qtips.length, + focusedElem; + + // Only update the z-index if it has changed and tooltip is not already focused + if ( !tooltip.hasClass( CLASS_FOCUS ) ) { + // tooltipfocus event + if ( this._trigger( 'focus', [newIndex], event ) ) { + // Only update z-index's if they've changed + if ( curIndex !== newIndex ) { + // Reduce our z-index's and keep them properly ordered + qtips.each( + function() { + if ( this.style.zIndex > curIndex ) { + this.style.zIndex = this.style.zIndex - 1; + } + } + ); + + // Fire blur event for focused tooltip + qtips.filter( '.' + CLASS_FOCUS ).qtip( 'blur', event ); + } + + // Set the new z-index + tooltip.addClass( CLASS_FOCUS )[0].style.zIndex = newIndex; + } + } + + return this; + }; + + PROTOTYPE.blur = function( event ) { + if ( !this.rendered || this.destroyed ) { + return this; + } + + // Set focused status to FALSE + this.tooltip.removeClass( CLASS_FOCUS ); + + // tooltipblur event + this._trigger( 'blur', [this.tooltip.css( 'zIndex' )], event ); + + return this; + }; + + ; + PROTOTYPE.disable = function( state ) { + if ( this.destroyed ) { + return this; + } + + // If 'toggle' is passed, toggle the current state + if ( state === 'toggle' ) { + state = !(this.rendered ? this.tooltip.hasClass( CLASS_DISABLED ) : this.disabled); + } + + // Disable if no state passed + else if ( 'boolean' !== typeof state ) { + state = TRUE; + } + + if ( this.rendered ) { + this.tooltip.toggleClass( CLASS_DISABLED, state ) + .attr( 'aria-disabled', state ); + } + + this.disabled = !!state; + + return this; + }; + + PROTOTYPE.enable = function() { + return this.disable( FALSE ); + }; + + ; + PROTOTYPE._createButton = function() { + var self = this, + elements = this.elements, + tooltip = elements.tooltip, + button = this.options.content.button, + isString = typeof button === 'string', + close = isString ? button : 'Close tooltip'; + + if ( elements.button ) { + elements.button.remove(); + } + + // Use custom button if one was supplied by user, else use default + if ( button.jquery ) { + elements.button = button; + } + else { + elements.button = $( + '', { + 'class': 'qtip-close ' + (this.options.style.widget ? '' : NAMESPACE + '-icon'), + 'title': close, + 'aria-label': close + } + ) + .prepend( + $( + '', { + 'class': 'ui-icon ui-icon-close', + 'html': '×' + } + ) + ); + } + + // Create button and setup attributes + elements.button.appendTo( elements.titlebar || tooltip ) + .attr( 'role', 'button' ) + .click( + function( event ) { + if ( !tooltip.hasClass( CLASS_DISABLED ) ) { + self.hide( event ); + } + return FALSE; + } + ); + }; + + PROTOTYPE._updateButton = function( button ) { + // Make sure tooltip is rendered and if not, return + if ( !this.rendered ) { + return FALSE; + } + + var elem = this.elements.button; + if ( button ) { + this._createButton(); + } + else { + elem.remove(); + } + }; + + ;// Widget class creator + function createWidgetClass( cls ) { + return WIDGET.concat( '' ).join( cls ? '-' + cls + ' ' : ' ' ); + } + + // Widget class setter method + PROTOTYPE._setWidget = function() { + var on = this.options.style.widget, + elements = this.elements, + tooltip = elements.tooltip, + disabled = tooltip.hasClass( CLASS_DISABLED ); + + tooltip.removeClass( CLASS_DISABLED ); + CLASS_DISABLED = on ? 'ui-state-disabled' : 'qtip-disabled'; + tooltip.toggleClass( CLASS_DISABLED, disabled ); + + tooltip.toggleClass( 'ui-helper-reset ' + createWidgetClass(), on ).toggleClass( + CLASS_DEFAULT, this.options.style.def && !on + ); + + if ( elements.content ) { + elements.content.toggleClass( createWidgetClass( 'content' ), on ); + } + if ( elements.titlebar ) { + elements.titlebar.toggleClass( createWidgetClass( 'header' ), on ); + } + if ( elements.button ) { + elements.button.toggleClass( NAMESPACE + '-icon', !on ); + } + }; + ; + function cloneEvent( event ) { + return event && { + type: event.type, + pageX: event.pageX, + pageY: event.pageY, + target: event.target, + relatedTarget: event.relatedTarget, + scrollX: event.scrollX || window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft, + scrollY: event.scrollY || window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop + } || {}; + } + + function delay( callback, duration ) { + // If tooltip has displayed, start hide timer + if ( duration > 0 ) { + return setTimeout( + $.proxy( callback, this ), duration + ); + } + else { + callback.call( this ); + } + } + + function showMethod( event ) { + if ( this.tooltip.hasClass( CLASS_DISABLED ) ) { + return FALSE; + } + + // Clear hide timers + clearTimeout( this.timers.show ); + clearTimeout( this.timers.hide ); + + // Start show timer + this.timers.show = delay.call( + this, + function() { + this.toggle( TRUE, event ); + }, + this.options.show.delay + ); + } + + function hideMethod( event ) { + if ( this.tooltip.hasClass( CLASS_DISABLED ) ) { + return FALSE; + } + + // Check if new target was actually the tooltip element + var relatedTarget = $( event.relatedTarget ), + ontoTooltip = relatedTarget.closest( SELECTOR )[0] === this.tooltip[0], + ontoTarget = relatedTarget[0] === this.options.show.target[0]; + + // Clear timers and stop animation queue + clearTimeout( this.timers.show ); + clearTimeout( this.timers.hide ); + + // Prevent hiding if tooltip is fixed and event target is the tooltip. + // Or if mouse positioning is enabled and cursor momentarily overlaps + if ( this !== relatedTarget[0] && + (this.options.position.target === 'mouse' && ontoTooltip) || + (this.options.hide.fixed && ( + (/mouse(out|leave|move)/).test( event.type ) && (ontoTooltip || ontoTarget)) + ) ) { + try { + event.preventDefault(); + event.stopImmediatePropagation(); + } catch ( e ) { + } + + return; + } + + // If tooltip has displayed, start hide timer + this.timers.hide = delay.call( + this, + function() { + this.toggle( FALSE, event ); + }, + this.options.hide.delay, + this + ); + } + + function inactiveMethod( event ) { + if ( this.tooltip.hasClass( CLASS_DISABLED ) || !this.options.hide.inactive ) { + return FALSE; + } + + // Clear timer + clearTimeout( this.timers.inactive ); + + this.timers.inactive = delay.call( + this, + function() { + this.hide( event ); + }, + this.options.hide.inactive + ); + } + + function repositionMethod( event ) { + if ( this.rendered && this.tooltip[0].offsetWidth > 0 ) { + this.reposition( event ); + } + } + + // Store mouse coordinates + PROTOTYPE._storeMouse = function( event ) { + (this.mouse = cloneEvent( event )).type = 'mousemove'; + }; + + // Bind events + PROTOTYPE._bind = function( targets, events, method, suffix, context ) { + var ns = '.' + this._id + (suffix ? '-' + suffix : ''); + events.length && $( targets ).bind( + (events.split ? events : events.join( ns + ' ' )) + ns, + $.proxy( method, context || this ) + ); + }; + PROTOTYPE._unbind = function( targets, suffix ) { + $( targets ).unbind( '.' + this._id + (suffix ? '-' + suffix : '') ); + }; + + // Apply common event handlers using delegate (avoids excessive .bind calls!) + var ns = '.' + NAMESPACE; + + function delegate( selector, events, method ) { + $( document.body ).delegate( + selector, + (events.split ? events : events.join( ns + ' ' )) + ns, + function() { + var api = QTIP.api[$.attr( this, ATTR_ID )]; + api && !api.disabled && method.apply( api, arguments ); + } + ); + } + + $( + function() { + delegate( + SELECTOR, ['mouseenter', 'mouseleave'], function( event ) { + var state = event.type === 'mouseenter', + tooltip = $( event.currentTarget ), + target = $( event.relatedTarget || event.target ), + options = this.options; + + // On mouseenter... + if ( state ) { + // Focus the tooltip on mouseenter (z-index stacking) + this.focus( event ); + + // Clear hide timer on tooltip hover to prevent it from closing + tooltip.hasClass( CLASS_FIXED ) && !tooltip.hasClass( CLASS_DISABLED ) && clearTimeout( this.timers.hide ); + } + + // On mouseleave... + else { + // Hide when we leave the tooltip and not onto the show target (if a hide event is set) + if ( options.position.target === 'mouse' && options.hide.event && + options.show.target && !target.closest( options.show.target[0] ).length ) { + this.hide( event ); + } + } + + // Add hover class + tooltip.toggleClass( CLASS_HOVER, state ); + } + ); + + // Define events which reset the 'inactive' event handler + delegate( '[' + ATTR_ID + ']', INACTIVE_EVENTS, inactiveMethod ); + } + ); + + // Event trigger + PROTOTYPE._trigger = function( type, args, event ) { + var callback = $.Event( 'tooltip' + type ); + callback.originalEvent = (event && $.extend( {}, event )) || this.cache.event || NULL; + + this.triggering = type; + this.tooltip.trigger( callback, [this].concat( args || [] ) ); + this.triggering = FALSE; + + return !callback.isDefaultPrevented(); + }; + + PROTOTYPE._bindEvents = function( showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod ) { + // If hide and show targets are the same... + if ( hideTarget.add( showTarget ).length === hideTarget.length ) { + var toggleEvents = []; + + // Filter identical show/hide events + hideEvents = $.map( + hideEvents, function( type ) { + var showIndex = $.inArray( type, showEvents ); + + // Both events are identical, remove from both hide and show events + // and append to toggleEvents + if ( showIndex > -1 ) { + toggleEvents.push( showEvents.splice( showIndex, 1 )[0] ); + return; + } + + return type; + } + ); + + // Toggle events are special case of identical show/hide events, which happen in sequence + toggleEvents.length && this._bind( + showTarget, toggleEvents, function( event ) { + var state = this.rendered ? this.tooltip[0].offsetWidth > 0 : false; + (state ? hideMethod : showMethod).call( this, event ); + } + ); + } + + // Apply show/hide/toggle events + this._bind( showTarget, showEvents, showMethod ); + this._bind( hideTarget, hideEvents, hideMethod ); + }; + + PROTOTYPE._assignInitialEvents = function( event ) { + var options = this.options, + showTarget = options.show.target, + hideTarget = options.hide.target, + showEvents = options.show.event ? $.trim( '' + options.show.event ).split( ' ' ) : [], + hideEvents = options.hide.event ? $.trim( '' + options.hide.event ).split( ' ' ) : []; + + /* + * Make sure hoverIntent functions properly by using mouseleave as a hide event if + * mouseenter/mouseout is used for show.event, even if it isn't in the users options. + */ + if ( /mouse(over|enter)/i.test( options.show.event ) && !/mouse(out|leave)/i.test( options.hide.event ) ) { + hideEvents.push( 'mouseleave' ); + } + + /* + * Also make sure initial mouse targetting works correctly by caching mousemove coords + * on show targets before the tooltip has rendered. Also set onTarget when triggered to + * keep mouse tracking working. + */ + this._bind( + showTarget, 'mousemove', function( event ) { + this._storeMouse( event ); + this.cache.onTarget = TRUE; + } + ); + + // Define hoverIntent function + function hoverIntent( event ) { + // Only continue if tooltip isn't disabled + if ( this.disabled || this.destroyed ) { + return FALSE; + } + + // Cache the event data + this.cache.event = cloneEvent( event ); + this.cache.target = event ? $( event.target ) : [undefined]; + + // Start the event sequence + clearTimeout( this.timers.show ); + this.timers.show = delay.call( + this, + function() { + this.render( typeof event === 'object' || options.show.ready ); + }, + options.show.delay + ); + } + + // Filter and bind events + this._bindEvents( + showEvents, hideEvents, showTarget, hideTarget, hoverIntent, function() { + clearTimeout( this.timers.show ); + } + ); + + // Prerendering is enabled, create tooltip now + if ( options.show.ready || options.prerender ) { + hoverIntent.call( this, event ); + } + }; + + // Event assignment method + PROTOTYPE._assignEvents = function() { + var self = this, + options = this.options, + posOptions = options.position, + + tooltip = this.tooltip, + showTarget = options.show.target, + hideTarget = options.hide.target, + containerTarget = posOptions.container, + viewportTarget = posOptions.viewport, + documentTarget = $( document ), + bodyTarget = $( document.body ), + windowTarget = $( window ), + + showEvents = options.show.event ? $.trim( '' + options.show.event ).split( ' ' ) : [], + hideEvents = options.hide.event ? $.trim( '' + options.hide.event ).split( ' ' ) : []; + + + // Assign passed event callbacks + $.each( + options.events, function( name, callback ) { + self._bind( + tooltip, name === 'toggle' ? ['tooltipshow', 'tooltiphide'] : ['tooltip' + name], + callback, null, tooltip + ); + } + ); + + // Hide tooltips when leaving current window/frame (but not select/option elements) + if ( /mouse(out|leave)/i.test( options.hide.event ) && options.hide.leave === 'window' ) { + this._bind( + documentTarget, ['mouseout', 'blur'], function( event ) { + if ( !/select|option/.test( event.target.nodeName ) && !event.relatedTarget ) { + this.hide( event ); + } + } + ); + } + + // Enable hide.fixed by adding appropriate class + if ( options.hide.fixed ) { + hideTarget = hideTarget.add( tooltip.addClass( CLASS_FIXED ) ); + } + + /* + * Make sure hoverIntent functions properly by using mouseleave to clear show timer if + * mouseenter/mouseout is used for show.event, even if it isn't in the users options. + */ + else if ( /mouse(over|enter)/i.test( options.show.event ) ) { + this._bind( + hideTarget, 'mouseleave', function() { + clearTimeout( this.timers.show ); + } + ); + } + + // Hide tooltip on document mousedown if unfocus events are enabled + if ( ('' + options.hide.event).indexOf( 'unfocus' ) > -1 ) { + this._bind( + containerTarget.closest( 'html' ), ['mousedown', 'touchstart'], function( event ) { + var elem = $( event.target ), + enabled = this.rendered && !this.tooltip.hasClass( CLASS_DISABLED ) && this.tooltip[0].offsetWidth > 0, + isAncestor = elem.parents( SELECTOR ).filter( this.tooltip[0] ).length > 0; + + if ( elem[0] !== this.target[0] && elem[0] !== this.tooltip[0] && !isAncestor && !this.target.has( elem[0] ).length && enabled + ) { + this.hide( event ); + } + } + ); + } + + // Check if the tooltip hides when inactive + if ( 'number' === typeof options.hide.inactive ) { + // Bind inactive method to show target(s) as a custom event + this._bind( showTarget, 'qtip-' + this.id + '-inactive', inactiveMethod ); + + // Define events which reset the 'inactive' event handler + this._bind( hideTarget.add( tooltip ), QTIP.inactiveEvents, inactiveMethod, '-inactive' ); + } + + // Filter and bind events + this._bindEvents( showEvents, hideEvents, showTarget, hideTarget, showMethod, hideMethod ); + + // Mouse movement bindings + this._bind( + showTarget.add( tooltip ), 'mousemove', function( event ) { + // Check if the tooltip hides when mouse is moved a certain distance + if ( 'number' === typeof options.hide.distance ) { + var origin = this.cache.origin || {}, + limit = this.options.hide.distance, + abs = Math.abs; + + // Check if the movement has gone beyond the limit, and hide it if so + if ( abs( event.pageX - origin.pageX ) >= limit || abs( event.pageY - origin.pageY ) >= limit ) { + this.hide( event ); + } + } + + // Cache mousemove coords on show targets + this._storeMouse( event ); + } + ); + + // Mouse positioning events + if ( posOptions.target === 'mouse' ) { + // If mouse adjustment is on... + if ( posOptions.adjust.mouse ) { + // Apply a mouseleave event so we don't get problems with overlapping + if ( options.hide.event ) { + // Track if we're on the target or not + this._bind( + showTarget, ['mouseenter', 'mouseleave'], function( event ) { + this.cache.onTarget = event.type === 'mouseenter'; + } + ); + } + + // Update tooltip position on mousemove + this._bind( + documentTarget, 'mousemove', function( event ) { + // Update the tooltip position only if the tooltip is visible and adjustment is enabled + if ( this.rendered && this.cache.onTarget && !this.tooltip.hasClass( CLASS_DISABLED ) && this.tooltip[0].offsetWidth > 0 ) { + this.reposition( event ); + } + } + ); + } + } + + // Adjust positions of the tooltip on window resize if enabled + if ( posOptions.adjust.resize || viewportTarget.length ) { + this._bind( + $.event.special.resize ? viewportTarget : windowTarget, 'resize', repositionMethod + ); + } + + // Adjust tooltip position on scroll of the window or viewport element if present + if ( posOptions.adjust.scroll ) { + this._bind( windowTarget.add( posOptions.container ), 'scroll', repositionMethod ); + } + }; + + // Un-assignment method + PROTOTYPE._unassignEvents = function() { + var targets = [ + this.options.show.target[0], + this.options.hide.target[0], + this.rendered && this.tooltip[0], + this.options.position.container[0], + this.options.position.viewport[0], + this.options.position.container.closest( 'html' )[0], // unfocus + window, + document + ]; + + this._unbind( + $( [] ).pushStack( + $.grep( + targets, function( i ) { + return typeof i === 'object'; + } + ) + ) + ); + }; + + ;// Initialization method + function init( elem, id, opts ) { + var obj, posOptions, attr, config, title, + + // Setup element references + docBody = $( document.body ), + + // Use document body instead of document element if needed + newTarget = elem[0] === document ? docBody : elem, + + // Grab metadata from element if plugin is present + metadata = (elem.metadata) ? elem.metadata( opts.metadata ) : NULL, + + // If metadata type if HTML5, grab 'name' from the object instead, or use the regular data object otherwise + metadata5 = opts.metadata.type === 'html5' && metadata ? metadata[opts.metadata.name] : NULL, + + // Grab data from metadata.name (or data-qtipopts as fallback) using .data() method, + html5 = elem.data( opts.metadata.name || 'qtipopts' ); + + // If we don't get an object returned attempt to parse it manualyl without parseJSON + try { + html5 = typeof html5 === 'string' ? $.parseJSON( html5 ) : html5; + } catch ( e ) { + } + + // Merge in and sanitize metadata + config = $.extend( + TRUE, {}, QTIP.defaults, opts, + typeof html5 === 'object' ? sanitizeOptions( html5 ) : NULL, + sanitizeOptions( metadata5 || metadata ) + ); + + // Re-grab our positioning options now we've merged our metadata and set id to passed value + posOptions = config.position; + config.id = id; + + // Setup missing content if none is detected + if ( 'boolean' === typeof config.content.text ) { + attr = elem.attr( config.content.attr ); + + // Grab from supplied attribute if available + if ( config.content.attr !== FALSE && attr ) { + config.content.text = attr; + } + + // No valid content was found, abort render + else { + return FALSE; + } + } + + // Setup target options + if ( !posOptions.container.length ) { + posOptions.container = docBody; + } + if ( posOptions.target === FALSE ) { + posOptions.target = newTarget; + } + if ( config.show.target === FALSE ) { + config.show.target = newTarget; + } + if ( config.show.solo === TRUE ) { + config.show.solo = posOptions.container.closest( 'body' ); + } + if ( config.hide.target === FALSE ) { + config.hide.target = newTarget; + } + if ( config.position.viewport === TRUE ) { + config.position.viewport = posOptions.container; + } + + // Ensure we only use a single container + posOptions.container = posOptions.container.eq( 0 ); + + // Convert position corner values into x and y strings + posOptions.at = new CORNER( posOptions.at, TRUE ); + posOptions.my = new CORNER( posOptions.my ); + + // Destroy previous tooltip if overwrite is enabled, or skip element if not + if ( elem.data( NAMESPACE ) ) { + if ( config.overwrite ) { + elem.qtip( 'destroy', true ); + } + else if ( config.overwrite === FALSE ) { + return FALSE; + } + } + + // Add has-qtip attribute + elem.attr( ATTR_HAS, id ); + + // Remove title attribute and store it if present + if ( config.suppress && (title = elem.attr( 'title' )) ) { + // Final attr call fixes event delegatiom and IE default tooltip showing problem + elem.removeAttr( 'title' ).attr( oldtitle, title ).attr( 'title', '' ); + } + + // Initialize the tooltip and add API reference + obj = new QTip( elem, config, id, !!attr ); + elem.data( NAMESPACE, obj ); + + // Catch remove/removeqtip events on target element to destroy redundant tooltip + elem.one( + 'remove.qtip-' + id + ' removeqtip.qtip-' + id, function() { + var api; + if ( (api = $( this ).data( NAMESPACE )) ) { + api.destroy( true ); + } + } + ); + + return obj; + } + + // jQuery $.fn extension method + QTIP = $.fn.qtip = function( options, notation, newValue ) { + var command = ('' + options).toLowerCase(), // Parse command + returned = NULL, + args = $.makeArray( arguments ).slice( 1 ), + event = args[args.length - 1], + opts = this[0] ? $.data( this[0], NAMESPACE ) : NULL; + + // Check for API request + if ( (!arguments.length && opts) || command === 'api' ) { + return opts; + } + + // Execute API command if present + else if ( 'string' === typeof options ) { + this.each( + function() { + var api = $.data( this, NAMESPACE ); + if ( !api ) { + return TRUE; + } + + // Cache the event if possible + if ( event && event.timeStamp ) { + api.cache.event = event; + } + + // Check for specific API commands + if ( notation && (command === 'option' || command === 'options') ) { + if ( newValue !== undefined || $.isPlainObject( notation ) ) { + api.set( notation, newValue ); + } + else { + returned = api.get( notation ); + return FALSE; + } + } + + // Execute API command + else if ( api[command] ) { + api[command].apply( api, args ); + } + } + ); + + return returned !== NULL ? returned : this; + } + + // No API commands. validate provided options and setup qTips + else if ( 'object' === typeof options || !arguments.length ) { + // Sanitize options first + opts = sanitizeOptions( $.extend( TRUE, {}, options ) ); + + return this.each( + function( i ) { + var api, id; + + // Find next available ID, or use custom ID if provided + id = $.isArray( opts.id ) ? opts.id[i] : opts.id; + id = !id || id === FALSE || id.length < 1 || QTIP.api[id] ? QTIP.nextid++ : id; + + // Initialize the qTip and re-grab newly sanitized options + api = init( $( this ), id, opts ); + if ( api === FALSE ) { + return TRUE; + } + else { + QTIP.api[id] = api; + } + + // Initialize plugins + $.each( + PLUGINS, function() { + if ( this.initialize === 'initialize' ) { + this( api ); + } + } + ); + + // Assign initial pre-render events + api._assignInitialEvents( event ); + } + ); + } + }; + + // Expose class + $.qtip = QTip; + + // Populated in render method + QTIP.api = {}; + ; + $.each( + { + /* Allow other plugins to successfully retrieve the title of an element with a qTip applied */ + attr: function( attr, val ) { + if ( this.length ) { + var self = this[0], + title = 'title', + api = $.data( self, 'qtip' ); + + if ( attr === title && api && 'object' === typeof api && api.options.suppress ) { + if ( arguments.length < 2 ) { + return $.attr( self, oldtitle ); + } + + // If qTip is rendered and title was originally used as content, update it + if ( api && api.options.content.attr === title && api.cache.attr ) { + api.set( 'content.text', val ); + } + + // Use the regular attr method to set, then cache the result + return this.attr( oldtitle, val ); + } + } + + return $.fn['attr' + replaceSuffix].apply( this, arguments ); + }, + + /* Allow clone to correctly retrieve cached title attributes */ + clone: function( keepData ) { + var titles = $( [] ), title = 'title', + + // Clone our element using the real clone method + elems = $.fn['clone' + replaceSuffix].apply( this, arguments ); + + // Grab all elements with an oldtitle set, and change it to regular title attribute, if keepData is false + if ( !keepData ) { + elems.filter( '[' + oldtitle + ']' ).attr( + 'title', function() { + return $.attr( this, oldtitle ); + } + ) + .removeAttr( oldtitle ); + } + + return elems; + } + }, function( name, func ) { + if ( !func || $.fn[name + replaceSuffix] ) { + return TRUE; + } + + var old = $.fn[name + replaceSuffix] = $.fn[name]; + $.fn[name] = function() { + return func.apply( this, arguments ) || old.apply( this, arguments ); + }; + } + ); + + /* Fire off 'removeqtip' handler in $.cleanData if jQuery UI not present (it already does similar). + * This snippet is taken directly from jQuery UI source code found here: + * http://code.jquery.com/ui/jquery-ui-git.js + */ + if ( !$.ui ) { + $['cleanData' + replaceSuffix] = $.cleanData; + $.cleanData = function( elems ) { + for ( var i = 0, elem; (elem = $( elems[i] )).length; i++ ) { + if ( elem.attr( ATTR_HAS ) ) { + try { + elem.triggerHandler( 'removeqtip' ); + } + catch ( e ) { + } + } + } + $['cleanData' + replaceSuffix].apply( this, arguments ); + }; + } + + ;// qTip version + QTIP.version = '2.2.0'; + + // Base ID for all qTips + QTIP.nextid = 0; + + // Inactive events array + QTIP.inactiveEvents = INACTIVE_EVENTS; + + // Base z-index for all qTips + QTIP.zindex = 15000; + + // Define configuration defaults + QTIP.defaults = { + prerender: FALSE, + id: FALSE, + overwrite: TRUE, + suppress: TRUE, + content: { + text: TRUE, + attr: 'title', + title: FALSE, + button: FALSE + }, + position: { + my: 'top left', + at: 'bottom right', + target: FALSE, + container: FALSE, + viewport: FALSE, + adjust: { + x: 0, y: 0, + mouse: TRUE, + scroll: TRUE, + resize: TRUE, + method: 'flipinvert flipinvert' + }, + effect: function( api, pos, viewport ) { + $( this ).animate( + pos, { + duration: 200, + queue: FALSE + } + ); + } + }, + show: { + target: FALSE, + event: 'mouseenter', + effect: TRUE, + delay: 90, + solo: FALSE, + ready: FALSE, + autofocus: FALSE + }, + hide: { + target: FALSE, + event: 'mouseleave', + effect: TRUE, + delay: 0, + fixed: FALSE, + inactive: FALSE, + leave: 'window', + distance: FALSE + }, + style: { + classes: '', + widget: FALSE, + width: FALSE, + height: FALSE, + def: TRUE + }, + events: { + render: NULL, + move: NULL, + show: NULL, + hide: NULL, + toggle: NULL, + visible: NULL, + hidden: NULL, + focus: NULL, + blur: NULL + } + }; + + ; + var TIP, + + // .bind()/.on() namespace + TIPNS = '.qtip-tip', + + // Common CSS strings + MARGIN = 'margin', + BORDER = 'border', + COLOR = 'color', + BG_COLOR = 'background-color', + TRANSPARENT = 'transparent', + IMPORTANT = ' !important', + + // Check if the browser supports elements + HASCANVAS = !!document.createElement( 'canvas' ).getContext, + + // Invalid colour values used in parseColours() + INVALID = /rgba?\(0, 0, 0(, 0)?\)|transparent|#123456/i; + + // Camel-case method, taken from jQuery source + // http://code.jquery.com/jquery-1.8.0.js + function camel( s ) { + return s.charAt( 0 ).toUpperCase() + s.slice( 1 ); + } + + /* + * Modified from Modernizr's testPropsAll() + * http://modernizr.com/downloads/modernizr-latest.js + */ + var cssProps = {}, cssPrefixes = ["Webkit", "O", "Moz", "ms"]; + + function vendorCss( elem, prop ) { + var ucProp = prop.charAt( 0 ).toUpperCase() + prop.slice( 1 ), + props = (prop + ' ' + cssPrefixes.join( ucProp + ' ' ) + ucProp).split( ' ' ), + cur, val, i = 0; + + // If the property has already been mapped... + if ( cssProps[prop] ) { + return elem.css( cssProps[prop] ); + } + + while ( (cur = props[i++]) ) { + if ( (val = elem.css( cur )) !== undefined ) { + return cssProps[prop] = cur, val; + } + } + } + + // Parse a given elements CSS property into an int + function intCss( elem, prop ) { + return Math.ceil( parseFloat( vendorCss( elem, prop ) ) ); + } + + + // VML creation (for IE only) + if ( !HASCANVAS ) { + var createVML = function( tag, props, style ) { + return ''; + }; + } + + // Canvas only definitions + else { + var PIXEL_RATIO = window.devicePixelRatio || 1, + BACKING_STORE_RATIO = (function() { + var context = document.createElement( 'canvas' ).getContext( '2d' ); + return context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || + context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || 1; + }()), + SCALE = PIXEL_RATIO / BACKING_STORE_RATIO; + } + + + function Tip( qtip, options ) { + this._ns = 'tip'; + this.options = options; + this.offset = options.offset; + this.size = [options.width, options.height]; + + // Initialize + this.init( (this.qtip = qtip) ); + } + + $.extend( + Tip.prototype, { + init: function( qtip ) { + var context, tip; + + // Create tip element and prepend to the tooltip + tip = this.element = qtip.elements.tip = $( + '
', {'class': NAMESPACE + '-tip'} + ).prependTo( qtip.tooltip ); + + // Create tip drawing element(s) + if ( HASCANVAS ) { + // save() as soon as we create the canvas element so FF2 doesn't bork on our first restore()! + context = $( '' ).appendTo( this.element )[0].getContext( '2d' ); + + // Setup constant parameters + context.lineJoin = 'miter'; + context.miterLimit = 100000; + context.save(); + } + else { + context = createVML( 'shape', 'coordorigin="0,0"', 'position:absolute;' ); + this.element.html( context + context ); + + // Prevent mousing down on the tip since it causes problems with .live() handling in IE due to VML + qtip._bind( + $( '*', tip ).add( tip ), ['click', 'mousedown'], function( event ) { + event.stopPropagation(); + }, this._ns + ); + } + + // Bind update events + qtip._bind( qtip.tooltip, 'tooltipmove', this.reposition, this._ns, this ); + + // Create it + this.create(); + }, + + _swapDimensions: function() { + this.size[0] = this.options.height; + this.size[1] = this.options.width; + }, + _resetDimensions: function() { + this.size[0] = this.options.width; + this.size[1] = this.options.height; + }, + + _useTitle: function( corner ) { + var titlebar = this.qtip.elements.titlebar; + return titlebar && ( + corner.y === TOP || (corner.y === CENTER && this.element.position().top + (this.size[1] / 2) + this.options.offset < titlebar.outerHeight( TRUE )) + ); + }, + + _parseCorner: function( corner ) { + var my = this.qtip.options.position.my; + + // Detect corner and mimic properties + if ( corner === FALSE || my === FALSE ) { + corner = FALSE; + } + else if ( corner === TRUE ) { + corner = new CORNER( my.string() ); + } + else if ( !corner.string ) { + corner = new CORNER( corner ); + corner.fixed = TRUE; + } + + return corner; + }, + + _parseWidth: function( corner, side, use ) { + var elements = this.qtip.elements, + prop = BORDER + camel( side ) + 'Width'; + + return (use ? intCss( use, prop ) : ( + intCss( elements.content, prop ) || + intCss( this._useTitle( corner ) && elements.titlebar || elements.content, prop ) || + intCss( elements.tooltip, prop ) + )) || 0; + }, + + _parseRadius: function( corner ) { + var elements = this.qtip.elements, + prop = BORDER + camel( corner.y ) + camel( corner.x ) + 'Radius'; + + return BROWSER.ie < 9 ? 0 : + intCss( this._useTitle( corner ) && elements.titlebar || elements.content, prop ) || + intCss( elements.tooltip, prop ) || 0; + }, + + _invalidColour: function( elem, prop, compare ) { + var val = elem.css( prop ); + return !val || (compare && val === elem.css( compare )) || INVALID.test( val ) ? FALSE : val; + }, + + _parseColours: function( corner ) { + var elements = this.qtip.elements, + tip = this.element.css( 'cssText', '' ), + borderSide = BORDER + camel( corner[corner.precedance] ) + camel( COLOR ), + colorElem = this._useTitle( corner ) && elements.titlebar || elements.content, + css = this._invalidColour, color = []; + + // Attempt to detect the background colour from various elements, left-to-right precedance + color[0] = css( tip, BG_COLOR ) || css( colorElem, BG_COLOR ) || css( + elements.content, BG_COLOR + ) || + css( elements.tooltip, BG_COLOR ) || tip.css( BG_COLOR ); + + // Attempt to detect the correct border side colour from various elements, left-to-right precedance + color[1] = css( tip, borderSide, COLOR ) || css( colorElem, borderSide, COLOR ) || + css( elements.content, borderSide, COLOR ) || css( + elements.tooltip, borderSide, COLOR + ) || elements.tooltip.css( borderSide ); + + // Reset background and border colours + $( '*', tip ).add( tip ).css( + 'cssText', + BG_COLOR + ':' + TRANSPARENT + IMPORTANT + ';' + BORDER + ':0' + IMPORTANT + ';' + ); + + return color; + }, + + _calculateSize: function( corner ) { + var y = corner.precedance === Y, + width = this.options['width'], + height = this.options['height'], + isCenter = corner.abbrev() === 'c', + base = (y ? width : height) * (isCenter ? 0.5 : 1), + pow = Math.pow, + round = Math.round, + bigHyp, ratio, result, + + smallHyp = Math.sqrt( pow( base, 2 ) + pow( height, 2 ) ), + hyp = [(this.border / base) * smallHyp, (this.border / height) * smallHyp]; + + hyp[2] = Math.sqrt( pow( hyp[0], 2 ) - pow( this.border, 2 ) ); + hyp[3] = Math.sqrt( pow( hyp[1], 2 ) - pow( this.border, 2 ) ); + + bigHyp = smallHyp + hyp[2] + hyp[3] + (isCenter ? 0 : hyp[0]); + ratio = bigHyp / smallHyp; + + result = [round( ratio * width ), round( ratio * height )]; + return y ? result : result.reverse(); + }, + + // Tip coordinates calculator + _calculateTip: function( corner, size, scale ) { + scale = scale || 1; + size = size || this.size; + + var width = size[0] * scale, + height = size[1] * scale, + width2 = Math.ceil( width / 2 ), height2 = Math.ceil( height / 2 ), + + // Define tip coordinates in terms of height and width values + tips = { + br: [0, 0, width, height, width, 0], + bl: [0, 0, width, 0, 0, height], + tr: [0, height, width, 0, width, height], + tl: [0, 0, 0, height, width, height], + tc: [0, height, width2, 0, width, height], + bc: [0, 0, width, 0, width2, height], + rc: [0, 0, width, height2, 0, height], + lc: [width, 0, width, height, 0, height2] + }; + + // Set common side shapes + tips.lt = tips.br; + tips.rt = tips.bl; + tips.lb = tips.tr; + tips.rb = tips.tl; + + return tips[corner.abbrev()]; + }, + + // Tip coordinates drawer (canvas) + _drawCoords: function( context, coords ) { + context.beginPath(); + context.moveTo( coords[0], coords[1] ); + context.lineTo( coords[2], coords[3] ); + context.lineTo( coords[4], coords[5] ); + context.closePath(); + }, + + create: function() { + // Determine tip corner + var c = this.corner = (HASCANVAS || BROWSER.ie) && this._parseCorner( this.options.corner ); + + // If we have a tip corner... + if ( (this.enabled = !!this.corner && this.corner.abbrev() !== 'c') ) { + // Cache it + this.qtip.cache.corner = c.clone(); + + // Create it + this.update(); + } + + // Toggle tip element + this.element.toggle( this.enabled ); + + return this.corner; + }, + + update: function( corner, position ) { + if ( !this.enabled ) { + return this; + } + + var elements = this.qtip.elements, + tip = this.element, + inner = tip.children(), + options = this.options, + curSize = this.size, + mimic = options.mimic, + round = Math.round, + color, precedance, context, + coords, bigCoords, translate, newSize, border, BACKING_STORE_RATIO; + + // Re-determine tip if not already set + if ( !corner ) { + corner = this.qtip.cache.corner || this.corner; + } + + // Use corner property if we detect an invalid mimic value + if ( mimic === FALSE ) { + mimic = corner; + } + + // Otherwise inherit mimic properties from the corner object as necessary + else { + mimic = new CORNER( mimic ); + mimic.precedance = corner.precedance; + + if ( mimic.x === 'inherit' ) { + mimic.x = corner.x; + } + else if ( mimic.y === 'inherit' ) { + mimic.y = corner.y; + } + else if ( mimic.x === mimic.y ) { + mimic[corner.precedance] = corner[corner.precedance]; + } + } + precedance = mimic.precedance; + + // Ensure the tip width.height are relative to the tip position + if ( corner.precedance === X ) { + this._swapDimensions(); + } + else { + this._resetDimensions(); + } + + // Update our colours + color = this.color = this._parseColours( corner ); + + // Detect border width, taking into account colours + if ( color[1] !== TRANSPARENT ) { + // Grab border width + border = this.border = this._parseWidth( corner, corner[corner.precedance] ); + + // If border width isn't zero, use border color as fill if it's not invalid (1.0 style tips) + if ( options.border && border < 1 && !INVALID.test( color[1] ) ) { + color[0] = color[1]; + } + + // Set border width (use detected border width if options.border is true) + this.border = border = options.border !== TRUE ? options.border : border; + } + + // Border colour was invalid, set border to zero + else { + this.border = border = 0; + } + + // Determine tip size + newSize = this.size = this._calculateSize( corner ); + tip.css( + { + width: newSize[0], + height: newSize[1], + lineHeight: newSize[1] + 'px' + } + ); + + // Calculate tip translation + if ( corner.precedance === Y ) { + translate = [ + round( mimic.x === LEFT ? border : mimic.x === RIGHT ? newSize[0] - curSize[0] - border : (newSize[0] - curSize[0]) / 2 ), + round( mimic.y === TOP ? newSize[1] - curSize[1] : 0 ) + ]; + } + else { + translate = [ + round( mimic.x === LEFT ? newSize[0] - curSize[0] : 0 ), + round( mimic.y === TOP ? border : mimic.y === BOTTOM ? newSize[1] - curSize[1] - border : (newSize[1] - curSize[1]) / 2 ) + ]; + } + + // Canvas drawing implementation + if ( HASCANVAS ) { + // Grab canvas context and clear/save it + context = inner[0].getContext( '2d' ); + context.restore(); + context.save(); + context.clearRect( 0, 0, 6000, 6000 ); + + // Calculate coordinates + coords = this._calculateTip( mimic, curSize, SCALE ); + bigCoords = this._calculateTip( mimic, this.size, SCALE ); + + // Set the canvas size using calculated size + inner.attr( WIDTH, newSize[0] * SCALE ).attr( HEIGHT, newSize[1] * SCALE ); + inner.css( WIDTH, newSize[0] ).css( HEIGHT, newSize[1] ); + + // Draw the outer-stroke tip + this._drawCoords( context, bigCoords ); + context.fillStyle = color[1]; + context.fill(); + + // Draw the actual tip + context.translate( translate[0] * SCALE, translate[1] * SCALE ); + this._drawCoords( context, coords ); + context.fillStyle = color[0]; + context.fill(); + } + + // VML (IE Proprietary implementation) + else { + // Calculate coordinates + coords = this._calculateTip( mimic ); + + // Setup coordinates string + coords = 'm' + coords[0] + ',' + coords[1] + ' l' + coords[2] + + ',' + coords[3] + ' ' + coords[4] + ',' + coords[5] + ' xe'; + + // Setup VML-specific offset for pixel-perfection + translate[2] = border && /^(r|b)/i.test( corner.string() ) ? + BROWSER.ie === 8 ? 2 : 1 : 0; + + // Set initial CSS + inner.css( + { + coordsize: (newSize[0] + border) + ' ' + (newSize[1] + border), + antialias: '' + (mimic.string().indexOf( CENTER ) > -1), + left: translate[0] - (translate[2] * Number( precedance === X )), + top: translate[1] - (translate[2] * Number( precedance === Y )), + width: newSize[0] + border, + height: newSize[1] + border + } + ) + .each( + function( i ) { + var $this = $( this ); + + // Set shape specific attributes + $this[$this.prop ? 'prop' : 'attr']( + { + coordsize: (newSize[0] + border) + ' ' + (newSize[1] + border), + path: coords, + fillcolor: color[0], + filled: !!i, + stroked: !i + } + ) + .toggle( !!(border || i) ); + + // Check if border is enabled and add stroke element + !i && $this.html( + createVML( + 'stroke', + 'weight="' + (border * 2) + 'px" color="' + color[1] + '" miterlimit="1000" joinstyle="miter"' + ) + ); + } + ); + } + + // Opera bug #357 - Incorrect tip position + // https://github.com/Craga89/qTip2/issues/367 + window.opera && setTimeout( + function() { + elements.tip.css( + { + display: 'inline-block', + visibility: 'visible' + } + ); + }, 1 + ); + + // Position if needed + if ( position !== FALSE ) { + this.calculate( corner, newSize ); + } + }, + + calculate: function( corner, size ) { + if ( !this.enabled ) { + return FALSE; + } + + var self = this, + elements = this.qtip.elements, + tip = this.element, + userOffset = this.options.offset, + isWidget = elements.tooltip.hasClass( 'ui-widget' ), + position = {}, + precedance, corners; + + // Inherit corner if not provided + corner = corner || this.corner; + precedance = corner.precedance; + + // Determine which tip dimension to use for adjustment + size = size || this._calculateSize( corner ); + + // Setup corners and offset array + corners = [corner.x, corner.y]; + if ( precedance === X ) { + corners.reverse(); + } + + // Calculate tip position + $.each( + corners, function( i, side ) { + var b, bc, br; + + if ( side === CENTER ) { + b = precedance === Y ? LEFT : TOP; + position[b] = '50%'; + position[MARGIN + '-' + b] = -Math.round( size[precedance === Y ? 0 : 1] / 2 ) + userOffset; + } + else { + b = self._parseWidth( corner, side, elements.tooltip ); + bc = self._parseWidth( corner, side, elements.content ); + br = self._parseRadius( corner ); + + position[side] = Math.max( + -self.border, i ? bc : (userOffset + (br > b ? br : -b)) + ); + } + } + ); + + // Adjust for tip size + position[corner[precedance]] -= size[precedance === X ? 0 : 1]; + + // Set and return new position + tip.css( {margin: '', top: '', bottom: '', left: '', right: ''} ).css( position ); + return position; + }, + + reposition: function( event, api, pos, viewport ) { + if ( !this.enabled ) { + return; + } + + var cache = api.cache, + newCorner = this.corner.clone(), + adjust = pos.adjusted, + method = api.options.position.adjust.method.split( ' ' ), + horizontal = method[0], + vertical = method[1] || method[0], + shift = {left: FALSE, top: FALSE, x: 0, y: 0}, + offset, css = {}, props; + + function shiftflip( direction, precedance, popposite, side, opposite ) { + // Horizontal - Shift or flip method + if ( direction === SHIFT && newCorner.precedance === precedance && adjust[side] && newCorner[popposite] !== CENTER ) { + newCorner.precedance = newCorner.precedance === X ? Y : X; + } + else if ( direction !== SHIFT && adjust[side] ) { + newCorner[precedance] = newCorner[precedance] === CENTER ? + (adjust[side] > 0 ? side : opposite) : (newCorner[precedance] === side ? opposite : side); + } + } + + function shiftonly( xy, side, opposite ) { + if ( newCorner[xy] === CENTER ) { + css[MARGIN + '-' + side] = shift[xy] = offset[MARGIN + '-' + side] - adjust[side]; + } + else { + props = offset[opposite] !== undefined ? + [adjust[side], -offset[side]] : [-adjust[side], offset[side]]; + + if ( (shift[xy] = Math.max( props[0], props[1] )) > props[0] ) { + pos[side] -= adjust[side]; + shift[side] = FALSE; + } + + css[offset[opposite] !== undefined ? opposite : side] = shift[xy]; + } + } + + // If our tip position isn't fixed e.g. doesn't adjust with viewport... + if ( this.corner.fixed !== TRUE ) { + // Perform shift/flip adjustments + shiftflip( horizontal, X, Y, LEFT, RIGHT ); + shiftflip( vertical, Y, X, TOP, BOTTOM ); + + // Update and redraw the tip if needed (check cached details of last drawn tip) + if ( newCorner.string() !== cache.corner.string() && (cache.cornerTop !== adjust.top || cache.cornerLeft !== adjust.left) ) { + this.update( newCorner, FALSE ); + } + } + + // Setup tip offset properties + offset = this.calculate( newCorner ); + + // Readjust offset object to make it left/top + if ( offset.right !== undefined ) { + offset.left = -offset.right; + } + if ( offset.bottom !== undefined ) { + offset.top = -offset.bottom; + } + offset.user = this.offset; + + // Perform shift adjustments + if ( shift.left = (horizontal === SHIFT && !!adjust.left) ) { + shiftonly( X, LEFT, RIGHT ); + } + if ( shift.top = (vertical === SHIFT && !!adjust.top) ) { + shiftonly( Y, TOP, BOTTOM ); + } + + /* + * If the tip is adjusted in both dimensions, or in a + * direction that would cause it to be anywhere but the + * outer border, hide it! + */ + this.element.css( css ).toggle( + !((shift.x && shift.y) || (newCorner.x === CENTER && shift.y) || (newCorner.y === CENTER && shift.x)) + ); + + // Adjust position to accomodate tip dimensions + pos.left -= offset.left.charAt ? offset.user : + horizontal !== SHIFT || shift.top || !shift.left && !shift.top ? offset.left + this.border : 0; + pos.top -= offset.top.charAt ? offset.user : + vertical !== SHIFT || shift.left || !shift.left && !shift.top ? offset.top + this.border : 0; + + // Cache details + cache.cornerLeft = adjust.left; + cache.cornerTop = adjust.top; + cache.corner = newCorner.clone(); + }, + + destroy: function() { + // Unbind events + this.qtip._unbind( this.qtip.tooltip, this._ns ); + + // Remove the tip element(s) + if ( this.qtip.elements.tip ) { + this.qtip.elements.tip.find( '*' ) + .remove().end().remove(); + } + } + } + ); + + TIP = PLUGINS.tip = function( api ) { + return new Tip( api, api.options.style.tip ); + }; + + // Initialize tip on render + TIP.initialize = 'render'; + + // Setup plugin sanitization options + TIP.sanitize = function( options ) { + if ( options.style && 'tip' in options.style ) { + var opts = options.style.tip; + if ( typeof opts !== 'object' ) { + opts = options.style.tip = {corner: opts}; + } + if ( !(/string|boolean/i).test( typeof opts.corner ) ) { + opts.corner = TRUE; + } + } + }; + + // Add new option checks for the plugin + CHECKS.tip = { + '^position.my|style.tip.(corner|mimic|border)$': function() { + // Make sure a tip can be drawn + this.create(); + + // Reposition the tooltip + this.qtip.reposition(); + }, + '^style.tip.(height|width)$': function( obj ) { + // Re-set dimensions and redraw the tip + this.size = [obj.width, obj.height]; + this.update(); + + // Reposition the tooltip + this.qtip.reposition(); + }, + '^content.title|style.(classes|widget)$': function() { + this.update(); + } + }; + + // Extend original qTip defaults + $.extend( + TRUE, QTIP.defaults, { + style: { + tip: { + corner: TRUE, + mimic: FALSE, + width: 6, + height: 6, + border: TRUE, + offset: 0 + } + } + } + ); + + ; + var MODAL, OVERLAY, + MODALCLASS = 'qtip-modal', + MODALSELECTOR = '.' + MODALCLASS; + + OVERLAY = function() { + var self = this, + focusableElems = {}, + current, onLast, + prevState, elem; + + // Modified code from jQuery UI 1.10.0 source + // http://code.jquery.com/ui/1.10.0/jquery-ui.js + function focusable( element ) { + // Use the defined focusable checker when possible + if ( $.expr[':'].focusable ) { + return $.expr[':'].focusable; + } + + var isTabIndexNotNaN = !isNaN( $.attr( element, 'tabindex' ) ), + nodeName = element.nodeName && element.nodeName.toLowerCase(), + map, mapName, img; + + if ( 'area' === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== 'map' ) { + return false; + } + img = $( 'img[usemap=#' + mapName + ']' )[0]; + return !!img && img.is( ':visible' ); + } + return (/input|select|textarea|button|object/.test( nodeName ) ? + !element.disabled : + 'a' === nodeName ? + element.href || isTabIndexNotNaN : + isTabIndexNotNaN + ); + } + + // Focus inputs using cached focusable elements (see update()) + function focusInputs( blurElems ) { + // Blurring body element in IE causes window.open windows to unfocus! + if ( focusableElems.length < 1 && blurElems.length ) { + blurElems.not( 'body' ).blur(); + } + + // Focus the inputs + else { + focusableElems.first().focus(); + } + } + + // Steal focus from elements outside tooltip + function stealFocus( event ) { + if ( !elem.is( ':visible' ) ) { + return; + } + + var target = $( event.target ), + tooltip = current.tooltip, + container = target.closest( SELECTOR ), + targetOnTop; + + // Determine if input container target is above this + targetOnTop = container.length < 1 ? FALSE : + (parseInt( container[0].style.zIndex, 10 ) > parseInt( tooltip[0].style.zIndex, 10 )); + + // If we're showing a modal, but focus has landed on an input below + // this modal, divert focus to the first visible input in this modal + // or if we can't find one... the tooltip itself + if ( !targetOnTop && target.closest( SELECTOR )[0] !== tooltip[0] ) { + focusInputs( target ); + } + + // Detect when we leave the last focusable element... + onLast = event.target === focusableElems[focusableElems.length - 1]; + } + + $.extend( + self, { + init: function() { + // Create document overlay + elem = self.elem = $( + '
', { + id: 'qtip-overlay', + html: '
', + mousedown: function() { + return FALSE; + } + } + ) + .hide(); + + // Make sure we can't focus anything outside the tooltip + $( document.body ).bind( 'focusin' + MODALSELECTOR, stealFocus ); + + // Apply keyboard "Escape key" close handler + $( document ).bind( + 'keydown' + MODALSELECTOR, function( event ) { + if ( current && current.options.show.modal.escape && event.keyCode === 27 ) { + current.hide( event ); + } + } + ); + + // Apply click handler for blur option + elem.bind( + 'click' + MODALSELECTOR, function( event ) { + if ( current && current.options.show.modal.blur ) { + current.hide( event ); + } + } + ); + + return self; + }, + + update: function( api ) { + // Update current API reference + current = api; + + // Update focusable elements if enabled + if ( api.options.show.modal.stealfocus !== FALSE ) { + focusableElems = api.tooltip.find( '*' ).filter( + function() { + return focusable( this ); + } + ); + } + else { + focusableElems = []; + } + }, + + toggle: function( api, state, duration ) { + var docBody = $( document.body ), + tooltip = api.tooltip, + options = api.options.show.modal, + effect = options.effect, + type = state ? 'show' : 'hide', + visible = elem.is( ':visible' ), + visibleModals = $( MODALSELECTOR ).filter( ':visible:not(:animated)' ).not( tooltip ), + zindex; + + // Set active tooltip API reference + self.update( api ); + + // If the modal can steal the focus... + // Blur the current item and focus anything in the modal we an + if ( state && options.stealfocus !== FALSE ) { + focusInputs( $( ':focus' ) ); + } + + // Toggle backdrop cursor style on show + elem.toggleClass( 'blurs', options.blur ); + + // Append to body on show + if ( state ) { + elem.appendTo( document.body ); + } + + // Prevent modal from conflicting with show.solo, and don't hide backdrop is other modals are visible + if ( (elem.is( ':animated' ) && visible === state && prevState !== FALSE) || (!state && visibleModals.length) ) { + return self; + } + + // Stop all animations + elem.stop( TRUE, FALSE ); + + // Use custom function if provided + if ( $.isFunction( effect ) ) { + effect.call( elem, state ); + } + + // If no effect type is supplied, use a simple toggle + else if ( effect === FALSE ) { + elem[type](); + } + + // Use basic fade function + else { + elem.fadeTo( + parseInt( duration, 10 ) || 90, state ? 1 : 0, function() { + if ( !state ) { + elem.hide(); + } + } + ); + } + + // Reset position and detach from body on hide + if ( !state ) { + elem.queue( + function( next ) { + elem.css( {left: '', top: ''} ); + if ( !$( MODALSELECTOR ).length ) { + elem.detach(); + } + next(); + } + ); + } + + // Cache the state + prevState = state; + + // If the tooltip is destroyed, set reference to null + if ( current.destroyed ) { + current = NULL; + } + + return self; + } + } + ); + + self.init(); + }; + OVERLAY = new OVERLAY(); + + function Modal( api, options ) { + this.options = options; + this._ns = '-modal'; + + this.init( (this.qtip = api) ); + } + + $.extend( + Modal.prototype, { + init: function( qtip ) { + var tooltip = qtip.tooltip; + + // If modal is disabled... return + if ( !this.options.on ) { + return this; + } + + // Set overlay reference + qtip.elements.overlay = OVERLAY.elem; + + // Add unique attribute so we can grab modal tooltips easily via a SELECTOR, and set z-index + tooltip.addClass( MODALCLASS ).css( + 'z-index', QTIP.modal_zindex + $( MODALSELECTOR ).length + ); + + // Apply our show/hide/focus modal events + qtip._bind( + tooltip, ['tooltipshow', 'tooltiphide'], function( event, api, duration ) { + var oEvent = event.originalEvent; + + // Make sure mouseout doesn't trigger a hide when showing the modal and mousing onto backdrop + if ( event.target === tooltip[0] ) { + if ( oEvent && event.type === 'tooltiphide' && /mouse(leave|enter)/.test( oEvent.type ) && $( oEvent.relatedTarget ).closest( OVERLAY.elem[0] ).length ) { + try { + event.preventDefault(); + } catch ( e ) { + } + } + else if ( !oEvent || (oEvent && oEvent.type !== 'tooltipsolo') ) { + this.toggle( event, event.type === 'tooltipshow', duration ); + } + } + }, this._ns, this + ); + + // Adjust modal z-index on tooltip focus + qtip._bind( + tooltip, 'tooltipfocus', function( event, api ) { + // If focus was cancelled before it reached us, don't do anything + if ( event.isDefaultPrevented() || event.target !== tooltip[0] ) { + return; + } + + var qtips = $( MODALSELECTOR ), + + // Keep the modal's lower than other, regular qtips + newIndex = QTIP.modal_zindex + qtips.length, + curIndex = parseInt( tooltip[0].style.zIndex, 10 ); + + // Set overlay z-index + OVERLAY.elem[0].style.zIndex = newIndex - 1; + + // Reduce modal z-index's and keep them properly ordered + qtips.each( + function() { + if ( this.style.zIndex > curIndex ) { + this.style.zIndex -= 1; + } + } + ); + + // Fire blur event for focused tooltip + qtips.filter( '.' + CLASS_FOCUS ).qtip( 'blur', event.originalEvent ); + + // Set the new z-index + tooltip.addClass( CLASS_FOCUS )[0].style.zIndex = newIndex; + + // Set current + OVERLAY.update( api ); + + // Prevent default handling + try { + event.preventDefault(); + } catch ( e ) { + } + }, this._ns, this + ); + + // Focus any other visible modals when this one hides + qtip._bind( + tooltip, 'tooltiphide', function( event ) { + if ( event.target === tooltip[0] ) { + $( MODALSELECTOR ).filter( ':visible' ).not( tooltip ).last().qtip( + 'focus', event + ); + } + }, this._ns, this + ); + }, + + toggle: function( event, state, duration ) { + // Make sure default event hasn't been prevented + if ( event && event.isDefaultPrevented() ) { + return this; + } + + // Toggle it + OVERLAY.toggle( this.qtip, !!state, duration ); + }, + + destroy: function() { + // Remove modal class + this.qtip.tooltip.removeClass( MODALCLASS ); + + // Remove bound events + this.qtip._unbind( this.qtip.tooltip, this._ns ); + + // Delete element reference + OVERLAY.toggle( this.qtip, FALSE ); + delete this.qtip.elements.overlay; + } + } + ); + + + MODAL = PLUGINS.modal = function( api ) { + return new Modal( api, api.options.show.modal ); + }; + + // Setup sanitiztion rules + MODAL.sanitize = function( opts ) { + if ( opts.show ) { + if ( typeof opts.show.modal !== 'object' ) { + opts.show.modal = {on: !!opts.show.modal}; + } + else if ( typeof opts.show.modal.on === 'undefined' ) { + opts.show.modal.on = TRUE; + } + } + }; + + // Base z-index for all modal tooltips (use qTip core z-index as a base) + QTIP.modal_zindex = QTIP.zindex - 200; + + // Plugin needs to be initialized on render + MODAL.initialize = 'render'; + + // Setup option set checks + CHECKS.modal = { + '^show.modal.(on|blur)$': function() { + // Initialise + this.destroy(); + this.init(); + + // Show the modal if not visible already and tooltip is visible + this.qtip.elems.overlay.toggle( + this.qtip.tooltip[0].offsetWidth > 0 + ); + } + }; + + // Extend original api defaults + $.extend( + TRUE, QTIP.defaults, { + show: { + modal: { + on: FALSE, + effect: TRUE, + blur: TRUE, + stealfocus: TRUE, + escape: TRUE + } + } + } + ); + ; + PLUGINS.viewport = function( api, position, posOptions, targetWidth, targetHeight, elemWidth, elemHeight ) { + var target = posOptions.target, + tooltip = api.elements.tooltip, + my = posOptions.my, + at = posOptions.at, + adjust = posOptions.adjust, + method = adjust.method.split( ' ' ), + methodX = method[0], + methodY = method[1] || method[0], + viewport = posOptions.viewport, + container = posOptions.container, + cache = api.cache, + adjusted = {left: 0, top: 0}, + fixed, newMy, newClass, containerOffset, containerStatic, + viewportWidth, viewportHeight, viewportScroll, viewportOffset; + + // If viewport is not a jQuery element, or it's the window/document, or no adjustment method is used... return + if ( !viewport.jquery || target[0] === window || target[0] === document.body || adjust.method === 'none' ) { + return adjusted; + } + + // Cach container details + containerOffset = container.offset() || adjusted; + containerStatic = container.css( 'position' ) === 'static'; + + // Cache our viewport details + fixed = tooltip.css( 'position' ) === 'fixed'; + viewportWidth = viewport[0] === window ? viewport.width() : viewport.outerWidth( FALSE ); + viewportHeight = viewport[0] === window ? viewport.height() : viewport.outerHeight( FALSE ); + viewportScroll = {left: fixed ? 0 : viewport.scrollLeft(), top: fixed ? 0 : viewport.scrollTop()}; + viewportOffset = viewport.offset() || adjusted; + + // Generic calculation method + function calculate( side, otherSide, type, adjust, side1, side2, lengthName, targetLength, elemLength ) { + var initialPos = position[side1], + mySide = my[side], + atSide = at[side], + isShift = type === SHIFT, + myLength = mySide === side1 ? elemLength : mySide === side2 ? -elemLength : -elemLength / 2, + atLength = atSide === side1 ? targetLength : atSide === side2 ? -targetLength : -targetLength / 2, + sideOffset = viewportScroll[side1] + viewportOffset[side1] - (containerStatic ? 0 : containerOffset[side1]), + overflow1 = sideOffset - initialPos, + overflow2 = initialPos + elemLength - (lengthName === WIDTH ? viewportWidth : viewportHeight) - sideOffset, + offset = myLength - (my.precedance === side || mySide === my[otherSide] ? atLength : 0) - (atSide === CENTER ? targetLength / 2 : 0); + + // shift + if ( isShift ) { + offset = (mySide === side1 ? 1 : -1) * myLength; + + // Adjust position but keep it within viewport dimensions + position[side1] += overflow1 > 0 ? overflow1 : overflow2 > 0 ? -overflow2 : 0; + position[side1] = Math.max( + -containerOffset[side1] + viewportOffset[side1], + initialPos - offset, + Math.min( + Math.max( + -containerOffset[side1] + viewportOffset[side1] + (lengthName === WIDTH ? viewportWidth : viewportHeight), + initialPos + offset + ), + position[side1], + + // Make sure we don't adjust complete off the element when using 'center' + mySide === 'center' ? initialPos - myLength : 1E9 + ) + ); + + } + + // flip/flipinvert + else { + // Update adjustment amount depending on if using flipinvert or flip + adjust *= (type === FLIPINVERT ? 2 : 0); + + // Check for overflow on the left/top + if ( overflow1 > 0 && (mySide !== side1 || overflow2 > 0) ) { + position[side1] -= offset + adjust; + newMy.invert( side, side1 ); + } + + // Check for overflow on the bottom/right + else if ( overflow2 > 0 && (mySide !== side2 || overflow1 > 0) ) { + position[side1] -= (mySide === CENTER ? -offset : offset) + adjust; + newMy.invert( side, side2 ); + } + + // Make sure we haven't made things worse with the adjustment and reset if so + if ( position[side1] < viewportScroll && -position[side1] > overflow2 ) { + position[side1] = initialPos; + newMy = my.clone(); + } + } + + return position[side1] - initialPos; + } + + // Set newMy if using flip or flipinvert methods + if ( methodX !== 'shift' || methodY !== 'shift' ) { + newMy = my.clone(); + } + + // Adjust position based onviewport and adjustment options + adjusted = { + left: methodX !== 'none' ? calculate( + X, Y, methodX, adjust.x, LEFT, RIGHT, WIDTH, targetWidth, elemWidth + ) : 0, + top: methodY !== 'none' ? calculate( + Y, X, methodY, adjust.y, TOP, BOTTOM, HEIGHT, targetHeight, elemHeight + ) : 0 + }; + + // Set tooltip position class if it's changed + if ( newMy && cache.lastClass !== (newClass = NAMESPACE + '-pos-' + newMy.abbrev()) ) { + tooltip.removeClass( api.cache.lastClass ).addClass( (api.cache.lastClass = newClass) ); + } + + return adjusted; + }; + ; + PLUGINS.polys = { + // POLY area coordinate calculator + // Special thanks to Ed Cradock for helping out with this. + // Uses a binary search algorithm to find suitable coordinates. + polygon: function( baseCoords, corner ) { + var result = { + width: 0, height: 0, + position: { + top: 1e10, right: 0, + bottom: 0, left: 1e10 + }, + adjustable: FALSE + }, + i = 0, next, + coords = [], + compareX = 1, compareY = 1, + realX = 0, realY = 0, + newWidth, newHeight; + + // First pass, sanitize coords and determine outer edges + i = baseCoords.length; + while ( i-- ) { + next = [parseInt( baseCoords[--i], 10 ), parseInt( baseCoords[i + 1], 10 )]; + + if ( next[0] > result.position.right ) { + result.position.right = next[0]; + } + if ( next[0] < result.position.left ) { + result.position.left = next[0]; + } + if ( next[1] > result.position.bottom ) { + result.position.bottom = next[1]; + } + if ( next[1] < result.position.top ) { + result.position.top = next[1]; + } + + coords.push( next ); + } + + // Calculate height and width from outer edges + newWidth = result.width = Math.abs( result.position.right - result.position.left ); + newHeight = result.height = Math.abs( result.position.bottom - result.position.top ); + + // If it's the center corner... + if ( corner.abbrev() === 'c' ) { + result.position = { + left: result.position.left + (result.width / 2), + top: result.position.top + (result.height / 2) + }; + } + else { + // Second pass, use a binary search algorithm to locate most suitable coordinate + while ( newWidth > 0 && newHeight > 0 && compareX > 0 && compareY > 0 ) { + newWidth = Math.floor( newWidth / 2 ); + newHeight = Math.floor( newHeight / 2 ); + + if ( corner.x === LEFT ) { + compareX = newWidth; + } + else if ( corner.x === RIGHT ) { + compareX = result.width - newWidth; + } + else { + compareX += Math.floor( newWidth / 2 ); + } + + if ( corner.y === TOP ) { + compareY = newHeight; + } + else if ( corner.y === BOTTOM ) { + compareY = result.height - newHeight; + } + else { + compareY += Math.floor( newHeight / 2 ); + } + + i = coords.length; + while ( i-- ) { + if ( coords.length < 2 ) { + break; + } + + realX = coords[i][0] - result.position.left; + realY = coords[i][1] - result.position.top; + + if ( (corner.x === LEFT && realX >= compareX) || + (corner.x === RIGHT && realX <= compareX) || + (corner.x === CENTER && (realX < compareX || realX > (result.width - compareX))) || + (corner.y === TOP && realY >= compareY) || + (corner.y === BOTTOM && realY <= compareY) || + (corner.y === CENTER && (realY < compareY || realY > (result.height - compareY))) ) { + coords.splice( i, 1 ); + } + } + } + result.position = {left: coords[0][0], top: coords[0][1]}; + } + + return result; + }, + + rect: function( ax, ay, bx, by ) { + return { + width: Math.abs( bx - ax ), + height: Math.abs( by - ay ), + position: { + left: Math.min( ax, bx ), + top: Math.min( ay, by ) + } + }; + }, + + _angles: { + tc: 3 / 2, tr: 7 / 4, tl: 5 / 4, + bc: 1 / 2, br: 1 / 4, bl: 3 / 4, + rc: 2, lc: 1, c: 0 + }, + ellipse: function( cx, cy, rx, ry, corner ) { + var c = PLUGINS.polys._angles[corner.abbrev()], + rxc = c === 0 ? 0 : rx * Math.cos( c * Math.PI ), + rys = ry * Math.sin( c * Math.PI ); + + return { + width: (rx * 2) - Math.abs( rxc ), + height: (ry * 2) - Math.abs( rys ), + position: { + left: cx + rxc, + top: cy + rys + }, + adjustable: FALSE + }; + }, + circle: function( cx, cy, r, corner ) { + return PLUGINS.polys.ellipse( cx, cy, r, r, corner ); + } + }; + ; + PLUGINS.svg = function( api, svg, corner ) { + var doc = $( document ), + elem = svg[0], + root = $( elem.ownerSVGElement ), + xScale = 1, yScale = 1, + complex = true, + rootWidth, rootHeight, + mtx, transformed, viewBox, + len, next, i, points, + result, position, dimensions; + + // Ascend the parentNode chain until we find an element with getBBox() + while ( !elem.getBBox ) { + elem = elem.parentNode; + } + if ( !elem.getBBox || !elem.parentNode ) { + return FALSE; + } + + // Determine dimensions where possible + rootWidth = root.attr( 'width' ) || root.width() || parseInt( root.css( 'width' ), 10 ); + rootHeight = root.attr( 'height' ) || root.height() || parseInt( root.css( 'height' ), 10 ); + + // Add stroke characteristics to scaling + var strokeWidth2 = (parseInt( svg.css( 'stroke-width' ), 10 ) || 0) / 2; + if ( strokeWidth2 ) { + xScale += strokeWidth2 / rootWidth; + yScale += strokeWidth2 / rootHeight; + } + + // Determine which shape calculation to use + switch ( elem.nodeName ) { + case 'ellipse': + case 'circle': + result = PLUGINS.polys.ellipse( + elem.cx.baseVal.value, + elem.cy.baseVal.value, + (elem.rx || elem.r).baseVal.value + strokeWidth2, + (elem.ry || elem.r).baseVal.value + strokeWidth2, + corner + ); + break; + + case 'line': + case 'polygon': + case 'polyline': + // Determine points object (line has none, so mimic using array) + points = elem.points || [ + {x: elem.x1.baseVal.value, y: elem.y1.baseVal.value}, + {x: elem.x2.baseVal.value, y: elem.y2.baseVal.value} + ]; + + for ( result = [], i = -1, len = points.numberOfItems || points.length; ++i < len; ) { + next = points.getItem ? points.getItem( i ) : points[i]; + result.push.apply( result, [next.x, next.y] ); + } + + result = PLUGINS.polys.polygon( result, corner ); + break; + + // Unknown shape or rectangle? Use bounding box + default: + result = elem.getBoundingClientRect(); + result = { + width: result.width, height: result.height, + position: { + left: result.left, + top: result.top + } + }; + complex = false; + break; + } + + // Shortcut assignments + position = result.position; + root = root[0]; + + // If the shape was complex (i.e. not using bounding box calculations) + if ( complex ) { + // Convert position into a pixel value + if ( root.createSVGPoint ) { + mtx = elem.getScreenCTM(); + points = root.createSVGPoint(); + + points.x = position.left; + points.y = position.top; + transformed = points.matrixTransform( mtx ); + position.left = transformed.x; + position.top = transformed.y; + } + + // Calculate viewBox characteristics + if ( root.viewBox && (viewBox = root.viewBox.baseVal) && viewBox.width && viewBox.height ) { + xScale *= rootWidth / viewBox.width; + yScale *= rootHeight / viewBox.height; + } + } + + // Adjust by scroll offset + position.left += doc.scrollLeft(); + position.top += doc.scrollTop(); + + return result; + }; + ; + PLUGINS.imagemap = function( api, area, corner, adjustMethod ) { + if ( !area.jquery ) { + area = $( area ); + } + + var shape = area.attr( 'shape' ).toLowerCase().replace( 'poly', 'polygon' ), + image = $( 'img[usemap="#' + area.parent( 'map' ).attr( 'name' ) + '"]' ), + coordsString = $.trim( area.attr( 'coords' ) ), + coordsArray = coordsString.replace( /,$/, '' ).split( ',' ), + imageOffset, coords, i, next, result, len; + + // If we can't find the image using the map... + if ( !image.length ) { + return FALSE; + } + + // Pass coordinates string if polygon + if ( shape === 'polygon' ) { + result = PLUGINS.polys.polygon( coordsArray, corner ); + } + + // Otherwise parse the coordinates and pass them as arguments + else if ( PLUGINS.polys[shape] ) { + for ( i = -1, len = coordsArray.length, coords = []; ++i < len; ) { + coords.push( parseInt( coordsArray[i], 10 ) ); + } + + result = PLUGINS.polys[shape].apply( + this, coords.concat( corner ) + ); + } + + // If no shapre calculation method was found, return false + else { + return FALSE; + } + + // Make sure we account for padding and borders on the image + imageOffset = image.offset(); + imageOffset.left += Math.ceil( (image.outerWidth( FALSE ) - image.width()) / 2 ); + imageOffset.top += Math.ceil( (image.outerHeight( FALSE ) - image.height()) / 2 ); + + // Add image position to offset coordinates + result.position.left += imageOffset.left; + result.position.top += imageOffset.top; + + return result; + }; + ; + var IE6, + + /* + * BGIFrame adaption (http://plugins.jquery.com/project/bgiframe) + * Special thanks to Brandon Aaron + */ + BGIFRAME = ''; + + function Ie6( api, qtip ) { + this._ns = 'ie6'; + this.init( (this.qtip = api) ); + } + + $.extend( + Ie6.prototype, { + _scroll: function() { + var overlay = this.qtip.elements.overlay; + overlay && (overlay[0].style.top = $( window ).scrollTop() + 'px'); + }, + + init: function( qtip ) { + var tooltip = qtip.tooltip, + scroll; + + // Create the BGIFrame element if needed + if ( $( 'select, object' ).length < 1 ) { + this.bgiframe = qtip.elements.bgiframe = $( BGIFRAME ).appendTo( tooltip ); + + // Update BGIFrame on tooltip move + qtip._bind( tooltip, 'tooltipmove', this.adjustBGIFrame, this._ns, this ); + } + + // redraw() container for width/height calculations + this.redrawContainer = $( '
', {id: NAMESPACE + '-rcontainer'} ) + .appendTo( document.body ); + + // Fixup modal plugin if present too + if ( qtip.elements.overlay && qtip.elements.overlay.addClass( 'qtipmodal-ie6fix' ) ) { + qtip._bind( window, ['scroll', 'resize'], this._scroll, this._ns, this ); + qtip._bind( tooltip, ['tooltipshow'], this._scroll, this._ns, this ); + } + + // Set dimensions + this.redraw(); + }, + + adjustBGIFrame: function() { + var tooltip = this.qtip.tooltip, + dimensions = { + height: tooltip.outerHeight( FALSE ), + width: tooltip.outerWidth( FALSE ) + }, + plugin = this.qtip.plugins.tip, + tip = this.qtip.elements.tip, + tipAdjust, offset; + + // Adjust border offset + offset = parseInt( tooltip.css( 'borderLeftWidth' ), 10 ) || 0; + offset = {left: -offset, top: -offset}; + + // Adjust for tips plugin + if ( plugin && tip ) { + tipAdjust = (plugin.corner.precedance === 'x') ? [WIDTH, LEFT] : [HEIGHT, TOP]; + offset[tipAdjust[1]] -= tip[tipAdjust[0]](); + } + + // Update bgiframe + this.bgiframe.css( offset ).css( dimensions ); + }, + + // Max/min width simulator function + redraw: function() { + if ( this.qtip.rendered < 1 || this.drawing ) { + return this; + } + + var tooltip = this.qtip.tooltip, + style = this.qtip.options.style, + container = this.qtip.options.position.container, + perc, width, max, min; + + // Set drawing flag + this.qtip.drawing = 1; + + // If tooltip has a set height/width, just set it... like a boss! + if ( style.height ) { + tooltip.css( HEIGHT, style.height ); + } + if ( style.width ) { + tooltip.css( WIDTH, style.width ); + } + + // Simulate max/min width if not set width present... + else { + // Reset width and add fluid class + tooltip.css( WIDTH, '' ).appendTo( this.redrawContainer ); + + // Grab our tooltip width (add 1 if odd so we don't get wrapping problems.. huzzah!) + width = tooltip.width(); + if ( width % 2 < 1 ) { + width += 1; + } + + // Grab our max/min properties + max = tooltip.css( 'maxWidth' ) || ''; + min = tooltip.css( 'minWidth' ) || ''; + + // Parse into proper pixel values + perc = (max + min).indexOf( '%' ) > -1 ? container.width() / 100 : 0; + max = ((max.indexOf( '%' ) > -1 ? perc : 1) * parseInt( max, 10 )) || width; + min = ((min.indexOf( '%' ) > -1 ? perc : 1) * parseInt( min, 10 )) || 0; + + // Determine new dimension size based on max/min/current values + width = max + min ? Math.min( Math.max( width, min ), max ) : width; + + // Set the newly calculated width and remvoe fluid class + tooltip.css( WIDTH, Math.round( width ) ).appendTo( container ); + } + + // Set drawing flag + this.drawing = 0; + + return this; + }, + + destroy: function() { + // Remove iframe + this.bgiframe && this.bgiframe.remove(); + + // Remove bound events + this.qtip._unbind( [window, this.qtip.tooltip], this._ns ); + } + } + ); + + IE6 = PLUGINS.ie6 = function( api ) { + // Proceed only if the browser is IE6 + return BROWSER.ie === 6 ? new Ie6( api ) : FALSE; + }; + + IE6.initialize = 'render'; + + CHECKS.ie6 = { + '^content|style$': function() { + this.redraw(); + } + }; + ; + } + )); + }( window, document )); +} + + + + diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js new file mode 100644 index 00000000..291133fd --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/qtip/jquery.qtip.min.js @@ -0,0 +1,3 @@ +/* qTip2 v2.2.0 None | qtip2.com | Licensed MIT, GPL | Sun Dec 15 2013 23:29:05 */ +if ( typeof jQuery.qtip === 'undefined' ) {!function(a,b,c){!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):jQuery&&!jQuery.fn.qtip&&a(jQuery)}(function(d){"use strict";function e(a,b,c,e){this.id=c,this.target=a,this.tooltip=A,this.elements={target:a},this._id=J+"-"+c,this.timers={img:{}},this.options=b,this.plugins={},this.cache={event:{},target:d(),disabled:z,attr:e,onTooltip:z,lastClass:""},this.rendered=this.destroyed=this.disabled=this.waiting=this.hiddenDuringWait=this.positioning=this.triggering=z}function f(a){return a===A||"object"!==d.type(a)}function g(a){return!(d.isFunction(a)||a&&a.attr||a.length||"object"===d.type(a)&&(a.jquery||a.then))}function h(a){var b,c,e,h;return f(a)?z:(f(a.metadata)&&(a.metadata={type:a.metadata}),"content"in a&&(b=a.content,f(b)||b.jquery||b.done?b=a.content={text:c=g(b)?z:b}:c=b.text,"ajax"in b&&(e=b.ajax,h=e&&e.once!==z,delete b.ajax,b.text=function(a,b){var f=c||d(this).attr(b.options.content.attr)||"Loading...",g=d.ajax(d.extend({},e,{context:b})).then(e.success,A,e.error).then(function(a){return a&&h&&b.set("content.text",a),a},function(a,c,d){b.destroyed||0===a.status||b.set("content.text",c+": "+d)});return h?f:(b.set("content.text",f),g)}),"title"in b&&(f(b.title)||(b.button=b.title.button,b.title=b.title.text),g(b.title||z)&&(b.title=z))),"position"in a&&f(a.position)&&(a.position={my:a.position,at:a.position}),"show"in a&&f(a.show)&&(a.show=a.show.jquery?{target:a.show}:a.show===y?{ready:y}:{event:a.show}),"hide"in a&&f(a.hide)&&(a.hide=a.hide.jquery?{target:a.hide}:{event:a.hide}),"style"in a&&f(a.style)&&(a.style={classes:a.style}),d.each(I,function(){this.sanitize&&this.sanitize(a)}),a)}function i(a,b){for(var c,d=0,e=a,f=b.split(".");e=e[f[d++]];)d0?setTimeout(d.proxy(a,this),b):(a.call(this),void 0)}function n(a){return this.tooltip.hasClass(T)?z:(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this.timers.show=m.call(this,function(){this.toggle(y,a)},this.options.show.delay),void 0)}function o(a){if(this.tooltip.hasClass(T))return z;var b=d(a.relatedTarget),c=b.closest(N)[0]===this.tooltip[0],e=b[0]===this.options.show.target[0];if(clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this!==b[0]&&"mouse"===this.options.position.target&&c||this.options.hide.fixed&&/mouse(out|leave|move)/.test(a.type)&&(c||e))try{a.preventDefault(),a.stopImmediatePropagation()}catch(f){}else this.timers.hide=m.call(this,function(){this.toggle(z,a)},this.options.hide.delay,this)}function p(a){return this.tooltip.hasClass(T)||!this.options.hide.inactive?z:(clearTimeout(this.timers.inactive),this.timers.inactive=m.call(this,function(){this.hide(a)},this.options.hide.inactive),void 0)}function q(a){this.rendered&&this.tooltip[0].offsetWidth>0&&this.reposition(a)}function r(a,c,e){d(b.body).delegate(a,(c.split?c:c.join($+" "))+$,function(){var a=t.api[d.attr(this,L)];a&&!a.disabled&&e.apply(a,arguments)})}function s(a,c,f){var g,i,j,k,l,m=d(b.body),n=a[0]===b?m:a,o=a.metadata?a.metadata(f.metadata):A,p="html5"===f.metadata.type&&o?o[f.metadata.name]:A,q=a.data(f.metadata.name||"qtipopts");try{q="string"==typeof q?d.parseJSON(q):q}catch(r){}if(k=d.extend(y,{},t.defaults,f,"object"==typeof q?h(q):A,h(p||o)),i=k.position,k.id=c,"boolean"==typeof k.content.text){if(j=a.attr(k.content.attr),k.content.attr===z||!j)return z;k.content.text=j}if(i.container.length||(i.container=m),i.target===z&&(i.target=n),k.show.target===z&&(k.show.target=n),k.show.solo===y&&(k.show.solo=i.container.closest("body")),k.hide.target===z&&(k.hide.target=n),k.position.viewport===y&&(k.position.viewport=i.container),i.container=i.container.eq(0),i.at=new v(i.at,y),i.my=new v(i.my),a.data(J))if(k.overwrite)a.qtip("destroy",!0);else if(k.overwrite===z)return z;return a.attr(K,c),k.suppress&&(l=a.attr("title"))&&a.removeAttr("title").attr(V,l).attr("title",""),g=new e(a,k,c,!!j),a.data(J,g),a.one("remove.qtip-"+c+" removeqtip.qtip-"+c,function(){var a;(a=d(this).data(J))&&a.destroy(!0)}),g}var t,u,v,w,x,y=!0,z=!1,A=null,B="x",C="y",D="top",E="left",F="bottom",G="right",H="center",I={},J="qtip",K="data-hasqtip",L="data-qtip-id",M=["ui-widget","ui-tooltip"],N="."+J,O="click dblclick mousedown mouseup mousemove mouseleave mouseenter".split(" "),P=J+"-fixed",Q=J+"-default",R=J+"-focus",S=J+"-hover",T=J+"-disabled",U="_replacedByqTip",V="oldtitle",W={ie:function(){for(var a=3,c=b.createElement("div");(c.innerHTML="")&&c.getElementsByTagName("i")[0];);return a>4?a:0/0}(),iOS:parseFloat((""+(/CPU.*OS ([0-9_]{1,5})|(CPU like).*AppleWebKit.*Mobile/i.exec(navigator.userAgent)||[0,""])[1]).replace("undefined","3_2").replace("_",".").replace("_",""))||z};u=e.prototype,u._when=function(a){return d.when.apply(d,a)},u.render=function(a){if(this.rendered||this.destroyed)return this;var b,c=this,e=this.options,f=this.cache,g=this.elements,h=e.content.text,i=e.content.title,j=e.content.button,k=e.position,l=("."+this._id+" ",[]);return d.attr(this.target[0],"aria-describedby",this._id),this.tooltip=g.tooltip=b=d("
",{id:this._id,"class":[J,Q,e.style.classes,J+"-pos-"+e.position.my.abbrev()].join(" "),width:e.style.width||"",height:e.style.height||"",tracking:"mouse"===k.target&&k.adjust.mouse,role:"alert","aria-live":"polite","aria-atomic":z,"aria-describedby":this._id+"-content","aria-hidden":y}).toggleClass(T,this.disabled).attr(L,this.id).data(J,this).appendTo(k.container).append(g.content=d("
",{"class":J+"-content",id:this._id+"-content","aria-atomic":y})),this.rendered=-1,this.positioning=y,i&&(this._createTitle(),d.isFunction(i)||l.push(this._updateTitle(i,z))),j&&this._createButton(),d.isFunction(h)||l.push(this._updateContent(h,z)),this.rendered=y,this._setWidget(),d.each(I,function(a){var b;"render"===this.initialize&&(b=this(c))&&(c.plugins[a]=b)}),this._unassignEvents(),this._assignEvents(),this._when(l).then(function(){c._trigger("render"),c.positioning=z,c.hiddenDuringWait||!e.show.ready&&!a||c.toggle(y,f.event,z),c.hiddenDuringWait=z}),t.api[this.id]=this,this},u.destroy=function(a){function b(){if(!this.destroyed){this.destroyed=y;var a=this.target,b=a.attr(V);this.rendered&&this.tooltip.stop(1,0).find("*").remove().end().remove(),d.each(this.plugins,function(){this.destroy&&this.destroy()}),clearTimeout(this.timers.show),clearTimeout(this.timers.hide),this._unassignEvents(),a.removeData(J).removeAttr(L).removeAttr(K).removeAttr("aria-describedby"),this.options.suppress&&b&&a.attr("title",b).removeAttr(V),this._unbind(a),this.options=this.elements=this.cache=this.timers=this.plugins=this.mouse=A,delete t.api[this.id]}}return this.destroyed?this.target:(a===y&&"hide"!==this.triggering||!this.rendered?b.call(this):(this.tooltip.one("tooltiphidden",d.proxy(b,this)),!this.triggering&&this.hide()),this.target)},w=u.checks={builtin:{"^id$":function(a,b,c,e){var f=c===y?t.nextid:c,g=J+"-"+f;f!==z&&f.length>0&&!d("#"+g).length?(this._id=g,this.rendered&&(this.tooltip[0].id=this._id,this.elements.content[0].id=this._id+"-content",this.elements.title[0].id=this._id+"-title")):a[b]=e},"^prerender":function(a,b,c){c&&!this.rendered&&this.render(this.options.show.ready)},"^content.text$":function(a,b,c){this._updateContent(c)},"^content.attr$":function(a,b,c,d){this.options.content.text===this.target.attr(d)&&this._updateContent(this.target.attr(c))},"^content.title$":function(a,b,c){return c?(c&&!this.elements.title&&this._createTitle(),this._updateTitle(c),void 0):this._removeTitle()},"^content.button$":function(a,b,c){this._updateButton(c)},"^content.title.(text|button)$":function(a,b,c){this.set("content."+b,c)},"^position.(my|at)$":function(a,b,c){"string"==typeof c&&(a[b]=new v(c,"at"===b))},"^position.container$":function(a,b,c){this.rendered&&this.tooltip.appendTo(c)},"^show.ready$":function(a,b,c){c&&(!this.rendered&&this.render(y)||this.toggle(y))},"^style.classes$":function(a,b,c,d){this.rendered&&this.tooltip.removeClass(d).addClass(c)},"^style.(width|height)":function(a,b,c){this.rendered&&this.tooltip.css(b,c)},"^style.widget|content.title":function(){this.rendered&&this._setWidget()},"^style.def":function(a,b,c){this.rendered&&this.tooltip.toggleClass(Q,!!c)},"^events.(render|show|move|hide|focus|blur)$":function(a,b,c){this.rendered&&this.tooltip[(d.isFunction(c)?"":"un")+"bind"]("tooltip"+b,c)},"^(show|hide|position).(event|target|fixed|inactive|leave|distance|viewport|adjust)":function(){if(this.rendered){var a=this.options.position;this.tooltip.attr("tracking","mouse"===a.target&&a.adjust.mouse),this._unassignEvents(),this._assignEvents()}}}},u.get=function(a){if(this.destroyed)return this;var b=i(this.options,a.toLowerCase()),c=b[0][b[1]];return c.precedance?c.string():c};var X=/^position\.(my|at|adjust|target|container|viewport)|style|content|show\.ready/i,Y=/^prerender|show\.ready/i;u.set=function(a,b){if(this.destroyed)return this;{var c,e=this.rendered,f=z,g=this.options;this.checks}return"string"==typeof a?(c=a,a={},a[c]=b):a=d.extend({},a),d.each(a,function(b,c){if(e&&Y.test(b))return delete a[b],void 0;var h,j=i(g,b.toLowerCase());h=j[0][j[1]],j[0][j[1]]=c&&c.nodeType?d(c):c,f=X.test(b)||f,a[b]=[j[0],j[1],c,h]}),h(g),this.positioning=y,d.each(a,d.proxy(j,this)),this.positioning=z,this.rendered&&this.tooltip[0].offsetWidth>0&&f&&this.reposition("mouse"===g.position.target?A:this.cache.event),this},u._update=function(a,b){var c=this,e=this.cache;return this.rendered&&a?(d.isFunction(a)&&(a=a.call(this.elements.target,e.event,this)||""),d.isFunction(a.then)?(e.waiting=y,a.then(function(a){return e.waiting=z,c._update(a,b)},A,function(a){return c._update(a,b)})):a===z||!a&&""!==a?z:(a.jquery&&a.length>0?b.empty().append(a.css({display:"block",visibility:"visible"})):b.html(a),this._waitForContent(b).then(function(a){a.images&&a.images.length&&c.rendered&&c.tooltip[0].offsetWidth>0&&c.reposition(e.event,!a.length)}))):z},u._waitForContent=function(a){var b=this.cache;return b.waiting=y,(d.fn.imagesLoaded?a.imagesLoaded():d.Deferred().resolve([])).done(function(){b.waiting=z}).promise()},u._updateContent=function(a,b){this._update(a,this.elements.content,b)},u._updateTitle=function(a,b){this._update(a,this.elements.title,b)===z&&this._removeTitle(z)},u._createTitle=function(){var a=this.elements,b=this._id+"-title";a.titlebar&&this._removeTitle(),a.titlebar=d("
",{"class":J+"-titlebar "+(this.options.style.widget?k("header"):"")}).append(a.title=d("
",{id:b,"class":J+"-title","aria-atomic":y})).insertBefore(a.content).delegate(".qtip-close","mousedown keydown mouseup keyup mouseout",function(a){d(this).toggleClass("ui-state-active ui-state-focus","down"===a.type.substr(-4))}).delegate(".qtip-close","mouseover mouseout",function(a){d(this).toggleClass("ui-state-hover","mouseover"===a.type)}),this.options.content.button&&this._createButton()},u._removeTitle=function(a){var b=this.elements;b.title&&(b.titlebar.remove(),b.titlebar=b.title=b.button=A,a!==z&&this.reposition())},u.reposition=function(c,e){if(!this.rendered||this.positioning||this.destroyed)return this;this.positioning=y;var f,g,h=this.cache,i=this.tooltip,j=this.options.position,k=j.target,l=j.my,m=j.at,n=j.viewport,o=j.container,p=j.adjust,q=p.method.split(" "),r=i.outerWidth(z),s=i.outerHeight(z),t=0,u=0,v=i.css("position"),w={left:0,top:0},x=i[0].offsetWidth>0,A=c&&"scroll"===c.type,B=d(a),C=o[0].ownerDocument,J=this.mouse;if(d.isArray(k)&&2===k.length)m={x:E,y:D},w={left:k[0],top:k[1]};else if("mouse"===k)m={x:E,y:D},!J||!J.pageX||!p.mouse&&c&&c.pageX?c&&c.pageX||((!p.mouse||this.options.show.distance)&&h.origin&&h.origin.pageX?c=h.origin:(!c||c&&("resize"===c.type||"scroll"===c.type))&&(c=h.event)):c=J,"static"!==v&&(w=o.offset()),C.body.offsetWidth!==(a.innerWidth||C.documentElement.clientWidth)&&(g=d(b.body).offset()),w={left:c.pageX-w.left+(g&&g.left||0),top:c.pageY-w.top+(g&&g.top||0)},p.mouse&&A&&J&&(w.left-=(J.scrollX||0)-B.scrollLeft(),w.top-=(J.scrollY||0)-B.scrollTop());else{if("event"===k?c&&c.target&&"scroll"!==c.type&&"resize"!==c.type?h.target=d(c.target):c.target||(h.target=this.elements.target):"event"!==k&&(h.target=d(k.jquery?k:this.elements.target)),k=h.target,k=d(k).eq(0),0===k.length)return this;k[0]===b||k[0]===a?(t=W.iOS?a.innerWidth:k.width(),u=W.iOS?a.innerHeight:k.height(),k[0]===a&&(w={top:(n||k).scrollTop(),left:(n||k).scrollLeft()})):I.imagemap&&k.is("area")?f=I.imagemap(this,k,m,I.viewport?q:z):I.svg&&k&&k[0].ownerSVGElement?f=I.svg(this,k,m,I.viewport?q:z):(t=k.outerWidth(z),u=k.outerHeight(z),w=k.offset()),f&&(t=f.width,u=f.height,g=f.offset,w=f.position),w=this.reposition.offset(k,w,o),(W.iOS>3.1&&W.iOS<4.1||W.iOS>=4.3&&W.iOS<4.33||!W.iOS&&"fixed"===v)&&(w.left-=B.scrollLeft(),w.top-=B.scrollTop()),(!f||f&&f.adjustable!==z)&&(w.left+=m.x===G?t:m.x===H?t/2:0,w.top+=m.y===F?u:m.y===H?u/2:0)}return w.left+=p.x+(l.x===G?-r:l.x===H?-r/2:0),w.top+=p.y+(l.y===F?-s:l.y===H?-s/2:0),I.viewport?(w.adjusted=I.viewport(this,w,j,t,u,r,s),g&&w.adjusted.left&&(w.left+=g.left),g&&w.adjusted.top&&(w.top+=g.top)):w.adjusted={left:0,top:0},this._trigger("move",[w,n.elem||n],c)?(delete w.adjusted,e===z||!x||isNaN(w.left)||isNaN(w.top)||"mouse"===k||!d.isFunction(j.effect)?i.css(w):d.isFunction(j.effect)&&(j.effect.call(i,this,d.extend({},w)),i.queue(function(a){d(this).css({opacity:"",height:""}),W.ie&&this.style.removeAttribute("filter"),a()})),this.positioning=z,this):this},u.reposition.offset=function(a,c,e){function f(a,b){c.left+=b*a.scrollLeft(),c.top+=b*a.scrollTop()}if(!e[0])return c;var g,h,i,j,k=d(a[0].ownerDocument),l=!!W.ie&&"CSS1Compat"!==b.compatMode,m=e[0];do"static"!==(h=d.css(m,"position"))&&("fixed"===h?(i=m.getBoundingClientRect(),f(k,-1)):(i=d(m).position(),i.left+=parseFloat(d.css(m,"borderLeftWidth"))||0,i.top+=parseFloat(d.css(m,"borderTopWidth"))||0),c.left-=i.left+(parseFloat(d.css(m,"marginLeft"))||0),c.top-=i.top+(parseFloat(d.css(m,"marginTop"))||0),g||"hidden"===(j=d.css(m,"overflow"))||"visible"===j||(g=d(m)));while(m=m.offsetParent);return g&&(g[0]!==k[0]||l)&&f(g,1),c};var Z=(v=u.reposition.Corner=function(a,b){a=(""+a).replace(/([A-Z])/," $1").replace(/middle/gi,H).toLowerCase(),this.x=(a.match(/left|right/i)||a.match(/center/)||["inherit"])[0].toLowerCase(),this.y=(a.match(/top|bottom|center/i)||["inherit"])[0].toLowerCase(),this.forceY=!!b;var c=a.charAt(0);this.precedance="t"===c||"b"===c?C:B}).prototype;Z.invert=function(a,b){this[a]=this[a]===E?G:this[a]===G?E:b||this[a]},Z.string=function(){var a=this.x,b=this.y;return a===b?a:this.precedance===C||this.forceY&&"center"!==b?b+" "+a:a+" "+b},Z.abbrev=function(){var a=this.string().split(" ");return a[0].charAt(0)+(a[1]&&a[1].charAt(0)||"")},Z.clone=function(){return new v(this.string(),this.forceY)},u.toggle=function(a,c){var e=this.cache,f=this.options,g=this.tooltip;if(c){if(/over|enter/.test(c.type)&&/out|leave/.test(e.event.type)&&f.show.target.add(c.target).length===f.show.target.length&&g.has(c.relatedTarget).length)return this;e.event=l(c)}if(this.waiting&&!a&&(this.hiddenDuringWait=y),!this.rendered)return a?this.render(1):this;if(this.destroyed||this.disabled)return this;var h,i,j,k=a?"show":"hide",m=this.options[k],n=(this.options[a?"hide":"show"],this.options.position),o=this.options.content,p=this.tooltip.css("width"),q=this.tooltip.is(":visible"),r=a||1===m.target.length,s=!c||m.target.length<2||e.target[0]===c.target;return(typeof a).search("boolean|number")&&(a=!q),h=!g.is(":animated")&&q===a&&s,i=h?A:!!this._trigger(k,[90]),this.destroyed?this:(i!==z&&a&&this.focus(c),!i||h?this:(d.attr(g[0],"aria-hidden",!a),a?(e.origin=l(this.mouse),d.isFunction(o.text)&&this._updateContent(o.text,z),d.isFunction(o.title)&&this._updateTitle(o.title,z),!x&&"mouse"===n.target&&n.adjust.mouse&&(d(b).bind("mousemove."+J,this._storeMouse),x=y),p||g.css("width",g.outerWidth(z)),this.reposition(c,arguments[2]),p||g.css("width",""),m.solo&&("string"==typeof m.solo?d(m.solo):d(N,m.solo)).not(g).not(m.target).qtip("hide",d.Event("tooltipsolo"))):(clearTimeout(this.timers.show),delete e.origin,x&&!d(N+'[tracking="true"]:visible',m.solo).not(g).length&&(d(b).unbind("mousemove."+J),x=z),this.blur(c)),j=d.proxy(function(){a?(W.ie&&g[0].style.removeAttribute("filter"),g.css("overflow",""),"string"==typeof m.autofocus&&d(this.options.show.autofocus,g).focus(),this.options.show.target.trigger("qtip-"+this.id+"-inactive")):g.css({display:"",visibility:"",opacity:"",left:"",top:""}),this._trigger(a?"visible":"hidden")},this),m.effect===z||r===z?(g[k](),j()):d.isFunction(m.effect)?(g.stop(1,1),m.effect.call(g,this),g.queue("fx",function(a){j(),a()})):g.fadeTo(90,a?1:0,j),a&&m.target.trigger("qtip-"+this.id+"-inactive"),this))},u.show=function(a){return this.toggle(y,a)},u.hide=function(a){return this.toggle(z,a)},u.focus=function(a){if(!this.rendered||this.destroyed)return this;var b=d(N),c=this.tooltip,e=parseInt(c[0].style.zIndex,10),f=t.zindex+b.length;return c.hasClass(R)||this._trigger("focus",[f],a)&&(e!==f&&(b.each(function(){this.style.zIndex>e&&(this.style.zIndex=this.style.zIndex-1)}),b.filter("."+R).qtip("blur",a)),c.addClass(R)[0].style.zIndex=f),this},u.blur=function(a){return!this.rendered||this.destroyed?this:(this.tooltip.removeClass(R),this._trigger("blur",[this.tooltip.css("zIndex")],a),this)},u.disable=function(a){return this.destroyed?this:("toggle"===a?a=!(this.rendered?this.tooltip.hasClass(T):this.disabled):"boolean"!=typeof a&&(a=y),this.rendered&&this.tooltip.toggleClass(T,a).attr("aria-disabled",a),this.disabled=!!a,this)},u.enable=function(){return this.disable(z)},u._createButton=function(){var a=this,b=this.elements,c=b.tooltip,e=this.options.content.button,f="string"==typeof e,g=f?e:"Close tooltip";b.button&&b.button.remove(),b.button=e.jquery?e:d("",{"class":"qtip-close "+(this.options.style.widget?"":J+"-icon"),title:g,"aria-label":g}).prepend(d("",{"class":"ui-icon ui-icon-close",html:"×"})),b.button.appendTo(b.titlebar||c).attr("role","button").click(function(b){return c.hasClass(T)||a.hide(b),z})},u._updateButton=function(a){if(!this.rendered)return z;var b=this.elements.button;a?this._createButton():b.remove()},u._setWidget=function(){var a=this.options.style.widget,b=this.elements,c=b.tooltip,d=c.hasClass(T);c.removeClass(T),T=a?"ui-state-disabled":"qtip-disabled",c.toggleClass(T,d),c.toggleClass("ui-helper-reset "+k(),a).toggleClass(Q,this.options.style.def&&!a),b.content&&b.content.toggleClass(k("content"),a),b.titlebar&&b.titlebar.toggleClass(k("header"),a),b.button&&b.button.toggleClass(J+"-icon",!a)},u._storeMouse=function(a){(this.mouse=l(a)).type="mousemove"},u._bind=function(a,b,c,e,f){var g="."+this._id+(e?"-"+e:"");b.length&&d(a).bind((b.split?b:b.join(g+" "))+g,d.proxy(c,f||this))},u._unbind=function(a,b){d(a).unbind("."+this._id+(b?"-"+b:""))};var $="."+J;d(function(){r(N,["mouseenter","mouseleave"],function(a){var b="mouseenter"===a.type,c=d(a.currentTarget),e=d(a.relatedTarget||a.target),f=this.options;b?(this.focus(a),c.hasClass(P)&&!c.hasClass(T)&&clearTimeout(this.timers.hide)):"mouse"===f.position.target&&f.hide.event&&f.show.target&&!e.closest(f.show.target[0]).length&&this.hide(a),c.toggleClass(S,b)}),r("["+L+"]",O,p)}),u._trigger=function(a,b,c){var e=d.Event("tooltip"+a);return e.originalEvent=c&&d.extend({},c)||this.cache.event||A,this.triggering=a,this.tooltip.trigger(e,[this].concat(b||[])),this.triggering=z,!e.isDefaultPrevented()},u._bindEvents=function(a,b,c,e,f,g){if(e.add(c).length===e.length){var h=[];b=d.map(b,function(b){var c=d.inArray(b,a);return c>-1?(h.push(a.splice(c,1)[0]),void 0):b}),h.length&&this._bind(c,h,function(a){var b=this.rendered?this.tooltip[0].offsetWidth>0:!1;(b?g:f).call(this,a)})}this._bind(c,a,f),this._bind(e,b,g)},u._assignInitialEvents=function(a){function b(a){return this.disabled||this.destroyed?z:(this.cache.event=l(a),this.cache.target=a?d(a.target):[c],clearTimeout(this.timers.show),this.timers.show=m.call(this,function(){this.render("object"==typeof a||e.show.ready)},e.show.delay),void 0)}var e=this.options,f=e.show.target,g=e.hide.target,h=e.show.event?d.trim(""+e.show.event).split(" "):[],i=e.hide.event?d.trim(""+e.hide.event).split(" "):[];/mouse(over|enter)/i.test(e.show.event)&&!/mouse(out|leave)/i.test(e.hide.event)&&i.push("mouseleave"),this._bind(f,"mousemove",function(a){this._storeMouse(a),this.cache.onTarget=y}),this._bindEvents(h,i,f,g,b,function(){clearTimeout(this.timers.show)}),(e.show.ready||e.prerender)&&b.call(this,a)},u._assignEvents=function(){var c=this,e=this.options,f=e.position,g=this.tooltip,h=e.show.target,i=e.hide.target,j=f.container,k=f.viewport,l=d(b),m=(d(b.body),d(a)),r=e.show.event?d.trim(""+e.show.event).split(" "):[],s=e.hide.event?d.trim(""+e.hide.event).split(" "):[];d.each(e.events,function(a,b){c._bind(g,"toggle"===a?["tooltipshow","tooltiphide"]:["tooltip"+a],b,null,g)}),/mouse(out|leave)/i.test(e.hide.event)&&"window"===e.hide.leave&&this._bind(l,["mouseout","blur"],function(a){/select|option/.test(a.target.nodeName)||a.relatedTarget||this.hide(a)}),e.hide.fixed?i=i.add(g.addClass(P)):/mouse(over|enter)/i.test(e.show.event)&&this._bind(i,"mouseleave",function(){clearTimeout(this.timers.show)}),(""+e.hide.event).indexOf("unfocus")>-1&&this._bind(j.closest("html"),["mousedown","touchstart"],function(a){var b=d(a.target),c=this.rendered&&!this.tooltip.hasClass(T)&&this.tooltip[0].offsetWidth>0,e=b.parents(N).filter(this.tooltip[0]).length>0;b[0]===this.target[0]||b[0]===this.tooltip[0]||e||this.target.has(b[0]).length||!c||this.hide(a)}),"number"==typeof e.hide.inactive&&(this._bind(h,"qtip-"+this.id+"-inactive",p),this._bind(i.add(g),t.inactiveEvents,p,"-inactive")),this._bindEvents(r,s,h,i,n,o),this._bind(h.add(g),"mousemove",function(a){if("number"==typeof e.hide.distance){var b=this.cache.origin||{},c=this.options.hide.distance,d=Math.abs;(d(a.pageX-b.pageX)>=c||d(a.pageY-b.pageY)>=c)&&this.hide(a)}this._storeMouse(a)}),"mouse"===f.target&&f.adjust.mouse&&(e.hide.event&&this._bind(h,["mouseenter","mouseleave"],function(a){this.cache.onTarget="mouseenter"===a.type}),this._bind(l,"mousemove",function(a){this.rendered&&this.cache.onTarget&&!this.tooltip.hasClass(T)&&this.tooltip[0].offsetWidth>0&&this.reposition(a)})),(f.adjust.resize||k.length)&&this._bind(d.event.special.resize?k:m,"resize",q),f.adjust.scroll&&this._bind(m.add(f.container),"scroll",q)},u._unassignEvents=function(){var c=[this.options.show.target[0],this.options.hide.target[0],this.rendered&&this.tooltip[0],this.options.position.container[0],this.options.position.viewport[0],this.options.position.container.closest("html")[0],a,b];this._unbind(d([]).pushStack(d.grep(c,function(a){return"object"==typeof a})))},t=d.fn.qtip=function(a,b,e){var f=(""+a).toLowerCase(),g=A,i=d.makeArray(arguments).slice(1),j=i[i.length-1],k=this[0]?d.data(this[0],J):A;return!arguments.length&&k||"api"===f?k:"string"==typeof a?(this.each(function(){var a=d.data(this,J);if(!a)return y;if(j&&j.timeStamp&&(a.cache.event=j),!b||"option"!==f&&"options"!==f)a[f]&&a[f].apply(a,i);else{if(e===c&&!d.isPlainObject(b))return g=a.get(b),z;a.set(b,e)}}),g!==A?g:this):"object"!=typeof a&&arguments.length?void 0:(k=h(d.extend(y,{},a)),this.each(function(a){var b,c;return c=d.isArray(k.id)?k.id[a]:k.id,c=!c||c===z||c.length<1||t.api[c]?t.nextid++:c,b=s(d(this),c,k),b===z?y:(t.api[c]=b,d.each(I,function(){"initialize"===this.initialize&&this(b)}),b._assignInitialEvents(j),void 0)}))},d.qtip=e,t.api={},d.each({attr:function(a,b){if(this.length){var c=this[0],e="title",f=d.data(c,"qtip");if(a===e&&f&&"object"==typeof f&&f.options.suppress)return arguments.length<2?d.attr(c,V):(f&&f.options.content.attr===e&&f.cache.attr&&f.set("content.text",b),this.attr(V,b))}return d.fn["attr"+U].apply(this,arguments)},clone:function(a){var b=(d([]),d.fn["clone"+U].apply(this,arguments));return a||b.filter("["+V+"]").attr("title",function(){return d.attr(this,V)}).removeAttr(V),b}},function(a,b){if(!b||d.fn[a+U])return y;var c=d.fn[a+U]=d.fn[a];d.fn[a]=function(){return b.apply(this,arguments)||c.apply(this,arguments)}}),d.ui||(d["cleanData"+U]=d.cleanData,d.cleanData=function(a){for(var b,c=0;(b=d(a[c])).length;c++)if(b.attr(K))try{b.triggerHandler("removeqtip")}catch(e){}d["cleanData"+U].apply(this,arguments)}),t.version="2.2.0",t.nextid=0,t.inactiveEvents=O,t.zindex=15e3,t.defaults={prerender:z,id:z,overwrite:y,suppress:y,content:{text:y,attr:"title",title:z,button:z},position:{my:"top left",at:"bottom right",target:z,container:z,viewport:z,adjust:{x:0,y:0,mouse:y,scroll:y,resize:y,method:"flipinvert flipinvert"},effect:function(a,b){d(this).animate(b,{duration:200,queue:z})}},show:{target:z,event:"mouseenter",effect:y,delay:90,solo:z,ready:z,autofocus:z},hide:{target:z,event:"mouseleave",effect:y,delay:0,fixed:z,inactive:z,leave:"window",distance:z},style:{classes:"",widget:z,width:z,height:z,def:y},events:{render:A,move:A,show:A,hide:A,toggle:A,visible:A,hidden:A,focus:A,blur:A}}})}(window,document);} +//# sourceMappingURL=http://cdnjs.cloudflare.com/ajax/libs/qtip2/2.2.0//var/www/qtip2/build/tmp/tmp-9404qaj6jps/jquery.qtip.min.map \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2.sortable.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2.sortable.js new file mode 100644 index 00000000..2bb246ae --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2.sortable.js @@ -0,0 +1,125 @@ +/** + * jQuery Select2 Sortable + * - enable select2 to be sortable via normal select element + * + * author : Vafour + * inspired by : jQuery Chosen Sortable (https://github.com/mrhenry/jquery-chosen-sortable) + * License : GPL + */ + +(function($){ + $.fn.extend({ + select2SortableOrder: function(){ + var $this = this.filter('[multiple]'); + + $this.each(function(){ + var $select = $(this); + + // skip elements not select2-ed + if(typeof($select.data('select2')) !== 'object'){ + return false; + } + + var $select2 = $select.siblings('.select2-container'), + unselected = [], + sorted; + + $select.find('option').each(function(){ + !this.selected && unselected.push(this); + }); + + sorted = $($select2.find('.select2-choices li[class!="select2-search-field"]').map( function() { + if (!this) { + return undefined; + } + var id = $(this).data('select2Data').id; + return $select.find('option[value="' + id + '"]')[0]; + })); + + sorted.push.apply(sorted, unselected); + $select.children().remove(); + $select.append(sorted); + }); + + return $this; + }, + select2Sortable: function(){ + var args = Array.prototype.slice.call(arguments, 0); + $this = this.filter('[multiple]'), + validMethods = ['destroy']; + + if(args.length === 0 || typeof(args[0]) === 'object') + { + var defaultOptions = { + bindOrder : 'formSubmit', // or sortableStop + sortableOptions : { + placeholder : 'ui-state-highlight', + items : 'li:not(.select2-search-field)', + tolerance : 'pointer' + } + }; + var options = $.extend(defaultOptions, args[0]); + + // Init select2 only if not already initialized to prevent select2 configuration loss + if(typeof($this.data('select2')) !== 'object'){ + $this.select2(); + } + + $this.each(function(){ + var $select = $(this), + $select2choices = $select.siblings('.select2-container').find('.select2-choices'); + + // Init jQuery UI Sortable + $select2choices.sortable(options.sortableOptions); + + switch(options.bindOrder){ + case 'sortableStop': + // apply options ordering in sortstop event + $select2choices.on("sortstop.select2sortable", function( event, ui ) { + $select.select2SortableOrder(); + }); + $select.on('change', function(e){ + $(this).select2SortableOrder(); + }); + break; + default: + // apply options ordering in form submit + $select.closest('form').unbind('submit.select2sortable').on('submit.select2sortable', function(){ + $select.select2SortableOrder(); + }); + } + + }); + } + else if(typeof(args[0] === 'string')) + { + if($.inArray(args[0], validMethods) == -1) + { + throw "Unknown method: " + args[0]; + } + if(args[0] === 'destroy') + { + $this.select2SortableDestroy(); + } + } + return $this; + }, + select2SortableDestroy: function(){ + var $this = this.filter('[multiple]'); + $this.each(function(){ + var $select = $(this), + $select2choices = $select.parent().find('.select2-choices'); + + // unbind form submit event + $select.closest('form').unbind('submit.select2sortable'); + + // unbind sortstop event + $select2choices.unbind("sortstop.select2sortable"); + + // destroy select2Sortable + $select2choices.sortable('destroy'); + }); + return $this; + } + }); +}(jQuery)); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2.sortable.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2.sortable.min.js new file mode 100644 index 00000000..0787b5bc --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2.sortable.min.js @@ -0,0 +1 @@ +!function(a){a.fn.extend({select2SortableOrder:function(){var b=this.filter("[multiple]");return b.each(function(){var b=a(this);if("object"!=typeof b.data("select2"))return!1;var c,d=b.siblings(".select2-container"),e=[];b.find("option").each(function(){!this.selected&&e.push(this)}),c=a(d.find('.select2-choices li[class!="select2-search-field"]').map(function(){if(!this)return void 0;var c=a(this).data("select2Data").id;return b.find('option[value="'+c+'"]')[0]})),c.push.apply(c,e),b.children().remove(),b.append(c)}),b},select2Sortable:function(){var b=Array.prototype.slice.call(arguments,0);if($this=this.filter("[multiple]"),validMethods=["destroy"],0===b.length||"object"==typeof b[0]){var c={bindOrder:"formSubmit",sortableOptions:{placeholder:"ui-state-highlight",items:"li:not(.select2-search-field)",tolerance:"pointer"}},d=a.extend(c,b[0]);"object"!=typeof $this.data("select2")&&$this.select2(),$this.each(function(){var b=a(this),c=b.siblings(".select2-container").find(".select2-choices");switch(c.sortable(d.sortableOptions),d.bindOrder){case"sortableStop":c.on("sortstop.select2sortable",function(){b.select2SortableOrder()}),b.on("change",function(){a(this).select2SortableOrder()});break;default:b.closest("form").unbind("submit.select2sortable").on("submit.select2sortable",function(){b.select2SortableOrder()})}})}else{if(-1==a.inArray(b[0],validMethods))throw"Unknown method: "+b[0];"destroy"===b[0]&&$this.select2SortableDestroy()}return $this},select2SortableDestroy:function(){var b=this.filter("[multiple]");return b.each(function(){var b=a(this),c=b.parent().find(".select2-choices");b.closest("form").unbind("submit.select2sortable"),c.unbind("sortstop.select2sortable"),c.sortable("destroy")}),b}})}(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/LICENSE b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/LICENSE new file mode 100644 index 00000000..0247cc76 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/LICENSE @@ -0,0 +1,18 @@ +Copyright 2014 Igor Vaynberg + +Version: @@ver@@ Timestamp: @@timestamp@@ + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License. diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/README.md b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/README.md new file mode 100644 index 00000000..406fe79d --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/README.md @@ -0,0 +1,90 @@ +Select2 +======= + +Select2 is a jQuery-based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results. + +To get started, checkout examples and documentation at http://ivaynberg.github.com/select2 + +Use cases +--------- + +* Enhancing native selects with search. +* Enhancing native selects with a better multi-select interface. +* Loading data from JavaScript: easily load items via ajax and have them searchable. +* Nesting optgroups: native selects only support one level of nested. Select2 does not have this restriction. +* Tagging: ability to add new items on the fly. +* Working with large, remote datasets: ability to partially load a dataset based on the search term. +* Paging of large datasets: easy support for loading more pages when the results are scrolled to the end. +* Templating: support for custom rendering of results and selections. + +Browser compatibility +--------------------- +* IE 8+ +* Chrome 8+ +* Firefox 10+ +* Safari 3+ +* Opera 10.6+ + +Usage +----- +You can source Select2 directly from a [CDN like JSDliver](http://www.jsdelivr.com/#!select2), [download it from this GitHub repo](https://github.com/ivaynberg/select2/tags), or use one of the integrations below. + +Integrations +------------ + +* [Wicket-Select2](https://github.com/ivaynberg/wicket-select2) (Java / [Apache Wicket](http://wicket.apache.org)) +* [select2-rails](https://github.com/argerim/select2-rails) (Ruby on Rails) +* [AngularUI](http://angular-ui.github.com/#directives-select2) ([AngularJS](angularjs.org)) +* [Django](https://github.com/applegrew/django-select2) +* [Symfony](https://github.com/19Gerhard85/sfSelect2WidgetsPlugin) +* [Symfony2](https://github.com/avocode/FormExtensions) +* [Bootstrap 2](https://github.com/t0m/select2-bootstrap-css) and [Bootstrap 3](https://github.com/t0m/select2-bootstrap-css/tree/bootstrap3) (CSS skins) +* [Meteor](https://github.com/nate-strauser/meteor-select2) (modern reactive JavaScript framework; + [Bootstrap 3 skin](https://github.com/esperadomedia/meteor-select2-bootstrap3-css/)) +* [Yii 2.x](http://demos.krajee.com/widgets#select2) +* [Yii 1.x](https://github.com/tonybolzan/yii-select2) + +Internationalization (i18n) +--------------------------- + +Select2 supports multiple languages by simply including the right +language JS file (`select2_locale_it.js`, `select2_locale_nl.js`, etc.). + +Missing a language? Just copy `select2_locale_en.js.template`, translate +it, and make a pull request back to Select2 here on GitHub. + +Bug tracker +----------- + +Have a bug? Please create an issue here on GitHub! + +https://github.com/ivaynberg/select2/issues + +Mailing list +------------ + +Have a question? Ask on our mailing list! + +select2@googlegroups.com + +https://groups.google.com/d/forum/select2 + + +Copyright and license +--------------------- + +Copyright 2012 Igor Vaynberg + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License in the LICENSE file, or at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License. diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/release.sh b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/release.sh new file mode 100644 index 00000000..0d2e279e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/release.sh @@ -0,0 +1,79 @@ +#!/bin/bash +set -e + +echo -n "Enter the version for this release: " + +read ver + +if [ ! $ver ]; then + echo "Invalid version." + exit +fi + +name="select2" +js="$name.js" +mini="$name.min.js" +css="$name.css" +release="$name-$ver" +tag="$ver" +branch="build-$ver" +curbranch=`git branch | grep "*" | sed "s/* //"` +timestamp=$(date) +tokens="s/@@ver@@/$ver/g;s/\@@timestamp@@/$timestamp/g" +remote="github" + +echo "Pulling from origin" + +git pull + +echo "Updating Version Identifiers" + +sed -E -e "s/\"version\": \"([0-9\.]+)\",/\"version\": \"$ver\",/g" -i -- bower.json select2.jquery.json component.json composer.json package.json + +git add bower.json +git add select2.jquery.json +git add component.json +git add composer.json +git add package.json + +git commit -m "modified version identifiers in descriptors for release $ver" +git push + +git branch "$branch" +git checkout "$branch" + +echo "Tokenizing..." + +find . -name "$js" | xargs -I{} sed -e "$tokens" -i -- {} +find . -name "$css" | xargs -I{} sed -e "$tokens" -i -- {} + +sed -e "s/latest/$ver/g" -i -- bower.json + +git add "$js" +git add "$css" + +echo "Minifying..." + +echo "/*" > "$mini" +cat LICENSE | sed "$tokens" >> "$mini" +echo "*/" >> "$mini" + +curl -s \ + --data-urlencode "js_code@$js" \ + http://marijnhaverbeke.nl/uglifyjs \ + >> "$mini" + +git add "$mini" + +git commit -m "release $ver" + +echo "Tagging..." +git tag -a "$tag" -m "tagged version $ver" +git push "$remote" --tags + +echo "Cleaning Up..." + +git checkout "$curbranch" +git branch -D "$branch" + +echo "Done" diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-bootstrap.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-bootstrap.css new file mode 100644 index 00000000..3b83f0a2 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-bootstrap.css @@ -0,0 +1,87 @@ +.form-control .select2-choice { + border: 0; + border-radius: 2px; +} + +.form-control .select2-choice .select2-arrow { + border-radius: 0 2px 2px 0; +} + +.form-control.select2-container { + height: auto !important; + padding: 0; +} + +.form-control.select2-container.select2-dropdown-open { + border-color: #5897FB; + border-radius: 3px 3px 0 0; +} + +.form-control .select2-container.select2-dropdown-open .select2-choices { + border-radius: 3px 3px 0 0; +} + +.form-control.select2-container .select2-choices { + border: 0 !important; + border-radius: 3px; +} + +.control-group.warning .select2-container .select2-choice, +.control-group.warning .select2-container .select2-choices, +.control-group.warning .select2-container-active .select2-choice, +.control-group.warning .select2-container-active .select2-choices, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.warning .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #C09853 !important; +} + +.control-group.warning .select2-container .select2-choice div { + border-left: 1px solid #C09853 !important; + background: #FCF8E3 !important; +} + +.control-group.error .select2-container .select2-choice, +.control-group.error .select2-container .select2-choices, +.control-group.error .select2-container-active .select2-choice, +.control-group.error .select2-container-active .select2-choices, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.error .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.error .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #B94A48 !important; +} + +.control-group.error .select2-container .select2-choice div { + border-left: 1px solid #B94A48 !important; + background: #F2DEDE !important; +} + +.control-group.info .select2-container .select2-choice, +.control-group.info .select2-container .select2-choices, +.control-group.info .select2-container-active .select2-choice, +.control-group.info .select2-container-active .select2-choices, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.info .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.info .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #3A87AD !important; +} + +.control-group.info .select2-container .select2-choice div { + border-left: 1px solid #3A87AD !important; + background: #D9EDF7 !important; +} + +.control-group.success .select2-container .select2-choice, +.control-group.success .select2-container .select2-choices, +.control-group.success .select2-container-active .select2-choice, +.control-group.success .select2-container-active .select2-choices, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choice, +.control-group.success .select2-dropdown-open.select2-drop-above .select2-choices, +.control-group.success .select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #468847 !important; +} + +.control-group.success .select2-container .select2-choice div { + border-left: 1px solid #468847 !important; + background: #DFF0D8 !important; +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-spinner.gif b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-spinner.gif new file mode 100644 index 00000000..5b33f7e5 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2-spinner.gif differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.css b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.css new file mode 100644 index 00000000..1eb4d229 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.css @@ -0,0 +1,646 @@ +/* +Version: 3.4.8 Timestamp: Thu May 1 09:50:32 EDT 2014 +*/ +.select2-container { + margin: 0; + position: relative; + display: inline-block; + /* inline-block for ie7 */ + zoom: 1; + *display: inline; + vertical-align: middle; +} + +.select2-container, +.select2-drop, +.select2-search, +.select2-search input { + /* + Force border-box so that % widths fit the parent + container without overlap because of margin/padding. + More Info : http://www.quirksmode.org/css/box.html + */ + -webkit-box-sizing: border-box; /* webkit */ + -moz-box-sizing: border-box; /* firefox */ + box-sizing: border-box; /* css3 */ +} + +.select2-container .select2-choice { + display: block; + height: 26px; + padding: 0 0 0 8px; + overflow: hidden; + position: relative; + + border: 1px solid #aaa; + white-space: nowrap; + line-height: 26px; + color: #444; + text-decoration: none; + + border-radius: 4px; + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #fff; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.5, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 50%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#ffffff', endColorstr = '#eeeeee', GradientType = 0); + background-image: linear-gradient(to top, #eee 0%, #fff 50%); +} + +.select2-container.select2-drop-above .select2-choice { + border-bottom-color: #aaa; + + border-radius: 0 0 4px 4px; + + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #eee), color-stop(0.9, #fff)); + background-image: -webkit-linear-gradient(center bottom, #eee 0%, #fff 90%); + background-image: -moz-linear-gradient(center bottom, #eee 0%, #fff 90%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#eeeeee', GradientType=0); + background-image: linear-gradient(to bottom, #eee 0%, #fff 90%); +} + +.select2-container.select2-allowclear .select2-choice .select2-chosen { + margin-right: 42px; +} + +.select2-container .select2-choice > .select2-chosen { + margin-right: 26px; + display: block; + overflow: hidden; + + white-space: nowrap; + + text-overflow: ellipsis; + float: none; + width: auto; +} + +.select2-container .select2-choice abbr { + display: none; + width: 12px; + height: 12px; + position: absolute; + right: 24px; + top: 8px; + + font-size: 1px; + text-decoration: none; + + border: 0; + background: url('select2.png') right top no-repeat; + cursor: pointer; + outline: 0; +} + +.select2-container.select2-allowclear .select2-choice abbr { + display: inline-block; +} + +.select2-container .select2-choice abbr:hover { + background-position: right -11px; + cursor: pointer; +} + +.select2-drop-mask { + border: 0; + margin: 0; + padding: 0; + position: fixed; + left: 0; + top: 0; + min-height: 100%; + min-width: 100%; + height: auto; + width: auto; + opacity: 0; + z-index: 9998; + /* styles required for IE to work */ + background-color: #fff; + filter: alpha(opacity=0); +} + +.select2-drop { + width: 100%; + margin-top: -1px; + position: absolute; + z-index: 9999; + top: 100%; + + background: #fff; + color: #000; + border: 1px solid #aaa; + border-top: 0; + + border-radius: 0 0 4px 4px; + + -webkit-box-shadow: 0 4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop.select2-drop-above { + margin-top: 1px; + border-top: 1px solid #aaa; + border-bottom: 0; + + border-radius: 4px 4px 0 0; + + -webkit-box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); + box-shadow: 0 -4px 5px rgba(0, 0, 0, .15); +} + +.select2-drop-active { + border: 1px solid #5897fb; + border-top: none; +} + +.select2-drop.select2-drop-above.select2-drop-active { + border-top: 1px solid #5897fb; +} + +.select2-drop-auto-width { + border-top: 1px solid #aaa; + width: auto; +} + +.select2-drop-auto-width .select2-search { + padding-top: 4px; +} + +.select2-container .select2-choice .select2-arrow { + display: inline-block; + width: 18px; + height: 100%; + position: absolute; + right: 0; + top: 0; + + border-left: 1px solid #aaa; + border-radius: 0 4px 4px 0; + + background-clip: padding-box; + + background: #ccc; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccc), color-stop(0.6, #eee)); + background-image: -webkit-linear-gradient(center bottom, #ccc 0%, #eee 60%); + background-image: -moz-linear-gradient(center bottom, #ccc 0%, #eee 60%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr = '#eeeeee', endColorstr = '#cccccc', GradientType = 0); + background-image: linear-gradient(to top, #ccc 0%, #eee 60%); +} + +.select2-container .select2-choice .select2-arrow b { + display: block; + width: 100%; + height: 100%; + background: url('select2.png') no-repeat 0 1px; +} + +.select2-search { + display: inline-block; + width: 100%; + min-height: 26px; + margin: 0; + padding-left: 4px; + padding-right: 4px; + + position: relative; + z-index: 10000; + + white-space: nowrap; +} + +.select2-search input { + width: 100%; + height: auto !important; + min-height: 26px; + padding: 4px 20px 4px 5px; + margin: 0; + + outline: 0; + font-family: sans-serif; + font-size: 1em; + + border: 1px solid #aaa; + border-radius: 0; + + -webkit-box-shadow: none; + box-shadow: none; + + background: #fff url('select2.png') no-repeat 100% -22px; + background: url('select2.png') no-repeat 100% -22px, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2.png') no-repeat 100% -22px, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2.png') no-repeat 100% -22px, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +.select2-drop.select2-drop-above .select2-search input { + margin-top: 4px; +} + +.select2-search input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100%; + background: url('select2-spinner.gif') no-repeat 100%, -webkit-gradient(linear, left bottom, left top, color-stop(0.85, #fff), color-stop(0.99, #eee)); + background: url('select2-spinner.gif') no-repeat 100%, -webkit-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, -moz-linear-gradient(center bottom, #fff 85%, #eee 99%); + background: url('select2-spinner.gif') no-repeat 100%, linear-gradient(to bottom, #fff 85%, #eee 99%) 0 0; +} + +.select2-container-active .select2-choice, +.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} + +.select2-dropdown-open .select2-choice { + border-bottom-color: transparent; + -webkit-box-shadow: 0 1px 0 #fff inset; + box-shadow: 0 1px 0 #fff inset; + + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + + background-color: #eee; + background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center bottom, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center bottom, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to top, #fff 0%, #eee 50%); +} + +.select2-dropdown-open.select2-drop-above .select2-choice, +.select2-dropdown-open.select2-drop-above .select2-choices { + border: 1px solid #5897fb; + border-top-color: transparent; + + background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0, #fff), color-stop(0.5, #eee)); + background-image: -webkit-linear-gradient(center top, #fff 0%, #eee 50%); + background-image: -moz-linear-gradient(center top, #fff 0%, #eee 50%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#ffffff', GradientType=0); + background-image: linear-gradient(to bottom, #fff 0%, #eee 50%); +} + +.select2-dropdown-open .select2-choice .select2-arrow { + background: transparent; + border-left: none; + filter: none; +} +.select2-dropdown-open .select2-choice .select2-arrow b { + background-position: -18px 1px; +} + +.select2-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} + +/* results */ +.select2-results { + max-height: 200px; + padding: 0 0 0 4px; + margin: 4px 4px 4px 0; + position: relative; + overflow-x: hidden; + overflow-y: auto; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +.select2-results ul.select2-result-sub { + margin: 0; + padding-left: 0; +} + +.select2-results li { + list-style: none; + display: list-item; + background-image: none; +} + +.select2-results li.select2-result-with-children > .select2-result-label { + font-weight: bold; +} + +.select2-results .select2-result-label { + padding: 3px 7px 4px; + margin: 0; + cursor: pointer; + + min-height: 1em; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.select2-results-dept-1 .select2-result-label { padding-left: 20px } +.select2-results-dept-2 .select2-result-label { padding-left: 40px } +.select2-results-dept-3 .select2-result-label { padding-left: 60px } +.select2-results-dept-4 .select2-result-label { padding-left: 80px } +.select2-results-dept-5 .select2-result-label { padding-left: 100px } +.select2-results-dept-6 .select2-result-label { padding-left: 110px } +.select2-results-dept-7 .select2-result-label { padding-left: 120px } + +.select2-results .select2-highlighted { + background: #3875d7; + color: #fff; +} + +.select2-results li em { + background: #feffde; + font-style: normal; +} + +.select2-results .select2-highlighted em { + background: transparent; +} + +.select2-results .select2-highlighted ul { + background: #fff; + color: #000; +} + + +.select2-results .select2-no-results, +.select2-results .select2-searching, +.select2-results .select2-selection-limit { + background: #f4f4f4; + display: list-item; + padding-left: 5px; +} + +/* +disabled look for disabled choices in the results dropdown +*/ +.select2-results .select2-disabled.select2-highlighted { + color: #666; + background: #f4f4f4; + display: list-item; + cursor: default; +} +.select2-results .select2-disabled { + background: #f4f4f4; + display: list-item; + cursor: default; +} + +.select2-results .select2-selected { + display: none; +} + +.select2-more-results.select2-active { + background: #f4f4f4 url('select2-spinner.gif') no-repeat 100%; +} + +.select2-more-results { + background: #f4f4f4; + display: list-item; +} + +/* disabled styles */ + +.select2-container.select2-container-disabled .select2-choice { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container.select2-container-disabled .select2-choice .select2-arrow { + background-color: #f4f4f4; + background-image: none; + border-left: 0; +} + +.select2-container.select2-container-disabled .select2-choice abbr { + display: none; +} + + +/* multiselect */ + +.select2-container-multi .select2-choices { + height: auto !important; + height: 1%; + margin: 0; + padding: 0; + position: relative; + + border: 1px solid #aaa; + cursor: text; + overflow: hidden; + + background-color: #fff; + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(1%, #eee), color-stop(15%, #fff)); + background-image: -webkit-linear-gradient(top, #eee 1%, #fff 15%); + background-image: -moz-linear-gradient(top, #eee 1%, #fff 15%); + background-image: linear-gradient(to bottom, #eee 1%, #fff 15%); +} + +.select2-locked { + padding: 3px 5px 3px 5px !important; +} + +.select2-container-multi .select2-choices { + min-height: 26px; +} + +.select2-container-multi.select2-container-active .select2-choices { + border: 1px solid #5897fb; + outline: none; + + -webkit-box-shadow: 0 0 5px rgba(0, 0, 0, .3); + box-shadow: 0 0 5px rgba(0, 0, 0, .3); +} +.select2-container-multi .select2-choices li { + float: left; + list-style: none; +} +html[dir="rtl"] .select2-container-multi .select2-choices li +{ + float: right; +} +.select2-container-multi .select2-choices .select2-search-field { + margin: 0; + padding: 0; + white-space: nowrap; +} + +.select2-container-multi .select2-choices .select2-search-field input { + padding: 5px; + margin: 1px 0; + + font-family: sans-serif; + font-size: 100%; + color: #666; + outline: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + background: transparent !important; +} + +.select2-container-multi .select2-choices .select2-search-field input.select2-active { + background: #fff url('select2-spinner.gif') no-repeat 100% !important; +} + +.select2-default { + color: #999 !important; +} + +.select2-container-multi .select2-choices .select2-search-choice { + padding: 3px 5px 3px 18px; + margin: 3px 0 3px 5px; + position: relative; + + line-height: 13px; + color: #333; + cursor: default; + border: 1px solid #aaaaaa; + + border-radius: 3px; + + -webkit-box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + box-shadow: 0 0 2px #fff inset, 0 1px 0 rgba(0, 0, 0, 0.05); + + background-clip: padding-box; + + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + background-color: #e4e4e4; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#f4f4f4', GradientType=0); + background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(20%, #f4f4f4), color-stop(50%, #f0f0f0), color-stop(52%, #e8e8e8), color-stop(100%, #eee)); + background-image: -webkit-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: -moz-linear-gradient(top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); + background-image: linear-gradient(to top, #f4f4f4 20%, #f0f0f0 50%, #e8e8e8 52%, #eee 100%); +} +html[dir="rtl"] .select2-container-multi .select2-choices .select2-search-choice +{ + margin-left: 0; + margin-right: 5px; +} +.select2-container-multi .select2-choices .select2-search-choice .select2-chosen { + cursor: default; +} +.select2-container-multi .select2-choices .select2-search-choice-focus { + background: #d4d4d4; +} + +.select2-search-choice-close { + display: block; + width: 12px; + height: 13px; + position: absolute; + right: 3px; + top: 4px; + + font-size: 1px; + outline: none; + background: url('select2.png') right top no-repeat; +} +html[dir="rtl"] .select2-search-choice-close { + right: auto; + left: 3px; +} + +.select2-container-multi .select2-search-choice-close { + left: 3px; +} + +.select2-container-multi .select2-choices .select2-search-choice .select2-search-choice-close:hover { + background-position: right -11px; +} +.select2-container-multi .select2-choices .select2-search-choice-focus .select2-search-choice-close { + background-position: right -11px; +} + +/* disabled styles */ +.select2-container-multi.select2-container-disabled .select2-choices { + background-color: #f4f4f4; + background-image: none; + border: 1px solid #ddd; + cursor: default; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice { + padding: 3px 5px 3px 5px; + border: 1px solid #ddd; + background-image: none; + background-color: #f4f4f4; +} + +.select2-container-multi.select2-container-disabled .select2-choices .select2-search-choice .select2-search-choice-close { display: none; + background: none; +} +/* end multiselect */ + + +.select2-result-selectable .select2-match, +.select2-result-unselectable .select2-match { + text-decoration: underline; +} + +.select2-offscreen, .select2-offscreen:focus { + clip: rect(0 0 0 0) !important; + width: 1px !important; + height: 1px !important; + border: 0 !important; + margin: 0 !important; + padding: 0 !important; + overflow: hidden !important; + position: absolute !important; + outline: 0 !important; + left: 0px !important; + top: 0px !important; +} + +.select2-display-none { + display: none; +} + +.select2-measure-scrollbar { + position: absolute; + top: -10000px; + left: -10000px; + width: 100px; + height: 100px; + overflow: scroll; +} + +/* Retina-ize icons */ + +@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 2dppx) { + .select2-search input, + .select2-search-choice-close, + .select2-container .select2-choice abbr, + .select2-container .select2-choice .select2-arrow b { + background-image: url('select2x2.png') !important; + background-repeat: no-repeat !important; + background-size: 60px 40px !important; + } + + .select2-search input { + background-position: 100% -21px !important; + } +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.jquery.json b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.jquery.json new file mode 100644 index 00000000..e9119279 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.jquery.json @@ -0,0 +1,36 @@ +{ + "name": "select2", + "title": "Select2", + "description": "Select2 is a jQuery based replacement for select boxes. It supports searching, remote data sets, and infinite scrolling of results.", + "keywords": [ + "select", + "autocomplete", + "typeahead", + "dropdown", + "multiselect", + "tag", + "tagging" + ], + "version": "3.4.8", + "author": { + "name": "Igor Vaynberg", + "url": "https://github.com/ivaynberg" + }, + "licenses": [ + { + "type": "Apache", + "url": "http://www.apache.org/licenses/LICENSE-2.0" + }, + { + "type": "GPL v2", + "url": "http://www.gnu.org/licenses/gpl-2.0.html" + } + ], + "bugs": "https://github.com/ivaynberg/select2/issues", + "homepage": "http://ivaynberg.github.com/select2", + "docs": "http://ivaynberg.github.com/select2/", + "download": "https://github.com/ivaynberg/select2/tags", + "dependencies": { + "jquery": ">=1.7.1" + } +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.js new file mode 100644 index 00000000..2969da5d --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.js @@ -0,0 +1,3448 @@ +/* +Copyright 2012 Igor Vaynberg + +Version: 3.4.8 Timestamp: Thu May 1 09:50:32 EDT 2014 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + + http://www.apache.org/licenses/LICENSE-2.0 + http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the +Apache License or the GPL License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR +CONDITIONS OF ANY KIND, either express or implied. See the Apache License and the GPL License for +the specific language governing permissions and limitations under the Apache License and the GPL License. +*/ +(function ($) { + if(typeof $.fn.each2 == "undefined") { + $.extend($.fn, { + /* + * 4-10 times faster .each replacement + * use it carefully, as it overrides jQuery context of element on each iteration + */ + each2 : function (c) { + var j = $([0]), i = -1, l = this.length; + while ( + ++i < l + && (j.context = j[0] = this[i]) + && c.call(j[0], i, j) !== false //"this"=DOM, i=index, j=jQuery object + ); + return this; + } + }); + } +})(jQuery); + +(function ($, undefined) { + "use strict"; + /*global document, window, jQuery, console */ + + if (window.Select2 !== undefined) { + return; + } + + var KEY, AbstractSelect2, SingleSelect2, MultiSelect2, nextUid, sizer, + lastMousePosition={x:0,y:0}, $document, scrollBarDimensions, + + KEY = { + TAB: 9, + ENTER: 13, + ESC: 27, + SPACE: 32, + LEFT: 37, + UP: 38, + RIGHT: 39, + DOWN: 40, + SHIFT: 16, + CTRL: 17, + ALT: 18, + PAGE_UP: 33, + PAGE_DOWN: 34, + HOME: 36, + END: 35, + BACKSPACE: 8, + DELETE: 46, + isArrow: function (k) { + k = k.which ? k.which : k; + switch (k) { + case KEY.LEFT: + case KEY.RIGHT: + case KEY.UP: + case KEY.DOWN: + return true; + } + return false; + }, + isControl: function (e) { + var k = e.which; + switch (k) { + case KEY.SHIFT: + case KEY.CTRL: + case KEY.ALT: + return true; + } + + if (e.metaKey) return true; + + return false; + }, + isFunctionKey: function (k) { + k = k.which ? k.which : k; + return k >= 112 && k <= 123; + } + }, + MEASURE_SCROLLBAR_TEMPLATE = "
", + + DIACRITICS = {"\u24B6":"A","\uFF21":"A","\u00C0":"A","\u00C1":"A","\u00C2":"A","\u1EA6":"A","\u1EA4":"A","\u1EAA":"A","\u1EA8":"A","\u00C3":"A","\u0100":"A","\u0102":"A","\u1EB0":"A","\u1EAE":"A","\u1EB4":"A","\u1EB2":"A","\u0226":"A","\u01E0":"A","\u00C4":"A","\u01DE":"A","\u1EA2":"A","\u00C5":"A","\u01FA":"A","\u01CD":"A","\u0200":"A","\u0202":"A","\u1EA0":"A","\u1EAC":"A","\u1EB6":"A","\u1E00":"A","\u0104":"A","\u023A":"A","\u2C6F":"A","\uA732":"AA","\u00C6":"AE","\u01FC":"AE","\u01E2":"AE","\uA734":"AO","\uA736":"AU","\uA738":"AV","\uA73A":"AV","\uA73C":"AY","\u24B7":"B","\uFF22":"B","\u1E02":"B","\u1E04":"B","\u1E06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24B8":"C","\uFF23":"C","\u0106":"C","\u0108":"C","\u010A":"C","\u010C":"C","\u00C7":"C","\u1E08":"C","\u0187":"C","\u023B":"C","\uA73E":"C","\u24B9":"D","\uFF24":"D","\u1E0A":"D","\u010E":"D","\u1E0C":"D","\u1E10":"D","\u1E12":"D","\u1E0E":"D","\u0110":"D","\u018B":"D","\u018A":"D","\u0189":"D","\uA779":"D","\u01F1":"DZ","\u01C4":"DZ","\u01F2":"Dz","\u01C5":"Dz","\u24BA":"E","\uFF25":"E","\u00C8":"E","\u00C9":"E","\u00CA":"E","\u1EC0":"E","\u1EBE":"E","\u1EC4":"E","\u1EC2":"E","\u1EBC":"E","\u0112":"E","\u1E14":"E","\u1E16":"E","\u0114":"E","\u0116":"E","\u00CB":"E","\u1EBA":"E","\u011A":"E","\u0204":"E","\u0206":"E","\u1EB8":"E","\u1EC6":"E","\u0228":"E","\u1E1C":"E","\u0118":"E","\u1E18":"E","\u1E1A":"E","\u0190":"E","\u018E":"E","\u24BB":"F","\uFF26":"F","\u1E1E":"F","\u0191":"F","\uA77B":"F","\u24BC":"G","\uFF27":"G","\u01F4":"G","\u011C":"G","\u1E20":"G","\u011E":"G","\u0120":"G","\u01E6":"G","\u0122":"G","\u01E4":"G","\u0193":"G","\uA7A0":"G","\uA77D":"G","\uA77E":"G","\u24BD":"H","\uFF28":"H","\u0124":"H","\u1E22":"H","\u1E26":"H","\u021E":"H","\u1E24":"H","\u1E28":"H","\u1E2A":"H","\u0126":"H","\u2C67":"H","\u2C75":"H","\uA78D":"H","\u24BE":"I","\uFF29":"I","\u00CC":"I","\u00CD":"I","\u00CE":"I","\u0128":"I","\u012A":"I","\u012C":"I","\u0130":"I","\u00CF":"I","\u1E2E":"I","\u1EC8":"I","\u01CF":"I","\u0208":"I","\u020A":"I","\u1ECA":"I","\u012E":"I","\u1E2C":"I","\u0197":"I","\u24BF":"J","\uFF2A":"J","\u0134":"J","\u0248":"J","\u24C0":"K","\uFF2B":"K","\u1E30":"K","\u01E8":"K","\u1E32":"K","\u0136":"K","\u1E34":"K","\u0198":"K","\u2C69":"K","\uA740":"K","\uA742":"K","\uA744":"K","\uA7A2":"K","\u24C1":"L","\uFF2C":"L","\u013F":"L","\u0139":"L","\u013D":"L","\u1E36":"L","\u1E38":"L","\u013B":"L","\u1E3C":"L","\u1E3A":"L","\u0141":"L","\u023D":"L","\u2C62":"L","\u2C60":"L","\uA748":"L","\uA746":"L","\uA780":"L","\u01C7":"LJ","\u01C8":"Lj","\u24C2":"M","\uFF2D":"M","\u1E3E":"M","\u1E40":"M","\u1E42":"M","\u2C6E":"M","\u019C":"M","\u24C3":"N","\uFF2E":"N","\u01F8":"N","\u0143":"N","\u00D1":"N","\u1E44":"N","\u0147":"N","\u1E46":"N","\u0145":"N","\u1E4A":"N","\u1E48":"N","\u0220":"N","\u019D":"N","\uA790":"N","\uA7A4":"N","\u01CA":"NJ","\u01CB":"Nj","\u24C4":"O","\uFF2F":"O","\u00D2":"O","\u00D3":"O","\u00D4":"O","\u1ED2":"O","\u1ED0":"O","\u1ED6":"O","\u1ED4":"O","\u00D5":"O","\u1E4C":"O","\u022C":"O","\u1E4E":"O","\u014C":"O","\u1E50":"O","\u1E52":"O","\u014E":"O","\u022E":"O","\u0230":"O","\u00D6":"O","\u022A":"O","\u1ECE":"O","\u0150":"O","\u01D1":"O","\u020C":"O","\u020E":"O","\u01A0":"O","\u1EDC":"O","\u1EDA":"O","\u1EE0":"O","\u1EDE":"O","\u1EE2":"O","\u1ECC":"O","\u1ED8":"O","\u01EA":"O","\u01EC":"O","\u00D8":"O","\u01FE":"O","\u0186":"O","\u019F":"O","\uA74A":"O","\uA74C":"O","\u01A2":"OI","\uA74E":"OO","\u0222":"OU","\u24C5":"P","\uFF30":"P","\u1E54":"P","\u1E56":"P","\u01A4":"P","\u2C63":"P","\uA750":"P","\uA752":"P","\uA754":"P","\u24C6":"Q","\uFF31":"Q","\uA756":"Q","\uA758":"Q","\u024A":"Q","\u24C7":"R","\uFF32":"R","\u0154":"R","\u1E58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1E5A":"R","\u1E5C":"R","\u0156":"R","\u1E5E":"R","\u024C":"R","\u2C64":"R","\uA75A":"R","\uA7A6":"R","\uA782":"R","\u24C8":"S","\uFF33":"S","\u1E9E":"S","\u015A":"S","\u1E64":"S","\u015C":"S","\u1E60":"S","\u0160":"S","\u1E66":"S","\u1E62":"S","\u1E68":"S","\u0218":"S","\u015E":"S","\u2C7E":"S","\uA7A8":"S","\uA784":"S","\u24C9":"T","\uFF34":"T","\u1E6A":"T","\u0164":"T","\u1E6C":"T","\u021A":"T","\u0162":"T","\u1E70":"T","\u1E6E":"T","\u0166":"T","\u01AC":"T","\u01AE":"T","\u023E":"T","\uA786":"T","\uA728":"TZ","\u24CA":"U","\uFF35":"U","\u00D9":"U","\u00DA":"U","\u00DB":"U","\u0168":"U","\u1E78":"U","\u016A":"U","\u1E7A":"U","\u016C":"U","\u00DC":"U","\u01DB":"U","\u01D7":"U","\u01D5":"U","\u01D9":"U","\u1EE6":"U","\u016E":"U","\u0170":"U","\u01D3":"U","\u0214":"U","\u0216":"U","\u01AF":"U","\u1EEA":"U","\u1EE8":"U","\u1EEE":"U","\u1EEC":"U","\u1EF0":"U","\u1EE4":"U","\u1E72":"U","\u0172":"U","\u1E76":"U","\u1E74":"U","\u0244":"U","\u24CB":"V","\uFF36":"V","\u1E7C":"V","\u1E7E":"V","\u01B2":"V","\uA75E":"V","\u0245":"V","\uA760":"VY","\u24CC":"W","\uFF37":"W","\u1E80":"W","\u1E82":"W","\u0174":"W","\u1E86":"W","\u1E84":"W","\u1E88":"W","\u2C72":"W","\u24CD":"X","\uFF38":"X","\u1E8A":"X","\u1E8C":"X","\u24CE":"Y","\uFF39":"Y","\u1EF2":"Y","\u00DD":"Y","\u0176":"Y","\u1EF8":"Y","\u0232":"Y","\u1E8E":"Y","\u0178":"Y","\u1EF6":"Y","\u1EF4":"Y","\u01B3":"Y","\u024E":"Y","\u1EFE":"Y","\u24CF":"Z","\uFF3A":"Z","\u0179":"Z","\u1E90":"Z","\u017B":"Z","\u017D":"Z","\u1E92":"Z","\u1E94":"Z","\u01B5":"Z","\u0224":"Z","\u2C7F":"Z","\u2C6B":"Z","\uA762":"Z","\u24D0":"a","\uFF41":"a","\u1E9A":"a","\u00E0":"a","\u00E1":"a","\u00E2":"a","\u1EA7":"a","\u1EA5":"a","\u1EAB":"a","\u1EA9":"a","\u00E3":"a","\u0101":"a","\u0103":"a","\u1EB1":"a","\u1EAF":"a","\u1EB5":"a","\u1EB3":"a","\u0227":"a","\u01E1":"a","\u00E4":"a","\u01DF":"a","\u1EA3":"a","\u00E5":"a","\u01FB":"a","\u01CE":"a","\u0201":"a","\u0203":"a","\u1EA1":"a","\u1EAD":"a","\u1EB7":"a","\u1E01":"a","\u0105":"a","\u2C65":"a","\u0250":"a","\uA733":"aa","\u00E6":"ae","\u01FD":"ae","\u01E3":"ae","\uA735":"ao","\uA737":"au","\uA739":"av","\uA73B":"av","\uA73D":"ay","\u24D1":"b","\uFF42":"b","\u1E03":"b","\u1E05":"b","\u1E07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24D2":"c","\uFF43":"c","\u0107":"c","\u0109":"c","\u010B":"c","\u010D":"c","\u00E7":"c","\u1E09":"c","\u0188":"c","\u023C":"c","\uA73F":"c","\u2184":"c","\u24D3":"d","\uFF44":"d","\u1E0B":"d","\u010F":"d","\u1E0D":"d","\u1E11":"d","\u1E13":"d","\u1E0F":"d","\u0111":"d","\u018C":"d","\u0256":"d","\u0257":"d","\uA77A":"d","\u01F3":"dz","\u01C6":"dz","\u24D4":"e","\uFF45":"e","\u00E8":"e","\u00E9":"e","\u00EA":"e","\u1EC1":"e","\u1EBF":"e","\u1EC5":"e","\u1EC3":"e","\u1EBD":"e","\u0113":"e","\u1E15":"e","\u1E17":"e","\u0115":"e","\u0117":"e","\u00EB":"e","\u1EBB":"e","\u011B":"e","\u0205":"e","\u0207":"e","\u1EB9":"e","\u1EC7":"e","\u0229":"e","\u1E1D":"e","\u0119":"e","\u1E19":"e","\u1E1B":"e","\u0247":"e","\u025B":"e","\u01DD":"e","\u24D5":"f","\uFF46":"f","\u1E1F":"f","\u0192":"f","\uA77C":"f","\u24D6":"g","\uFF47":"g","\u01F5":"g","\u011D":"g","\u1E21":"g","\u011F":"g","\u0121":"g","\u01E7":"g","\u0123":"g","\u01E5":"g","\u0260":"g","\uA7A1":"g","\u1D79":"g","\uA77F":"g","\u24D7":"h","\uFF48":"h","\u0125":"h","\u1E23":"h","\u1E27":"h","\u021F":"h","\u1E25":"h","\u1E29":"h","\u1E2B":"h","\u1E96":"h","\u0127":"h","\u2C68":"h","\u2C76":"h","\u0265":"h","\u0195":"hv","\u24D8":"i","\uFF49":"i","\u00EC":"i","\u00ED":"i","\u00EE":"i","\u0129":"i","\u012B":"i","\u012D":"i","\u00EF":"i","\u1E2F":"i","\u1EC9":"i","\u01D0":"i","\u0209":"i","\u020B":"i","\u1ECB":"i","\u012F":"i","\u1E2D":"i","\u0268":"i","\u0131":"i","\u24D9":"j","\uFF4A":"j","\u0135":"j","\u01F0":"j","\u0249":"j","\u24DA":"k","\uFF4B":"k","\u1E31":"k","\u01E9":"k","\u1E33":"k","\u0137":"k","\u1E35":"k","\u0199":"k","\u2C6A":"k","\uA741":"k","\uA743":"k","\uA745":"k","\uA7A3":"k","\u24DB":"l","\uFF4C":"l","\u0140":"l","\u013A":"l","\u013E":"l","\u1E37":"l","\u1E39":"l","\u013C":"l","\u1E3D":"l","\u1E3B":"l","\u017F":"l","\u0142":"l","\u019A":"l","\u026B":"l","\u2C61":"l","\uA749":"l","\uA781":"l","\uA747":"l","\u01C9":"lj","\u24DC":"m","\uFF4D":"m","\u1E3F":"m","\u1E41":"m","\u1E43":"m","\u0271":"m","\u026F":"m","\u24DD":"n","\uFF4E":"n","\u01F9":"n","\u0144":"n","\u00F1":"n","\u1E45":"n","\u0148":"n","\u1E47":"n","\u0146":"n","\u1E4B":"n","\u1E49":"n","\u019E":"n","\u0272":"n","\u0149":"n","\uA791":"n","\uA7A5":"n","\u01CC":"nj","\u24DE":"o","\uFF4F":"o","\u00F2":"o","\u00F3":"o","\u00F4":"o","\u1ED3":"o","\u1ED1":"o","\u1ED7":"o","\u1ED5":"o","\u00F5":"o","\u1E4D":"o","\u022D":"o","\u1E4F":"o","\u014D":"o","\u1E51":"o","\u1E53":"o","\u014F":"o","\u022F":"o","\u0231":"o","\u00F6":"o","\u022B":"o","\u1ECF":"o","\u0151":"o","\u01D2":"o","\u020D":"o","\u020F":"o","\u01A1":"o","\u1EDD":"o","\u1EDB":"o","\u1EE1":"o","\u1EDF":"o","\u1EE3":"o","\u1ECD":"o","\u1ED9":"o","\u01EB":"o","\u01ED":"o","\u00F8":"o","\u01FF":"o","\u0254":"o","\uA74B":"o","\uA74D":"o","\u0275":"o","\u01A3":"oi","\u0223":"ou","\uA74F":"oo","\u24DF":"p","\uFF50":"p","\u1E55":"p","\u1E57":"p","\u01A5":"p","\u1D7D":"p","\uA751":"p","\uA753":"p","\uA755":"p","\u24E0":"q","\uFF51":"q","\u024B":"q","\uA757":"q","\uA759":"q","\u24E1":"r","\uFF52":"r","\u0155":"r","\u1E59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1E5B":"r","\u1E5D":"r","\u0157":"r","\u1E5F":"r","\u024D":"r","\u027D":"r","\uA75B":"r","\uA7A7":"r","\uA783":"r","\u24E2":"s","\uFF53":"s","\u00DF":"s","\u015B":"s","\u1E65":"s","\u015D":"s","\u1E61":"s","\u0161":"s","\u1E67":"s","\u1E63":"s","\u1E69":"s","\u0219":"s","\u015F":"s","\u023F":"s","\uA7A9":"s","\uA785":"s","\u1E9B":"s","\u24E3":"t","\uFF54":"t","\u1E6B":"t","\u1E97":"t","\u0165":"t","\u1E6D":"t","\u021B":"t","\u0163":"t","\u1E71":"t","\u1E6F":"t","\u0167":"t","\u01AD":"t","\u0288":"t","\u2C66":"t","\uA787":"t","\uA729":"tz","\u24E4":"u","\uFF55":"u","\u00F9":"u","\u00FA":"u","\u00FB":"u","\u0169":"u","\u1E79":"u","\u016B":"u","\u1E7B":"u","\u016D":"u","\u00FC":"u","\u01DC":"u","\u01D8":"u","\u01D6":"u","\u01DA":"u","\u1EE7":"u","\u016F":"u","\u0171":"u","\u01D4":"u","\u0215":"u","\u0217":"u","\u01B0":"u","\u1EEB":"u","\u1EE9":"u","\u1EEF":"u","\u1EED":"u","\u1EF1":"u","\u1EE5":"u","\u1E73":"u","\u0173":"u","\u1E77":"u","\u1E75":"u","\u0289":"u","\u24E5":"v","\uFF56":"v","\u1E7D":"v","\u1E7F":"v","\u028B":"v","\uA75F":"v","\u028C":"v","\uA761":"vy","\u24E6":"w","\uFF57":"w","\u1E81":"w","\u1E83":"w","\u0175":"w","\u1E87":"w","\u1E85":"w","\u1E98":"w","\u1E89":"w","\u2C73":"w","\u24E7":"x","\uFF58":"x","\u1E8B":"x","\u1E8D":"x","\u24E8":"y","\uFF59":"y","\u1EF3":"y","\u00FD":"y","\u0177":"y","\u1EF9":"y","\u0233":"y","\u1E8F":"y","\u00FF":"y","\u1EF7":"y","\u1E99":"y","\u1EF5":"y","\u01B4":"y","\u024F":"y","\u1EFF":"y","\u24E9":"z","\uFF5A":"z","\u017A":"z","\u1E91":"z","\u017C":"z","\u017E":"z","\u1E93":"z","\u1E95":"z","\u01B6":"z","\u0225":"z","\u0240":"z","\u2C6C":"z","\uA763":"z"}; + + $document = $(document); + + nextUid=(function() { var counter=1; return function() { return counter++; }; }()); + + + function reinsertElement(element) { + var placeholder = $(document.createTextNode('')); + + element.before(placeholder); + placeholder.before(element); + placeholder.remove(); + } + + function stripDiacritics(str) { + // Used 'uni range + named function' from http://jsperf.com/diacritics/18 + function match(a) { + return DIACRITICS[a] || a; + } + + return str.replace(/[^\u0000-\u007E]/g, match); + } + + function indexOf(value, array) { + var i = 0, l = array.length; + for (; i < l; i = i + 1) { + if (equal(value, array[i])) return i; + } + return -1; + } + + function measureScrollbar () { + var $template = $( MEASURE_SCROLLBAR_TEMPLATE ); + $template.appendTo('body'); + + var dim = { + width: $template.width() - $template[0].clientWidth, + height: $template.height() - $template[0].clientHeight + }; + $template.remove(); + + return dim; + } + + /** + * Compares equality of a and b + * @param a + * @param b + */ + function equal(a, b) { + if (a === b) return true; + if (a === undefined || b === undefined) return false; + if (a === null || b === null) return false; + // Check whether 'a' or 'b' is a string (primitive or object). + // The concatenation of an empty string (+'') converts its argument to a string's primitive. + if (a.constructor === String) return a+'' === b+''; // a+'' - in case 'a' is a String object + if (b.constructor === String) return b+'' === a+''; // b+'' - in case 'b' is a String object + return false; + } + + /** + * Splits the string into an array of values, trimming each value. An empty array is returned for nulls or empty + * strings + * @param string + * @param separator + */ + function splitVal(string, separator) { + var val, i, l; + if (string === null || string.length < 1) return []; + val = string.split(separator); + for (i = 0, l = val.length; i < l; i = i + 1) val[i] = $.trim(val[i]); + return val; + } + + function getSideBorderPadding(element) { + return element.outerWidth(false) - element.width(); + } + + function installKeyUpChangeEvent(element) { + var key="keyup-change-value"; + element.on("keydown", function () { + if ($.data(element, key) === undefined) { + $.data(element, key, element.val()); + } + }); + element.on("keyup", function () { + var val= $.data(element, key); + if (val !== undefined && element.val() !== val) { + $.removeData(element, key); + element.trigger("keyup-change"); + } + }); + } + + $document.on("mousemove", function (e) { + lastMousePosition.x = e.pageX; + lastMousePosition.y = e.pageY; + }); + + /** + * filters mouse events so an event is fired only if the mouse moved. + * + * filters out mouse events that occur when mouse is stationary but + * the elements under the pointer are scrolled. + */ + function installFilteredMouseMove(element) { + element.on("mousemove", function (e) { + var lastpos = lastMousePosition; + if (lastpos === undefined || lastpos.x !== e.pageX || lastpos.y !== e.pageY) { + $(e.target).trigger("mousemove-filtered", e); + } + }); + } + + /** + * Debounces a function. Returns a function that calls the original fn function only if no invocations have been made + * within the last quietMillis milliseconds. + * + * @param quietMillis number of milliseconds to wait before invoking fn + * @param fn function to be debounced + * @param ctx object to be used as this reference within fn + * @return debounced version of fn + */ + function debounce(quietMillis, fn, ctx) { + ctx = ctx || undefined; + var timeout; + return function () { + var args = arguments; + window.clearTimeout(timeout); + timeout = window.setTimeout(function() { + fn.apply(ctx, args); + }, quietMillis); + }; + } + + function installDebouncedScroll(threshold, element) { + var notify = debounce(threshold, function (e) { element.trigger("scroll-debounced", e);}); + element.on("scroll", function (e) { + if (indexOf(e.target, element.get()) >= 0) notify(e); + }); + } + + function focus($el) { + if ($el[0] === document.activeElement) return; + + /* set the focus in a 0 timeout - that way the focus is set after the processing + of the current event has finished - which seems like the only reliable way + to set focus */ + window.setTimeout(function() { + var el=$el[0], pos=$el.val().length, range; + + $el.focus(); + + /* make sure el received focus so we do not error out when trying to manipulate the caret. + sometimes modals or others listeners may steal it after its set */ + var isVisible = (el.offsetWidth > 0 || el.offsetHeight > 0); + if (isVisible && el === document.activeElement) { + + /* after the focus is set move the caret to the end, necessary when we val() + just before setting focus */ + if(el.setSelectionRange) + { + el.setSelectionRange(pos, pos); + } + else if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } + } + }, 0); + } + + function getCursorInfo(el) { + el = $(el)[0]; + var offset = 0; + var length = 0; + if ('selectionStart' in el) { + offset = el.selectionStart; + length = el.selectionEnd - offset; + } else if ('selection' in document) { + el.focus(); + var sel = document.selection.createRange(); + length = document.selection.createRange().text.length; + sel.moveStart('character', -el.value.length); + offset = sel.text.length - length; + } + return { offset: offset, length: length }; + } + + function killEvent(event) { + event.preventDefault(); + event.stopPropagation(); + } + function killEventImmediately(event) { + event.preventDefault(); + event.stopImmediatePropagation(); + } + + function measureTextWidth(e) { + if (!sizer){ + var style = e[0].currentStyle || window.getComputedStyle(e[0], null); + sizer = $(document.createElement("div")).css({ + position: "absolute", + left: "-10000px", + top: "-10000px", + display: "none", + fontSize: style.fontSize, + fontFamily: style.fontFamily, + fontStyle: style.fontStyle, + fontWeight: style.fontWeight, + letterSpacing: style.letterSpacing, + textTransform: style.textTransform, + whiteSpace: "nowrap" + }); + sizer.attr("class","select2-sizer"); + $("body").append(sizer); + } + sizer.text(e.val()); + return sizer.width(); + } + + function syncCssClasses(dest, src, adapter) { + var classes, replacements = [], adapted; + + classes = dest.attr("class"); + if (classes) { + classes = '' + classes; // for IE which returns object + $(classes.split(" ")).each2(function() { + if (this.indexOf("select2-") === 0) { + replacements.push(this); + } + }); + } + classes = src.attr("class"); + if (classes) { + classes = '' + classes; // for IE which returns object + $(classes.split(" ")).each2(function() { + if (this.indexOf("select2-") !== 0) { + adapted = adapter(this); + if (adapted) { + replacements.push(adapted); + } + } + }); + } + dest.attr("class", replacements.join(" ")); + } + + + function markMatch(text, term, markup, escapeMarkup) { + var match=stripDiacritics(text.toUpperCase()).indexOf(stripDiacritics(term.toUpperCase())), + tl=term.length; + + if (match<0) { + markup.push(escapeMarkup(text)); + return; + } + + markup.push(escapeMarkup(text.substring(0, match))); + markup.push(""); + markup.push(escapeMarkup(text.substring(match, match + tl))); + markup.push(""); + markup.push(escapeMarkup(text.substring(match + tl, text.length))); + } + + function defaultEscapeMarkup(markup) { + var replace_map = { + '\\': '\', + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + "/": '/' + }; + + return String(markup).replace(/[&<>"'\/\\]/g, function (match) { + return replace_map[match]; + }); + } + + /** + * Produces an ajax-based query function + * + * @param options object containing configuration parameters + * @param options.params parameter map for the transport ajax call, can contain such options as cache, jsonpCallback, etc. see $.ajax + * @param options.transport function that will be used to execute the ajax request. must be compatible with parameters supported by $.ajax + * @param options.url url for the data + * @param options.data a function(searchTerm, pageNumber, context) that should return an object containing query string parameters for the above url. + * @param options.dataType request data type: ajax, jsonp, other datatypes supported by jQuery's $.ajax function or the transport function if specified + * @param options.quietMillis (optional) milliseconds to wait before making the ajaxRequest, helps debounce the ajax function if invoked too often + * @param options.results a function(remoteData, pageNumber) that converts data returned form the remote request to the format expected by Select2. + * The expected format is an object containing the following keys: + * results array of objects that will be used as choices + * more (optional) boolean indicating whether there are more results available + * Example: {results:[{id:1, text:'Red'},{id:2, text:'Blue'}], more:true} + */ + function ajax(options) { + var timeout, // current scheduled but not yet executed request + handler = null, + quietMillis = options.quietMillis || 100, + ajaxUrl = options.url, + self = this; + + return function (query) { + window.clearTimeout(timeout); + timeout = window.setTimeout(function () { + var data = options.data, // ajax data function + url = ajaxUrl, // ajax url string or function + transport = options.transport || $.fn.select2.ajaxDefaults.transport, + // deprecated - to be removed in 4.0 - use params instead + deprecated = { + type: options.type || 'GET', // set type of request (GET or POST) + cache: options.cache || false, + jsonpCallback: options.jsonpCallback||undefined, + dataType: options.dataType||"json" + }, + params = $.extend({}, $.fn.select2.ajaxDefaults.params, deprecated); + + data = data ? data.call(self, query.term, query.page, query.context) : null; + url = (typeof url === 'function') ? url.call(self, query.term, query.page, query.context) : url; + + if (handler && typeof handler.abort === "function") { handler.abort(); } + + if (options.params) { + if ($.isFunction(options.params)) { + $.extend(params, options.params.call(self)); + } else { + $.extend(params, options.params); + } + } + + $.extend(params, { + url: url, + dataType: options.dataType, + data: data, + success: function (data) { + // TODO - replace query.page with query so users have access to term, page, etc. + var results = options.results(data, query.page); + query.callback(results); + } + }); + handler = transport.call(self, params); + }, quietMillis); + }; + } + + /** + * Produces a query function that works with a local array + * + * @param options object containing configuration parameters. The options parameter can either be an array or an + * object. + * + * If the array form is used it is assumed that it contains objects with 'id' and 'text' keys. + * + * If the object form is used it is assumed that it contains 'data' and 'text' keys. The 'data' key should contain + * an array of objects that will be used as choices. These objects must contain at least an 'id' key. The 'text' + * key can either be a String in which case it is expected that each element in the 'data' array has a key with the + * value of 'text' which will be used to match choices. Alternatively, text can be a function(item) that can extract + * the text. + */ + function local(options) { + var data = options, // data elements + dataText, + tmp, + text = function (item) { return ""+item.text; }; // function used to retrieve the text portion of a data item that is matched against the search + + if ($.isArray(data)) { + tmp = data; + data = { results: tmp }; + } + + if ($.isFunction(data) === false) { + tmp = data; + data = function() { return tmp; }; + } + + var dataItem = data(); + if (dataItem.text) { + text = dataItem.text; + // if text is not a function we assume it to be a key name + if (!$.isFunction(text)) { + dataText = dataItem.text; // we need to store this in a separate variable because in the next step data gets reset and data.text is no longer available + text = function (item) { return item[dataText]; }; + } + } + + return function (query) { + var t = query.term, filtered = { results: [] }, process; + if (t === "") { + query.callback(data()); + return; + } + + process = function(datum, collection) { + var group, attr; + datum = datum[0]; + if (datum.children) { + group = {}; + for (attr in datum) { + if (datum.hasOwnProperty(attr)) group[attr]=datum[attr]; + } + group.children=[]; + $(datum.children).each2(function(i, childDatum) { process(childDatum, group.children); }); + if (group.children.length || query.matcher(t, text(group), datum)) { + collection.push(group); + } + } else { + if (query.matcher(t, text(datum), datum)) { + collection.push(datum); + } + } + }; + + $(data().results).each2(function(i, datum) { process(datum, filtered.results); }); + query.callback(filtered); + }; + } + + // TODO javadoc + function tags(data) { + var isFunc = $.isFunction(data); + return function (query) { + var t = query.term, filtered = {results: []}; + var result = isFunc ? data(query) : data; + if ($.isArray(result)) { + $(result).each(function () { + var isObject = this.text !== undefined, + text = isObject ? this.text : this; + if (t === "" || query.matcher(t, text)) { + filtered.results.push(isObject ? this : {id: this, text: this}); + } + }); + query.callback(filtered); + } + }; + } + + /** + * Checks if the formatter function should be used. + * + * Throws an error if it is not a function. Returns true if it should be used, + * false if no formatting should be performed. + * + * @param formatter + */ + function checkFormatter(formatter, formatterName) { + if ($.isFunction(formatter)) return true; + if (!formatter) return false; + if (typeof(formatter) === 'string') return true; + throw new Error(formatterName +" must be a string, function, or falsy value"); + } + + function evaluate(val) { + if ($.isFunction(val)) { + var args = Array.prototype.slice.call(arguments, 1); + return val.apply(null, args); + } + return val; + } + + function countResults(results) { + var count = 0; + $.each(results, function(i, item) { + if (item.children) { + count += countResults(item.children); + } else { + count++; + } + }); + return count; + } + + /** + * Default tokenizer. This function uses breaks the input on substring match of any string from the + * opts.tokenSeparators array and uses opts.createSearchChoice to create the choice object. Both of those + * two options have to be defined in order for the tokenizer to work. + * + * @param input text user has typed so far or pasted into the search field + * @param selection currently selected choices + * @param selectCallback function(choice) callback tho add the choice to selection + * @param opts select2's opts + * @return undefined/null to leave the current input unchanged, or a string to change the input to the returned value + */ + function defaultTokenizer(input, selection, selectCallback, opts) { + var original = input, // store the original so we can compare and know if we need to tell the search to update its text + dupe = false, // check for whether a token we extracted represents a duplicate selected choice + token, // token + index, // position at which the separator was found + i, l, // looping variables + separator; // the matched separator + + if (!opts.createSearchChoice || !opts.tokenSeparators || opts.tokenSeparators.length < 1) return undefined; + + while (true) { + index = -1; + + for (i = 0, l = opts.tokenSeparators.length; i < l; i++) { + separator = opts.tokenSeparators[i]; + index = input.indexOf(separator); + if (index >= 0) break; + } + + if (index < 0) break; // did not find any token separator in the input string, bail + + token = input.substring(0, index); + input = input.substring(index + separator.length); + + if (token.length > 0) { + token = opts.createSearchChoice.call(this, token, selection); + if (token !== undefined && token !== null && opts.id(token) !== undefined && opts.id(token) !== null) { + dupe = false; + for (i = 0, l = selection.length; i < l; i++) { + if (equal(opts.id(token), opts.id(selection[i]))) { + dupe = true; break; + } + } + + if (!dupe) selectCallback(token); + } + } + } + + if (original!==input) return input; + } + + function cleanupJQueryElements() { + var self = this; + + Array.prototype.forEach.call(arguments, function (element) { + self[element].remove(); + self[element] = null; + }); + } + + /** + * Creates a new class + * + * @param superClass + * @param methods + */ + function clazz(SuperClass, methods) { + var constructor = function () {}; + constructor.prototype = new SuperClass; + constructor.prototype.constructor = constructor; + constructor.prototype.parent = SuperClass.prototype; + constructor.prototype = $.extend(constructor.prototype, methods); + return constructor; + } + + AbstractSelect2 = clazz(Object, { + + // abstract + bind: function (func) { + var self = this; + return function () { + func.apply(self, arguments); + }; + }, + + // abstract + init: function (opts) { + var results, search, resultsSelector = ".select2-results"; + + // prepare options + this.opts = opts = this.prepareOpts(opts); + + this.id=opts.id; + + // destroy if called on an existing component + if (opts.element.data("select2") !== undefined && + opts.element.data("select2") !== null) { + opts.element.data("select2").destroy(); + } + + this.container = this.createContainer(); + + this.liveRegion = $("", { + role: "status", + "aria-live": "polite" + }) + .addClass("select2-hidden-accessible") + .appendTo(document.body); + + this.containerId="s2id_"+(opts.element.attr("id") || "autogen"+nextUid()); + this.containerEventName= this.containerId + .replace(/([.])/g, '_') + .replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g, '\\$1'); + this.container.attr("id", this.containerId); + + this.container.attr("title", opts.element.attr("title")); + + this.body = $("body"); + + syncCssClasses(this.container, this.opts.element, this.opts.adaptContainerCssClass); + + this.container.attr("style", opts.element.attr("style")); + this.container.css(evaluate(opts.containerCss)); + this.container.addClass(evaluate(opts.containerCssClass)); + + this.elementTabIndex = this.opts.element.attr("tabindex"); + + // swap container for the element + this.opts.element + .data("select2", this) + .attr("tabindex", "-1") + .before(this.container) + .on("click.select2", killEvent); // do not leak click events + + this.container.data("select2", this); + + this.dropdown = this.container.find(".select2-drop"); + + syncCssClasses(this.dropdown, this.opts.element, this.opts.adaptDropdownCssClass); + + this.dropdown.addClass(evaluate(opts.dropdownCssClass)); + this.dropdown.data("select2", this); + this.dropdown.on("click", killEvent); + + this.results = results = this.container.find(resultsSelector); + this.search = search = this.container.find("input.select2-input"); + + this.queryCount = 0; + this.resultsPage = 0; + this.context = null; + + // initialize the container + this.initContainer(); + + this.container.on("click", killEvent); + + installFilteredMouseMove(this.results); + + this.dropdown.on("mousemove-filtered", resultsSelector, this.bind(this.highlightUnderEvent)); + this.dropdown.on("touchstart touchmove touchend", resultsSelector, this.bind(function (event) { + this._touchEvent = true; + this.highlightUnderEvent(event); + })); + this.dropdown.on("touchmove", resultsSelector, this.bind(this.touchMoved)); + this.dropdown.on("touchstart touchend", resultsSelector, this.bind(this.clearTouchMoved)); + + // Waiting for a click event on touch devices to select option and hide dropdown + // otherwise click will be triggered on an underlying element + this.dropdown.on('click', this.bind(function (event) { + if (this._touchEvent) { + this._touchEvent = false; + this.selectHighlighted(); + } + })); + + installDebouncedScroll(80, this.results); + this.dropdown.on("scroll-debounced", resultsSelector, this.bind(this.loadMoreIfNeeded)); + + // do not propagate change event from the search field out of the component + $(this.container).on("change", ".select2-input", function(e) {e.stopPropagation();}); + $(this.dropdown).on("change", ".select2-input", function(e) {e.stopPropagation();}); + + // if jquery.mousewheel plugin is installed we can prevent out-of-bounds scrolling of results via mousewheel + if ($.fn.mousewheel) { + results.mousewheel(function (e, delta, deltaX, deltaY) { + var top = results.scrollTop(); + if (deltaY > 0 && top - deltaY <= 0) { + results.scrollTop(0); + killEvent(e); + } else if (deltaY < 0 && results.get(0).scrollHeight - results.scrollTop() + deltaY <= results.height()) { + results.scrollTop(results.get(0).scrollHeight - results.height()); + killEvent(e); + } + }); + } + + installKeyUpChangeEvent(search); + search.on("keyup-change input paste", this.bind(this.updateResults)); + search.on("focus", function () { search.addClass("select2-focused"); }); + search.on("blur", function () { search.removeClass("select2-focused");}); + + this.dropdown.on("mouseup", resultsSelector, this.bind(function (e) { + if ($(e.target).closest(".select2-result-selectable").length > 0) { + this.highlightUnderEvent(e); + this.selectHighlighted(e); + } + })); + + // trap all mouse events from leaving the dropdown. sometimes there may be a modal that is listening + // for mouse events outside of itself so it can close itself. since the dropdown is now outside the select2's + // dom it will trigger the popup close, which is not what we want + // focusin can cause focus wars between modals and select2 since the dropdown is outside the modal. + this.dropdown.on("click mouseup mousedown touchstart touchend focusin", function (e) { e.stopPropagation(); }); + + this.nextSearchTerm = undefined; + + if ($.isFunction(this.opts.initSelection)) { + // initialize selection based on the current value of the source element + this.initSelection(); + + // if the user has provided a function that can set selection based on the value of the source element + // we monitor the change event on the element and trigger it, allowing for two way synchronization + this.monitorSource(); + } + + if (opts.maximumInputLength !== null) { + this.search.attr("maxlength", opts.maximumInputLength); + } + + var disabled = opts.element.prop("disabled"); + if (disabled === undefined) disabled = false; + this.enable(!disabled); + + var readonly = opts.element.prop("readonly"); + if (readonly === undefined) readonly = false; + this.readonly(readonly); + + // Calculate size of scrollbar + scrollBarDimensions = scrollBarDimensions || measureScrollbar(); + + this.autofocus = opts.element.prop("autofocus"); + opts.element.prop("autofocus", false); + if (this.autofocus) this.focus(); + + this.search.attr("placeholder", opts.searchInputPlaceholder); + }, + + // abstract + destroy: function () { + var element=this.opts.element, select2 = element.data("select2"); + + this.close(); + + if (this.propertyObserver) { + this.propertyObserver.disconnect(); + this.propertyObserver = null; + } + + if (select2 !== undefined) { + select2.container.remove(); + select2.liveRegion.remove(); + select2.dropdown.remove(); + element + .removeClass("select2-offscreen") + .removeData("select2") + .off(".select2") + .prop("autofocus", this.autofocus || false); + if (this.elementTabIndex) { + element.attr({tabindex: this.elementTabIndex}); + } else { + element.removeAttr("tabindex"); + } + element.show(); + } + + cleanupJQueryElements.call(this, + "container", + "liveRegion", + "dropdown", + "results", + "search" + ); + }, + + // abstract + optionToData: function(element) { + if (element.is("option")) { + return { + id:element.prop("value"), + text:element.text(), + element: element.get(), + css: element.attr("class"), + disabled: element.prop("disabled"), + locked: equal(element.attr("locked"), "locked") || equal(element.data("locked"), true) + }; + } else if (element.is("optgroup")) { + return { + text:element.attr("label"), + children:[], + element: element.get(), + css: element.attr("class") + }; + } + }, + + // abstract + prepareOpts: function (opts) { + var element, select, idKey, ajaxUrl, self = this; + + element = opts.element; + + if (element.get(0).tagName.toLowerCase() === "select") { + this.select = select = opts.element; + } + + if (select) { + // these options are not allowed when attached to a select because they are picked up off the element itself + $.each(["id", "multiple", "ajax", "query", "createSearchChoice", "initSelection", "data", "tags"], function () { + if (this in opts) { + throw new Error("Option '" + this + "' is not allowed for Select2 when attached to a ", + "
", + " ", + "
    ", + "
", + "
"].join("")); + return container; + }, + + // single + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.focusser.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // single + opening: function () { + var el, range, len; + + if (this.opts.minimumResultsForSearch >= 0) { + this.showSearch(true); + } + + this.parent.opening.apply(this, arguments); + + if (this.showSearchInput !== false) { + // IE appends focusser.val() at the end of field :/ so we manually insert it at the beginning using a range + // all other browsers handle this just fine + + this.search.val(this.focusser.val()); + } + if (this.opts.shouldFocusInput(this)) { + this.search.focus(); + // move the cursor to the end after focussing, otherwise it will be at the beginning and + // new text will appear *before* focusser.val() + el = this.search.get(0); + if (el.createTextRange) { + range = el.createTextRange(); + range.collapse(false); + range.select(); + } else if (el.setSelectionRange) { + len = this.search.val().length; + el.setSelectionRange(len, len); + } + } + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.focusser.prop("disabled", true).val(""); + this.updateResults(true); + this.opts.element.trigger($.Event("select2-open")); + }, + + // single + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + + this.focusser.prop("disabled", false); + + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + }, + + // single + focus: function () { + if (this.opened()) { + this.close(); + } else { + this.focusser.prop("disabled", false); + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + } + }, + + // single + isFocused: function () { + return this.container.hasClass("select2-container-active"); + }, + + // single + cancel: function () { + this.parent.cancel.apply(this, arguments); + this.focusser.prop("disabled", false); + + if (this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + }, + + // single + destroy: function() { + $("label[for='" + this.focusser.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + + cleanupJQueryElements.call(this, + "selection", + "focusser" + ); + }, + + // single + initContainer: function () { + + var selection, + container = this.container, + dropdown = this.dropdown, + idSuffix = nextUid(), + elementLabel; + + if (this.opts.minimumResultsForSearch < 0) { + this.showSearch(false); + } else { + this.showSearch(true); + } + + this.selection = selection = container.find(".select2-choice"); + + this.focusser = container.find(".select2-focusser"); + + // add aria associations + selection.find(".select2-chosen").attr("id", "select2-chosen-"+idSuffix); + this.focusser.attr("aria-labelledby", "select2-chosen-"+idSuffix); + this.results.attr("id", "select2-results-"+idSuffix); + this.search.attr("aria-owns", "select2-results-"+idSuffix); + + // rewrite labels from original element to focusser + this.focusser.attr("id", "s2id_autogen"+idSuffix); + + elementLabel = $("label[for='" + this.opts.element.attr("id") + "']"); + + this.focusser.prev() + .text(elementLabel.text()) + .attr('for', this.focusser.attr('id')); + + // Ensure the original element retains an accessible name + var originalTitle = this.opts.element.attr("title"); + this.opts.element.attr("title", (originalTitle || elementLabel.text())); + + this.focusser.attr("tabindex", this.elementTabIndex); + + // write label for search field using the label from the focusser element + this.search.attr("id", this.focusser.attr('id') + '_search'); + + this.search.prev() + .text($("label[for='" + this.focusser.attr('id') + "']").text()) + .attr('for', this.search.attr('id')); + + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + return; + } + + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus: true}); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + })); + + this.search.on("blur", this.bind(function(e) { + // a workaround for chrome to keep the search field focussed when the scroll bar is used to scroll the dropdown. + // without this the search field loses focus which is annoying + if (document.activeElement === this.body.get(0)) { + window.setTimeout(this.bind(function() { + if (this.opened()) { + this.search.focus(); + } + }), 0); + } + })); + + this.focusser.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) { + return; + } + + if (this.opts.openOnEnter === false && e.which === KEY.ENTER) { + killEvent(e); + return; + } + + if (e.which == KEY.DOWN || e.which == KEY.UP + || (e.which == KEY.ENTER && this.opts.openOnEnter)) { + + if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) return; + + this.open(); + killEvent(e); + return; + } + + if (e.which == KEY.DELETE || e.which == KEY.BACKSPACE) { + if (this.opts.allowClear) { + this.clear(); + } + killEvent(e); + return; + } + })); + + + installKeyUpChangeEvent(this.focusser); + this.focusser.on("keyup-change input", this.bind(function(e) { + if (this.opts.minimumResultsForSearch >= 0) { + e.stopPropagation(); + if (this.opened()) return; + this.open(); + } + })); + + selection.on("mousedown touchstart", "abbr", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + this.clear(); + killEventImmediately(e); + this.close(); + this.selection.focus(); + })); + + selection.on("mousedown touchstart", this.bind(function (e) { + // Prevent IE from generating a click event on the body + reinsertElement(selection); + + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + + if (this.opened()) { + this.close(); + } else if (this.isInterfaceEnabled()) { + this.open(); + } + + killEvent(e); + })); + + dropdown.on("mousedown touchstart", this.bind(function() { + if (this.opts.shouldFocusInput(this)) { + this.search.focus(); + } + })); + + selection.on("focus", this.bind(function(e) { + killEvent(e); + })); + + this.focusser.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })).on("blur", this.bind(function() { + if (!this.opened()) { + this.container.removeClass("select2-container-active"); + this.opts.element.trigger($.Event("select2-blur")); + } + })); + this.search.on("focus", this.bind(function(){ + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + })); + + this.initContainerWidth(); + this.opts.element.addClass("select2-offscreen"); + this.setPlaceholder(); + + }, + + // single + clear: function(triggerChange) { + var data=this.selection.data("select2-data"); + if (data) { // guard against queued quick consecutive clicks + var evt = $.Event("select2-clearing"); + this.opts.element.trigger(evt); + if (evt.isDefaultPrevented()) { + return; + } + var placeholderOption = this.getPlaceholderOption(); + this.opts.element.val(placeholderOption ? placeholderOption.val() : ""); + this.selection.find(".select2-chosen").empty(); + this.selection.removeData("select2-data"); + this.setPlaceholder(); + + if (triggerChange !== false){ + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({removed:data}); + } + } + }, + + /** + * Sets selection based on source element's value + */ + // single + initSelection: function () { + var selected; + if (this.isPlaceholderOptionSelected()) { + this.updateSelection(null); + this.close(); + this.setPlaceholder(); + } else { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(selected){ + if (selected !== undefined && selected !== null) { + self.updateSelection(selected); + self.close(); + self.setPlaceholder(); + self.nextSearchTerm = self.opts.nextSearchTerm(selected, self.search.val()); + } + }); + } + }, + + isPlaceholderOptionSelected: function() { + var placeholderOption; + if (this.getPlaceholder() === undefined) return false; // no placeholder specified so no option should be considered + return ((placeholderOption = this.getPlaceholderOption()) !== undefined && placeholderOption.prop("selected")) + || (this.opts.element.val() === "") + || (this.opts.element.val() === undefined) + || (this.opts.element.val() === null); + }, + + // single + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + var selected = element.find("option").filter(function() { return this.selected && !this.disabled }); + // a single select box always has a value, no need to null check 'selected' + callback(self.optionToData(selected)); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var id = element.val(); + //search in data by id, storing the actual matching item + var match = null; + opts.query({ + matcher: function(term, text, el){ + var is_match = equal(id, opts.id(el)); + if (is_match) { + match = el; + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + callback(match); + } + }); + }; + } + + return opts; + }, + + // single + getPlaceholder: function() { + // if a placeholder is specified on a single select without a valid placeholder option ignore it + if (this.select) { + if (this.getPlaceholderOption() === undefined) { + return undefined; + } + } + + return this.parent.getPlaceholder.apply(this, arguments); + }, + + // single + setPlaceholder: function () { + var placeholder = this.getPlaceholder(); + + if (this.isPlaceholderOptionSelected() && placeholder !== undefined) { + + // check for a placeholder option if attached to a select + if (this.select && this.getPlaceholderOption() === undefined) return; + + this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(placeholder)); + + this.selection.addClass("select2-default"); + + this.container.removeClass("select2-allowclear"); + } + }, + + // single + postprocessResults: function (data, initial, noHighlightUpdate) { + var selected = 0, self = this, showSearchInput = true; + + // find the selected element in the result list + + this.findHighlightableChoices().each2(function (i, elm) { + if (equal(self.id(elm.data("select2-data")), self.opts.element.val())) { + selected = i; + return false; + } + }); + + // and highlight it + if (noHighlightUpdate !== false) { + if (initial === true && selected >= 0) { + this.highlight(selected); + } else { + this.highlight(0); + } + } + + // hide the search box if this is the first we got the results and there are enough of them for search + + if (initial === true) { + var min = this.opts.minimumResultsForSearch; + if (min >= 0) { + this.showSearch(countResults(data.results) >= min); + } + } + }, + + // single + showSearch: function(showSearchInput) { + if (this.showSearchInput === showSearchInput) return; + + this.showSearchInput = showSearchInput; + + this.dropdown.find(".select2-search").toggleClass("select2-search-hidden", !showSearchInput); + this.dropdown.find(".select2-search").toggleClass("select2-offscreen", !showSearchInput); + //add "select2-with-searchbox" to the container if search box is shown + $(this.dropdown, this.container).toggleClass("select2-with-searchbox", showSearchInput); + }, + + // single + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + var old = this.opts.element.val(), + oldData = this.data(); + + this.opts.element.val(this.id(data)); + this.updateSelection(data); + + this.opts.element.trigger({ type: "select2-selected", val: this.id(data), choice: data }); + + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + this.close(); + + if ((!options || !options.noFocus) && this.opts.shouldFocusInput(this)) { + this.focusser.focus(); + } + + if (!equal(old, this.id(data))) { + this.triggerChange({ added: data, removed: oldData }); + } + }, + + // single + updateSelection: function (data) { + + var container=this.selection.find(".select2-chosen"), formatted, cssClass; + + this.selection.data("select2-data", data); + + container.empty(); + if (data !== null) { + formatted=this.opts.formatSelection(data, container, this.opts.escapeMarkup); + } + if (formatted !== undefined) { + container.append(formatted); + } + cssClass=this.opts.formatSelectionCssClass(data, container); + if (cssClass !== undefined) { + container.addClass(cssClass); + } + + this.selection.removeClass("select2-default"); + + if (this.opts.allowClear && this.getPlaceholder() !== undefined) { + this.container.addClass("select2-allowclear"); + } + }, + + // single + val: function () { + var val, + triggerChange = false, + data = null, + self = this, + oldData = this.data(); + + if (arguments.length === 0) { + return this.opts.element.val(); + } + + val = arguments[0]; + + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + + if (this.select) { + this.select + .val(val) + .find("option").filter(function() { return this.selected }).each2(function (i, elm) { + data = self.optionToData(elm); + return false; + }); + this.updateSelection(data); + this.setPlaceholder(); + if (triggerChange) { + this.triggerChange({added: data, removed:oldData}); + } + } else { + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.clear(triggerChange); + return; + } + if (this.opts.initSelection === undefined) { + throw new Error("cannot call val() if initSelection() is not defined"); + } + this.opts.element.val(val); + this.opts.initSelection(this.opts.element, function(data){ + self.opts.element.val(!data ? "" : self.id(data)); + self.updateSelection(data); + self.setPlaceholder(); + if (triggerChange) { + self.triggerChange({added: data, removed:oldData}); + } + }); + } + }, + + // single + clearSearch: function () { + this.search.val(""); + this.focusser.val(""); + }, + + // single + data: function(value) { + var data, + triggerChange = false; + + if (arguments.length === 0) { + data = this.selection.data("select2-data"); + if (data == undefined) data = null; + return data; + } else { + if (arguments.length > 1) { + triggerChange = arguments[1]; + } + if (!value) { + this.clear(triggerChange); + } else { + data = this.data(); + this.opts.element.val(!value ? "" : this.id(value)); + this.updateSelection(value); + if (triggerChange) { + this.triggerChange({added: value, removed:data}); + } + } + } + } + }); + + MultiSelect2 = clazz(AbstractSelect2, { + + // multi + createContainer: function () { + var container = $(document.createElement("div")).attr({ + "class": "select2-container select2-container-multi" + }).html([ + "
    ", + "
  • ", + " ", + " ", + "
  • ", + "
", + "
", + "
    ", + "
", + "
"].join("")); + return container; + }, + + // multi + prepareOpts: function () { + var opts = this.parent.prepareOpts.apply(this, arguments), + self=this; + + // TODO validate placeholder is a string if specified + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + // install the selection initializer + opts.initSelection = function (element, callback) { + + var data = []; + + element.find("option").filter(function() { return this.selected && !this.disabled }).each2(function (i, elm) { + data.push(self.optionToData(elm)); + }); + callback(data); + }; + } else if ("data" in opts) { + // install default initSelection when applied to hidden input and data is local + opts.initSelection = opts.initSelection || function (element, callback) { + var ids = splitVal(element.val(), opts.separator); + //search in data by array of ids, storing matching items in a list + var matches = []; + opts.query({ + matcher: function(term, text, el){ + var is_match = $.grep(ids, function(id) { + return equal(id, opts.id(el)); + }).length; + if (is_match) { + matches.push(el); + } + return is_match; + }, + callback: !$.isFunction(callback) ? $.noop : function() { + // reorder matches based on the order they appear in the ids array because right now + // they are in the order in which they appear in data array + var ordered = []; + for (var i = 0; i < ids.length; i++) { + var id = ids[i]; + for (var j = 0; j < matches.length; j++) { + var match = matches[j]; + if (equal(id, opts.id(match))) { + ordered.push(match); + matches.splice(j, 1); + break; + } + } + } + callback(ordered); + } + }); + }; + } + + return opts; + }, + + // multi + selectChoice: function (choice) { + + var selected = this.container.find(".select2-search-choice-focus"); + if (selected.length && choice && choice[0] == selected[0]) { + + } else { + if (selected.length) { + this.opts.element.trigger("choice-deselected", selected); + } + selected.removeClass("select2-search-choice-focus"); + if (choice && choice.length) { + this.close(); + choice.addClass("select2-search-choice-focus"); + this.opts.element.trigger("choice-selected", choice); + } + } + }, + + // multi + destroy: function() { + $("label[for='" + this.search.attr('id') + "']") + .attr('for', this.opts.element.attr("id")); + this.parent.destroy.apply(this, arguments); + + cleanupJQueryElements.call(this, + "searchContainer", + "selection" + ); + }, + + // multi + initContainer: function () { + + var selector = ".select2-choices", selection; + + this.searchContainer = this.container.find(".select2-search-field"); + this.selection = selection = this.container.find(selector); + + var _this = this; + this.selection.on("click", ".select2-search-choice:not(.select2-locked)", function (e) { + //killEvent(e); + _this.search[0].focus(); + _this.selectChoice($(this)); + }); + + // rewrite labels from original element to focusser + this.search.attr("id", "s2id_autogen"+nextUid()); + + this.search.prev() + .text($("label[for='" + this.opts.element.attr("id") + "']").text()) + .attr('for', this.search.attr('id')); + + this.search.on("input paste", this.bind(function() { + if (!this.isInterfaceEnabled()) return; + if (!this.opened()) { + this.open(); + } + })); + + this.search.attr("tabindex", this.elementTabIndex); + + this.keydowns = 0; + this.search.on("keydown", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + ++this.keydowns; + var selected = selection.find(".select2-search-choice-focus"); + var prev = selected.prev(".select2-search-choice:not(.select2-locked)"); + var next = selected.next(".select2-search-choice:not(.select2-locked)"); + var pos = getCursorInfo(this.search); + + if (selected.length && + (e.which == KEY.LEFT || e.which == KEY.RIGHT || e.which == KEY.BACKSPACE || e.which == KEY.DELETE || e.which == KEY.ENTER)) { + var selectedChoice = selected; + if (e.which == KEY.LEFT && prev.length) { + selectedChoice = prev; + } + else if (e.which == KEY.RIGHT) { + selectedChoice = next.length ? next : null; + } + else if (e.which === KEY.BACKSPACE) { + if (this.unselect(selected.first())) { + this.search.width(10); + selectedChoice = prev.length ? prev : next; + } + } else if (e.which == KEY.DELETE) { + if (this.unselect(selected.first())) { + this.search.width(10); + selectedChoice = next.length ? next : null; + } + } else if (e.which == KEY.ENTER) { + selectedChoice = null; + } + + this.selectChoice(selectedChoice); + killEvent(e); + if (!selectedChoice || !selectedChoice.length) { + this.open(); + } + return; + } else if (((e.which === KEY.BACKSPACE && this.keydowns == 1) + || e.which == KEY.LEFT) && (pos.offset == 0 && !pos.length)) { + + this.selectChoice(selection.find(".select2-search-choice:not(.select2-locked)").last()); + killEvent(e); + return; + } else { + this.selectChoice(null); + } + + if (this.opened()) { + switch (e.which) { + case KEY.UP: + case KEY.DOWN: + this.moveHighlight((e.which === KEY.UP) ? -1 : 1); + killEvent(e); + return; + case KEY.ENTER: + this.selectHighlighted(); + killEvent(e); + return; + case KEY.TAB: + this.selectHighlighted({noFocus:true}); + this.close(); + return; + case KEY.ESC: + this.cancel(e); + killEvent(e); + return; + } + } + + if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) + || e.which === KEY.BACKSPACE || e.which === KEY.ESC) { + return; + } + + if (e.which === KEY.ENTER) { + if (this.opts.openOnEnter === false) { + return; + } else if (e.altKey || e.ctrlKey || e.shiftKey || e.metaKey) { + return; + } + } + + this.open(); + + if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) { + // prevent the page from scrolling + killEvent(e); + } + + if (e.which === KEY.ENTER) { + // prevent form from being submitted + killEvent(e); + } + + })); + + this.search.on("keyup", this.bind(function (e) { + this.keydowns = 0; + this.resizeSearch(); + }) + ); + + this.search.on("blur", this.bind(function(e) { + this.container.removeClass("select2-container-active"); + this.search.removeClass("select2-focused"); + this.selectChoice(null); + if (!this.opened()) this.clearSearch(); + e.stopImmediatePropagation(); + this.opts.element.trigger($.Event("select2-blur")); + })); + + this.container.on("click", selector, this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + if ($(e.target).closest(".select2-search-choice").length > 0) { + // clicked inside a select2 search choice, do not open + return; + } + this.selectChoice(null); + this.clearPlaceholder(); + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.open(); + this.focusSearch(); + e.preventDefault(); + })); + + this.container.on("focus", selector, this.bind(function () { + if (!this.isInterfaceEnabled()) return; + if (!this.container.hasClass("select2-container-active")) { + this.opts.element.trigger($.Event("select2-focus")); + } + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + this.clearPlaceholder(); + })); + + this.initContainerWidth(); + this.opts.element.addClass("select2-offscreen"); + + // set the placeholder if necessary + this.clearSearch(); + }, + + // multi + enableInterface: function() { + if (this.parent.enableInterface.apply(this, arguments)) { + this.search.prop("disabled", !this.isInterfaceEnabled()); + } + }, + + // multi + initSelection: function () { + var data; + if (this.opts.element.val() === "" && this.opts.element.text() === "") { + this.updateSelection([]); + this.close(); + // set the placeholder if necessary + this.clearSearch(); + } + if (this.select || this.opts.element.val() !== "") { + var self = this; + this.opts.initSelection.call(null, this.opts.element, function(data){ + if (data !== undefined && data !== null) { + self.updateSelection(data); + self.close(); + // set the placeholder if necessary + self.clearSearch(); + } + }); + } + }, + + // multi + clearSearch: function () { + var placeholder = this.getPlaceholder(), + maxWidth = this.getMaxSearchWidth(); + + if (placeholder !== undefined && this.getVal().length === 0 && this.search.hasClass("select2-focused") === false) { + this.search.val(placeholder).addClass("select2-default"); + // stretch the search box to full width of the container so as much of the placeholder is visible as possible + // we could call this.resizeSearch(), but we do not because that requires a sizer and we do not want to create one so early because of a firefox bug, see #944 + this.search.width(maxWidth > 0 ? maxWidth : this.container.css("width")); + } else { + this.search.val("").width(10); + } + }, + + // multi + clearPlaceholder: function () { + if (this.search.hasClass("select2-default")) { + this.search.val("").removeClass("select2-default"); + } + }, + + // multi + opening: function () { + this.clearPlaceholder(); // should be done before super so placeholder is not used to search + this.resizeSearch(); + + this.parent.opening.apply(this, arguments); + + this.focusSearch(); + + // initializes search's value with nextSearchTerm (if defined by user) + // ignore nextSearchTerm if the dropdown is opened by the user pressing a letter + if(this.search.val() === "") { + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.search.select(); + } + } + + this.updateResults(true); + if (this.opts.shouldFocusInput(this)) { + this.search.focus(); + } + this.opts.element.trigger($.Event("select2-open")); + }, + + // multi + close: function () { + if (!this.opened()) return; + this.parent.close.apply(this, arguments); + }, + + // multi + focus: function () { + this.close(); + this.search.focus(); + }, + + // multi + isFocused: function () { + return this.search.hasClass("select2-focused"); + }, + + // multi + updateSelection: function (data) { + var ids = [], filtered = [], self = this; + + // filter out duplicates + $(data).each(function () { + if (indexOf(self.id(this), ids) < 0) { + ids.push(self.id(this)); + filtered.push(this); + } + }); + data = filtered; + + this.selection.find(".select2-search-choice").remove(); + $(data).each(function () { + self.addSelectedChoice(this); + }); + self.postprocessResults(); + }, + + // multi + tokenize: function() { + var input = this.search.val(); + input = this.opts.tokenizer.call(this, input, this.data(), this.bind(this.onSelect), this.opts); + if (input != null && input != undefined) { + this.search.val(input); + if (input.length > 0) { + this.open(); + } + } + + }, + + // multi + onSelect: function (data, options) { + + if (!this.triggerSelect(data)) { return; } + + this.addSelectedChoice(data); + + this.opts.element.trigger({ type: "selected", val: this.id(data), choice: data }); + + // keep track of the search's value before it gets cleared + this.nextSearchTerm = this.opts.nextSearchTerm(data, this.search.val()); + + this.clearSearch(); + this.updateResults(); + + if (this.select || !this.opts.closeOnSelect) this.postprocessResults(data, false, this.opts.closeOnSelect===true); + + if (this.opts.closeOnSelect) { + this.close(); + this.search.width(10); + } else { + if (this.countSelectableResults()>0) { + this.search.width(10); + this.resizeSearch(); + if (this.getMaximumSelectionSize() > 0 && this.val().length >= this.getMaximumSelectionSize()) { + // if we reached max selection size repaint the results so choices + // are replaced with the max selection reached message + this.updateResults(true); + } else { + // initializes search's value with nextSearchTerm and update search result + if(this.nextSearchTerm != undefined){ + this.search.val(this.nextSearchTerm); + this.updateResults(); + this.search.select(); + } + } + this.positionDropdown(); + } else { + // if nothing left to select close + this.close(); + this.search.width(10); + } + } + + // since its not possible to select an element that has already been + // added we do not need to check if this is a new element before firing change + this.triggerChange({ added: data }); + + if (!options || !options.noFocus) + this.focusSearch(); + }, + + // multi + cancel: function () { + this.close(); + this.focusSearch(); + }, + + addSelectedChoice: function (data) { + var enableChoice = !data.locked, + enabledItem = $( + "
  • " + + "
    " + + "
    " + + "
  • "), + disabledItem = $( + "
  • " + + "
    " + + "
  • "); + var choice = enableChoice ? enabledItem : disabledItem, + id = this.id(data), + val = this.getVal(), + formatted, + cssClass; + + formatted=this.opts.formatSelection(data, choice.find("div"), this.opts.escapeMarkup); + if (formatted != undefined) { + choice.find("div").replaceWith("
    "+formatted+"
    "); + } + cssClass=this.opts.formatSelectionCssClass(data, choice.find("div")); + if (cssClass != undefined) { + choice.addClass(cssClass); + } + + if(enableChoice){ + choice.find(".select2-search-choice-close") + .on("mousedown", killEvent) + .on("click dblclick", this.bind(function (e) { + if (!this.isInterfaceEnabled()) return; + + this.unselect($(e.target)); + this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"); + killEvent(e); + this.close(); + this.focusSearch(); + })).on("focus", this.bind(function () { + if (!this.isInterfaceEnabled()) return; + this.container.addClass("select2-container-active"); + this.dropdown.addClass("select2-drop-active"); + })); + } + + choice.data("select2-data", data); + choice.insertBefore(this.searchContainer); + + val.push(id); + this.setVal(val); + }, + + // multi + unselect: function (selected) { + var val = this.getVal(), + data, + index; + selected = selected.closest(".select2-search-choice"); + + if (selected.length === 0) { + throw "Invalid argument: " + selected + ". Must be .select2-search-choice"; + } + + data = selected.data("select2-data"); + + if (!data) { + // prevent a race condition when the 'x' is clicked really fast repeatedly the event can be queued + // and invoked on an element already removed + return; + } + + var evt = $.Event("select2-removing"); + evt.val = this.id(data); + evt.choice = data; + this.opts.element.trigger(evt); + + if (evt.isDefaultPrevented()) { + return false; + } + + while((index = indexOf(this.id(data), val)) >= 0) { + val.splice(index, 1); + this.setVal(val); + if (this.select) this.postprocessResults(); + } + + selected.remove(); + + this.opts.element.trigger({ type: "select2-removed", val: this.id(data), choice: data }); + this.triggerChange({ removed: data }); + + return true; + }, + + // multi + postprocessResults: function (data, initial, noHighlightUpdate) { + var val = this.getVal(), + choices = this.results.find(".select2-result"), + compound = this.results.find(".select2-result-with-children"), + self = this; + + choices.each2(function (i, choice) { + var id = self.id(choice.data("select2-data")); + if (indexOf(id, val) >= 0) { + choice.addClass("select2-selected"); + // mark all children of the selected parent as selected + choice.find(".select2-result-selectable").addClass("select2-selected"); + } + }); + + compound.each2(function(i, choice) { + // hide an optgroup if it doesn't have any selectable children + if (!choice.is('.select2-result-selectable') + && choice.find(".select2-result-selectable:not(.select2-selected)").length === 0) { + choice.addClass("select2-selected"); + } + }); + + if (this.highlight() == -1 && noHighlightUpdate !== false){ + self.highlight(0); + } + + //If all results are chosen render formatNoMatches + if(!this.opts.createSearchChoice && !choices.filter('.select2-result:not(.select2-selected)').length > 0){ + if(!data || data && !data.more && this.results.find(".select2-no-results").length === 0) { + if (checkFormatter(self.opts.formatNoMatches, "formatNoMatches")) { + this.results.append("
  • " + evaluate(self.opts.formatNoMatches, self.search.val()) + "
  • "); + } + } + } + + }, + + // multi + getMaxSearchWidth: function() { + return this.selection.width() - getSideBorderPadding(this.search); + }, + + // multi + resizeSearch: function () { + var minimumWidth, left, maxWidth, containerLeft, searchWidth, + sideBorderPadding = getSideBorderPadding(this.search); + + minimumWidth = measureTextWidth(this.search) + 10; + + left = this.search.offset().left; + + maxWidth = this.selection.width(); + containerLeft = this.selection.offset().left; + + searchWidth = maxWidth - (left - containerLeft) - sideBorderPadding; + + if (searchWidth < minimumWidth) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth < 40) { + searchWidth = maxWidth - sideBorderPadding; + } + + if (searchWidth <= 0) { + searchWidth = minimumWidth; + } + + this.search.width(Math.floor(searchWidth)); + }, + + // multi + getVal: function () { + var val; + if (this.select) { + val = this.select.val(); + return val === null ? [] : val; + } else { + val = this.opts.element.val(); + return splitVal(val, this.opts.separator); + } + }, + + // multi + setVal: function (val) { + var unique; + if (this.select) { + this.select.val(val); + } else { + unique = []; + // filter out duplicates + $(val).each(function () { + if (indexOf(this, unique) < 0) unique.push(this); + }); + this.opts.element.val(unique.length === 0 ? "" : unique.join(this.opts.separator)); + } + }, + + // multi + buildChangeDetails: function (old, current) { + var current = current.slice(0), + old = old.slice(0); + + // remove intersection from each array + for (var i = 0; i < current.length; i++) { + for (var j = 0; j < old.length; j++) { + if (equal(this.opts.id(current[i]), this.opts.id(old[j]))) { + current.splice(i, 1); + if(i>0){ + i--; + } + old.splice(j, 1); + j--; + } + } + } + + return {added: current, removed: old}; + }, + + + // multi + val: function (val, triggerChange) { + var oldData, self=this; + + if (arguments.length === 0) { + return this.getVal(); + } + + oldData=this.data(); + if (!oldData.length) oldData=[]; + + // val is an id. !val is true for [undefined,null,'',0] - 0 is legal + if (!val && val !== 0) { + this.opts.element.val(""); + this.updateSelection([]); + this.clearSearch(); + if (triggerChange) { + this.triggerChange({added: this.data(), removed: oldData}); + } + return; + } + + // val is a list of ids + this.setVal(val); + + if (this.select) { + this.opts.initSelection(this.select, this.bind(this.updateSelection)); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(oldData, this.data())); + } + } else { + if (this.opts.initSelection === undefined) { + throw new Error("val() cannot be called if initSelection() is not defined"); + } + + this.opts.initSelection(this.opts.element, function(data){ + var ids=$.map(data, self.id); + self.setVal(ids); + self.updateSelection(data); + self.clearSearch(); + if (triggerChange) { + self.triggerChange(self.buildChangeDetails(oldData, self.data())); + } + }); + } + this.clearSearch(); + }, + + // multi + onSortStart: function() { + if (this.select) { + throw new Error("Sorting of elements is not supported when attached to instead."); + } + + // collapse search field into 0 width so its container can be collapsed as well + this.search.width(0); + // hide the container + this.searchContainer.hide(); + }, + + // multi + onSortEnd:function() { + + var val=[], self=this; + + // show search and move it to the end of the list + this.searchContainer.show(); + // make sure the search container is the last item in the list + this.searchContainer.appendTo(this.searchContainer.parent()); + // since we collapsed the width in dragStarted, we resize it here + this.resizeSearch(); + + // update selection + this.selection.find(".select2-search-choice").each(function() { + val.push(self.opts.id($(this).data("select2-data"))); + }); + this.setVal(val); + this.triggerChange(); + }, + + // multi + data: function(values, triggerChange) { + var self=this, ids, old; + if (arguments.length === 0) { + return this.selection + .children(".select2-search-choice") + .map(function() { return $(this).data("select2-data"); }) + .get(); + } else { + old = this.data(); + if (!values) { values = []; } + ids = $.map(values, function(e) { return self.opts.id(e); }); + this.setVal(ids); + this.updateSelection(values); + this.clearSearch(); + if (triggerChange) { + this.triggerChange(this.buildChangeDetails(old, this.data())); + } + } + } + }); + + $.fn.select2 = function () { + + var args = Array.prototype.slice.call(arguments, 0), + opts, + select2, + method, value, multiple, + allowedMethods = ["val", "destroy", "opened", "open", "close", "focus", "isFocused", "container", "dropdown", "onSortStart", "onSortEnd", "enable", "disable", "readonly", "positionDropdown", "data", "search"], + valueMethods = ["opened", "isFocused", "container", "dropdown"], + propertyMethods = ["val", "data"], + methodsMap = { search: "externalSearch" }; + + this.each(function () { + if (args.length === 0 || typeof(args[0]) === "object") { + opts = args.length === 0 ? {} : $.extend({}, args[0]); + opts.element = $(this); + + if (opts.element.get(0).tagName.toLowerCase() === "select") { + multiple = opts.element.prop("multiple"); + } else { + multiple = opts.multiple || false; + if ("tags" in opts) {opts.multiple = multiple = true;} + } + + select2 = multiple ? new window.Select2["class"].multi() : new window.Select2["class"].single(); + select2.init(opts); + } else if (typeof(args[0]) === "string") { + + if (indexOf(args[0], allowedMethods) < 0) { + throw "Unknown method: " + args[0]; + } + + value = undefined; + select2 = $(this).data("select2"); + if (select2 === undefined) return; + + method=args[0]; + + if (method === "container") { + value = select2.container; + } else if (method === "dropdown") { + value = select2.dropdown; + } else { + if (methodsMap[method]) method = methodsMap[method]; + + value = select2[method].apply(select2, args.slice(1)); + } + if (indexOf(args[0], valueMethods) >= 0 + || (indexOf(args[0], propertyMethods) >= 0 && args.length == 1)) { + return false; // abort the iteration, ready to return first matched value + } + } else { + throw "Invalid arguments to select2 plugin: " + args; + } + }); + return (value === undefined) ? this : value; + }; + + // plugin defaults, accessible to users + $.fn.select2.defaults = { + width: "copy", + loadMorePadding: 0, + closeOnSelect: true, + openOnEnter: true, + containerCss: {}, + dropdownCss: {}, + containerCssClass: "", + dropdownCssClass: "", + formatResult: function(result, container, query, escapeMarkup) { + var markup=[]; + markMatch(result.text, query.term, markup, escapeMarkup); + return markup.join(""); + }, + formatSelection: function (data, container, escapeMarkup) { + return data ? escapeMarkup(data.text) : undefined; + }, + sortResults: function (results, container, query) { + return results; + }, + formatResultCssClass: function(data) {return data.css;}, + formatSelectionCssClass: function(data, container) {return undefined;}, + formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; }, + formatNoMatches: function () { return "No matches found"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " or more character" + (n == 1? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results…"; }, + formatSearching: function () { return "Searching…"; }, + minimumResultsForSearch: 0, + minimumInputLength: 0, + maximumInputLength: null, + maximumSelectionSize: 0, + id: function (e) { return e == undefined ? null : e.id; }, + matcher: function(term, text) { + return stripDiacritics(''+text).toUpperCase().indexOf(stripDiacritics(''+term).toUpperCase()) >= 0; + }, + separator: ",", + tokenSeparators: [], + tokenizer: defaultTokenizer, + escapeMarkup: defaultEscapeMarkup, + blurOnChange: false, + selectOnBlur: false, + adaptContainerCssClass: function(c) { return c; }, + adaptDropdownCssClass: function(c) { return null; }, + nextSearchTerm: function(selectedObject, currentSearchTerm) { return undefined; }, + searchInputPlaceholder: '', + createSearchChoicePosition: 'top', + shouldFocusInput: function (instance) { + // Attempt to detect touch devices + var supportsTouchEvents = (('ontouchstart' in window) || + (navigator.msMaxTouchPoints > 0)); + + // Only devices which support touch events should be special cased + if (!supportsTouchEvents) { + return true; + } + + // Never focus the input if search is disabled + if (instance.opts.minimumResultsForSearch < 0) { + return false; + } + + return true; + } + }; + + $.fn.select2.ajaxDefaults = { + transport: $.ajax, + params: { + type: "GET", + cache: false, + dataType: "json" + } + }; + + // exports + window.Select2 = { + query: { + ajax: ajax, + local: local, + tags: tags + }, util: { + debounce: debounce, + markMatch: markMatch, + escapeMarkup: defaultEscapeMarkup, + stripDiacritics: stripDiacritics + }, "class": { + "abstract": AbstractSelect2, + "single": SingleSelect2, + "multi": MultiSelect2 + } + }; + +}(jQuery)); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.min.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.min.js new file mode 100644 index 00000000..f396992f --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.min.js @@ -0,0 +1,22 @@ +/* +Copyright 2014 Igor Vaynberg + +Version: 3.4.8 Timestamp: Thu May 1 09:50:32 EDT 2014 + +This software is licensed under the Apache License, Version 2.0 (the "Apache License") or the GNU +General Public License version 2 (the "GPL License"). You may choose either license to govern your +use of this software only upon the condition that you accept all of the terms of either the Apache +License or the GPL License. + +You may obtain a copy of the Apache License and the GPL License at: + +http://www.apache.org/licenses/LICENSE-2.0 +http://www.gnu.org/licenses/gpl-2.0.html + +Unless required by applicable law or agreed to in writing, software distributed under the Apache License +or the GPL Licesnse is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the Apache License and the GPL License for the specific language governing +permissions and limitations under the Apache License and the GPL License. +*/ +!function(a){"undefined"==typeof a.fn.each2&&a.extend(a.fn,{each2:function(b){for(var c=a([0]),d=-1,e=this.length;++dc;c+=1)if(r(a,b[c]))return c;return-1}function q(){var b=a(l);b.appendTo("body");var c={width:b.width()-b[0].clientWidth,height:b.height()-b[0].clientHeight};return b.remove(),c}function r(a,c){return a===c?!0:a===b||c===b?!1:null===a||null===c?!1:a.constructor===String?a+""==c+"":c.constructor===String?c+""==a+"":!1}function s(b,c){var d,e,f;if(null===b||b.length<1)return[];for(d=b.split(c),e=0,f=d.length;f>e;e+=1)d[e]=a.trim(d[e]);return d}function t(a){return a.outerWidth(!1)-a.width()}function u(c){var d="keyup-change-value";c.on("keydown",function(){a.data(c,d)===b&&a.data(c,d,c.val())}),c.on("keyup",function(){var e=a.data(c,d);e!==b&&c.val()!==e&&(a.removeData(c,d),c.trigger("keyup-change"))})}function v(c){c.on("mousemove",function(c){var d=i;(d===b||d.x!==c.pageX||d.y!==c.pageY)&&a(c.target).trigger("mousemove-filtered",c)})}function w(a,c,d){d=d||b;var e;return function(){var b=arguments;window.clearTimeout(e),e=window.setTimeout(function(){c.apply(d,b)},a)}}function x(a,b){var c=w(a,function(a){b.trigger("scroll-debounced",a)});b.on("scroll",function(a){p(a.target,b.get())>=0&&c(a)})}function y(a){a[0]!==document.activeElement&&window.setTimeout(function(){var d,b=a[0],c=a.val().length;a.focus();var e=b.offsetWidth>0||b.offsetHeight>0;e&&b===document.activeElement&&(b.setSelectionRange?b.setSelectionRange(c,c):b.createTextRange&&(d=b.createTextRange(),d.collapse(!1),d.select()))},0)}function z(b){b=a(b)[0];var c=0,d=0;if("selectionStart"in b)c=b.selectionStart,d=b.selectionEnd-c;else if("selection"in document){b.focus();var e=document.selection.createRange();d=document.selection.createRange().text.length,e.moveStart("character",-b.value.length),c=e.text.length-d}return{offset:c,length:d}}function A(a){a.preventDefault(),a.stopPropagation()}function B(a){a.preventDefault(),a.stopImmediatePropagation()}function C(b){if(!h){var c=b[0].currentStyle||window.getComputedStyle(b[0],null);h=a(document.createElement("div")).css({position:"absolute",left:"-10000px",top:"-10000px",display:"none",fontSize:c.fontSize,fontFamily:c.fontFamily,fontStyle:c.fontStyle,fontWeight:c.fontWeight,letterSpacing:c.letterSpacing,textTransform:c.textTransform,whiteSpace:"nowrap"}),h.attr("class","select2-sizer"),a("body").append(h)}return h.text(b.val()),h.width()}function D(b,c,d){var e,g,f=[];e=b.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0===this.indexOf("select2-")&&f.push(this)})),e=c.attr("class"),e&&(e=""+e,a(e.split(" ")).each2(function(){0!==this.indexOf("select2-")&&(g=d(this),g&&f.push(g))})),b.attr("class",f.join(" "))}function E(a,b,c,d){var e=o(a.toUpperCase()).indexOf(o(b.toUpperCase())),f=b.length;return 0>e?(c.push(d(a)),void 0):(c.push(d(a.substring(0,e))),c.push(""),c.push(d(a.substring(e,e+f))),c.push(""),c.push(d(a.substring(e+f,a.length))),void 0)}function F(a){var b={"\\":"\","&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};return String(a).replace(/[&<>"'\/\\]/g,function(a){return b[a]})}function G(c){var d,e=null,f=c.quietMillis||100,g=c.url,h=this;return function(i){window.clearTimeout(d),d=window.setTimeout(function(){var d=c.data,f=g,j=c.transport||a.fn.select2.ajaxDefaults.transport,k={type:c.type||"GET",cache:c.cache||!1,jsonpCallback:c.jsonpCallback||b,dataType:c.dataType||"json"},l=a.extend({},a.fn.select2.ajaxDefaults.params,k);d=d?d.call(h,i.term,i.page,i.context):null,f="function"==typeof f?f.call(h,i.term,i.page,i.context):f,e&&"function"==typeof e.abort&&e.abort(),c.params&&(a.isFunction(c.params)?a.extend(l,c.params.call(h)):a.extend(l,c.params)),a.extend(l,{url:f,dataType:c.dataType,data:d,success:function(a){var b=c.results(a,i.page);i.callback(b)}}),e=j.call(h,l)},f)}}function H(b){var d,e,c=b,f=function(a){return""+a.text};a.isArray(c)&&(e=c,c={results:e}),a.isFunction(c)===!1&&(e=c,c=function(){return e});var g=c();return g.text&&(f=g.text,a.isFunction(f)||(d=g.text,f=function(a){return a[d]})),function(b){var g,d=b.term,e={results:[]};return""===d?(b.callback(c()),void 0):(g=function(c,e){var h,i;if(c=c[0],c.children){h={};for(i in c)c.hasOwnProperty(i)&&(h[i]=c[i]);h.children=[],a(c.children).each2(function(a,b){g(b,h.children)}),(h.children.length||b.matcher(d,f(h),c))&&e.push(h)}else b.matcher(d,f(c),c)&&e.push(c)},a(c().results).each2(function(a,b){g(b,e.results)}),b.callback(e),void 0)}}function I(c){var d=a.isFunction(c);return function(e){var f=e.term,g={results:[]},h=d?c(e):c;a.isArray(h)&&(a(h).each(function(){var a=this.text!==b,c=a?this.text:this;(""===f||e.matcher(f,c))&&g.results.push(a?this:{id:this,text:this})}),e.callback(g))}}function J(b,c){if(a.isFunction(b))return!0;if(!b)return!1;if("string"==typeof b)return!0;throw new Error(c+" must be a string, function, or falsy value")}function K(b){if(a.isFunction(b)){var c=Array.prototype.slice.call(arguments,1);return b.apply(null,c)}return b}function L(b){var c=0;return a.each(b,function(a,b){b.children?c+=L(b.children):c++}),c}function M(a,c,d,e){var h,i,j,k,l,f=a,g=!1;if(!e.createSearchChoice||!e.tokenSeparators||e.tokenSeparators.length<1)return b;for(;;){for(i=-1,j=0,k=e.tokenSeparators.length;k>j&&(l=e.tokenSeparators[j],i=a.indexOf(l),!(i>=0));j++);if(0>i)break;if(h=a.substring(0,i),a=a.substring(i+l.length),h.length>0&&(h=e.createSearchChoice.call(this,h,c),h!==b&&null!==h&&e.id(h)!==b&&null!==e.id(h))){for(g=!1,j=0,k=c.length;k>j;j++)if(r(e.id(h),e.id(c[j]))){g=!0;break}g||d(h)}}return f!==a?a:void 0}function N(){var a=this;Array.prototype.forEach.call(arguments,function(b){a[b].remove(),a[b]=null})}function O(b,c){var d=function(){};return d.prototype=new b,d.prototype.constructor=d,d.prototype.parent=b.prototype,d.prototype=a.extend(d.prototype,c),d}if(window.Select2===b){var c,d,e,f,g,h,j,k,i={x:0,y:0},c={TAB:9,ENTER:13,ESC:27,SPACE:32,LEFT:37,UP:38,RIGHT:39,DOWN:40,SHIFT:16,CTRL:17,ALT:18,PAGE_UP:33,PAGE_DOWN:34,HOME:36,END:35,BACKSPACE:8,DELETE:46,isArrow:function(a){switch(a=a.which?a.which:a){case c.LEFT:case c.RIGHT:case c.UP:case c.DOWN:return!0}return!1},isControl:function(a){var b=a.which;switch(b){case c.SHIFT:case c.CTRL:case c.ALT:return!0}return a.metaKey?!0:!1},isFunctionKey:function(a){return a=a.which?a.which:a,a>=112&&123>=a}},l="
    ",m={"\u24b6":"A","\uff21":"A","\xc0":"A","\xc1":"A","\xc2":"A","\u1ea6":"A","\u1ea4":"A","\u1eaa":"A","\u1ea8":"A","\xc3":"A","\u0100":"A","\u0102":"A","\u1eb0":"A","\u1eae":"A","\u1eb4":"A","\u1eb2":"A","\u0226":"A","\u01e0":"A","\xc4":"A","\u01de":"A","\u1ea2":"A","\xc5":"A","\u01fa":"A","\u01cd":"A","\u0200":"A","\u0202":"A","\u1ea0":"A","\u1eac":"A","\u1eb6":"A","\u1e00":"A","\u0104":"A","\u023a":"A","\u2c6f":"A","\ua732":"AA","\xc6":"AE","\u01fc":"AE","\u01e2":"AE","\ua734":"AO","\ua736":"AU","\ua738":"AV","\ua73a":"AV","\ua73c":"AY","\u24b7":"B","\uff22":"B","\u1e02":"B","\u1e04":"B","\u1e06":"B","\u0243":"B","\u0182":"B","\u0181":"B","\u24b8":"C","\uff23":"C","\u0106":"C","\u0108":"C","\u010a":"C","\u010c":"C","\xc7":"C","\u1e08":"C","\u0187":"C","\u023b":"C","\ua73e":"C","\u24b9":"D","\uff24":"D","\u1e0a":"D","\u010e":"D","\u1e0c":"D","\u1e10":"D","\u1e12":"D","\u1e0e":"D","\u0110":"D","\u018b":"D","\u018a":"D","\u0189":"D","\ua779":"D","\u01f1":"DZ","\u01c4":"DZ","\u01f2":"Dz","\u01c5":"Dz","\u24ba":"E","\uff25":"E","\xc8":"E","\xc9":"E","\xca":"E","\u1ec0":"E","\u1ebe":"E","\u1ec4":"E","\u1ec2":"E","\u1ebc":"E","\u0112":"E","\u1e14":"E","\u1e16":"E","\u0114":"E","\u0116":"E","\xcb":"E","\u1eba":"E","\u011a":"E","\u0204":"E","\u0206":"E","\u1eb8":"E","\u1ec6":"E","\u0228":"E","\u1e1c":"E","\u0118":"E","\u1e18":"E","\u1e1a":"E","\u0190":"E","\u018e":"E","\u24bb":"F","\uff26":"F","\u1e1e":"F","\u0191":"F","\ua77b":"F","\u24bc":"G","\uff27":"G","\u01f4":"G","\u011c":"G","\u1e20":"G","\u011e":"G","\u0120":"G","\u01e6":"G","\u0122":"G","\u01e4":"G","\u0193":"G","\ua7a0":"G","\ua77d":"G","\ua77e":"G","\u24bd":"H","\uff28":"H","\u0124":"H","\u1e22":"H","\u1e26":"H","\u021e":"H","\u1e24":"H","\u1e28":"H","\u1e2a":"H","\u0126":"H","\u2c67":"H","\u2c75":"H","\ua78d":"H","\u24be":"I","\uff29":"I","\xcc":"I","\xcd":"I","\xce":"I","\u0128":"I","\u012a":"I","\u012c":"I","\u0130":"I","\xcf":"I","\u1e2e":"I","\u1ec8":"I","\u01cf":"I","\u0208":"I","\u020a":"I","\u1eca":"I","\u012e":"I","\u1e2c":"I","\u0197":"I","\u24bf":"J","\uff2a":"J","\u0134":"J","\u0248":"J","\u24c0":"K","\uff2b":"K","\u1e30":"K","\u01e8":"K","\u1e32":"K","\u0136":"K","\u1e34":"K","\u0198":"K","\u2c69":"K","\ua740":"K","\ua742":"K","\ua744":"K","\ua7a2":"K","\u24c1":"L","\uff2c":"L","\u013f":"L","\u0139":"L","\u013d":"L","\u1e36":"L","\u1e38":"L","\u013b":"L","\u1e3c":"L","\u1e3a":"L","\u0141":"L","\u023d":"L","\u2c62":"L","\u2c60":"L","\ua748":"L","\ua746":"L","\ua780":"L","\u01c7":"LJ","\u01c8":"Lj","\u24c2":"M","\uff2d":"M","\u1e3e":"M","\u1e40":"M","\u1e42":"M","\u2c6e":"M","\u019c":"M","\u24c3":"N","\uff2e":"N","\u01f8":"N","\u0143":"N","\xd1":"N","\u1e44":"N","\u0147":"N","\u1e46":"N","\u0145":"N","\u1e4a":"N","\u1e48":"N","\u0220":"N","\u019d":"N","\ua790":"N","\ua7a4":"N","\u01ca":"NJ","\u01cb":"Nj","\u24c4":"O","\uff2f":"O","\xd2":"O","\xd3":"O","\xd4":"O","\u1ed2":"O","\u1ed0":"O","\u1ed6":"O","\u1ed4":"O","\xd5":"O","\u1e4c":"O","\u022c":"O","\u1e4e":"O","\u014c":"O","\u1e50":"O","\u1e52":"O","\u014e":"O","\u022e":"O","\u0230":"O","\xd6":"O","\u022a":"O","\u1ece":"O","\u0150":"O","\u01d1":"O","\u020c":"O","\u020e":"O","\u01a0":"O","\u1edc":"O","\u1eda":"O","\u1ee0":"O","\u1ede":"O","\u1ee2":"O","\u1ecc":"O","\u1ed8":"O","\u01ea":"O","\u01ec":"O","\xd8":"O","\u01fe":"O","\u0186":"O","\u019f":"O","\ua74a":"O","\ua74c":"O","\u01a2":"OI","\ua74e":"OO","\u0222":"OU","\u24c5":"P","\uff30":"P","\u1e54":"P","\u1e56":"P","\u01a4":"P","\u2c63":"P","\ua750":"P","\ua752":"P","\ua754":"P","\u24c6":"Q","\uff31":"Q","\ua756":"Q","\ua758":"Q","\u024a":"Q","\u24c7":"R","\uff32":"R","\u0154":"R","\u1e58":"R","\u0158":"R","\u0210":"R","\u0212":"R","\u1e5a":"R","\u1e5c":"R","\u0156":"R","\u1e5e":"R","\u024c":"R","\u2c64":"R","\ua75a":"R","\ua7a6":"R","\ua782":"R","\u24c8":"S","\uff33":"S","\u1e9e":"S","\u015a":"S","\u1e64":"S","\u015c":"S","\u1e60":"S","\u0160":"S","\u1e66":"S","\u1e62":"S","\u1e68":"S","\u0218":"S","\u015e":"S","\u2c7e":"S","\ua7a8":"S","\ua784":"S","\u24c9":"T","\uff34":"T","\u1e6a":"T","\u0164":"T","\u1e6c":"T","\u021a":"T","\u0162":"T","\u1e70":"T","\u1e6e":"T","\u0166":"T","\u01ac":"T","\u01ae":"T","\u023e":"T","\ua786":"T","\ua728":"TZ","\u24ca":"U","\uff35":"U","\xd9":"U","\xda":"U","\xdb":"U","\u0168":"U","\u1e78":"U","\u016a":"U","\u1e7a":"U","\u016c":"U","\xdc":"U","\u01db":"U","\u01d7":"U","\u01d5":"U","\u01d9":"U","\u1ee6":"U","\u016e":"U","\u0170":"U","\u01d3":"U","\u0214":"U","\u0216":"U","\u01af":"U","\u1eea":"U","\u1ee8":"U","\u1eee":"U","\u1eec":"U","\u1ef0":"U","\u1ee4":"U","\u1e72":"U","\u0172":"U","\u1e76":"U","\u1e74":"U","\u0244":"U","\u24cb":"V","\uff36":"V","\u1e7c":"V","\u1e7e":"V","\u01b2":"V","\ua75e":"V","\u0245":"V","\ua760":"VY","\u24cc":"W","\uff37":"W","\u1e80":"W","\u1e82":"W","\u0174":"W","\u1e86":"W","\u1e84":"W","\u1e88":"W","\u2c72":"W","\u24cd":"X","\uff38":"X","\u1e8a":"X","\u1e8c":"X","\u24ce":"Y","\uff39":"Y","\u1ef2":"Y","\xdd":"Y","\u0176":"Y","\u1ef8":"Y","\u0232":"Y","\u1e8e":"Y","\u0178":"Y","\u1ef6":"Y","\u1ef4":"Y","\u01b3":"Y","\u024e":"Y","\u1efe":"Y","\u24cf":"Z","\uff3a":"Z","\u0179":"Z","\u1e90":"Z","\u017b":"Z","\u017d":"Z","\u1e92":"Z","\u1e94":"Z","\u01b5":"Z","\u0224":"Z","\u2c7f":"Z","\u2c6b":"Z","\ua762":"Z","\u24d0":"a","\uff41":"a","\u1e9a":"a","\xe0":"a","\xe1":"a","\xe2":"a","\u1ea7":"a","\u1ea5":"a","\u1eab":"a","\u1ea9":"a","\xe3":"a","\u0101":"a","\u0103":"a","\u1eb1":"a","\u1eaf":"a","\u1eb5":"a","\u1eb3":"a","\u0227":"a","\u01e1":"a","\xe4":"a","\u01df":"a","\u1ea3":"a","\xe5":"a","\u01fb":"a","\u01ce":"a","\u0201":"a","\u0203":"a","\u1ea1":"a","\u1ead":"a","\u1eb7":"a","\u1e01":"a","\u0105":"a","\u2c65":"a","\u0250":"a","\ua733":"aa","\xe6":"ae","\u01fd":"ae","\u01e3":"ae","\ua735":"ao","\ua737":"au","\ua739":"av","\ua73b":"av","\ua73d":"ay","\u24d1":"b","\uff42":"b","\u1e03":"b","\u1e05":"b","\u1e07":"b","\u0180":"b","\u0183":"b","\u0253":"b","\u24d2":"c","\uff43":"c","\u0107":"c","\u0109":"c","\u010b":"c","\u010d":"c","\xe7":"c","\u1e09":"c","\u0188":"c","\u023c":"c","\ua73f":"c","\u2184":"c","\u24d3":"d","\uff44":"d","\u1e0b":"d","\u010f":"d","\u1e0d":"d","\u1e11":"d","\u1e13":"d","\u1e0f":"d","\u0111":"d","\u018c":"d","\u0256":"d","\u0257":"d","\ua77a":"d","\u01f3":"dz","\u01c6":"dz","\u24d4":"e","\uff45":"e","\xe8":"e","\xe9":"e","\xea":"e","\u1ec1":"e","\u1ebf":"e","\u1ec5":"e","\u1ec3":"e","\u1ebd":"e","\u0113":"e","\u1e15":"e","\u1e17":"e","\u0115":"e","\u0117":"e","\xeb":"e","\u1ebb":"e","\u011b":"e","\u0205":"e","\u0207":"e","\u1eb9":"e","\u1ec7":"e","\u0229":"e","\u1e1d":"e","\u0119":"e","\u1e19":"e","\u1e1b":"e","\u0247":"e","\u025b":"e","\u01dd":"e","\u24d5":"f","\uff46":"f","\u1e1f":"f","\u0192":"f","\ua77c":"f","\u24d6":"g","\uff47":"g","\u01f5":"g","\u011d":"g","\u1e21":"g","\u011f":"g","\u0121":"g","\u01e7":"g","\u0123":"g","\u01e5":"g","\u0260":"g","\ua7a1":"g","\u1d79":"g","\ua77f":"g","\u24d7":"h","\uff48":"h","\u0125":"h","\u1e23":"h","\u1e27":"h","\u021f":"h","\u1e25":"h","\u1e29":"h","\u1e2b":"h","\u1e96":"h","\u0127":"h","\u2c68":"h","\u2c76":"h","\u0265":"h","\u0195":"hv","\u24d8":"i","\uff49":"i","\xec":"i","\xed":"i","\xee":"i","\u0129":"i","\u012b":"i","\u012d":"i","\xef":"i","\u1e2f":"i","\u1ec9":"i","\u01d0":"i","\u0209":"i","\u020b":"i","\u1ecb":"i","\u012f":"i","\u1e2d":"i","\u0268":"i","\u0131":"i","\u24d9":"j","\uff4a":"j","\u0135":"j","\u01f0":"j","\u0249":"j","\u24da":"k","\uff4b":"k","\u1e31":"k","\u01e9":"k","\u1e33":"k","\u0137":"k","\u1e35":"k","\u0199":"k","\u2c6a":"k","\ua741":"k","\ua743":"k","\ua745":"k","\ua7a3":"k","\u24db":"l","\uff4c":"l","\u0140":"l","\u013a":"l","\u013e":"l","\u1e37":"l","\u1e39":"l","\u013c":"l","\u1e3d":"l","\u1e3b":"l","\u017f":"l","\u0142":"l","\u019a":"l","\u026b":"l","\u2c61":"l","\ua749":"l","\ua781":"l","\ua747":"l","\u01c9":"lj","\u24dc":"m","\uff4d":"m","\u1e3f":"m","\u1e41":"m","\u1e43":"m","\u0271":"m","\u026f":"m","\u24dd":"n","\uff4e":"n","\u01f9":"n","\u0144":"n","\xf1":"n","\u1e45":"n","\u0148":"n","\u1e47":"n","\u0146":"n","\u1e4b":"n","\u1e49":"n","\u019e":"n","\u0272":"n","\u0149":"n","\ua791":"n","\ua7a5":"n","\u01cc":"nj","\u24de":"o","\uff4f":"o","\xf2":"o","\xf3":"o","\xf4":"o","\u1ed3":"o","\u1ed1":"o","\u1ed7":"o","\u1ed5":"o","\xf5":"o","\u1e4d":"o","\u022d":"o","\u1e4f":"o","\u014d":"o","\u1e51":"o","\u1e53":"o","\u014f":"o","\u022f":"o","\u0231":"o","\xf6":"o","\u022b":"o","\u1ecf":"o","\u0151":"o","\u01d2":"o","\u020d":"o","\u020f":"o","\u01a1":"o","\u1edd":"o","\u1edb":"o","\u1ee1":"o","\u1edf":"o","\u1ee3":"o","\u1ecd":"o","\u1ed9":"o","\u01eb":"o","\u01ed":"o","\xf8":"o","\u01ff":"o","\u0254":"o","\ua74b":"o","\ua74d":"o","\u0275":"o","\u01a3":"oi","\u0223":"ou","\ua74f":"oo","\u24df":"p","\uff50":"p","\u1e55":"p","\u1e57":"p","\u01a5":"p","\u1d7d":"p","\ua751":"p","\ua753":"p","\ua755":"p","\u24e0":"q","\uff51":"q","\u024b":"q","\ua757":"q","\ua759":"q","\u24e1":"r","\uff52":"r","\u0155":"r","\u1e59":"r","\u0159":"r","\u0211":"r","\u0213":"r","\u1e5b":"r","\u1e5d":"r","\u0157":"r","\u1e5f":"r","\u024d":"r","\u027d":"r","\ua75b":"r","\ua7a7":"r","\ua783":"r","\u24e2":"s","\uff53":"s","\xdf":"s","\u015b":"s","\u1e65":"s","\u015d":"s","\u1e61":"s","\u0161":"s","\u1e67":"s","\u1e63":"s","\u1e69":"s","\u0219":"s","\u015f":"s","\u023f":"s","\ua7a9":"s","\ua785":"s","\u1e9b":"s","\u24e3":"t","\uff54":"t","\u1e6b":"t","\u1e97":"t","\u0165":"t","\u1e6d":"t","\u021b":"t","\u0163":"t","\u1e71":"t","\u1e6f":"t","\u0167":"t","\u01ad":"t","\u0288":"t","\u2c66":"t","\ua787":"t","\ua729":"tz","\u24e4":"u","\uff55":"u","\xf9":"u","\xfa":"u","\xfb":"u","\u0169":"u","\u1e79":"u","\u016b":"u","\u1e7b":"u","\u016d":"u","\xfc":"u","\u01dc":"u","\u01d8":"u","\u01d6":"u","\u01da":"u","\u1ee7":"u","\u016f":"u","\u0171":"u","\u01d4":"u","\u0215":"u","\u0217":"u","\u01b0":"u","\u1eeb":"u","\u1ee9":"u","\u1eef":"u","\u1eed":"u","\u1ef1":"u","\u1ee5":"u","\u1e73":"u","\u0173":"u","\u1e77":"u","\u1e75":"u","\u0289":"u","\u24e5":"v","\uff56":"v","\u1e7d":"v","\u1e7f":"v","\u028b":"v","\ua75f":"v","\u028c":"v","\ua761":"vy","\u24e6":"w","\uff57":"w","\u1e81":"w","\u1e83":"w","\u0175":"w","\u1e87":"w","\u1e85":"w","\u1e98":"w","\u1e89":"w","\u2c73":"w","\u24e7":"x","\uff58":"x","\u1e8b":"x","\u1e8d":"x","\u24e8":"y","\uff59":"y","\u1ef3":"y","\xfd":"y","\u0177":"y","\u1ef9":"y","\u0233":"y","\u1e8f":"y","\xff":"y","\u1ef7":"y","\u1e99":"y","\u1ef5":"y","\u01b4":"y","\u024f":"y","\u1eff":"y","\u24e9":"z","\uff5a":"z","\u017a":"z","\u1e91":"z","\u017c":"z","\u017e":"z","\u1e93":"z","\u1e95":"z","\u01b6":"z","\u0225":"z","\u0240":"z","\u2c6c":"z","\ua763":"z"};j=a(document),g=function(){var a=1;return function(){return a++}}(),j.on("mousemove",function(a){i.x=a.pageX,i.y=a.pageY}),d=O(Object,{bind:function(a){var b=this;return function(){a.apply(b,arguments)}},init:function(c){var d,e,f=".select2-results";this.opts=c=this.prepareOpts(c),this.id=c.id,c.element.data("select2")!==b&&null!==c.element.data("select2")&&c.element.data("select2").destroy(),this.container=this.createContainer(),this.liveRegion=a("",{role:"status","aria-live":"polite"}).addClass("select2-hidden-accessible").appendTo(document.body),this.containerId="s2id_"+(c.element.attr("id")||"autogen"+g()),this.containerEventName=this.containerId.replace(/([.])/g,"_").replace(/([;&,\-\.\+\*\~':"\!\^#$%@\[\]\(\)=>\|])/g,"\\$1"),this.container.attr("id",this.containerId),this.container.attr("title",c.element.attr("title")),this.body=a("body"),D(this.container,this.opts.element,this.opts.adaptContainerCssClass),this.container.attr("style",c.element.attr("style")),this.container.css(K(c.containerCss)),this.container.addClass(K(c.containerCssClass)),this.elementTabIndex=this.opts.element.attr("tabindex"),this.opts.element.data("select2",this).attr("tabindex","-1").before(this.container).on("click.select2",A),this.container.data("select2",this),this.dropdown=this.container.find(".select2-drop"),D(this.dropdown,this.opts.element,this.opts.adaptDropdownCssClass),this.dropdown.addClass(K(c.dropdownCssClass)),this.dropdown.data("select2",this),this.dropdown.on("click",A),this.results=d=this.container.find(f),this.search=e=this.container.find("input.select2-input"),this.queryCount=0,this.resultsPage=0,this.context=null,this.initContainer(),this.container.on("click",A),v(this.results),this.dropdown.on("mousemove-filtered",f,this.bind(this.highlightUnderEvent)),this.dropdown.on("touchstart touchmove touchend",f,this.bind(function(a){this._touchEvent=!0,this.highlightUnderEvent(a)})),this.dropdown.on("touchmove",f,this.bind(this.touchMoved)),this.dropdown.on("touchstart touchend",f,this.bind(this.clearTouchMoved)),this.dropdown.on("click",this.bind(function(){this._touchEvent&&(this._touchEvent=!1,this.selectHighlighted())})),x(80,this.results),this.dropdown.on("scroll-debounced",f,this.bind(this.loadMoreIfNeeded)),a(this.container).on("change",".select2-input",function(a){a.stopPropagation()}),a(this.dropdown).on("change",".select2-input",function(a){a.stopPropagation()}),a.fn.mousewheel&&d.mousewheel(function(a,b,c,e){var f=d.scrollTop();e>0&&0>=f-e?(d.scrollTop(0),A(a)):0>e&&d.get(0).scrollHeight-d.scrollTop()+e<=d.height()&&(d.scrollTop(d.get(0).scrollHeight-d.height()),A(a))}),u(e),e.on("keyup-change input paste",this.bind(this.updateResults)),e.on("focus",function(){e.addClass("select2-focused")}),e.on("blur",function(){e.removeClass("select2-focused")}),this.dropdown.on("mouseup",f,this.bind(function(b){a(b.target).closest(".select2-result-selectable").length>0&&(this.highlightUnderEvent(b),this.selectHighlighted(b))})),this.dropdown.on("click mouseup mousedown touchstart touchend focusin",function(a){a.stopPropagation()}),this.nextSearchTerm=b,a.isFunction(this.opts.initSelection)&&(this.initSelection(),this.monitorSource()),null!==c.maximumInputLength&&this.search.attr("maxlength",c.maximumInputLength);var h=c.element.prop("disabled");h===b&&(h=!1),this.enable(!h);var i=c.element.prop("readonly");i===b&&(i=!1),this.readonly(i),k=k||q(),this.autofocus=c.element.prop("autofocus"),c.element.prop("autofocus",!1),this.autofocus&&this.focus(),this.search.attr("placeholder",c.searchInputPlaceholder)},destroy:function(){var a=this.opts.element,c=a.data("select2");this.close(),this.propertyObserver&&(this.propertyObserver.disconnect(),this.propertyObserver=null),c!==b&&(c.container.remove(),c.liveRegion.remove(),c.dropdown.remove(),a.removeClass("select2-offscreen").removeData("select2").off(".select2").prop("autofocus",this.autofocus||!1),this.elementTabIndex?a.attr({tabindex:this.elementTabIndex}):a.removeAttr("tabindex"),a.show()),N.call(this,"container","liveRegion","dropdown","results","search")},optionToData:function(a){return a.is("option")?{id:a.prop("value"),text:a.text(),element:a.get(),css:a.attr("class"),disabled:a.prop("disabled"),locked:r(a.attr("locked"),"locked")||r(a.data("locked"),!0)}:a.is("optgroup")?{text:a.attr("label"),children:[],element:a.get(),css:a.attr("class")}:void 0},prepareOpts:function(c){var d,e,f,h,i=this;if(d=c.element,"select"===d.get(0).tagName.toLowerCase()&&(this.select=e=c.element),e&&a.each(["id","multiple","ajax","query","createSearchChoice","initSelection","data","tags"],function(){if(this in c)throw new Error("Option '"+this+"' is not allowed for Select2 when attached to a ","
    "," ","
      ","
    ","
    "].join(""));return b},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.focusser.prop("disabled",!this.isInterfaceEnabled())},opening:function(){var c,d,e;this.opts.minimumResultsForSearch>=0&&this.showSearch(!0),this.parent.opening.apply(this,arguments),this.showSearchInput!==!1&&this.search.val(this.focusser.val()),this.opts.shouldFocusInput(this)&&(this.search.focus(),c=this.search.get(0),c.createTextRange?(d=c.createTextRange(),d.collapse(!1),d.select()):c.setSelectionRange&&(e=this.search.val().length,c.setSelectionRange(e,e))),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.focusser.prop("disabled",!0).val(""),this.updateResults(!0),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&(this.parent.close.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},focus:function(){this.opened()?this.close():(this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus())},isFocused:function(){return this.container.hasClass("select2-container-active")},cancel:function(){this.parent.cancel.apply(this,arguments),this.focusser.prop("disabled",!1),this.opts.shouldFocusInput(this)&&this.focusser.focus()},destroy:function(){a("label[for='"+this.focusser.attr("id")+"']").attr("for",this.opts.element.attr("id")),this.parent.destroy.apply(this,arguments),N.call(this,"selection","focusser")},initContainer:function(){var b,h,d=this.container,e=this.dropdown,f=g();this.opts.minimumResultsForSearch<0?this.showSearch(!1):this.showSearch(!0),this.selection=b=d.find(".select2-choice"),this.focusser=d.find(".select2-focusser"),b.find(".select2-chosen").attr("id","select2-chosen-"+f),this.focusser.attr("aria-labelledby","select2-chosen-"+f),this.results.attr("id","select2-results-"+f),this.search.attr("aria-owns","select2-results-"+f),this.focusser.attr("id","s2id_autogen"+f),h=a("label[for='"+this.opts.element.attr("id")+"']"),this.focusser.prev().text(h.text()).attr("for",this.focusser.attr("id"));var i=this.opts.element.attr("title");this.opts.element.attr("title",i||h.text()),this.focusser.attr("tabindex",this.elementTabIndex),this.search.attr("id",this.focusser.attr("id")+"_search"),this.search.prev().text(a("label[for='"+this.focusser.attr("id")+"']").text()).attr("for",this.search.attr("id")),this.search.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()){if(a.which===c.PAGE_UP||a.which===c.PAGE_DOWN)return A(a),void 0;switch(a.which){case c.UP:case c.DOWN:return this.moveHighlight(a.which===c.UP?-1:1),A(a),void 0;case c.ENTER:return this.selectHighlighted(),A(a),void 0;case c.TAB:return this.selectHighlighted({noFocus:!0}),void 0;case c.ESC:return this.cancel(a),A(a),void 0}}})),this.search.on("blur",this.bind(function(){document.activeElement===this.body.get(0)&&window.setTimeout(this.bind(function(){this.opened()&&this.search.focus()}),0)})),this.focusser.on("keydown",this.bind(function(a){if(this.isInterfaceEnabled()&&a.which!==c.TAB&&!c.isControl(a)&&!c.isFunctionKey(a)&&a.which!==c.ESC){if(this.opts.openOnEnter===!1&&a.which===c.ENTER)return A(a),void 0;if(a.which==c.DOWN||a.which==c.UP||a.which==c.ENTER&&this.opts.openOnEnter){if(a.altKey||a.ctrlKey||a.shiftKey||a.metaKey)return;return this.open(),A(a),void 0}return a.which==c.DELETE||a.which==c.BACKSPACE?(this.opts.allowClear&&this.clear(),A(a),void 0):void 0}})),u(this.focusser),this.focusser.on("keyup-change input",this.bind(function(a){if(this.opts.minimumResultsForSearch>=0){if(a.stopPropagation(),this.opened())return;this.open()}})),b.on("mousedown touchstart","abbr",this.bind(function(a){this.isInterfaceEnabled()&&(this.clear(),B(a),this.close(),this.selection.focus())})),b.on("mousedown touchstart",this.bind(function(c){n(b),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.opened()?this.close():this.isInterfaceEnabled()&&this.open(),A(c)})),e.on("mousedown touchstart",this.bind(function(){this.opts.shouldFocusInput(this)&&this.search.focus()})),b.on("focus",this.bind(function(a){A(a)})),this.focusser.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})).on("blur",this.bind(function(){this.opened()||(this.container.removeClass("select2-container-active"),this.opts.element.trigger(a.Event("select2-blur")))})),this.search.on("focus",this.bind(function(){this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active")})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.setPlaceholder()},clear:function(b){var c=this.selection.data("select2-data");if(c){var d=a.Event("select2-clearing");if(this.opts.element.trigger(d),d.isDefaultPrevented())return;var e=this.getPlaceholderOption();this.opts.element.val(e?e.val():""),this.selection.find(".select2-chosen").empty(),this.selection.removeData("select2-data"),this.setPlaceholder(),b!==!1&&(this.opts.element.trigger({type:"select2-removed",val:this.id(c),choice:c}),this.triggerChange({removed:c}))}},initSelection:function(){if(this.isPlaceholderOptionSelected())this.updateSelection(null),this.close(),this.setPlaceholder();else{var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.setPlaceholder(),c.nextSearchTerm=c.opts.nextSearchTerm(a,c.search.val()))})}},isPlaceholderOptionSelected:function(){var a;return this.getPlaceholder()===b?!1:(a=this.getPlaceholderOption())!==b&&a.prop("selected")||""===this.opts.element.val()||this.opts.element.val()===b||null===this.opts.element.val()},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=a.find("option").filter(function(){return this.selected&&!this.disabled});b(c.optionToData(d))}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=c.val(),f=null;b.query({matcher:function(a,c,d){var g=r(e,b.id(d));return g&&(f=d),g},callback:a.isFunction(d)?function(){d(f)}:a.noop})}),b},getPlaceholder:function(){return this.select&&this.getPlaceholderOption()===b?b:this.parent.getPlaceholder.apply(this,arguments)},setPlaceholder:function(){var a=this.getPlaceholder();if(this.isPlaceholderOptionSelected()&&a!==b){if(this.select&&this.getPlaceholderOption()===b)return;this.selection.find(".select2-chosen").html(this.opts.escapeMarkup(a)),this.selection.addClass("select2-default"),this.container.removeClass("select2-allowclear")}},postprocessResults:function(a,b,c){var d=0,e=this;if(this.findHighlightableChoices().each2(function(a,b){return r(e.id(b.data("select2-data")),e.opts.element.val())?(d=a,!1):void 0}),c!==!1&&(b===!0&&d>=0?this.highlight(d):this.highlight(0)),b===!0){var g=this.opts.minimumResultsForSearch;g>=0&&this.showSearch(L(a.results)>=g)}},showSearch:function(b){this.showSearchInput!==b&&(this.showSearchInput=b,this.dropdown.find(".select2-search").toggleClass("select2-search-hidden",!b),this.dropdown.find(".select2-search").toggleClass("select2-offscreen",!b),a(this.dropdown,this.container).toggleClass("select2-with-searchbox",b))},onSelect:function(a,b){if(this.triggerSelect(a)){var c=this.opts.element.val(),d=this.data();this.opts.element.val(this.id(a)),this.updateSelection(a),this.opts.element.trigger({type:"select2-selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.close(),b&&b.noFocus||!this.opts.shouldFocusInput(this)||this.focusser.focus(),r(c,this.id(a))||this.triggerChange({added:a,removed:d})}},updateSelection:function(a){var d,e,c=this.selection.find(".select2-chosen");this.selection.data("select2-data",a),c.empty(),null!==a&&(d=this.opts.formatSelection(a,c,this.opts.escapeMarkup)),d!==b&&c.append(d),e=this.opts.formatSelectionCssClass(a,c),e!==b&&c.addClass(e),this.selection.removeClass("select2-default"),this.opts.allowClear&&this.getPlaceholder()!==b&&this.container.addClass("select2-allowclear")},val:function(){var a,c=!1,d=null,e=this,f=this.data();if(0===arguments.length)return this.opts.element.val();if(a=arguments[0],arguments.length>1&&(c=arguments[1]),this.select)this.select.val(a).find("option").filter(function(){return this.selected}).each2(function(a,b){return d=e.optionToData(b),!1}),this.updateSelection(d),this.setPlaceholder(),c&&this.triggerChange({added:d,removed:f});else{if(!a&&0!==a)return this.clear(c),void 0;if(this.opts.initSelection===b)throw new Error("cannot call val() if initSelection() is not defined");this.opts.element.val(a),this.opts.initSelection(this.opts.element,function(a){e.opts.element.val(a?e.id(a):""),e.updateSelection(a),e.setPlaceholder(),c&&e.triggerChange({added:a,removed:f})})}},clearSearch:function(){this.search.val(""),this.focusser.val("")},data:function(a){var c,d=!1;return 0===arguments.length?(c=this.selection.data("select2-data"),c==b&&(c=null),c):(arguments.length>1&&(d=arguments[1]),a?(c=this.data(),this.opts.element.val(a?this.id(a):""),this.updateSelection(a),d&&this.triggerChange({added:a,removed:c})):this.clear(d),void 0)}}),f=O(d,{createContainer:function(){var b=a(document.createElement("div")).attr({"class":"select2-container select2-container-multi"}).html(["
      ","
    • "," "," ","
    • ","
    ","
    ","
      ","
    ","
    "].join(""));return b},prepareOpts:function(){var b=this.parent.prepareOpts.apply(this,arguments),c=this;return"select"===b.element.get(0).tagName.toLowerCase()?b.initSelection=function(a,b){var d=[];a.find("option").filter(function(){return this.selected&&!this.disabled}).each2(function(a,b){d.push(c.optionToData(b))}),b(d)}:"data"in b&&(b.initSelection=b.initSelection||function(c,d){var e=s(c.val(),b.separator),f=[];b.query({matcher:function(c,d,g){var h=a.grep(e,function(a){return r(a,b.id(g))}).length;return h&&f.push(g),h},callback:a.isFunction(d)?function(){for(var a=[],c=0;c0||(this.selectChoice(null),this.clearPlaceholder(),this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.open(),this.focusSearch(),b.preventDefault()))})),this.container.on("focus",b,this.bind(function(){this.isInterfaceEnabled()&&(this.container.hasClass("select2-container-active")||this.opts.element.trigger(a.Event("select2-focus")),this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"),this.clearPlaceholder())})),this.initContainerWidth(),this.opts.element.addClass("select2-offscreen"),this.clearSearch()},enableInterface:function(){this.parent.enableInterface.apply(this,arguments)&&this.search.prop("disabled",!this.isInterfaceEnabled())},initSelection:function(){if(""===this.opts.element.val()&&""===this.opts.element.text()&&(this.updateSelection([]),this.close(),this.clearSearch()),this.select||""!==this.opts.element.val()){var c=this;this.opts.initSelection.call(null,this.opts.element,function(a){a!==b&&null!==a&&(c.updateSelection(a),c.close(),c.clearSearch())})}},clearSearch:function(){var a=this.getPlaceholder(),c=this.getMaxSearchWidth();a!==b&&0===this.getVal().length&&this.search.hasClass("select2-focused")===!1?(this.search.val(a).addClass("select2-default"),this.search.width(c>0?c:this.container.css("width"))):this.search.val("").width(10)},clearPlaceholder:function(){this.search.hasClass("select2-default")&&this.search.val("").removeClass("select2-default")},opening:function(){this.clearPlaceholder(),this.resizeSearch(),this.parent.opening.apply(this,arguments),this.focusSearch(),""===this.search.val()&&this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.search.select()),this.updateResults(!0),this.opts.shouldFocusInput(this)&&this.search.focus(),this.opts.element.trigger(a.Event("select2-open"))},close:function(){this.opened()&&this.parent.close.apply(this,arguments)},focus:function(){this.close(),this.search.focus()},isFocused:function(){return this.search.hasClass("select2-focused")},updateSelection:function(b){var c=[],d=[],e=this;a(b).each(function(){p(e.id(this),c)<0&&(c.push(e.id(this)),d.push(this))}),b=d,this.selection.find(".select2-search-choice").remove(),a(b).each(function(){e.addSelectedChoice(this)}),e.postprocessResults()},tokenize:function(){var a=this.search.val();a=this.opts.tokenizer.call(this,a,this.data(),this.bind(this.onSelect),this.opts),null!=a&&a!=b&&(this.search.val(a),a.length>0&&this.open())},onSelect:function(a,c){this.triggerSelect(a)&&(this.addSelectedChoice(a),this.opts.element.trigger({type:"selected",val:this.id(a),choice:a}),this.nextSearchTerm=this.opts.nextSearchTerm(a,this.search.val()),this.clearSearch(),this.updateResults(),(this.select||!this.opts.closeOnSelect)&&this.postprocessResults(a,!1,this.opts.closeOnSelect===!0),this.opts.closeOnSelect?(this.close(),this.search.width(10)):this.countSelectableResults()>0?(this.search.width(10),this.resizeSearch(),this.getMaximumSelectionSize()>0&&this.val().length>=this.getMaximumSelectionSize()?this.updateResults(!0):this.nextSearchTerm!=b&&(this.search.val(this.nextSearchTerm),this.updateResults(),this.search.select()),this.positionDropdown()):(this.close(),this.search.width(10)),this.triggerChange({added:a}),c&&c.noFocus||this.focusSearch())},cancel:function(){this.close(),this.focusSearch()},addSelectedChoice:function(c){var j,k,d=!c.locked,e=a("
  • "),f=a("
  • "),g=d?e:f,h=this.id(c),i=this.getVal();j=this.opts.formatSelection(c,g.find("div"),this.opts.escapeMarkup),j!=b&&g.find("div").replaceWith("
    "+j+"
    "),k=this.opts.formatSelectionCssClass(c,g.find("div")),k!=b&&g.addClass(k),d&&g.find(".select2-search-choice-close").on("mousedown",A).on("click dblclick",this.bind(function(b){this.isInterfaceEnabled()&&(this.unselect(a(b.target)),this.selection.find(".select2-search-choice-focus").removeClass("select2-search-choice-focus"),A(b),this.close(),this.focusSearch())})).on("focus",this.bind(function(){this.isInterfaceEnabled()&&(this.container.addClass("select2-container-active"),this.dropdown.addClass("select2-drop-active"))})),g.data("select2-data",c),g.insertBefore(this.searchContainer),i.push(h),this.setVal(i)},unselect:function(b){var d,e,c=this.getVal();if(b=b.closest(".select2-search-choice"),0===b.length)throw"Invalid argument: "+b+". Must be .select2-search-choice";if(d=b.data("select2-data")){var f=a.Event("select2-removing");if(f.val=this.id(d),f.choice=d,this.opts.element.trigger(f),f.isDefaultPrevented())return!1;for(;(e=p(this.id(d),c))>=0;)c.splice(e,1),this.setVal(c),this.select&&this.postprocessResults();return b.remove(),this.opts.element.trigger({type:"select2-removed",val:this.id(d),choice:d}),this.triggerChange({removed:d}),!0}},postprocessResults:function(a,b,c){var d=this.getVal(),e=this.results.find(".select2-result"),f=this.results.find(".select2-result-with-children"),g=this;e.each2(function(a,b){var c=g.id(b.data("select2-data"));p(c,d)>=0&&(b.addClass("select2-selected"),b.find(".select2-result-selectable").addClass("select2-selected"))}),f.each2(function(a,b){b.is(".select2-result-selectable")||0!==b.find(".select2-result-selectable:not(.select2-selected)").length||b.addClass("select2-selected")}),-1==this.highlight()&&c!==!1&&g.highlight(0),!this.opts.createSearchChoice&&!e.filter(".select2-result:not(.select2-selected)").length>0&&(!a||a&&!a.more&&0===this.results.find(".select2-no-results").length)&&J(g.opts.formatNoMatches,"formatNoMatches")&&this.results.append("
  • "+K(g.opts.formatNoMatches,g.search.val())+"
  • ")},getMaxSearchWidth:function(){return this.selection.width()-t(this.search)},resizeSearch:function(){var a,b,c,d,e,f=t(this.search);a=C(this.search)+10,b=this.search.offset().left,c=this.selection.width(),d=this.selection.offset().left,e=c-(b-d)-f,a>e&&(e=c-f),40>e&&(e=c-f),0>=e&&(e=a),this.search.width(Math.floor(e))},getVal:function(){var a;return this.select?(a=this.select.val(),null===a?[]:a):(a=this.opts.element.val(),s(a,this.opts.separator))},setVal:function(b){var c;this.select?this.select.val(b):(c=[],a(b).each(function(){p(this,c)<0&&c.push(this)}),this.opts.element.val(0===c.length?"":c.join(this.opts.separator)))},buildChangeDetails:function(a,b){for(var b=b.slice(0),a=a.slice(0),c=0;c0&&c--,a.splice(d,1),d--);return{added:b,removed:a}},val:function(c,d){var e,f=this;if(0===arguments.length)return this.getVal();if(e=this.data(),e.length||(e=[]),!c&&0!==c)return this.opts.element.val(""),this.updateSelection([]),this.clearSearch(),d&&this.triggerChange({added:this.data(),removed:e}),void 0;if(this.setVal(c),this.select)this.opts.initSelection(this.select,this.bind(this.updateSelection)),d&&this.triggerChange(this.buildChangeDetails(e,this.data()));else{if(this.opts.initSelection===b)throw new Error("val() cannot be called if initSelection() is not defined");this.opts.initSelection(this.opts.element,function(b){var c=a.map(b,f.id);f.setVal(c),f.updateSelection(b),f.clearSearch(),d&&f.triggerChange(f.buildChangeDetails(e,f.data()))})}this.clearSearch()},onSortStart:function(){if(this.select)throw new Error("Sorting of elements is not supported when attached to instead.");this.search.width(0),this.searchContainer.hide()},onSortEnd:function(){var b=[],c=this;this.searchContainer.show(),this.searchContainer.appendTo(this.searchContainer.parent()),this.resizeSearch(),this.selection.find(".select2-search-choice").each(function(){b.push(c.opts.id(a(this).data("select2-data")))}),this.setVal(b),this.triggerChange()},data:function(b,c){var e,f,d=this;return 0===arguments.length?this.selection.children(".select2-search-choice").map(function(){return a(this).data("select2-data")}).get():(f=this.data(),b||(b=[]),e=a.map(b,function(a){return d.opts.id(a)}),this.setVal(e),this.updateSelection(b),this.clearSearch(),c&&this.triggerChange(this.buildChangeDetails(f,this.data())),void 0)}}),a.fn.select2=function(){var d,e,f,g,h,c=Array.prototype.slice.call(arguments,0),i=["val","destroy","opened","open","close","focus","isFocused","container","dropdown","onSortStart","onSortEnd","enable","disable","readonly","positionDropdown","data","search"],j=["opened","isFocused","container","dropdown"],k=["val","data"],l={search:"externalSearch"};return this.each(function(){if(0===c.length||"object"==typeof c[0])d=0===c.length?{}:a.extend({},c[0]),d.element=a(this),"select"===d.element.get(0).tagName.toLowerCase()?h=d.element.prop("multiple"):(h=d.multiple||!1,"tags"in d&&(d.multiple=h=!0)),e=h?new window.Select2["class"].multi:new window.Select2["class"].single,e.init(d);else{if("string"!=typeof c[0])throw"Invalid arguments to select2 plugin: "+c;if(p(c[0],i)<0)throw"Unknown method: "+c[0];if(g=b,e=a(this).data("select2"),e===b)return;if(f=c[0],"container"===f?g=e.container:"dropdown"===f?g=e.dropdown:(l[f]&&(f=l[f]),g=e[f].apply(e,c.slice(1))),p(c[0],j)>=0||p(c[0],k)>=0&&1==c.length)return!1}}),g===b?this:g},a.fn.select2.defaults={width:"copy",loadMorePadding:0,closeOnSelect:!0,openOnEnter:!0,containerCss:{},dropdownCss:{},containerCssClass:"",dropdownCssClass:"",formatResult:function(a,b,c,d){var e=[];return E(a.text,c.term,e,d),e.join("")},formatSelection:function(a,c,d){return a?d(a.text):b},sortResults:function(a){return a},formatResultCssClass:function(a){return a.css},formatSelectionCssClass:function(){return b},formatMatches:function(a){return a+" results are available, use up and down arrow keys to navigate."},formatNoMatches:function(){return"No matches found"},formatInputTooShort:function(a,b){var c=b-a.length;return"Please enter "+c+" or more character"+(1==c?"":"s")},formatInputTooLong:function(a,b){var c=a.length-b;return"Please delete "+c+" character"+(1==c?"":"s")},formatSelectionTooBig:function(a){return"You can only select "+a+" item"+(1==a?"":"s")},formatLoadMore:function(){return"Loading more results\u2026"},formatSearching:function(){return"Searching\u2026"},minimumResultsForSearch:0,minimumInputLength:0,maximumInputLength:null,maximumSelectionSize:0,id:function(a){return a==b?null:a.id},matcher:function(a,b){return o(""+b).toUpperCase().indexOf(o(""+a).toUpperCase())>=0},separator:",",tokenSeparators:[],tokenizer:M,escapeMarkup:F,blurOnChange:!1,selectOnBlur:!1,adaptContainerCssClass:function(a){return a},adaptDropdownCssClass:function(){return null},nextSearchTerm:function(){return b},searchInputPlaceholder:"",createSearchChoicePosition:"top",shouldFocusInput:function(a){var b="ontouchstart"in window||navigator.msMaxTouchPoints>0;return b?a.opts.minimumResultsForSearch<0?!1:!0:!0}},a.fn.select2.ajaxDefaults={transport:a.ajax,params:{type:"GET",cache:!1,dataType:"json"}},window.Select2={query:{ajax:G,local:H,tags:I},util:{debounce:w,markMatch:E,escapeMarkup:F,stripDiacritics:o},"class":{"abstract":d,single:e,multi:f}}}}(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.png new file mode 100644 index 00000000..1d804ffb Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ar.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ar.js new file mode 100644 index 00000000..acb33a2f --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ar.js @@ -0,0 +1,17 @@ +/** + * Select2 Arabic translation. + * + * Author: Adel KEDJOUR + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "لم يتم العثور على مطابقات"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; if (n == 1){ return "الرجاء إدخال حر٠واحد على الأكثر"; } return n == 2 ? "الرجاء إدخال حرÙين على الأكثر" : "الرجاء إدخال " + n + " على الأكثر"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; if (n == 1){ return "الرجاء إدخال حر٠واحد على الأقل"; } return n == 2 ? "الرجاء إدخال حرÙين على الأقل" : "الرجاء إدخال " + n + " على الأقل "; }, + formatSelectionTooBig: function (limit) { if (n == 1){ return "يمكنك أن تختار إختيار واحد Ùقط"; } return n == 2 ? "يمكنك أن تختار إختيارين Ùقط" : "يمكنك أن تختار " + n + " إختيارات Ùقط"; }, + formatLoadMore: function (pageNumber) { return "تحميل المزيد من النتائج…"; }, + formatSearching: function () { return "البحث…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_bg.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_bg.js new file mode 100644 index 00000000..585d28a2 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_bg.js @@ -0,0 +1,18 @@ +/** + * Select2 Bulgarian translation. + * + * @author Lubomir Vikev + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ÐÑма намерени ÑъвпадениÑ"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ още " + n + " Ñимвол" + (n > 1 ? "а" : ""); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ Ñ " + n + " по-малко Ñимвол" + (n > 1 ? "а" : ""); }, + formatSelectionTooBig: function (limit) { return "Можете да направите до " + limit + (limit > 1 ? " избора" : " избор"); }, + formatLoadMore: function (pageNumber) { return "Зареждат Ñе още…"; }, + formatSearching: function () { return "ТърÑене…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ca.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ca.js new file mode 100644 index 00000000..7e19d3ce --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ca.js @@ -0,0 +1,17 @@ +/** + * Select2 Catalan translation. + * + * Author: David Planella + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No s'ha trobat cap coincidència"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduïu " + n + " caràcter" + (n == 1 ? "" : "s") + " més"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Introduïu " + n + " caràcter" + (n == 1? "" : "s") + "menys"; }, + formatSelectionTooBig: function (limit) { return "Només podeu seleccionar " + limit + " element" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "S'estan carregant més resultats…"; }, + formatSearching: function () { return "S'està cercant…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_cs.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_cs.js new file mode 100644 index 00000000..376b54a1 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_cs.js @@ -0,0 +1,49 @@ +/** + * Select2 Czech translation. + * + * Author: Michal Marek + * Author - sklonovani: David Vallner + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dvÄ›"); }, + 3: function() { return "tÅ™i"; }, + 4: function() { return "ÄtyÅ™i"; } + } + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenalezeny žádné položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadejte jeÅ¡tÄ› jeden znak"; + } else if (n <= 4) { + return "Prosím zadejte jeÅ¡tÄ› další "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadejte jeÅ¡tÄ› dalších "+n+" znaků"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadejte o jeden znak ménÄ›"; + } else if (n <= 4) { + return "Prosím zadejte o "+smallNumbers[n](true)+" znaky ménÄ›"; + } else { + return "Prosím zadejte o "+n+" znaků ménÄ›"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Můžete zvolit jen jednu položku"; + } else if (limit <= 4) { + return "Můžete zvolit maximálnÄ› "+smallNumbers[limit](false)+" položky"; + } else { + return "Můžete zvolit maximálnÄ› "+limit+" položek"; + } + }, + formatLoadMore: function (pageNumber) { return "NaÄítají se další výsledky…"; }, + formatSearching: function () { return "Vyhledávání…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_da.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_da.js new file mode 100644 index 00000000..dbce3e17 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_da.js @@ -0,0 +1,17 @@ +/** + * Select2 Danish translation. + * + * Author: Anders Jenbo + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ingen resultater fundet"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Angiv venligst " + n + " tegn mere"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Angiv venligst " + n + " tegn mindre"; }, + formatSelectionTooBig: function (limit) { return "Du kan kun vælge " + limit + " emne" + (limit === 1 ? "" : "r"); }, + formatLoadMore: function (pageNumber) { return "Indlæser flere resultater…"; }, + formatSearching: function () { return "Søger…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_de.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_de.js new file mode 100644 index 00000000..93b18e81 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_de.js @@ -0,0 +1,15 @@ +/** + * Select2 German translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Keine Übereinstimmungen gefunden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Bitte " + n + " Zeichen mehr eingeben"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Bitte " + n + " Zeichen weniger eingeben"; }, + formatSelectionTooBig: function (limit) { return "Sie können nur " + limit + " Eintr" + (limit === 1 ? "ag" : "äge") + " auswählen"; }, + formatLoadMore: function (pageNumber) { return "Lade mehr Ergebnisse…"; }, + formatSearching: function () { return "Suche…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_el.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_el.js new file mode 100644 index 00000000..e94b02cb --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_el.js @@ -0,0 +1,17 @@ +/** + * Select2 Greek translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Δεν βÏέθηκαν αποτελέσματα"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "ΠαÏακαλοÏμε εισάγετε " + n + " πεÏισσότεÏο" + (n > 1 ? "Ï…Ï‚" : "") + " χαÏακτήÏ" + (n > 1 ? "ες" : "α"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "ΠαÏακαλοÏμε διαγÏάψτε " + n + " χαÏακτήÏ" + (n > 1 ? "ες" : "α"); }, + formatSelectionTooBig: function (limit) { return "ΜποÏείτε να επιλέξετε μόνο " + limit + " αντικείμεν" + (limit > 1 ? "α" : "ο"); }, + formatLoadMore: function (pageNumber) { return "ΦόÏτωση πεÏισσότεÏων…"; }, + formatSearching: function () { return "Αναζήτηση…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_en.js.template b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_en.js.template new file mode 100644 index 00000000..f66bcc84 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_en.js.template @@ -0,0 +1,18 @@ +/** + * Select2 translation. + * + * Author: Your Name + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatMatches: function (matches) { return matches + " results are available, use up and down arrow keys to navigate."; }, + formatNoMatches: function () { return "No matches found"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Please enter " + n + " more character" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Please delete " + n + " character" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "You can only select " + limit + " item" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Loading more results…"; }, + formatSearching: function () { return "Searching…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_es.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_es.js new file mode 100644 index 00000000..f2b58179 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_es.js @@ -0,0 +1,15 @@ +/** + * Select2 Spanish translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "No se encontraron resultados"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Por favor, introduzca " + n + " car" + (n == 1? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Por favor, elimine " + n + " car" + (n == 1? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Sólo puede seleccionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Cargando más resultados…"; }, + formatSearching: function () { return "Buscando…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_et.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_et.js new file mode 100644 index 00000000..a4045d22 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_et.js @@ -0,0 +1,17 @@ +/** + * Select2 Estonian translation. + * + * Author: Kuldar Kalvik + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tulemused puuduvad"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sisesta " + n + " täht" + (n == 1 ? "" : "e") + " rohkem"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sisesta " + n + " täht" + (n == 1? "" : "e") + " vähem"; }, + formatSelectionTooBig: function (limit) { return "Saad vaid " + limit + " tulemus" + (limit == 1 ? "e" : "t") + " valida"; }, + formatLoadMore: function (pageNumber) { return "Laen tulemusi.."; }, + formatSearching: function () { return "Otsin.."; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_eu.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_eu.js new file mode 100644 index 00000000..1da1a709 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_eu.js @@ -0,0 +1,43 @@ +/** + * Select2 Basque translation. + * + * Author: Julen Ruiz Aizpuru + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Ez da bat datorrenik aurkitu"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Idatzi karaktere bat gehiago"; + } else { + return "Idatzi " + n + " karaktere gehiago"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Idatzi karaktere bat gutxiago"; + } else { + return "Idatzi " + n + " karaktere gutxiago"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Elementu bakarra hauta dezakezu"; + } else { + return limit + " elementu hauta ditzakezu soilik"; + } + }, + formatLoadMore: function (pageNumber) { + return "Emaitza gehiago kargatzen…"; + }, + formatSearching: function () { + return "Bilatzen…"; + } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fa.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fa.js new file mode 100644 index 00000000..a9e95af4 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fa.js @@ -0,0 +1,19 @@ +/** + * Select2 Persian translation. + * + * Author: Ali Choopan + * Author: Ebrahim Byagowi + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatMatches: function (matches) { return matches + " نتیجه موجود است، کلیدهای جهت بالا Ùˆ پایین را برای گشتن Ø§Ø³ØªÙØ§Ø¯Ù‡ کنید."; }, + formatNoMatches: function () { return "نتیجه‌ای ÛŒØ§ÙØª نشد."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ù„Ø·ÙØ§Ù‹ " + n + " نویسه بیشتر وارد نمایید"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Ù„Ø·ÙØ§Ù‹ " + n + " نویسه را حذ٠کنید."; }, + formatSelectionTooBig: function (limit) { return "شما Ùقط می‌توانید " + limit + " مورد را انتخاب کنید"; }, + formatLoadMore: function (pageNumber) { return "در حال بارگیری موارد بیشتر…"; }, + formatSearching: function () { return "در حال جستجو…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fi.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fi.js new file mode 100644 index 00000000..9bed310f --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fi.js @@ -0,0 +1,28 @@ +/** + * Select2 Finnish translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Ei tuloksia"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + return "Ole hyvä ja anna " + n + " merkkiä lisää"; + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + return "Ole hyvä ja anna " + n + " merkkiä vähemmän"; + }, + formatSelectionTooBig: function (limit) { + return "Voit valita ainoastaan " + limit + " kpl"; + }, + formatLoadMore: function (pageNumber) { + return "Ladataan lisää tuloksia…"; + }, + formatSearching: function () { + return "Etsitään…"; + } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fr.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fr.js new file mode 100644 index 00000000..9afda2ab --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_fr.js @@ -0,0 +1,16 @@ +/** + * Select2 French translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatMatches: function (matches) { return matches + " résultats sont disponibles, utilisez les flèches haut et bas pour naviguer."; }, + formatNoMatches: function () { return "Aucun résultat trouvé"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Merci de saisir " + n + " caractère" + (n == 1 ? "" : "s") + " de plus"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Merci de supprimer " + n + " caractère" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Vous pouvez seulement sélectionner " + limit + " élément" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Chargement de résultats supplémentaires…"; }, + formatSearching: function () { return "Recherche en cours…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_gl.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_gl.js new file mode 100644 index 00000000..80326320 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_gl.js @@ -0,0 +1,43 @@ +/** + * Select2 Galician translation + * + * Author: Leandro Regueiro + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { + return "Non se atoparon resultados"; + }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n === 1) { + return "Engada un carácter"; + } else { + return "Engada " + n + " caracteres"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n === 1) { + return "Elimine un carácter"; + } else { + return "Elimine " + n + " caracteres"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit === 1 ) { + return "Só pode seleccionar un elemento"; + } else { + return "Só pode seleccionar " + limit + " elementos"; + } + }, + formatLoadMore: function (pageNumber) { + return "Cargando máis resultados…"; + }, + formatSearching: function () { + return "Buscando…"; + } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_he.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_he.js new file mode 100644 index 00000000..00385410 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_he.js @@ -0,0 +1,17 @@ +/** +* Select2 Hebrew translation. +* +* Author: Yakir Sitbon +*/ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "×œ× × ×ž×¦×ו הת×מות"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "× × ×œ×”×–×™×Ÿ עוד " + n + " ×ª×•×•×™× × ×•×¡×¤×™×"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "× × ×œ×”×–×™×Ÿ פחות " + n + " תווי×"; }, + formatSelectionTooBig: function (limit) { return "ניתן לבחור " + limit + " פריטי×"; }, + formatLoadMore: function (pageNumber) { return "טוען תוצ×ות נוספות…"; }, + formatSearching: function () { return "מחפש…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hr.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hr.js new file mode 100644 index 00000000..c2937252 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hr.js @@ -0,0 +1,22 @@ +/** + * Select2 Croatian translation. + * + * @author Edi Modrić + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nema rezultata"; }, + formatInputTooShort: function (input, min) { return "Unesite joÅ¡" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "Unesite" + character(input.length - max) + " manje"; }, + formatSelectionTooBig: function (limit) { return "Maksimalan broj odabranih stavki je " + limit; }, + formatLoadMore: function (pageNumber) { return "UÄitavanje rezultata…"; }, + formatSearching: function () { return "Pretraga…"; } + }); + + function character (n) { + return " " + n + " znak" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "a" : "" : "ova"); + } +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hu.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hu.js new file mode 100644 index 00000000..a8c30881 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_hu.js @@ -0,0 +1,15 @@ +/** + * Select2 Hungarian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nincs találat."; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Túl rövid. Még " + n + " karakter hiányzik."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Túl hosszú. " + n + " karakterrel több, mint kellene."; }, + formatSelectionTooBig: function (limit) { return "Csak " + limit + " elemet lehet kiválasztani."; }, + formatLoadMore: function (pageNumber) { return "Töltés…"; }, + formatSearching: function () { return "Keresés…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_id.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_id.js new file mode 100644 index 00000000..54745407 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_id.js @@ -0,0 +1,17 @@ +/** + * Select2 Indonesian translation. + * + * Author: Ibrahim Yusuf + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tidak ada data yang sesuai"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Masukkan " + n + " huruf lagi" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Hapus " + n + " huruf" + (n == 1 ? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Anda hanya dapat memilih " + limit + " pilihan" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Mengambil data…"; }, + formatSearching: function () { return "Mencari…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_is.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_is.js new file mode 100644 index 00000000..aecc6cd7 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_is.js @@ -0,0 +1,15 @@ +/** + * Select2 Icelandic translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ekkert fannst"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vinsamlegast skrifið " + n + " staf" + (n > 1 ? "i" : "") + " í viðbót"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vinsamlegast styttið texta um " + n + " staf" + (n > 1 ? "i" : ""); }, + formatSelectionTooBig: function (limit) { return "Þú getur aðeins valið " + limit + " atriði"; }, + formatLoadMore: function (pageNumber) { return "Sæki fleiri niðurstöður…"; }, + formatSearching: function () { return "Leita…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_it.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_it.js new file mode 100644 index 00000000..d4e24de7 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_it.js @@ -0,0 +1,15 @@ +/** + * Select2 Italian translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nessuna corrispondenza trovata"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Inserisci ancora " + n + " caratter" + (n == 1? "e" : "i"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Inserisci " + n + " caratter" + (n == 1? "e" : "i") + " in meno"; }, + formatSelectionTooBig: function (limit) { return "Puoi selezionare solo " + limit + " element" + (limit == 1 ? "o" : "i"); }, + formatLoadMore: function (pageNumber) { return "Caricamento in corso…"; }, + formatSearching: function () { return "Ricerca…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ja.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ja.js new file mode 100644 index 00000000..81106e78 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ja.js @@ -0,0 +1,15 @@ +/** + * Select2 Japanese translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "該当ãªã—"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "後" + n + "文字入れã¦ãã ã•ã„"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "検索文字列ãŒ" + n + "文字長ã™ãŽã¾ã™"; }, + formatSelectionTooBig: function (limit) { return "最多ã§" + limit + "é …ç›®ã¾ã§ã—ã‹é¸æŠžã§ãã¾ã›ã‚“"; }, + formatLoadMore: function (pageNumber) { return "読込中・・・"; }, + formatSearching: function () { return "検索中・・・"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ka.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ka.js new file mode 100644 index 00000000..366cc2d9 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ka.js @@ -0,0 +1,17 @@ +/** + * Select2 Georgian (Kartuli) translation. + * + * Author: Dimitri Kurashvili dimakura@gmail.com + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "გთხáƒáƒ•თ შეიყვáƒáƒœáƒáƒ— კიდევ " + n + " სიმბáƒáƒšáƒ"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "გთხáƒáƒ•თ წáƒáƒ¨áƒáƒšáƒáƒ— " + n + " სიმბáƒáƒšáƒ"; }, + formatSelectionTooBig: function (limit) { return "თქვენ შეგიძლიáƒáƒ— მხáƒáƒšáƒáƒ“ " + limit + " ჩáƒáƒœáƒáƒ¬áƒ”რის მáƒáƒœáƒ˜áƒ¨áƒ•ნáƒ"; }, + formatLoadMore: function (pageNumber) { return "შედეგის ჩáƒáƒ¢áƒ•ირთვáƒâ€¦"; }, + formatSearching: function () { return "ძებნáƒâ€¦"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ko.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ko.js new file mode 100644 index 00000000..1a84d21e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ko.js @@ -0,0 +1,17 @@ +/** + * Select2 Korean translation. + * + * @author Swen Mun + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ê²°ê³¼ ì—†ìŒ"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "너무 짧습니다. "+n+"ê¸€ìž ë” ìž…ë ¥í•´ì£¼ì„¸ìš”."; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "너무 ê¹ë‹ˆë‹¤. "+n+"ê¸€ìž ì§€ì›Œì£¼ì„¸ìš”."; }, + formatSelectionTooBig: function (limit) { return "최대 "+limit+"개까지만 ì„ íƒí•˜ì‹¤ 수 있습니다."; }, + formatLoadMore: function (pageNumber) { return "불러오는 중…"; }, + formatSearching: function () { return "검색 중…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lt.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lt.js new file mode 100644 index 00000000..2e2f950b --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lt.js @@ -0,0 +1,24 @@ +/** + * Select2 Lithuanian translation. + * + * @author CRONUS Karmalakas + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Atitikmenų nerasta"; }, + formatInputTooShort: function (input, min) { return "Ä®raÅ¡ykite dar" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "PaÅ¡alinkite" + character(input.length - max); }, + formatSelectionTooBig: function (limit) { + return "JÅ«s galite pasirinkti tik " + limit + " element" + ((limit%100 > 9 && limit%100 < 21) || limit%10 == 0 ? "ų" : limit%10 > 1 ? "us" : "Ä…"); + }, + formatLoadMore: function (pageNumber) { return "Kraunama daugiau rezultatų…"; }, + formatSearching: function () { return "IeÅ¡koma…"; } + }); + + function character (n) { + return " " + n + " simbol" + ((n%100 > 9 && n%100 < 21) || n%10 == 0 ? "ių" : n%10 > 1 ? "ius" : "į"); + } +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lv.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lv.js new file mode 100644 index 00000000..b300ec77 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_lv.js @@ -0,0 +1,17 @@ +/** + * Select2 Latvian translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "SakritÄ«bu nav"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "LÅ«dzu ievadiet vÄ“l " + n + " simbol" + (n == 11 ? "us" : n%10 == 1 ? "u" : "us"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "LÅ«dzu ievadiet par " + n + " simbol" + (n == 11 ? "iem" : n%10 == 1 ? "u" : "iem") + " mazÄk"; }, + formatSelectionTooBig: function (limit) { return "JÅ«s varat izvÄ“lÄ“ties ne vairÄk kÄ " + limit + " element" + (limit == 11 ? "us" : limit%10 == 1 ? "u" : "us"); }, + formatLoadMore: function (pageNumber) { return "Datu ielÄde…"; }, + formatSearching: function () { return "Meklēšana…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_mk.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_mk.js new file mode 100644 index 00000000..513562c5 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_mk.js @@ -0,0 +1,17 @@ +/** + * Select2 Macedonian translation. + * + * Author: Marko Aleksic + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ðема пронајдено Ñовпаѓања"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ве молиме внеÑете уште " + n + " карактер" + (n == 1 ? "" : "и"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Ве молиме внеÑете " + n + " помалку карактер" + (n == 1? "" : "и"); }, + formatSelectionTooBig: function (limit) { return "Можете да изберете Ñамо " + limit + " Ñтавк" + (limit == 1 ? "а" : "и"); }, + formatLoadMore: function (pageNumber) { return "Вчитување резултати…"; }, + formatSearching: function () { return "Пребарување…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ms.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ms.js new file mode 100644 index 00000000..262042aa --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ms.js @@ -0,0 +1,17 @@ +/** + * Select2 Malay translation. + * + * Author: Kepoweran + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Tiada padanan yang ditemui"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Sila masukkan " + n + " aksara lagi"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Sila hapuskan " + n + " aksara"; }, + formatSelectionTooBig: function (limit) { return "Anda hanya boleh memilih " + limit + " pilihan"; }, + formatLoadMore: function (pageNumber) { return "Sedang memuatkan keputusan…"; }, + formatSearching: function () { return "Mencari…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_nl.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_nl.js new file mode 100644 index 00000000..5b5c4156 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_nl.js @@ -0,0 +1,15 @@ +/** + * Select2 Dutch translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Geen resultaten gevonden"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " meer in"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vul " + n + " karakter" + (n == 1? "" : "s") + " minder in"; }, + formatSelectionTooBig: function (limit) { return "Maximaal " + limit + " item" + (limit == 1 ? "" : "s") + " toegestaan"; }, + formatLoadMore: function (pageNumber) { return "Meer resultaten laden…"; }, + formatSearching: function () { return "Zoeken…"; } + }); +})(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_no.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_no.js new file mode 100644 index 00000000..ab61c082 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_no.js @@ -0,0 +1,18 @@ +/** + * Select2 Norwegian translation. + * + * Author: Torgeir Veimo + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Ingen treff"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vennligst skriv inn " + n + (n>1 ? " flere tegn" : " tegn til"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vennligst fjern " + n + " tegn"; }, + formatSelectionTooBig: function (limit) { return "Du kan velge maks " + limit + " elementer"; }, + formatLoadMore: function (pageNumber) { return "Laster flere resultater…"; }, + formatSearching: function () { return "Søker…"; } + }); +})(jQuery); + diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pl.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pl.js new file mode 100644 index 00000000..75054e76 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pl.js @@ -0,0 +1,22 @@ +/** + * Select2 Polish translation. + * + * @author Jan Kondratowicz + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Brak wyników"; }, + formatInputTooShort: function (input, min) { return "Wpisz jeszcze" + character(min - input.length, "znak", "i"); }, + formatInputTooLong: function (input, max) { return "Wpisana fraza jest za dÅ‚uga o" + character(input.length - max, "znak", "i"); }, + formatSelectionTooBig: function (limit) { return "Możesz zaznaczyć najwyżej" + character(limit, "element", "y"); }, + formatLoadMore: function (pageNumber) { return "Åadowanie wyników…"; }, + formatSearching: function () { return "Szukanie…"; } + }); + + function character (n, word, pluralSuffix) { + return " " + n + " " + word + (n == 1 ? "" : n%10 < 5 && n%10 > 1 && (n%100 < 5 || n%100 > 20) ? pluralSuffix : "ów"); + } +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-BR.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-BR.js new file mode 100644 index 00000000..ac4969ac --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-BR.js @@ -0,0 +1,15 @@ +/** + * Select2 Brazilian Portuguese translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Digite mais " + n + " caracter" + (n == 1? "" : "es"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " caracter" + (n == 1? "" : "es"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Carregando mais resultados…"; }, + formatSearching: function () { return "Buscando…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-PT.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-PT.js new file mode 100644 index 00000000..cced7cf3 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_pt-PT.js @@ -0,0 +1,15 @@ +/** + * Select2 Portuguese (Portugal) translation + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nenhum resultado encontrado"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Introduza " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Apague " + n + " car" + (n == 1 ? "ácter" : "acteres"); }, + formatSelectionTooBig: function (limit) { return "Só é possível selecionar " + limit + " elemento" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "A carregar mais resultados…"; }, + formatSearching: function () { return "A pesquisar…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ro.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ro.js new file mode 100644 index 00000000..87eca4cf --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ro.js @@ -0,0 +1,15 @@ +/** + * Select2 Romanian translation. + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Nu a fost găsit nimic"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vă rugăm să introduceÈ›i incă " + n + " caracter" + (n == 1 ? "" : "e"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vă rugăm să introduceÈ›i mai puÈ›in de " + n + " caracter" + (n == 1? "" : "e"); }, + formatSelectionTooBig: function (limit) { return "AveÈ›i voie să selectaÈ›i cel mult " + limit + " element" + (limit == 1 ? "" : "e"); }, + formatLoadMore: function (pageNumber) { return "Se încarcă…"; }, + formatSearching: function () { return "Căutare…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_rs.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_rs.js new file mode 100644 index 00000000..300c01bc --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_rs.js @@ -0,0 +1,17 @@ +/** + * Select2 Serbian translation. + * + * @author Limon Monte + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "NiÅ¡ta nije pronaÄ‘eno"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Ukucajte bar joÅ¡ " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "ObriÅ¡ite " + n + " simbol" + (n % 10 == 1 && n % 100 != 11 ? "" : "a"); }, + formatSelectionTooBig: function (limit) { return "Možete izabrati samo " + limit + " stavk" + (limit % 10 == 1 && limit % 100 != 11 ? "u" : (limit % 10 >= 2 && limit % 10 <= 4 && (limit % 100 < 12 || limit % 100 > 14)? "e" : "i")); }, + formatLoadMore: function (pageNumber) { return "Preuzimanje joÅ¡ rezultata…"; }, + formatSearching: function () { return "Pretraga…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ru.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ru.js new file mode 100644 index 00000000..0f45ce0d --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_ru.js @@ -0,0 +1,21 @@ +/** + * Select2 Russian translation. + * + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Совпадений не найдено"; }, + formatInputTooShort: function (input, min) { return "ПожалуйÑта, введите еще" + character(min - input.length); }, + formatInputTooLong: function (input, max) { return "ПожалуйÑта, введите на" + character(input.length - max) + " меньше"; }, + formatSelectionTooBig: function (limit) { return "Ð’Ñ‹ можете выбрать не более " + limit + " Ñлемент" + (limit%10 == 1 && limit%100 != 11 ? "а" : "ов"); }, + formatLoadMore: function (pageNumber) { return "Загрузка данных…"; }, + formatSearching: function () { return "ПоиÑк…"; } + }); + + function character (n) { + return " " + n + " Ñимвол" + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 20) ? n%10 > 1 ? "a" : "" : "ов"); + } +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sk.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sk.js new file mode 100644 index 00000000..772f304a --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sk.js @@ -0,0 +1,48 @@ +/** + * Select2 Slovak translation. + * + * Author: David Vallner + */ +(function ($) { + "use strict"; + // use text for the numbers 2 through 4 + var smallNumbers = { + 2: function(masc) { return (masc ? "dva" : "dve"); }, + 3: function() { return "tri"; }, + 4: function() { return "Å¡tyri"; } + } + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "NenaÅ¡li sa žiadne položky"; }, + formatInputTooShort: function (input, min) { + var n = min - input.length; + if (n == 1) { + return "Prosím zadajte eÅ¡te jeden znak"; + } else if (n <= 4) { + return "Prosím zadajte eÅ¡te ÄalÅ¡ie "+smallNumbers[n](true)+" znaky"; + } else { + return "Prosím zadajte eÅ¡te Äalších "+n+" znakov"; + } + }, + formatInputTooLong: function (input, max) { + var n = input.length - max; + if (n == 1) { + return "Prosím zadajte o jeden znak menej"; + } else if (n <= 4) { + return "Prosím zadajte o "+smallNumbers[n](true)+" znaky menej"; + } else { + return "Prosím zadajte o "+n+" znakov menej"; + } + }, + formatSelectionTooBig: function (limit) { + if (limit == 1) { + return "Môžete zvoliÅ¥ len jednu položku"; + } else if (limit <= 4) { + return "Môžete zvoliÅ¥ najviac "+smallNumbers[limit](false)+" položky"; + } else { + return "Môžete zvoliÅ¥ najviac "+limit+" položiek"; + } + }, + formatLoadMore: function (pageNumber) { return "NaÄítavajú sa ÄalÅ¡ie výsledky…"; }, + formatSearching: function () { return "Vyhľadávanie…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sv.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sv.js new file mode 100644 index 00000000..d611189a --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_sv.js @@ -0,0 +1,17 @@ +/** + * Select2 Swedish translation. + * + * Author: Jens Rantil + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Inga träffar"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Var god skriv in " + n + (n>1 ? " till tecken" : " tecken till"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Var god sudda ut " + n + " tecken"; }, + formatSelectionTooBig: function (limit) { return "Du kan max välja " + limit + " element"; }, + formatLoadMore: function (pageNumber) { return "Laddar fler resultat…"; }, + formatSearching: function () { return "Söker…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_th.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_th.js new file mode 100644 index 00000000..df59bdac --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_th.js @@ -0,0 +1,17 @@ +/** + * Select2 Thai translation. + * + * Author: Atsawin Chaowanakritsanakul + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "ไม่พบข้อมูล"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "โปรดพิมพ์เพิ่มอีภ" + n + " ตัวอัà¸à¸©à¸£"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "โปรดลบออภ" + n + " ตัวอัà¸à¸©à¸£"; }, + formatSelectionTooBig: function (limit) { return "คุณสามารถเลือà¸à¹„ด้ไม่เà¸à¸´à¸™ " + limit + " รายà¸à¸²à¸£"; }, + formatLoadMore: function (pageNumber) { return "à¸à¸³à¸¥à¸±à¸‡à¸„้นข้อมูลเพิ่ม…"; }, + formatSearching: function () { return "à¸à¸³à¸¥à¸±à¸‡à¸„้นข้อมูล…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_tr.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_tr.js new file mode 100644 index 00000000..f834dad2 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_tr.js @@ -0,0 +1,17 @@ +/** + * Select2 Turkish translation. + * + * Author: Salim KAYABAÅžI + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Sonuç bulunamadı"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "En az " + n + " karakter daha girmelisiniz"; }, + formatInputTooLong: function (input, max) { var n = input.length - max; return n + " karakter azaltmalısınız"; }, + formatSelectionTooBig: function (limit) { return "Sadece " + limit + " seçim yapabilirsiniz"; }, + formatLoadMore: function (pageNumber) { return "Daha fazla…"; }, + formatSearching: function () { return "Aranıyor…"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_uk.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_uk.js new file mode 100644 index 00000000..8d31a056 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_uk.js @@ -0,0 +1,23 @@ +/** + * Select2 Ukrainian translation. + * + * @author bigmihail + * @author Uriy Efremochkin + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatMatches: function (matches) { return character(matches, "результат") + " знайдено, викориÑтовуйте клавіші зі Ñтрілками вверх та вниз Ð´Ð»Ñ Ð½Ð°Ð²Ñ–Ð³Ð°Ñ†Ñ–Ñ—."; }, + formatNoMatches: function () { return "Ðічого не знайдено"; }, + formatInputTooShort: function (input, min) { return "Введіть буль лаÑка ще " + character(min - input.length, "Ñимвол"); }, + formatInputTooLong: function (input, max) { return "Введіть буль лаÑка на " + character(input.length - max, "Ñимвол") + " менше"; }, + formatSelectionTooBig: function (limit) { return "Ви можете вибрати лише " + character(limit, "елемент"); }, + formatLoadMore: function (pageNumber) { return "Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…â€¦"; }, + formatSearching: function () { return "Пошук…"; } + }); + + function character (n, word) { + return n + " " + word + (n%10 < 5 && n%10 > 0 && (n%100 < 5 || n%100 > 19) ? n%10 > 1 ? "и" : "" : "ів"); + } +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_vi.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_vi.js new file mode 100644 index 00000000..5dbc2753 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_vi.js @@ -0,0 +1,18 @@ +/** + * Select2 Vietnamese translation. + * + * Author: Long Nguyen + */ +(function ($) { + "use strict"; + + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "Không tìm thấy kết quả"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "Vui lòng nhập nhiá»u hÆ¡n " + n + " ký tá»±" + (n == 1 ? "" : "s"); }, + formatInputTooLong: function (input, max) { var n = input.length - max; return "Vui lòng nhập ít hÆ¡n " + n + " ký tá»±" + (n == 1? "" : "s"); }, + formatSelectionTooBig: function (limit) { return "Chỉ có thể chá»n được " + limit + " tùy chá»n" + (limit == 1 ? "" : "s"); }, + formatLoadMore: function (pageNumber) { return "Äang lấy thêm kết quả…"; }, + formatSearching: function () { return "Äang tìm…"; } + }); +})(jQuery); + diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-CN.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-CN.js new file mode 100644 index 00000000..6add3c52 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-CN.js @@ -0,0 +1,14 @@ +/** + * Select2 Chinese translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "没有找到匹é…项"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "请å†è¾“å…¥" + n + "个字符";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "请删掉" + n + "个字符";}, + formatSelectionTooBig: function (limit) { return "ä½ åªèƒ½é€‰æ‹©æœ€å¤š" + limit + "项"; }, + formatLoadMore: function (pageNumber) { return "加载结果中…"; }, + formatSearching: function () { return "æœç´¢ä¸­â€¦"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-TW.js b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-TW.js new file mode 100644 index 00000000..f072381f --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2_locale_zh-TW.js @@ -0,0 +1,14 @@ +/** + * Select2 Traditional Chinese translation + */ +(function ($) { + "use strict"; + $.extend($.fn.select2.defaults, { + formatNoMatches: function () { return "沒有找到相符的項目"; }, + formatInputTooShort: function (input, min) { var n = min - input.length; return "è«‹å†è¼¸å…¥" + n + "個字元";}, + formatInputTooLong: function (input, max) { var n = input.length - max; return "請刪掉" + n + "個字元";}, + formatSelectionTooBig: function (limit) { return "ä½ åªèƒ½é¸æ“‡æœ€å¤š" + limit + "é …"; }, + formatLoadMore: function (pageNumber) { return "載入中…"; }, + formatSearching: function () { return "æœå°‹ä¸­â€¦"; } + }); +})(jQuery); diff --git a/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2x2.png b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2x2.png new file mode 100644 index 00000000..4bdd5c96 Binary files /dev/null and b/admin/core/lib/ReduxFramework/ReduxCore/assets/js/vendor/select2/select2x2.png differ diff --git a/admin/core/lib/ReduxFramework/ReduxCore/extensions/README.txt b/admin/core/lib/ReduxFramework/ReduxCore/extensions/README.txt new file mode 100644 index 00000000..ea1d54cf --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/extensions/README.txt @@ -0,0 +1 @@ +This directory is a placeholder for Redux Framework extensions. diff --git a/admin/core/lib/ReduxFramework/ReduxCore/extensions/customizer/extension_customizer.php b/admin/core/lib/ReduxFramework/ReduxCore/extensions/customizer/extension_customizer.php new file mode 100644 index 00000000..4fe2e819 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/extensions/customizer/extension_customizer.php @@ -0,0 +1,591 @@ +. + * + * @package ReduxFramework + * @author Dovy Paukstys (dovy) + * @version 3.0.0 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_extension_customizer' ) ) { + + /** + * Main ReduxFramework customizer extension class + * + * @since 1.0.0 + */ + class ReduxFramework_extension_customizer { + + // Protected vars + protected $redux; + private $_extension_url; + private $_extension_dir; + private $parent; + public static $version = "2.0"; + + /** + * Class Constructor. Defines the args for the extions class + * + * @since 1.0.0 + * @access public + * + * @param array $sections Panel sections. + * @param array $args Class constructor arguments. + * @param array $extra_tabs Extra panel tabs. + * + * @return void + */ + public function __construct( $parent ) { + //add_action('wp_head', array( $this, '_enqueue_new' )); + + global $pagenow; + if ( ( $pagenow !== "customize.php" && $pagenow !== "admin-ajax.php" && ! isset( $GLOBALS['wp_customize'] ) ) ) { + return; + } + + $this->parent = $parent; + + if ( empty( $this->_extension_dir ) ) { + $this->_extension_dir = trailingslashit( str_replace( '\\', '/', dirname( __FILE__ ) ) ); + $this->_extension_url = site_url( str_replace( trailingslashit( str_replace( '\\', '/', ABSPATH ) ), '', $this->_extension_dir ) ); + } + + // Create defaults array + $defaults = array(); + /* + customize_controls_init + customize_controls_enqueue_scripts + customize_controls_print_styles + customize_controls_print_scripts + customize_controls_print_footer_scripts + */ + + if ( ! isset( $_POST['customized'] ) || $pagenow == "admin-ajax.php" ) { + if ( current_user_can( $this->parent->args['page_permissions'] ) ) { + add_action( 'customize_register', array( + $this, + '_register_customizer_controls' + ) ); // Create controls + } + } + + if ( isset( $_POST['customized'] ) ) { + if ( $pagenow == "admin-ajax.php" && $_POST['action'] == 'customize_save' ) { + //$this->parent-> + } + add_action( "redux/options/{$this->parent->args['opt_name']}/options", array( + $this, + '_override_values' + ), 100 ); + add_action( 'customize_save', array( $this, 'customizer_save_before' ) ); // Before save + add_action( 'customize_save_after', array( &$this, 'customizer_save_after' ) ); // After save + add_action( 'wp_head', array( $this, 'customize_preview_init' ) ); + } + + + //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_css' ) ); // Enqueue previewer css + //add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_previewer_js' ) ); // Enqueue previewer javascript + //add_action( "wp_footer", array( $this, '_enqueue_new' ), 100 ); + //$this->_enqueue_new(); + } + + function customize_preview_init() { + do_action( 'redux/customizer/live_preview' ); + } + + public function _override_values( $data ) { + if ( isset( $_POST['customized'] ) ) { + $this->orig_options = $this->parent->options; + $options = json_decode( stripslashes_deep( $_POST['customized'] ), true ); + if ( ! empty( $options ) && is_array( $options ) ) { + foreach ( $options as $key => $value ) { + if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) { + $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) ); + $data[ $key ] = $value; + $GLOBALS[ $this->parent->args['global_variable'] ][ $key ] = $value; + $this->parent->options[ $key ] = $value; + } + } + } + + } + + return $data; + } + + public function _enqueue_new() { + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + //echo ""; + + /* + wp_enqueue_script('redux-extension-customizer-codemirror-js', $this->_extension_url . 'new/codemirror.min.js'); + wp_enqueue_script('redux-extension-customizer-color-js', $this->_extension_url . 'new/colors-control.js'); + wp_enqueue_script('redux-extension-customizer-controls-js', $this->_extension_url . 'new/customizer-control.js'); + wp_enqueue_script('redux-extension-customizer-fonts-js', $this->_extension_url . 'new/fonts-customizer-admin.js'); + wp_enqueue_script('redux-extension-customizer-header-js', $this->_extension_url . 'new/header-control.js'); + wp_enqueue_script('redux-extension-customizer-models-js', $this->_extension_url . 'new/header-models.js'); + wp_enqueue_script('redux-extension-customizer-slimscroll-js', $this->_extension_url . 'new/jquery.slimscroll.js'); + wp_enqueue_script('redux-extension-customizer-droppable-js', $this->_extension_url . 'new/jquery.ui.droppable.min.js'); + wp_enqueue_script('redux-extension-customizer-editor-js', $this->_extension_url . 'new/media-editor.min.js'); + wp_enqueue_script('redux-extension-customizer-new-js', $this->_extension_url . 'new/new-customizer.js'); + wp_enqueue_script('redux-extension-customizer-previewing-js', $this->_extension_url . 'new/previewing.js'); + wp_enqueue_script('redux-extension-customizer-theme-js', $this->_extension_url . 'new/theme-customizer.js'); + */ + } + + // All sections, settings, and controls will be added here + public function _register_customizer_controls( $wp_customize ) { + $order = array( + 'heading' => - 500, + 'option' => - 500, + ); + $defaults = array( + 'default-color' => '', + 'default-image' => '', + 'wp-head-callback' => '', + 'admin-head-callback' => '', + 'admin-preview-callback' => '' + ); + + foreach ( $this->parent->sections as $key => $section ) { + + // Not a type that should go on the customizer + if ( empty( $section['fields'] ) || ( isset( $section['type'] ) && $section['type'] == "divide" ) ) { + continue; + } + + // If section customizer is set to false + if ( isset( $section['customizer'] ) && $section['customizer'] === false ) { + continue; + } + + // Evaluate section permissions + if ( isset( $section['permissions'] ) ) { + if ( ! current_user_can( $section['permissions'] ) ) { + continue; + } + } + + // No errors please + if ( ! isset( $section['desc'] ) ) { + $section['desc'] = ""; + } + + // Fill the description if there is a subtitle + if ( empty( $section['desc'] ) && ! empty( $section['subtitle'] ) ) { + $section['desc'] = $section['subtitle']; + } + + // Let's make a section ID from the title + if ( empty( $section['id'] ) ) { + $section['id'] = strtolower( str_replace( " ", "", $section['title'] ) ); + } + + // No title is present, let's show what section is missing a title + if ( ! isset( $section['title'] ) ) { + print_r( $section ); + } + + // Let's set a default priority + if ( empty( $section['priority'] ) ) { + $section['priority'] = $order['heading']; + $order['heading'] ++; + } + + $wp_customize->add_section( $section['id'], array( + 'title' => $section['title'], + 'priority' => $section['priority'], + 'description' => $section['desc'] + ) ); + + + foreach ( $section['fields'] as $skey => $option ) { + + // Evaluate section permissions + if ( isset( $option['permissions'] ) ) { + if ( ! current_user_can( $option['permissions'] ) ) { + continue; + } + } + + if ( isset( $option['customizer'] ) && $option['customizer'] === false ) { + continue; + } + if ( $this->parent->args['customizer'] === false && ( ! isset( $option['customizer'] ) || $option['customizer'] !== true ) ) { + continue; + } + + //Change the item priority if not set + if ( $option['type'] != 'heading' && ! isset( $option['priority'] ) ) { + $option['priority'] = $order['option']; + $order['option'] ++; + } + + if ( ! empty( $this->options_defaults[ $option['id'] ] ) ) { + $option['default'] = $this->options_defaults['option']['id']; + } + + //$option['id'] = $this->parent->args['opt_name'].'['.$option['id'].']'; + //echo $option['id']; + + if ( ! isset( $option['default'] ) ) { + $option['default'] = ""; + } + if ( ! isset( $option['title'] ) ) { + $option['title'] = ""; + } + + // Wordpress doesn't support multi-select + if ( $option['type'] == "select" && isset( $option['multi'] ) && $option['multi'] == true ) { + continue; + } + + $customSetting = array( + 'default' => $option['default'], + 'type' => 'option', + 'capabilities' => 'edit_theme_options', + //'capabilities' => $this->parent->args['page_permissions'], + 'transport' => 'refresh', + 'theme_supports' => '', + 'sanitize_callback' => '__return_false', + //'sanitize_callback' => array( $this, '_field_validation' ), + //'sanitize_js_callback' =>array( &$parent, '_field_input' ), + ); + + + $option['id'] = $this->parent->args['opt_name'] . '[' . $option['id'] . ']'; + + if ( $option['type'] != "heading" || ! empty( $option['type'] ) ) { + $wp_customize->add_setting( $option['id'], $customSetting ); + } + + if ( ! empty( $option['data'] ) && empty( $option['options'] ) ) { + if ( empty( $option['args'] ) ) { + $option['args'] = array(); + } + + if ( $option['data'] == "elusive-icons" || $option['data'] == "elusive-icon" || $option['data'] == "elusive" ) { + $icons_file = ReduxFramework::$_dir . 'inc/fields/select/elusive-icons.php'; + $icons_file = apply_filters( 'redux-font-icons-file', $icons_file ); + + if ( file_exists( $icons_file ) ) { + require_once $icons_file; + } + } + $option['options'] = $this->parent->get_wordpress_data( $option['data'], $option['args'] ); + } + + switch ( $option['type'] ) { + case 'heading': + // We don't want to put up the section unless it's used by something visible in the customizer + $section = $option; + $section['id'] = strtolower( str_replace( " ", "", $option['title'] ) ); + $order['heading'] = - 500; + + if ( ! empty( $option['priority'] ) ) { + $section['priority'] = $option['priority']; + } else { + $section['priority'] = $order['heading']; + $order['heading'] ++; + } + break; + + case 'text': + if ( isset( $option['data'] ) && $option['data'] ) { + continue; + } + $wp_customize->add_control( $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'priority' => $option['priority'], + 'type' => 'text', + ) ); + break; + + case 'select': + case 'button_set': + if ( ( isset( $option['sortable'] ) && $option['sortable'] ) ) { + continue; + } + $wp_customize->add_control( $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'priority' => $option['priority'], + 'type' => 'select', + 'choices' => $option['options'] + ) ); + break; + + case 'radio': + //continue; + $wp_customize->add_control( $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'priority' => $option['priority'], + 'type' => 'radio', + 'choices' => $option['options'] + ) ); + break; + + case 'checkbox': + if ( ( isset( $option['data'] ) && $option['data'] ) || ( ( isset( $option['multi'] ) && $option['multi'] ) ) || ( ( isset( $option['options'] ) && ! empty( $option['options'] ) ) ) ) { + continue; + } + $wp_customize->add_control( $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'priority' => $option['priority'], + 'type' => 'checkbox', + ) ); + break; + + case 'media': + continue; + $wp_customize->add_control( new WP_Customize_Image_Control( $wp_customize, $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'priority' => $option['priority'] + ) ) ); + break; + + case 'color': + $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'priority' => $option['priority'] + ) ) ); + break; + + case 'switch': + continue; + $wp_customize->add_control( new Redux_customizer_switch( $wp_customize, $option['id'], array( + 'label' => $option['title'], + 'section' => $section['id'], + 'settings' => $option['id'], + 'field' => $option, + 'ReduxFramework' => $this->parent, + 'priority' => $option['priority'], + ) ) ); + + break; + + default: + break; + } + } + } + + /* + title_tagline - Site Title & Tagline + colors - Colors + header_image - Header Image + background_image - Background Image + nav - Navigation + static_front_page - Static Front Page + */ + } + + public function customizer_save_before( $plugin_options ) { + $this->before_save = $this->parent->options; + //$parent->_field_input( $plugin_options ); + } + + public function customizer_save_after( $wp_customize ) { + //if( isset( $_POST['customized'] ) ) { + $options = json_decode( stripslashes_deep( $_POST['customized'] ), true ); + $compiler = false; + $changed = false; + + foreach ( $options as $key => $value ) { + if ( strpos( $key, $this->parent->args['opt_name'] ) !== false ) { + $key = str_replace( $this->parent->args['opt_name'] . '[', '', rtrim( $key, "]" ) ); + + if ( ! isset( $this->orig_options[ $key ] ) || $this->orig_options[ $key ] != $value || ( isset( $this->orig_options[ $key ] ) && ! empty( $this->orig_options[ $key ] ) && empty( $value ) ) ) { + $this->parent->options[ $key ] = $value; + $changed = true; + if ( isset( $this->parent->compiler_fields[ $key ] ) ) { + $compiler = true; + } + } + } + } + + if ( $changed ) { + $this->parent->set_options( $this->parent->options ); + if ( $compiler ) { + // Have to set this to stop the output of the CSS and typography stuff. + $this->parent->no_output = true; + $this->parent->_enqueue_output(); + do_action( "redux/options/{$this->parent->args['opt_name']}/compiler", $this->parent->options, $this->parent->compilerCSS ); + do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $parent ); + } + } + + } + + /** + * Enqueue CSS/JS for preview pane + * + * @since 1.0.0 + * @access public + * @global $wp_styles + * @return void + */ + public function _enqueue_previewer() { + wp_enqueue_script( + 'redux-extension-previewer-js', + $this->_extension_url . 'assets/js/preview.js' + ); + + $localize = array( + 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ), + 'reset_confirm' => __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ), + 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ), + 'opt_name' => $this->args['opt_name'], + //'folds' => $this->folds, + 'options' => $this->parent->options, + 'defaults' => $this->parent->options_defaults, + ); + + wp_localize_script( + 'redux-extension-previewer-js', + 'reduxPost', + $localize + ); + } + + /** + * Enqueue CSS/JS for the customizer controls + * + * @since 1.0.0 + * @access public + * @global $wp_styles + * @return void + */ + public function _enqueue() { + global $wp_styles; + + //wp_enqueue_style( 'wp-pointer' ); + //wp_enqueue_script( 'wp-pointer' ); + // Remove when code is in place! + //wp_enqueue_script('redux-extension-customizer-js', $this->_extension_url . 'assets/js/customizer.js'); + // Get styles + //wp_enqueue_style('redux-extension-customizer-css', $this->_extension_url . 'assets/css/customizer.css'); + + $localize = array( + 'save_pending' => __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ), + 'reset_confirm' => __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ), + 'preset_confirm' => __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ), + 'opt_name' => $this->args['opt_name'], + //'folds' => $this->folds, + 'field' => $this->parent->options, + 'defaults' => $this->parent->options_defaults, + ); + + // Values used by the javascript + wp_localize_script( + 'redux-js', + 'redux_opts', + $localize + ); + + do_action( 'redux-enqueue-' . $this->args['opt_name'] ); + + foreach ( $this->sections as $section ) { + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $field ) { + if ( isset( $field['type'] ) ) { + $field_class = 'ReduxFramework_' . $field['type']; + + if ( ! class_exists( $field_class ) ) { + $class_file = apply_filters( 'redux-typeclass-load', $this->path . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field_class ); + if ( $class_file ) { + /** @noinspection PhpIncludeInspection */ + require_once( $class_file ); + } + } + + if ( class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) { + $enqueue = new $field_class( '', '', $this ); + $enqueue->enqueue(); + } + } + } + } + } + } + + /** + * Register Option for use + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _register_setting() { + + } + + /** + * Validate the options before insertion + * + * @since 3.0.0 + * @access public + * + * @param array $plugin_options The options array + * + * @return + */ + public function _field_validation( $plugin_options, $two ) { + echo "dovy"; + echo $two; + + return $plugin_options; + + return $this->parent->_validate_options( $plugin_options ); + } + + /** + * HTML OUTPUT. + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _customizer_html_output() { + + } + } // class + } // if diff --git a/admin/core/lib/ReduxFramework/ReduxCore/framework.php b/admin/core/lib/ReduxFramework/ReduxCore/framework.php new file mode 100644 index 00000000..dbae4d20 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/framework.php @@ -0,0 +1,4331 @@ +. + * + * @package Redux_Framework + * @subpackage Core + * @author Redux Framework Team + */ + + // Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + + // Fix for the GT3 page builder: http://www.gt3themes.com/wordpress-gt3-page-builder-plugin/ + /** @global string $pagenow */ + if ( has_action( 'ecpt_field_options_' ) ) { + global $pagenow; + if ( $pagenow === 'admin.php' ) { + /** @noinspection PhpUndefinedCallbackInspection */ + remove_action( 'admin_init', 'pb_admin_init' ); + } + } + + if ( ! class_exists( 'ReduxFrameworkInstances' ) ) { + // Instance Container + require_once( dirname( __FILE__ ) . '/inc/class.redux_instances.php' ); + require_once( dirname( __FILE__ ) . '/inc/lib.redux_instances.php' ); + + } + + if ( class_exists( 'ReduxFrameworkInstances' ) ) { + add_action( 'redux/init', 'ReduxFrameworkInstances::get_instance' ); + } + + // Don't duplicate me! + if ( ! class_exists( 'ReduxFramework' ) ) { + + // General helper functions + require_once( dirname( __FILE__ ) . '/inc/class.redux_helpers.php' ); + + // General functions + require_once( dirname( __FILE__ ) . '/inc/class.redux_functions.php' ); + require_once( dirname( __FILE__ ) . '/inc/class.p.php' ); + + require_once( dirname( __FILE__ ) . '/inc/class.redux_filesystem.php' ); + + // ThemeCheck checks + require_once( dirname( __FILE__ ) . '/inc/class.redux_themecheck.php' ); + + /** + * Main ReduxFramework class + * + * @since 1.0.0 + */ + class ReduxFramework { + + // ATTENTION DEVS + // Please update the build number with each push, no matter how small. + // This will make for easier support when we ask users what version they are using. + public static $_version = '3.3.8.5'; + public static $_dir; + public static $_url; + public static $_upload_dir; + public static $_upload_url; + public static $wp_content_url; + public static $base_wp_content_url; + public static $_is_plugin = true; + public static $_as_plugin = false; + + public static function init() { + $dir = Redux_Helpers::cleanFilePath( dirname( __FILE__ ) ); + + // Windows-proof constants: replace backward by forward slashes. Thanks to: @peterbouwmeester + self::$_dir = trailingslashit( $dir ); + self::$wp_content_url = trailingslashit( Redux_Helpers::cleanFilePath( ( is_ssl() ? str_replace( 'http://', 'https://', WP_CONTENT_URL ) : WP_CONTENT_URL ) ) ); + + // See if Redux is a plugin or not + if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory_uri() ) ) !== false || strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/themes/' ) ) !== false ) { + self::$_is_plugin = false; + } else { + // Check if plugin is a symbolic link, see if it's a plugin. If embedded, we can't do a thing. + if ( strpos( self::$_dir, ABSPATH ) === false ) { + if ( ! function_exists( 'get_plugins' ) ) { + require_once ABSPATH . 'wp-admin/includes/plugin.php'; + } + + $is_plugin = false; + foreach ( get_plugins() as $key => $value ) { + if ( strpos( $key, 'redux-framework.php' ) !== false ) { + self::$_dir = trailingslashit( Redux_Helpers::cleanFilePath( WP_CONTENT_DIR . '/plugins/' . plugin_dir_path( $key ) . 'ReduxCore/' ) ); + $is_plugin = true; + } + } + if ( ! $is_plugin ) { + self::$_is_plugin = false; + } + } + } + + if ( self::$_is_plugin == true || self::$_as_plugin == true ) { + self::$_url = plugin_dir_url( __FILE__ ); + } else { + if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_template_directory() ) ) !== false ) { + $relative_url = str_replace( Redux_Helpers::cleanFilePath( get_template_directory() ), '', self::$_dir ); + self::$_url = trailingslashit( get_template_directory_uri() . $relative_url ); + } else if ( strpos( Redux_Helpers::cleanFilePath( __FILE__ ), Redux_Helpers::cleanFilePath( get_stylesheet_directory() ) ) !== false ) { + $relative_url = str_replace( Redux_Helpers::cleanFilePath( get_stylesheet_directory() ), '', self::$_dir ); + self::$_url = trailingslashit( get_stylesheet_directory_uri() . $relative_url ); + } else { + $wp_content_dir = trailingslashit( Redux_Helpers::cleanFilePath( WP_CONTENT_DIR ) ); + $wp_content_dir = trailingslashit( str_replace( '//', '/', $wp_content_dir ) ); + $relative_url = str_replace( $wp_content_dir, '', self::$_dir ); + self::$_url = trailingslashit( self::$wp_content_url . $relative_url ); + } + } + + self::$_url = apply_filters( "redux/_url", self::$_url ); + self::$_dir = apply_filters( "redux/_dir", self::$_dir ); + self::$_is_plugin = apply_filters( "redux/_is_plugin", self::$_is_plugin ); + + } + + // ::init() + + public $framework_url = 'http://www.reduxframework.com/'; + public static $instance = null; + public $admin_notices = array(); + public $page = ''; + public $saved = false; + public $fields = array(); // Fields by type used in the panel + public $current_tab = ''; // Current section to display, cookies + public $extensions = array(); // Extensions by type used in the panel + public $sections = array(); // Sections and fields + public $errors = array(); // Errors + public $warnings = array(); // Warnings + public $options = array(); // Option values + public $options_defaults = null; // Option defaults + public $notices = array(); // Option defaults + public $compiler_fields = array(); // Fields that trigger the compiler hook + public $required = array(); // Information that needs to be localized + public $required_child = array(); // Information that needs to be localized + public $localize_data = array(); // Information that needs to be localized + public $fonts = array(); // Information that needs to be localized + public $folds = array(); // The itms that need to fold. + public $path = ''; + public $changed_values = array(); // Values that have been changed on save. Orig values. + public $output = array(); // Fields with CSS output selectors + public $outputCSS = null; // CSS that get auto-appended to the header + public $compilerCSS = null; // CSS that get sent to the compiler hook + public $customizerCSS = null; // CSS that goes to the customizer + public $fieldsValues = array(); //all fields values in an id=>value array so we can check dependencies + public $fieldsHidden = array(); //all fields that didn't pass the dependency test and are hidden + public $toHide = array(); // Values to hide on page load + public $typography = null; //values to generate google font CSS + public $import_export = null; + public $debug = null; + public $no_panel = array(); // Fields that are not visible in the panel + private $show_hints = false; + private $hidden_perm_fields = array(); // Hidden fields specified by 'permissions' arg. + private $hidden_perm_sections = array(); // Hidden sections specified by 'permissions' arg. + public $typography_preview = array(); + public $args = array(); + public $filesystem = null; + + /** + * Class Constructor. Defines the args for the theme options class + * + * @since 1.0.0 + * + * @param array $sections Panel sections. + * @param array $args Class constructor arguments. + * @param array $extra_tabs Extra panel tabs. // REMOVE + * + * @return \ReduxFramework + */ + public function __construct( $sections = array(), $args = array(), $extra_tabs = array() ) { + + $this->slug = 'ultimatemember'; + + // Disregard WP AJAX 'heartbeat'call. Why waste resources? + if ( isset( $_POST ) && isset( $_POST['action'] ) && $_POST['action'] == 'heartbeat' ) { + + // Hook, for purists. + if ( ! has_action( 'redux/ajax/heartbeat' ) ) { + do_action( 'redux/ajax/heartbeat', $this ); + } + + // Buh bye! + return; + } + + // Pass parent pointer to function helper. + Redux_Functions::$_parent = $this; + + // Set values + $this->set_default_args(); + $this->args = wp_parse_args( $args, $this->args ); + + if ( empty( $this->args['transient_time'] ) ) { + $this->args['transient_time'] = 60 * MINUTE_IN_SECONDS; + } + + if ( empty( $this->args['footer_credit'] ) ) { + $this->args['footer_credit'] = ''; + } + + if ( empty( $this->args['menu_title'] ) ) { + $this->args['menu_title'] = __( 'Options', 'redux-framework' ); + } + + if ( empty( $this->args['page_title'] ) ) { + $this->args['page_title'] = __( 'Options', 'redux-framework' ); + } + + /** + * filter 'redux/args/{opt_name}' + * + * @param array $args ReduxFramework configuration + */ + $this->args = apply_filters( "redux/args/{$this->args['opt_name']}", $this->args ); + + /** + * filter 'redux/options/{opt_name}/args' + * + * @param array $args ReduxFramework configuration + */ + $this->args = apply_filters( "redux/options/{$this->args['opt_name']}/args", $this->args ); + + if ( ! empty( $this->args['opt_name'] ) ) { + /** + * SHIM SECTION + * Old variables and ways of doing things that need correcting. ;) + **/ + // Variable name change + if ( ! empty( $this->args['page_cap'] ) ) { + $this->args['page_permissions'] = $this->args['page_cap']; + unset( $this->args['page_cap'] ); + } + + if ( ! empty( $this->args['page_position'] ) ) { + $this->args['page_priority'] = $this->args['page_position']; + unset( $this->args['page_position'] ); + } + + if ( ! empty( $this->args['page_type'] ) ) { + $this->args['menu_type'] = $this->args['page_type']; + unset( $this->args['page_type'] ); + } + + // Get rid of extra_tabs! Not needed. + if ( is_array( $extra_tabs ) && ! empty( $extra_tabs ) ) { + foreach ( $extra_tabs as $tab ) { + array_push( $this->sections, $tab ); + } + } + + // Move to the first loop area! + /** + * filter 'redux-sections' + * + * @deprecated + * + * @param array $sections field option sections + */ + $this->sections = apply_filters( 'redux-sections', $sections ); // REMOVE LATER + /** + * filter 'redux-sections-{opt_name}' + * + * @deprecated + * + * @param array $sections field option sections + */ + $this->sections = apply_filters( "redux-sections-{$this->args['opt_name']}", $this->sections ); // REMOVE LATER + /** + * filter 'redux/options/{opt_name}/sections' + * + * @param array $sections field option sections + */ + $this->sections = apply_filters( "redux/options/{$this->args['opt_name']}/sections", $this->sections ); + + /** + * Construct hook + * action 'redux/construct' + * + * @param object $this ReduxFramework + */ + do_action( 'redux/construct', $this ); + + $this->filesystem = new Redux_Filesystem( $this ); + + //set redux upload folder + $this->set_redux_content(); + + // Set the default values + $this->_default_cleanup(); + + // Internataionalization + $this->_internationalization(); + + // Register extra extensions + $this->_register_extensions(); + + // Grab database values + $this->get_options(); + + // Tracking + $this->_tracking(); + + // Set option with defaults + //add_action( 'init', array( &$this, '_set_default_options' ), 101 ); + + //logconsole('post', $_GET['page']); + + //DOVY!! HERE!!! + // Getting started page +// if ( is_admin () && $this->args['dev_mode'] ) { +// +// if ( isset($_GET['page']) && ($_GET['page'] == 'redux-about' || $_GET['page'] == 'redux-getting-started' || $_GET['page'] == 'redux-credits' || $_GET['page'] == 'redux-changelog' )) { +// //logconsole('inc'); +// require_once( dirname( __FILE__ ) . '/inc/welcome.php' ); +// } else { +// //logconsole('compare'); +// if (isset($_GET['page']) && $_GET['page'] == $this->args['page_slug']) { +// $saveVer = get_option('redux_version_upgraded_from'); +// $curVer = self::$_version; +// +// if (empty($saveVer)) { +// //logconsole('redir'); +// wp_safe_redirect ( admin_url ( 'index.php?page=redux-getting-started' ) ); +// exit; +// } else if (version_compare($curVer, $saveVer, '>')) { +// wp_safe_redirect ( admin_url ( 'index.php?page=redux-about' ) ); +// exit; +// } +// } +// } +// } + + // Options page + add_action( 'admin_menu', array( $this, '_options_page' ) ); + + // Add a network menu + if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { + add_action( 'network_admin_menu', array( $this, '_options_page' ) ); + } + + // Admin Bar menu + add_action( 'admin_bar_menu', array( + $this, + '_admin_bar_menu' + ), $this->args['admin_bar_priority'] ); + + // Register setting + add_action( 'admin_init', array( $this, '_register_settings' ) ); + + // Display admin notices in dev_mode + if ( true == $this->args['dev_mode'] ) { + require_once( self::$_dir . 'inc/debug.php' ); + $this->debug = new ReduxDebugObject( $this ); + + if ( true == $this->args['update_notice'] ) { + add_action( 'admin_init', array( $this, '_update_check' ) ); + } + } + + // Display admin notices + add_action( 'admin_notices', array( $this, '_admin_notices' ) ); + + // Check for dismissed admin notices. + add_action( 'admin_init', array( $this, '_dismiss_admin_notice' ), 9 ); + + // Enqueue the admin page CSS and JS + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + add_action( 'admin_enqueue_scripts', array( $this, '_enqueue' ), 1 ); + } + + // Output dynamic CSS + // Frontend: Maybe enqueue dynamic CSS and Google fonts + if( empty( $this->args['output_location'] ) || in_array( 'frontend', $this->args['output_location'] ) ) { + add_action( 'wp_head', array( &$this, '_output_css' ), 150 ); + add_action( 'wp_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); + } + + // Login page: Maybe enqueue dynamic CSS and Google fonts + if( in_array( 'login', $this->args['output_location'] ) ) { + add_action( 'login_head', array( &$this, '_output_css' ), 150 ); + add_action( 'login_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); + } + + // Admin area: Maybe enqueue dynamic CSS and Google fonts + if( in_array( 'admin', $this->args['output_location'] ) ) { + add_action( 'admin_head', array( &$this, '_output_css' ), 150 ); + add_action( 'admin_enqueue_scripts', array( &$this, '_enqueue_output' ), 150 ); + } + + + add_action( 'wp_print_scripts', array( $this, 'vc_fixes' ), 100 ); + add_action( 'admin_enqueue_scripts', array( $this, 'vc_fixes' ), 100 ); + + require_once( self::$_dir . 'inc/import_export.php' ); + $this->import_export = new Redux_import_export( $this ); + + if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { + add_action( 'network_admin_edit_redux_' . $this->args['opt_name'], array( + $this, + 'save_network_page' + ), 10, 0 ); + add_action( 'admin_bar_menu', array( $this, 'network_admin_bar' ), 999 ); + + + } + + // mod_rewrite check + //Redux_Functions::modRewriteCheck(); + } + + /** + * Loaded hook + * action 'redux/loaded' + * + * @param object $this ReduxFramework + */ + do_action( 'redux/loaded', $this ); + + } // __construct() + + private function set_redux_content() { + $upload_dir = wp_upload_dir(); + self::$_upload_dir = $upload_dir['basedir'] . '/redux/'; + self::$_upload_url = $upload_dir['baseurl'] . '/redux/'; + + if ( ! is_dir( self::$_upload_dir ) ) { + $this->filesystem->execute( 'mkdir', self::$_upload_dir ); + } + } + + private function set_default_args() { + $this->args = array( + 'opt_name' => '', + // Must be defined by theme/plugin + 'google_api_key' => '', + // Must be defined to update the google fonts cache for the typography module + 'google_update_weekly' => false, + // Set to keep your google fonts updated weekly + 'last_tab' => '', + // force a specific tab to always show on reload + 'menu_icon' => '', + // menu icon + 'menu_title' => '', + // menu title/text + 'page_title' => '', + // option page title + 'page_slug' => '_options', + 'page_permissions' => 'manage_options', + 'menu_type' => 'menu', + // ('menu'|'submenu') + 'page_parent' => 'themes.php', + // requires menu_type = 'submenu + 'page_priority' => null, + 'allow_sub_menu' => true, + // allow submenus to be added if menu_type == menu + 'save_defaults' => true, + // Save defaults to the DB on it if empty + 'footer_credit' => '', + 'async_typography' => false, + 'disable_google_fonts_link' => false, + 'class' => '', + // Class that gets appended to all redux-containers + 'admin_bar' => true, + 'admin_bar_priority' => 999, + // Show the panel pages on the admin bar + 'admin_bar_icon' => '', + // admin bar icon + 'help_tabs' => array(), + 'help_sidebar' => '', + 'database' => '', + // possible: options, theme_mods, theme_mods_expanded, transient, network + 'customizer' => false, + // setting to true forces get_theme_mod_expanded + 'global_variable' => '', + // Changes global variable from $GLOBALS['YOUR_OPT_NAME'] to whatever you set here. false disables the global variable + 'output' => true, + // Dynamically generate CSS + 'compiler' => true, + // Initiate the compiler hook + 'output_tag' => true, + // Print Output Tag + 'output_location' => array( 'frontend' ), + // Where the dynamic CSS will be added. Can be any combination from: 'frontend', 'login', 'admin' + 'transient_time' => '', + 'default_show' => false, + // If true, it shows the default value + 'default_mark' => '', + // What to print by the field's title if the value shown is default + 'update_notice' => true, + // Recieve an update notice of new commits when in dev mode + 'disable_save_warn' => false, + // Disable the save warn + 'open_expanded' => false, + // Start the panel fully expanded to start with + 'network_admin' => false, + // Enable network admin when using network database mode + 'network_sites' => true, + // Enable sites as well as admin when using network database mode + 'hide_reset' => false, + 'hints' => array( + 'icon' => 'icon-question-sign', + 'icon_position' => 'right', + 'icon_color' => 'lightgray', + 'icon_size' => 'normal', + 'tip_style' => array( + 'color' => 'light', + 'shadow' => true, + 'rounded' => false, + 'style' => '', + ), + 'tip_position' => array( + 'my' => 'top_left', + 'at' => 'bottom_right', + ), + 'tip_effect' => array( + 'show' => array( + 'effect' => 'slide', + 'duration' => '500', + 'event' => 'mouseover', + ), + 'hide' => array( + 'effect' => 'fade', + 'duration' => '500', + 'event' => 'click mouseleave', + ), + ), + ), + 'show_import_export' => true, + 'dev_mode' => false, + 'system_info' => false, + ); + } + + // Fix conflicts with Visual Composer. + public function vc_fixes() { + if ( redux_helpers::isFieldInUse( $this, 'ace_editor' ) ) { + wp_dequeue_script( 'wpb_ace' ); + wp_deregister_script( 'wpb_ace' ); + } + } + + public function network_admin_bar( $wp_admin_bar ) { + + $args = array( + 'id' => $this->args['opt_name'] . '_network_admin', + 'title' => $this->args['menu_title'], + 'parent' => 'network-admin', + 'href' => network_admin_url( 'settings.php' ) . '?page=' . $this->args['page_slug'], + 'meta' => array( 'class' => 'redux-network-admin' ) + ); + $wp_admin_bar->add_node( $args ); + + } + + private function stripslashes_deep( $value ) { + $value = is_array( $value ) ? + array_map( 'stripslashes_deep', $value ) : + stripslashes( $value ); + + return $value; + } + + public function save_network_page() { + + $data = $this->_validate_options( $_POST[ $this->args['opt_name'] ] ); + + if ( ! empty( $data ) ) { + $this->set_options( $data ); + } + + wp_redirect( add_query_arg( array( + 'page' => $this->args['page_slug'], + 'updated' => 'true' + ), network_admin_url( 'settings.php' ) ) ); + exit(); + } + + public function _update_check() { + // Only one notice per instance please + if ( ! isset( $GLOBALS['redux_update_check'] ) ) { + Redux_Functions::updateCheck( self::$_version ); + $GLOBALS['redux_update_check'] = 1; + } + } + + public function _admin_notices() { + Redux_Functions::adminNotices(); + } + + public function _dismiss_admin_notice() { + Redux_Functions::dismissAdminNotice(); + } + + /** + * Load the plugin text domain for translation. + * + * @since 3.0.5 + */ + private function _internationalization() { + + /** + * Locale for text domain + * filter 'redux/textdomain/{opt_name}' + * + * @param string The locale of the blog or from the 'locale' hook + * @param string 'redux-framework' text domain + */ + $locale = apply_filters( "redux/textdomain/{$this->args['opt_name']}", get_locale(), 'redux-framework' ); + + if ( strpos( $locale, '_' ) === false ) { + if ( file_exists( self::$_dir . 'languages/' . strtolower( $locale ) . '_' . strtoupper( $locale ) . '.mo' ) ) { + $locale = strtolower( $locale ) . '_' . strtoupper( $locale ); + } + } + load_textdomain( 'redux-framework', self::$_dir . 'languages/' . $locale . '.mo' ); + } // _internationalization() + + /** + * @return ReduxFramework + */ + public function get_instance() { + //self::$_instance = $this; + return self::$instance; + } // get_instance() + + private function _tracking() { + require_once( dirname( __FILE__ ) . '/inc/tracking.php' ); + $tracking = Redux_Tracking::get_instance(); + $tracking->load( $this ); + } // _tracking() + + /** + * ->_get_default(); This is used to return the default value if default_show is set + * + * @since 1.0.1 + * @access public + * + * @param string $opt_name The option name to return + * @param mixed $default (null) The value to return if default not set + * + * @return mixed $default + */ + public function _get_default( $opt_name, $default = null ) { + if ( $this->args['default_show'] == true ) { + + if ( empty( $this->options_defaults ) ) { + $this->_default_values(); // fill cache + } + + $default = array_key_exists( $opt_name, $this->options_defaults ) ? $this->options_defaults[ $opt_name ] : $default; + } + + return $default; + } // _get_default() + + /** + * ->get(); This is used to return and option value from the options array + * + * @since 1.0.0 + * @access public + * + * @param string $opt_name The option name to return + * @param mixed $default (null) The value to return if option not set + * + * @return mixed + */ + public function get( $opt_name, $default = null ) { + return ( ! empty( $this->options[ $opt_name ] ) ) ? $this->options[ $opt_name ] : $this->_get_default( $opt_name, $default ); + } // get() + + /** + * ->set(); This is used to set an arbitrary option in the options array + * + * @since 1.0.0 + * @access public + * + * @param string $opt_name The name of the option being added + * @param mixed $value The value of the option being added + * + * @return void + */ + public function set( $opt_name = '', $value = '' ) { + if ( $opt_name != '' ) { + $this->options[ $opt_name ] = $value; + $this->set_options( $this->options ); + } + } // set() + + /** + * Set a global variable by the global_variable argument + * + * @since 3.1.5 + * @return bool (global was set) + */ + private function set_global_variable() { + if ( $this->args['global_variable'] ) { + $option_global = $this->args['global_variable']; + /** + * filter 'redux/options/{opt_name}/global_variable' + * + * @param array $value option value to set global_variable with + */ + + $GLOBALS[ $this->args['global_variable'] ] = apply_filters( "redux/options/{$this->args['opt_name']}/global_variable", $this->options ); + if ( isset( $this->transients['last_save'] ) ) { + // Deprecated + $GLOBALS[ $this->args['global_variable'] ]['REDUX_last_saved'] = $this->transients['last_save']; + // Last save key + $GLOBALS[ $this->args['global_variable'] ]['REDUX_LAST_SAVE'] = $this->transients['last_save']; + } + if ( isset( $this->transients['last_compiler'] ) ) { + // Deprecated + $GLOBALS[ $this->args['global_variable'] ]['REDUX_COMPILER'] = $this->transients['last_compiler']; + // Last compiler hook key + $GLOBALS[ $this->args['global_variable'] ]['REDUX_LAST_COMPILER'] = $this->transients['last_compiler']; + } + + return true; + } + + return false; + } // set_global_variable() + + + /** + * ->set_options(); This is used to set an arbitrary option in the options array + * + * @since ReduxFramework 3.0.0 + * + * @param mixed $value the value of the option being added + */ + public function set_options( $value = '' ) { + + $this->transients['last_save'] = time(); + + if ( ! empty( $value ) ) { + $this->options = $value; + + if ( $this->args['database'] === 'transient' ) { + set_transient( $this->args['opt_name'] . '-transient', $value, $this->args['transient_time'] ); + } else if ( $this->args['database'] === 'theme_mods' ) { + set_theme_mod( $this->args['opt_name'] . '-mods', $value ); + } else if ( $this->args['database'] === 'theme_mods_expanded' ) { + foreach ( $value as $k => $v ) { + set_theme_mod( $k, $v ); + } + } else if ( $this->args['database'] === 'network' ) { + // Strip those slashes! + $value = json_decode( stripslashes( json_encode( $value ) ), true ); + update_site_option( $this->args['opt_name'], $value ); + } else { + update_option( $this->args['opt_name'], $value ); + } + + // Store the changed values in the transient + if ( $value != $this->options ) { + foreach ( $value as $k => $v ) { + if ( ! isset( $this->options[ $k ] ) ) { + $this->options[ $k ] = ""; + } else if ( $v == $this->options[ $k ] ) { + unset( $this->options[ $k ] ); + } + } + $this->transients['changed_values'] = $this->options; + } + + $this->options = $value; + + // Set a global variable by the global_variable argument. + $this->set_global_variable(); + + // Saving the transient values + $this->set_transients(); + + //do_action( "redux-saved-{$this->args['opt_name']}", $value ); // REMOVE + //do_action( "redux/options/{$this->args['opt_name']}/saved", $value, $this->transients['changed_values'] ); + + } + } // set_options() + + /** + * ->get_options(); This is used to get options from the database + * + * @since ReduxFramework 3.0.0 + */ + public function get_options() { + $defaults = false; + + if ( ! empty( $this->defaults ) ) { + $defaults = $this->defaults; + } + + if ( $this->args['database'] === "transient" ) { + $result = get_transient( $this->args['opt_name'] . '-transient' ); + } else if ( $this->args['database'] === "theme_mods" ) { + $result = get_theme_mod( $this->args['opt_name'] . '-mods' ); + } else if ( $this->args['database'] === 'theme_mods_expanded' ) { + $result = get_theme_mods(); + } else if ( $this->args['database'] === 'network' ) { + $result = get_site_option( $this->args['opt_name'], array() ); + $result = json_decode( stripslashes( json_encode( $result ) ), true ); + } else { + $result = get_option( $this->args['opt_name'], array() ); + } + + if ( empty( $result ) && ! empty( $defaults ) ) { + $results = $defaults; + $this->set_options( $results ); + } else { + $this->options = $result; + } + + /** + * action 'redux/options/{opt_name}/options' + * + * @param mixed $value option values + */ + $this->options = apply_filters( "redux/options/{$this->args['opt_name']}/options", $this->options ); + + // Get transient values + $this->get_transients(); + + // Set a global variable by the global_variable argument. + $this->set_global_variable(); + } // get_options() + + /** + * ->get_wordpress_date() - Get Wordpress specific data from the DB and return in a usable array + * + * @since ReduxFramework 3.0.0 + */ + public function get_wordpress_data( $type = false, $args = array() ) { + $data = ""; + + /** + * filter 'redux/options/{opt_name}/wordpress_data/{type}/' + * + * @deprecated + * + * @param string $data + */ + $data = apply_filters( "redux/options/{$this->args['opt_name']}/wordpress_data/$type/", $data ); // REMOVE LATER + + /** + * filter 'redux/options/{opt_name}/data/{type}' + * + * @param string $data + */ + $data = apply_filters( "redux/options/{$this->args['opt_name']}/data/$type", $data ); + + $argsKey = ""; + foreach ( $args as $key => $value ) { + if ( ! is_array( $value ) ) { + $argsKey .= $value . "-"; + } else { + $argsKey .= implode( "-", $value ); + } + } + + if ( empty( $data ) && isset( $this->wp_data[ $type . $argsKey ] ) ) { + $data = $this->wp_data[ $type . $argsKey ]; + } + + if ( empty( $data ) && ! empty( $type ) ) { + + /** + * Use data from Wordpress to populate options array + **/ + if ( ! empty( $type ) && empty( $data ) ) { + if ( empty( $args ) ) { + $args = array(); + } + + $data = array(); + $args = wp_parse_args( $args, array() ); + + if ( $type == "categories" || $type == "category" ) { + $cats = get_categories( $args ); + if ( ! empty( $cats ) ) { + foreach ( $cats as $cat ) { + $data[ $cat->term_id ] = $cat->name; + } + //foreach + } // If + } else if ( $type == "menus" || $type == "menu" ) { + $menus = wp_get_nav_menus( $args ); + if ( ! empty( $menus ) ) { + foreach ( $menus as $item ) { + $data[ $item->term_id ] = $item->name; + } + //foreach + } + //if + } else if ( $type == "pages" || $type == "page" ) { + if ( ! isset( $args['posts_per_page'] ) ) { + $args['posts_per_page'] = 20; + } + $pages = get_pages( $args ); + if ( ! empty( $pages ) ) { + foreach ( $pages as $page ) { + $data[ $page->ID ] = $page->post_title; + } + //foreach + } + //if + } else if ( $type == "terms" || $type == "term" ) { + $taxonomies = $args['taxonomies']; + unset( $args['taxonomies'] ); + $terms = get_terms( $taxonomies, $args ); // this will get nothing + if ( ! empty( $terms ) ) { + foreach ( $terms as $term ) { + $data[ $term->term_id ] = $term->name; + } + //foreach + } // If + } else if ( $type == "taxonomy" || $type == "taxonomies" ) { + $taxonomies = get_taxonomies( $args ); + if ( ! empty( $taxonomies ) ) { + foreach ( $taxonomies as $key => $taxonomy ) { + $data[ $key ] = $taxonomy; + } + //foreach + } // If + } else if ( $type == "posts" || $type == "post" ) { + $posts = get_posts( $args ); + if ( ! empty( $posts ) ) { + foreach ( $posts as $post ) { + $data[ $post->ID ] = $post->post_title; + } + //foreach + } + //if + } else if ( $type == "post_type" || $type == "post_types" ) { + global $wp_post_types; + + $defaults = array( + 'public' => true, + 'exclude_from_search' => false, + ); + $args = wp_parse_args( $args, $defaults ); + $output = 'names'; + $operator = 'and'; + $post_types = get_post_types( $args, $output, $operator ); + + ksort( $post_types ); + + foreach ( $post_types as $name => $title ) { + if ( isset( $wp_post_types[ $name ]->labels->menu_name ) ) { + $data[ $name ] = $wp_post_types[ $name ]->labels->menu_name; + } else { + $data[ $name ] = ucfirst( $name ); + } + } + } else if ( $type == "tags" || $type == "tag" ) { // NOT WORKING! + $tags = get_tags( $args ); + if ( ! empty( $tags ) ) { + foreach ( $tags as $tag ) { + $data[ $tag->term_id ] = $tag->name; + } + //foreach + } + //if + } else if ( $type == "menu_location" || $type == "menu_locations" ) { + global $_wp_registered_nav_menus; + + foreach ( $_wp_registered_nav_menus as $k => $v ) { + $data[ $k ] = $v; + } + } else if ( $type == "image_size" || $type == "image_sizes" ) { + global $_wp_additional_image_sizes; + + foreach ( $_wp_additional_image_sizes as $size_name => $size_attrs ) { + $data[ $size_name ] = $size_name . ' - ' . $size_attrs['width'] . ' x ' . $size_attrs['height']; + } + } else if ( $type == "elusive-icons" || $type == "elusive-icon" || $type == "elusive" || + $type == "font-icon" || $type == "font-icons" || $type == "icons" + ) { + + /** + * filter 'redux-font-icons' + * + * @deprecated + * + * @param array $font_icons array of elusive icon classes + */ + $font_icons = apply_filters( 'redux-font-icons', array() ); // REMOVE LATER + + /** + * filter 'redux/font-icons' + * + * @deprecated + * + * @param array $font_icons array of elusive icon classes + */ + $font_icons = apply_filters( 'redux/font-icons', $font_icons ); + + /** + * filter 'redux/{opt_name}/field/font/icons' + * + * @deprecated + * + * @param array $font_icons array of elusive icon classes + */ + $font_icons = apply_filters( "redux/{$this->args['opt_name']}/field/font/icons", $font_icons ); + + foreach ( $font_icons as $k ) { + $data[ $k ] = $k; + } + } else if ( $type == "roles" ) { + /** @global WP_Roles $wp_roles */ + global $wp_roles; + + $data = $wp_roles->get_names(); + } else if ( $type == "sidebars" || $type == "sidebar" ) { + /** @global array $wp_registered_sidebars */ + global $wp_registered_sidebars; + + foreach ( $wp_registered_sidebars as $key => $value ) { + $data[ $key ] = $value['name']; + } + } else if ( $type == "capabilities" ) { + /** @global WP_Roles $wp_roles */ + global $wp_roles; + + foreach ( $wp_roles->roles as $role ) { + foreach ( $role['capabilities'] as $key => $cap ) { + $data[ $key ] = ucwords( str_replace( '_', ' ', $key ) ); + } + } + } else if ( $type == "callback" ) { + if ( ! is_array( $args ) ) { + $args = array( $args ); + } + $data = call_user_func( $args[0] ); + } + //if + } + //if + + $this->wp_data[ $type . $argsKey ] = $data; + } + + //if + + return $data; + } // get_wordpress_data() + + /** + * ->show(); This is used to echo and option value from the options array + * + * @since 1.0.0 + * @access public + * + * @param string $opt_name The name of the option being shown + * @param mixed $default The value to show if $opt_name isn't set + * + * @return void + */ + public function show( $opt_name, $default = '' ) { + $option = $this->get( $opt_name ); + if ( ! is_array( $option ) && $option != '' ) { + echo $option; + } elseif ( $default != '' ) { + echo $this->_get_default( $opt_name, $default ); + } + } // show() + + /** + * Get the default value for an option + * + * @since 3.3.6 + * @access public + * + * @param string $key The option's ID + * @param string $array_key The key of the default's array + * + * @return mixed + */ + public function get_default_value( $key, $array_key = false ) { + if ( empty( $this->options_defaults ) ) { + $this->options_defaults = $this->_default_values(); + } + + $defaults = $this->options_defaults; + $value = ''; + + if ( isset( $defaults[ $key ] ) ) { + if ( $array_key !== false && isset( $defaults[ $key ][ $array_key ] ) ) { + $value = $defaults[ $key ][ $array_key ]; + } else { + $value = $defaults[ $key ]; + } + } + + return $value; + } + + + /** + * Get default options into an array suitable for the settings API + * + * @since 1.0.0 + * @access public + * @return array $this->options_defaults + */ + public function _default_values() { + if ( ! is_null( $this->sections ) && is_null( $this->options_defaults ) ) { + + // fill the cache + foreach ( $this->sections as $sk => $section ) { + if ( ! isset( $section['id'] ) ) { + if ( ! is_numeric( $sk ) || ! isset( $section['title'] ) ) { + $section['id'] = $sk; + } else { + $section['id'] = sanitize_title( $section['title'], $sk ); + } + $this->sections[ $sk ] = $section; + } + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $k => $field ) { + if ( empty( $field['id'] ) && empty( $field['type'] ) ) { + continue; + } + + if ( in_array( $field['type'], array( 'ace_editor' ) ) && isset( $field['options'] ) ) { + $this->sections[ $sk ]['fields'][ $k ]['args'] = $field['options']; + unset( $this->sections[ $sk ]['fields'][ $k ]['options'] ); + } + + if ( $field['type'] == "section" && isset( $field['indent'] ) && $field['indent'] == "true" ) { + $field['class'] = isset( $field['class'] ) ? $field['class'] : ''; + $field['class'] .= "redux-section-indent-start"; + $this->sections[ $sk ]['fields'][ $k ] = $field; + } + // Detect what field types are being used + if ( ! isset( $this->fields[ $field['type'] ][ $field['id'] ] ) ) { + $this->fields[ $field['type'] ][ $field['id'] ] = 1; + } else { + $this->fields[ $field['type'] ] = array( $field['id'] => 1 ); + } + if ( isset( $field['default'] ) ) { + $this->options_defaults[ $field['id'] ] = $field['default']; + } elseif ( isset( $field['options'] ) && ( $field['type'] != "ace_editor" ) ) { + // Sorter data filter + + if ( $field['type'] == "sorter" && isset( $field['data'] ) && ! empty( $field['data'] ) && is_array( $field['data'] ) ) { + if ( ! isset( $field['args'] ) ) { + $field['args'] = array(); + } + foreach ( $field['data'] as $key => $data ) { + if ( ! isset( $field['args'][ $key ] ) ) { + $field['args'][ $key ] = array(); + } + $field['options'][ $key ] = $this->get_wordpress_data( $data, $field['args'][ $key ] ); + } + } + + if ( $field['type'] == "sortable" ) { + $this->options_defaults[ $field['id'] ] = array(); + } elseif ( $field['type'] == "image_select" ) { + $this->options_defaults[ $field['id'] ] = ''; + } else { + $this->options_defaults[ $field['id'] ] = $field['options']; + } + } + } + } + } + } + + /** + * filter 'redux/options/{opt_name}/defaults' + * + * @param array $defaults option default values + */ + $this->transients['changed_values'] = isset( $this->transients['changed_values'] ) ? $this->transients['changed_values'] : array(); + $this->options_defaults = apply_filters( "redux/options/{$this->args['opt_name']}/defaults", $this->options_defaults, $this->transients['changed_values'] ); + + return $this->options_defaults; + } + + /** + * Set default options on admin_init if option doesn't exist + * + * @since 1.0.0 + * @access public + * @return void + */ + private function _default_cleanup() { + + // Fix the global variable name + if ( $this->args['global_variable'] == "" && $this->args['global_variable'] !== false ) { + $this->args['global_variable'] = str_replace( '-', '_', $this->args['opt_name'] ); + } + } + + /** + * Class Add Sub Menu Function, creates options submenu in Wordpress admin area. + * + * @since 3.1.9 + * @access private + * @return void + */ + private function add_submenu( $page_parent, $page_title, $menu_title, $page_permissions, $page_slug ) { + global $submenu; + + // Just in case. One never knows. + $page_parent = strtolower( $page_parent ); + + $test = array( + 'index.php' => 'dashboard', + 'edit.php' => 'posts', + 'upload.php' => 'media', + 'link-manager.php' => 'links', + 'edit.php?post_type=page' => 'pages', + 'edit-comments.php' => 'comments', + 'themes.php' => 'theme', + 'plugins.php' => 'plugins', + 'users.php' => 'users', + 'tools.php' => 'management', + 'options-general.php' => 'options', + ); + + if ( isset( $test[ $page_parent ] ) ) { + $function = 'add_' . $test[ $page_parent ] . '_page'; + $this->page = $function( + $page_title, $menu_title, $page_permissions, $page_slug, array( $this, '_options_page_html' ) + ); + } else { + // Network settings and Post type menus. These do not have + // wrappers and need to be appened to using add_submenu_page. + // Okay, since we've left the post type menu appending + // as default, we need to validate it, so anything that + // isn't post_type= doesn't get through and mess + // things up. + $addMenu = false; + if ( 'settings.php' != $page_parent ) { + // Establish the needle + $needle = '?post_type='; + + // Check if it exists in the page_parent (how I miss instr) + $needlePos = strrpos( $page_parent, $needle ); + + // It's there, so... + if ( $needlePos > 0 ) { + + // Get the post type. + $postType = substr( $page_parent, $needlePos + strlen( $needle ) ); + + // Ensure it exists. + if ( post_type_exists( $postType ) ) { + // Set flag to add the menu page + $addMenu = true; + } + // custom menu + } elseif ( isset( $submenu[ $this->args['page_parent'] ] ) ) { + $addMenu = true; + } + + } else { + // The page_parent was settings.php, so set menu add + // flag to true. + $addMenu = true; + } + // Add the submenu if it's permitted. + if ( true == $addMenu ) { + $this->page = add_submenu_page( + $page_parent, $page_title, $menu_title, $page_permissions, $page_slug, array( + &$this, + '_options_page_html' + ) + ); + } + } + } + + /** + * Class Options Page Function, creates main options page. + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _options_page() { + $this->import_export->in_field(); + + if ( $this->args['menu_type'] == 'submenu' ) { + + remove_menu_page( 'users.php' ); + + add_menu_page( __('Ultimate Member', $this->slug), __('Ultimate Member', $this->slug), 'manage_options', $this->slug, array(&$this, 'admin_page'), 'dashicons-admin-users', '50.78578'); + + add_submenu_page( '_welcome_to_um', __('Welcome to Ultimate Member!', $this->slug), __('Welcome to Ultimate Member!', $this->slug), 'manage_options', $this->slug . '-welcome', array(&$this, 'admin_page') ); + + add_submenu_page( $this->slug, __('Dashboard', $this->slug), __('Dashboard', $this->slug), 'manage_options', $this->slug, array(&$this, 'admin_page') ); + + $this->add_submenu( + $this->args['page_parent'], + $this->args['page_title'], + $this->args['menu_title'], + $this->args['page_permissions'], + $this->args['page_slug'] + ); + + add_submenu_page( $this->slug, __('Forms', $this->slug), __('Forms', $this->slug), 'manage_options', 'edit.php?post_type=um_form', '', '' ); + + add_submenu_page( $this->slug, __('Roles', $this->slug), __('Roles', $this->slug), 'manage_options', 'edit.php?post_type=um_role', '', '' ); + + add_submenu_page( $this->slug, __('Members', $this->slug), __('Members', $this->slug), 'manage_options', 'users.php', '', '' ); + + add_submenu_page( $this->slug, __('Directories', $this->slug), __('Directories', $this->slug), 'manage_options', 'edit.php?post_type=um_directory', '', '' ); + + } else { + $this->page = add_menu_page( + $this->args['page_title'], + $this->args['menu_title'], + $this->args['page_permissions'], + $this->args['page_slug'], + array( &$this, '_options_page_html' ), + $this->args['menu_icon'], + $this->args['page_priority'] + ); + + if ( true === $this->args['allow_sub_menu'] ) { + if ( ! isset( $section['type'] ) || $section['type'] != 'divide' ) { + foreach ( $this->sections as $k => $section ) { + $canBeSubSection = ( $k > 0 && ( ! isset( $this->sections[ ( $k ) ]['type'] ) || $this->sections[ ( $k ) ]['type'] != "divide" ) ) ? true : false; + + if ( ! isset( $section['title'] ) || ( $canBeSubSection && ( isset( $section['subsection'] ) && $section['subsection'] == true ) ) ) { + continue; + } + + if ( isset( $section['submenu'] ) && $section['submenu'] == false ) { + continue; + } + + if ( isset( $section['customizer_only'] ) && $section['customizer_only'] == true ) { + continue; + } + + add_submenu_page( + $this->args['page_slug'], + $section['title'], + $section['title'], + $this->args['page_permissions'], + $this->args['page_slug'] . '&tab=' . $k, + //create_function( '$a', "return null;" ) + '__return_null' + ); + } + + // Remove parent submenu item instead of adding null item. + remove_submenu_page( $this->args['page_slug'], $this->args['page_slug'] ); + } + + if ( true == $this->args['show_import_export'] && false == $this->import_export->is_field ) { + $this->import_export->add_submenu(); + } + + if ( true == $this->args['dev_mode'] ) { + $this->debug->add_submenu(); + } + + if ( true == $this->args['system_info'] ) { + add_submenu_page( + $this->args['page_slug'], + __( 'System Info', 'redux-framework' ), + __( 'System Info', 'redux-framework' ), + $this->args['page_permissions'], + $this->args['page_slug'] . '&tab=system_info_default', + '__return_null' + ); + } + } + } + + add_action( "load-{$this->page}", array( &$this, '_load_page' ) ); + } // _options_page() + + /** + * Add admin bar menu + * + * @since 3.1.5.16 + * @access public + * @global $menu , $submenu, $wp_admin_bar + * @return void + */ + public function _admin_bar_menu() { + global $menu, $submenu, $wp_admin_bar; + + $ct = wp_get_theme(); + $theme_data = $ct; + + if ( ! is_super_admin() || ! is_admin_bar_showing() || ! $this->args['admin_bar'] ) { + return; + } + + if ( $menu ) { + foreach ( $menu as $menu_item ) { + if ( isset( $menu_item[2] ) && $menu_item[2] === $this->args["page_slug"] ) { + + // Fetch the title + $title = empty( $this->args['admin_bar_icon'] ) ? $menu_item[0] : '' . $menu_item[0]; + + $nodeargs = array( + 'id' => $menu_item[2], + 'title' => $title, + 'href' => admin_url( 'admin.php?page=' . $menu_item[2] ), + 'meta' => array() + ); + $wp_admin_bar->add_node( $nodeargs ); + + break; + } + } + + if ( isset( $submenu[ $this->args["page_slug"] ] ) && is_array( $submenu[ $this->args["page_slug"] ] ) ) { + foreach ( $submenu[ $this->args["page_slug"] ] as $index => $redux_options_submenu ) { + $subnodeargs = array( + 'id' => $this->args["page_slug"] . '_' . $index, + 'title' => $redux_options_submenu[0], + 'parent' => $this->args["page_slug"], + 'href' => admin_url( 'admin.php?page=' . $redux_options_submenu[2] ), + ); + + $wp_admin_bar->add_node( $subnodeargs ); + } + } + + // Let's deal with external links + if ( isset( $this->args['admin_bar_links'] ) ) { + + // Group for Main Root Menu (External Group) + $wp_admin_bar->add_node( array( + 'id' => $this->args["page_slug"] . '-external', + 'parent' => $this->args["page_slug"], + 'group' => true, + 'meta' => array( 'class' => 'ab-sub-secondary' ) + ) ); + + // Add Child Menus to External Group Menu + foreach ( $this->args['admin_bar_links'] as $link ) { + if ( ! isset( $link['id'] ) ) { + $link['id'] = $this->args["page_slug"] . '-sub-' . sanitize_html_class( $link['title'] ); + } + $externalnodeargs = array( + 'id' => $link['id'], + 'title' => $link['title'], + 'parent' => $this->args["page_slug"] . '-external', + 'href' => $link['href'], + 'meta' => array( 'target' => '_blank' ) + ); + + $wp_admin_bar->add_node( $externalnodeargs ); + } + } + } else { + // Fetch the title + $title = empty( $this->args['admin_bar_icon'] ) ? $this->args['menu_title'] : '' . $this->args['menu_title']; + + $nodeargs = array( + 'id' => $this->args["page_slug"], + 'title' => $title, + 'href' => admin_url( 'admin.php?page=' . $this->args["page_slug"] ), + 'meta' => array() + ); + + $wp_admin_bar->add_node( $nodeargs ); + } + } // _admin_bar_menu() + + /** + * Output dynamic CSS at bottom of HEAD + * + * @since 3.2.8 + * @access public + * @return void + */ + public function _output_css() { + if ( $this->args['output'] == false && $this->args['compiler'] == false ) { + return; + } + + if ( isset( $this->no_output ) ) { + return; + } + + if ( ! empty( $this->outputCSS ) && ( $this->args['output_tag'] == true || ( isset( $_POST['customized'] ) ) ) ) { + echo ''; + } + } + + /** + * Enqueue CSS and Google fonts for front end + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _enqueue_output() { + if ( $this->args['output'] == false && $this->args['compiler'] == false ) { + return; + } + + /** @noinspection PhpUnusedLocalVariableInspection */ + foreach ( $this->sections as $k => $section ) { + if ( isset( $section['type'] ) && ( $section['type'] == 'divide' ) ) { + continue; + } + + if ( isset( $section['fields'] ) ) { + /** @noinspection PhpUnusedLocalVariableInspection */ + foreach ( $section['fields'] as $fieldk => $field ) { + if ( isset( $field['type'] ) && $field['type'] != "callback" ) { + $field_class = "ReduxFramework_{$field['type']}"; + if ( ! class_exists( $field_class ) ) { + + if ( ! isset( $field['compiler'] ) ) { + $field['compiler'] = ""; + } + + /** + * Field class file + * filter 'redux/{opt_name}/field/class/{field.type} + * + * @param string field class file + * @param array $field field config data + */ + $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); + + if ( $class_file && file_exists( $class_file ) && ! class_exists( $field_class ) ) { + /** @noinspection PhpIncludeInspection */ + require_once( $class_file ); + } + } + + if ( ! empty( $this->options[ $field['id'] ] ) && class_exists( $field_class ) && method_exists( $field_class, 'output' ) && $this->_can_output_css( $field ) ) { + $field = apply_filters( "redux/field/{$this->args['opt_name']}/output_css", $field ); + + if ( ! empty( $field['output'] ) && ! is_array( $field['output'] ) ) { + $field['output'] = array( $field['output'] ); + } + + $value = isset( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : ''; + $enqueue = new $field_class( $field, $value, $this ); + + if ( ( ( isset( $field['output'] ) && ! empty( $field['output'] ) ) || ( isset( $field['compiler'] ) && ! empty( $field['compiler'] ) ) || $field['type'] == "typography" || $field['type'] == "icon_select" ) ) { + $enqueue->output(); + } + } + } + } + } + } + + // For use like in the customizer. Stops the output, but passes the CSS in the variable for the compiler + if ( isset( $this->no_output ) ) { + return; + } + + if ( ! empty( $this->typography ) && ! empty( $this->typography ) && filter_var( $this->args['output'], FILTER_VALIDATE_BOOLEAN ) ) { + $version = ! empty( $this->transients['last_save'] ) ? $this->transients['last_save'] : ''; + $typography = new ReduxFramework_typography( null, null, $this ); + + if ( $this->args['async_typography'] && ! empty( $this->typography ) ) { + $families = array(); + foreach ( $this->typography as $key => $value ) { + $families[] = $key; + } + + ?> + + args['disable_google_fonts_link'] ) { + $protocol = ( ! empty( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ) ? "https:" : "http:"; + + //echo ''; + wp_register_style( 'redux-google-fonts', $protocol . $typography->makeGoogleWebfontLink( $this->typography ), '', $version ); + wp_enqueue_style( 'redux-google-fonts' ); + } + } + + } // _enqueue_output() + + /** + * Enqueue CSS/JS for options page + * + * @since 1.0.0 + * @access public + * @global $wp_styles + * @return void + */ + public function _enqueue() { + global $wp_styles; + + Redux_Functions::$_parent = $this; + $min = Redux_Functions::isMin(); + + // Select2 business. Fields: Background, Border, Dimensions, Select, Slider, Typography + if ( Redux_Helpers::isFieldInUseByType( $this->fields, array( + 'background', + 'border', + 'dimensions', + 'select', + 'select_image', + 'slider', + 'spacing', + 'typography', + 'color_scheme', + 'css_layout' + + ) ) + ) { + + // select2 CSS + wp_register_style( + 'select2-css', + self::$_url . 'assets/js/vendor/select2/select2.css', + array(), + filemtime( self::$_dir . 'assets/js/vendor/select2/select2.css' ), + 'all' + ); + + wp_enqueue_style( 'select2-css' ); + + // JS + wp_register_script( + 'select2-sortable-js', + self::$_url . 'assets/js/vendor/select2.sortable.min.js', + array( 'jquery' ), + filemtime( self::$_dir . 'assets/js/vendor/select2.sortable.min.js' ), + true + ); + + wp_register_script( + 'select2-js', + self::$_url . 'assets/js/vendor/select2/select2.min.js', + array( 'jquery', 'select2-sortable-js' ), + filemtime( self::$_dir . 'assets/js/vendor/select2/select2.min.js' ), + true + ); + + wp_enqueue_script( 'select2-js' ); + } + + wp_register_style( + 'redux-css', + self::$_url . 'assets/css/redux.css', + array( 'farbtastic' ), + filemtime( self::$_dir . 'assets/css/redux.css' ), + 'all' + ); + + wp_register_style( + 'admin-css', + self::$_url . 'assets/css/admin.css', + array( 'farbtastic' ), + filemtime( self::$_dir . 'assets/css/admin.css' ), + 'all' + ); + + wp_register_style( + 'redux-elusive-icon', + self::$_url . 'assets/css/vendor/elusive-icons/elusive-webfont.css', + array(), + filemtime( self::$_dir . 'assets/css/vendor/elusive-icons/elusive-webfont.css' ), + 'all' + ); + + wp_register_style( + 'redux-elusive-icon-ie7', + self::$_url . 'assets/css/vendor/elusive-icons/elusive-webfont-ie7.css', + array(), + filemtime( self::$_dir . 'assets/css/vendor/elusive-icons/elusive-webfont-ie7.css' ), + 'all' + ); + + wp_register_style( + 'qtip-css', + self::$_url . 'assets/css/vendor/qtip/jquery.qtip.css', + array(), + filemtime( self::$_dir . 'assets/css/vendor/qtip/jquery.qtip.css' ), + 'all' + ); + + $wp_styles->add_data( 'redux-elusive-icon-ie7', 'conditional', 'lte IE 7' ); + + /** + * jQuery UI stylesheet src + * filter 'redux/page/{opt_name}/enqueue/jquery-ui-css' + * + * @param string bundled stylesheet src + */ + wp_register_style( + 'jquery-ui-css', + apply_filters( "redux/page/{$this->args['opt_name']}/enqueue/jquery-ui-css", self::$_url . 'assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css' ), + '', + filemtime( self::$_dir . 'assets/css/vendor/jquery-ui-bootstrap/jquery-ui-1.10.0.custom.css' ), // todo - version should be based on above post-filter src + 'all' + ); + + wp_enqueue_style( 'jquery-ui-css' ); + wp_enqueue_style( 'redux-lte-ie8' ); + wp_enqueue_style( 'qtip-css' ); + wp_enqueue_style( 'redux-elusive-icon' ); + wp_enqueue_style( 'redux-elusive-icon-ie7' ); + + if ( is_rtl() ) { + wp_register_style( + 'redux-rtl-css', + self::$_url . 'assets/css/rtl.css', + '', + filemtime( self::$_dir . 'assets/css/rtl.css' ), + 'all' + ); + wp_enqueue_style( 'redux-rtl-css' ); + } + + wp_enqueue_script( 'jquery' ); + wp_enqueue_script( 'jquery-ui-core' ); + wp_enqueue_script( 'jquery-ui-dialog' ); + + // Load jQuery sortable for slides, sorter, sortable and group + if ( Redux_Helpers::isFieldInUseByType( $this->fields, array( + 'slides', + 'sorter', + 'sortable', + 'group' + ) ) + ) { + wp_enqueue_script( 'jquery-ui-sortable' ); + wp_enqueue_style( 'jquery-ui-sortable' ); + } + + // Load jQuery UI Datepicker for date + if ( Redux_Helpers::isFieldInUseByType( $this->fields, array( 'date', 'datetime' ) ) ) { + wp_enqueue_script( 'jquery-ui-datepicker' ); + } + + // Load jQuery UI Accordion for slides and group + if ( Redux_Helpers::isFieldInUseByType( $this->fields, array( 'slides', 'group' ) ) ) { + wp_enqueue_script( 'jquery-ui-accordion' ); + } + + // Load wp-color-picker for color, color_gradient, link_color, border, background and typography + if ( Redux_Helpers::isFieldInUseByType( $this->fields, array( + 'background', + 'color', + 'color_gradient', + 'link_color', + 'border', + 'typography', + 'css_layout' + ) ) + ) { + + wp_enqueue_style( + 'redux-color-picker-css', + self::$_url . 'assets/css/color-picker/color-picker.css', + array( 'wp-color-picker' ), + filemtime( self::$_dir . 'assets/css/color-picker/color-picker.css' ), + 'all' + ); + + wp_enqueue_style( 'color-picker-css' ); + + + wp_enqueue_script( 'wp-color-picker' ); + wp_enqueue_style( 'wp-color-picker' ); + } + + if ( function_exists( 'wp_enqueue_media' ) ) { + wp_enqueue_media(); + } else { + wp_enqueue_script( 'media-upload' ); + } + + add_thickbox(); + + wp_register_script( + 'qtip-js', + self::$_url . 'assets/js/vendor/qtip/jquery.qtip.js', + array( 'jquery' ), + '2.2.0', + true + ); + + wp_register_script( + 'serializeForm-js', + self::$_url . 'assets/js/vendor/jquery.serializeForm.js', + array( 'jquery' ), + '1.0.0', + true + ); + + // Embed the compress version unless in dev mode + // dev_mode = true + if ( isset( $this->args['dev_mode'] ) && $this->args['dev_mode'] == true ) { + wp_enqueue_style( 'admin-css' ); + wp_register_script( + 'redux-vendor', + self::$_url . 'assets/js/vendor.min.js', + array( 'jquery' ), + filemtime( self::$_dir . 'assets/js/vendor.min.js' ), + true + ); + + // dev_mode - false + } else { + wp_enqueue_style( 'redux-css' ); + } + + $depArray = array( 'jquery', 'qtip-js', 'serializeForm-js', ); + + if ( true == $this->args['dev_mode'] ) { + array_push( $depArray, 'redux-vendor' ); + } + + wp_register_script( + 'redux-js', + self::$_url . 'assets/js/redux' . $min . '.js', + $depArray, + filemtime( self::$_dir . 'assets/js/redux' . $min . '.js' ), + true + ); + + foreach ( $this->sections as $section ) { + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $field ) { + // TODO AFTER GROUP WORKS - Revert IF below + // if( isset( $field['type'] ) && $field['type'] != 'callback' ) { + if ( isset( $field['type'] ) && $field['type'] != 'callback' ) { + + $field_class = 'ReduxFramework_' . $field['type']; + + /** + * Field class file + * filter 'redux/{opt_name}/field/class/{field.type} + * + * @param string field class file path + * @param array $field field config data + */ + $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); + if ( $class_file ) { + if ( ! class_exists( $field_class ) ) { + if ( file_exists( $class_file ) ) { + require_once( $class_file ); + } + } + + if ( ( method_exists( $field_class, 'enqueue' ) ) || method_exists( $field_class, 'localize' ) ) { + if ( ! isset( $this->options[ $field['id'] ] ) ) { + $this->options[ $field['id'] ] = ""; + } + $theField = new $field_class( $field, $this->options[ $field['id'] ], $this ); + + // Move dev_mode check to a new if/then block + if ( ! wp_script_is( 'redux-field-' . $field['type'] . '-js', 'enqueued' ) && class_exists( $field_class ) && method_exists( $field_class, 'enqueue' ) ) { + + // Checking for extension field AND dev_mode = false OR dev_mode = true + // Since extension fields use 'extension_dir' exclusively, we can detect them here. + // Also checking for dev_mode = true doesn't mess up the JS combinine. + //if ( /*$this->args['dev_mode'] === false && */ isset($theField->extension_dir) && (!'' == $theField->extension_dir) /* || ($this->args['dev_mode'] === true) */) { + $theField->enqueue(); + //} + } + + if ( method_exists( $field_class, 'localize' ) ) { + $params = $theField->localize( $field ); + if ( ! isset( $this->localize_data[ $field['type'] ] ) ) { + $this->localize_data[ $field['type'] ] = array(); + } + $this->localize_data[ $field['type'] ][ $field['id'] ] = $theField->localize( $field ); + } + + unset( $theField ); + } + } + } + } + } + } + + $this->localize_data['required'] = $this->required; + $this->localize_data['fonts'] = $this->fonts; + $this->localize_data['required_child'] = $this->required_child; + $this->localize_data['fields'] = $this->fields; + + if ( isset( $this->font_groups['google'] ) ) { + $this->localize_data['googlefonts'] = $this->font_groups['google']; + } + + if ( isset( $this->font_groups['std'] ) ) { + $this->localize_data['stdfonts'] = $this->font_groups['std']; + } + + if ( isset( $this->font_groups['customfonts'] ) ) { + $this->localize_data['customfonts'] = $this->font_groups['customfonts']; + } + + $this->localize_data['folds'] = $this->folds; + + // Make sure the children are all hidden properly. + foreach ( $this->fields as $key => $value ) { + if ( in_array( $key, $this->fieldsHidden ) ) { + foreach ( $value as $k => $v ) { + if ( ! in_array( $k, $this->fieldsHidden ) ) { + $this->fieldsHidden[] = $k; + $this->folds[ $k ] = "hide"; + } + } + } + } + + if ( isset( $this->args['dev_mode'] ) && $this->args['dev_mode'] == true ) { + + $base = admin_url('admin-ajax.php') . '?action=redux_p&url='; + $url = $base . urlencode( 'http://ads.reduxframework.com/api/index.php?js&g&1&v=2' ) . '&proxy=' . urlencode( $base ); + $this->localize_data['rAds'] = ''; + } + + $this->localize_data['fieldsHidden'] = $this->fieldsHidden; + $this->localize_data['options'] = $this->options; + $this->localize_data['defaults'] = $this->options_defaults; + + /** + * Save pending string + * filter 'redux/{opt_name}/localize/save_pending + * + * @param string save_pending string + */ + $save_pending = apply_filters( "redux/{$this->args['opt_name']}/localize/save_pending", __( 'You have changes that are not saved. Would you like to save them now?', 'redux-framework' ) ); + + /** + * Reset all string + * filter 'redux/{opt_name}/localize/reset + * + * @param string reset all string + */ + $reset_all = apply_filters( "redux/{$this->args['opt_name']}/localize/reset", __( 'Are you sure? Resetting will lose all custom values.', 'redux-framework' ) ); + + /** + * Reset section string + * filter 'redux/{opt_name}/localize/reset_section + * + * @param string reset section string + */ + $reset_section = apply_filters( "redux/{$this->args['opt_name']}/localize/reset_section", __( 'Are you sure? Resetting will lose all custom values in this section.', 'redux-framework' ) ); + + /** + * Preset confirm string + * filter 'redux/{opt_name}/localize/preset + * + * @param string preset confirm string + */ + $preset_confirm = apply_filters( "redux/{$this->args['opt_name']}/localize/preset", __( 'Your current options will be replaced with the values of this preset. Would you like to proceed?', 'redux-framework' ) ); + global $pagenow; + $this->localize_data['args'] = array( + 'save_pending' => $save_pending, + 'reset_confirm' => $reset_all, + 'reset_section_confirm' => $reset_section, + 'preset_confirm' => $preset_confirm, + 'please_wait' => __( 'Please Wait', 'redux-framework' ), + 'opt_name' => $this->args['opt_name'], + 'slug' => $this->args['page_slug'], + 'hints' => $this->args['hints'], + 'disable_save_warn' => $this->args['disable_save_warn'], + 'class' => $this->args['class'], + 'menu_search' => $pagenow . '?page=' . $this->args['page_slug'] . "&tab=" + ); + + // Construct the errors array. + if ( isset( $this->transients['last_save_mode'] ) && ! empty( $this->transients['notices']['errors'] ) ) { + $theTotal = 0; + $theErrors = array(); + + foreach ( $this->transients['notices']['errors'] as $error ) { + $theErrors[ $error['section_id'] ]['errors'][] = $error; + + if ( ! isset( $theErrors[ $error['section_id'] ]['total'] ) ) { + $theErrors[ $error['section_id'] ]['total'] = 0; + } + + $theErrors[ $error['section_id'] ]['total'] ++; + $theTotal ++; + } + + $this->localize_data['errors'] = array( 'total' => $theTotal, 'errors' => $theErrors ); + unset( $this->transients['notices']['errors'] ); + } + + // Construct the warnings array. + if ( isset( $this->transients['last_save_mode'] ) && ! empty( $this->transients['notices']['warnings'] ) ) { + $theTotal = 0; + $theWarnings = array(); + + foreach ( $this->transients['notices']['warnings'] as $warning ) { + $theWarnings[ $warning['section_id'] ]['warnings'][] = $warning; + + if ( ! isset( $theWarnings[ $warning['section_id'] ]['total'] ) ) { + $theWarnings[ $warning['section_id'] ]['total'] = 0; + } + + $theWarnings[ $warning['section_id'] ]['total'] ++; + $theTotal ++; + } + + unset( $this->transients['notices']['warnings'] ); + $this->localize_data['warnings'] = array( 'total' => $theTotal, 'warnings' => $theWarnings ); + } + + if ( empty( $this->transients['notices'] ) ) { + unset( $this->transients['notices'] ); + } + + // Values used by the javascript + wp_localize_script( + 'redux-js', + 'redux', + $this->localize_data + ); + + wp_enqueue_script( 'redux-js' ); // Enque the JS now + + wp_enqueue_script( + 'webfontloader', + 'https://ajax.googleapis.com/ajax/libs/webfont/1.5.0/webfont.js', + array( 'jquery' ), + '1.5.0', + true + ); + + /** + * action 'redux-enqueue-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux-enqueue-{$this->args['opt_name']}", $this ); // REMOVE + + /** + * action 'redux/page/{opt_name}/enqueue' + */ + do_action( "redux/page/{$this->args['opt_name']}/enqueue" ); + } // _enqueue() + + /** + * Show page help + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _load_page() { + + // Do admin head action for this page + add_action( 'admin_head', array( &$this, 'admin_head' ) ); + + // Do admin footer text hook + add_filter( 'admin_footer_text', array( &$this, 'admin_footer_text' ) ); + + $screen = get_current_screen(); + + if ( is_array( $this->args['help_tabs'] ) ) { + foreach ( $this->args['help_tabs'] as $tab ) { + $screen->add_help_tab( $tab ); + } + } + + // If hint argument is set, display hint tab + if ( true == $this->show_hints ) { + global $current_user; + + // Users enable/disable hint choice + $hint_status = get_user_meta( $current_user->ID, 'ignore_hints' ) ? get_user_meta( $current_user->ID, 'ignore_hints', true ) : 'true'; + + // current page parameters + $curPage = $_GET['page']; + + $curTab = '0'; + if ( isset( $_GET['tab'] ) ) { + $curTab = $_GET['tab']; + } + + // Default url values for enabling hints. + $dismiss = 'true'; + $s = __( 'Enable', 'redux-framework' ); + + // Values for disabling hints. + if ( 'true' == $hint_status ) { + $dismiss = 'false'; + $s = __( 'Disable', 'redux-framework' ); + } + + // Make URL + $url = '' . $s . ' hints'; + + $event = __( 'moving the mouse over', 'redux-framework' ); + if ( 'click' == $this->args['hints']['tip_effect']['show']['event'] ) { + $event = __( 'clicking', 'redux-framework' ); + } + + // Construct message + $msg = sprintf( __( 'Hints are tooltips that popup when %d the hint icon, offering addition information about the field in which they appear. They can be %d d by using the link below.', 'redux-framework' ), $event, strtolower( $s ) ) . '

    ' . $url; + + // Construct hint tab + $tab = array( + 'id' => 'redux-hint-tab', + 'title' => __( 'Hints', 'redux-framework' ), + 'content' => '

    ' . $msg . '

    ' + ); + + $screen->add_help_tab( $tab ); + } + + // Sidebar text + if ( $this->args['help_sidebar'] != '' ) { + + // Specify users text from arguments + $screen->set_help_sidebar( $this->args['help_sidebar'] ); + } else { + + // If sidebar text is empty and hints are active, display text + // about hints. + if ( true == $this->show_hints ) { + $screen->set_help_sidebar( '

    Redux Framework

    Hint Tooltip Preferences

    ' ); + } + } + + /** + * action 'redux-load-page-{opt_name}' + * + * @deprecated + * + * @param object $screen WP_Screen + */ + do_action( "redux-load-page-{$this->args['opt_name']}", $screen ); // REMOVE + + /** + * action 'redux/page/{opt_name}/load' + * + * @param object $screen WP_Screen + */ + do_action( "redux/page/{$this->args['opt_name']}/load", $screen ); + + } // _load_page() + + /** + * Do action redux-admin-head for options page + * + * @since 1.0.0 + * @access public + * @return void + */ + public function admin_head() { + /** + * action 'redux-admin-head-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux-admin-head-{$this->args['opt_name']}", $this ); // REMOVE + + /** + * action 'redux/page/{opt_name}/header' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->args['opt_name']}/header", $this ); + } // admin_head() + + /** + * Return footer text + * + * @since 2.0.0 + * @access public + * @return string $this->args['footer_credit'] + */ + public function admin_footer_text() { + return $this->args['footer_credit']; + } // admin_footer_text() + + /** + * Return default output string for use in panel + * + * @since 3.1.5 + * @access public + * @return string default_output + */ + private function get_default_output_string( $field ) { + $default_output = ""; + + if ( ! isset( $field['default'] ) ) { + $field['default'] = ""; + } + + if ( ! is_array( $field['default'] ) ) { + if ( ! empty( $field['options'][ $field['default'] ] ) ) { + if ( ! empty( $field['options'][ $field['default'] ]['alt'] ) ) { + $default_output .= $field['options'][ $field['default'] ]['alt'] . ', '; + } else { + // TODO: This serialize fix may not be the best solution. Look into it. PHP 5.4 error without serialize + if ( ! is_array( $field['options'][ $field['default'] ] ) ) { + $default_output .= $field['options'][ $field['default'] ] . ", "; + } else { + $default_output .= serialize( $field['options'][ $field['default'] ] ) . ", "; + } + } + } else if ( ! empty( $field['options'][ $field['default'] ] ) ) { + $default_output .= $field['options'][ $field['default'] ] . ", "; + } else if ( ! empty( $field['default'] ) ) { + if ( $field['type'] == 'switch' && isset( $field['on'] ) && isset( $field['off'] ) ) { + $default_output .= ( $field['default'] == 1 ? $field['on'] : $field['off'] ) . ', '; + } else { + $default_output .= $field['default'] . ', '; + } + } + } else { + foreach ( $field['default'] as $defaultk => $defaultv ) { + if ( ! empty( $field['options'][ $defaultv ]['alt'] ) ) { + $default_output .= $field['options'][ $defaultv ]['alt'] . ', '; + } else if ( ! empty( $field['options'][ $defaultv ] ) ) { + $default_output .= $field['options'][ $defaultv ] . ", "; + } else if ( ! empty( $field['options'][ $defaultk ] ) ) { + $default_output .= $field['options'][ $defaultk ] . ", "; + } else if ( ! empty( $defaultv ) ) { + $default_output .= $defaultv . ', '; + } + } + } + + if ( ! empty( $default_output ) ) { + $default_output = __( 'Default', 'redux-framework' ) . ": " . substr( $default_output, 0, - 2 ); + } + + if ( ! empty( $default_output ) ) { + $default_output = '' . $default_output . '
    '; + } + + return $default_output; + } // get_default_output_string() + + public function get_header_html( $field ) { + global $current_user; + + // Set to empty string to avoid wanrings. + $hint = ''; + $th = ""; + + if ( isset( $field['title'] ) && isset( $field['type'] ) && $field['type'] !== "info" && $field['type'] !== "section" ) { + $default_mark = ( ! empty( $field['default'] ) && isset( $this->options[ $field['id'] ] ) && $this->options[ $field['id'] ] == $field['default'] && ! empty( $this->args['default_mark'] ) && isset( $field['default'] ) ) ? $this->args['default_mark'] : ''; + + // If a hint is specified in the field, process it. + if ( isset( $field['hint'] ) && ! '' == $field['hint'] ) { + + // Set show_hints flag to true, so helptab will be displayed. + $this->show_hints = true; + + // Get user pref for displaying hints. + $metaVal = get_user_meta( $current_user->ID, 'ignore_hints', true ); + if ( 'true' == $metaVal || empty( $metaVal ) ) { + + // Set hand cursor for clickable hints + $pointer = ''; + if ( isset( $this->args['hints']['tip_effect']['show']['event'] ) && 'click' == $this->args['hints']['tip_effect']['show']['event'] ) { + $pointer = 'pointer'; + } + + $size = '16px'; + if ( 'large' == $this->args['hints']['icon_size'] ) { + $size = '18px'; + } + + // In case docs are ignored. + $contentParam = isset( $field['hint'] ) ? $field['hint'] : ''; + + $hint_color = isset( $this->args['hints']['icon_color'] ) ? $this->args['hints']['icon_color'] : '#d3d3d3'; + + // Set hint html with appropriate position css + $hint = ''; + $hint .= ''; + $hint .= ''; + + } + } + + if ( ! empty( $field['title'] ) ) { + if ( 'left' == $this->args['hints']['icon_position'] ) { + $th = $hint . $field['title'] . $default_mark . ""; + } else { + $th = $field['title'] . $default_mark . "" . $hint; + } + } + + if ( isset( $field['subtitle'] ) ) { + $th .= '' . $field['subtitle'] . ''; + } + } + + if ( ! empty( $th ) ) { + $th = '
    ' . $th . '
    '; + } + + if ( $this->args['default_show'] === true && isset( $field['default'] ) && isset( $this->options[ $field['id'] ] ) && $this->options[ $field['id'] ] != $field['default'] && $field['type'] !== "info" && $field['type'] !== "group" && $field['type'] !== "section" && $field['type'] !== "editor" && $field['type'] !== "ace_editor" ) { + $th .= $this->get_default_output_string( $field ); + } + + return $th; + } + + + /** + * Register Option for use + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _register_settings() { + + // TODO - REMOVE + // Not used by new sample-config, but in here for legacy builds + // This is bad and can break things. Hehe. + if ( ! function_exists( 'wp_get_current_user' ) ) { + include( ABSPATH . "wp-includes/pluggable.php" ); + } + + register_setting( $this->args['opt_name'] . '_group', $this->args['opt_name'], array( + $this, + '_validate_options' + ) ); + + if ( is_null( $this->sections ) ) { + return; + } + + $this->options_defaults = $this->_default_values(); + + $runUpdate = false; + + foreach ( $this->sections as $k => $section ) { + if ( isset( $section['type'] ) && $section['type'] == 'divide' ) { + continue; + } + + $display = true; + + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset( $section['panel'] ) && $section['panel'] == false ) { + $display = false; + } + } + + + // DOVY! Replace $k with $section['id'] when ready + /** + * filter 'redux-section-{index}-modifier-{opt_name}' + * + * @param array $section section configuration + */ + $section = apply_filters( "redux-section-{$k}-modifier-{$this->args['opt_name']}", $section ); + + /** + * filter 'redux/options/{opt_name}/section/{section.id}' + * + * @param array $section section configuration + */ + if ( isset( $section['id'] ) ) { + $section = apply_filters( "redux/options/{$this->args['opt_name']}/section/{$section['id']}", $section ); + } + + if ( ! isset( $section['title'] ) ) { + $section['title'] = ""; + } + + $heading = isset( $section['heading'] ) ? $section['heading'] : null; + + if ( isset( $section['permissions'] ) ) { + if ( ! current_user_can( $section['permissions'] ) ) { + $this->hidden_perm_sections[] = $section['title']; + + foreach ( $section['fields'] as $num => $field_data ) { + $field_type = $field_data['type']; + + if ( $field_type != 'section' || $field_type != 'divide' || $field_type != 'info' || $field_type != 'raw' ) { + $field_id = $field_data['id']; + $default = isset( $this->options_defaults[ $field_id ] ) ? $this->options_defaults[ $field_id ] : ''; + $data = isset( $this->options[ $field_id ] ) ? $this->options[ $field_id ] : $default; + + $this->hidden_perm_fields[ $field_id ] = $data; + } + } + + continue; + } + } + + if ( ! $display ) { + $this->no_panel_section[ $k ] = $section; + } else { + add_settings_section( $this->args['opt_name'] . $k . '_section', $heading, array( + &$this, + '_section_desc' + ), $this->args['opt_name'] . $k . '_section_group' ); + } + + $sectionIndent = false; + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $fieldk => $field ) { + if ( ! isset( $field['type'] ) ) { + continue; // You need a type! + } + + /** + * filter 'redux/options/{opt_name}/field/{field.id}' + * + * @param array $field field config + */ + $field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}/register", $field ); + + $display = true; + + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset( $field['panel'] ) && $field['panel'] == false ) { + $display = false; + } + } + if ( isset( $field['customizer_only'] ) && $field['customizer_only'] == true ) { + //$display = false; + } + + + // TODO AFTER GROUP WORKS - Remove IF statement +// if ( $field['type'] == "group" && isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { +// if ( $this->args['dev_mode'] ) { +// $this->admin_notices[] = array( +// 'type' => 'error', +// 'msg' => 'The group field has been removed while we retool it for improved performance.', +// 'id' => 'group_err', +// 'dismiss' => true, +// ); +// } +// continue; // Disabled for now +// } + + + if ( isset( $field['permissions'] ) ) { + + if ( ! current_user_can( $field['permissions'] ) ) { + $data = isset( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : $this->options_defaults[ $field['id'] ]; + + $this->hidden_perm_fields[ $field['id'] ] = $data; + + continue; + } + } + + if ( ! isset( $field['id'] ) ) { + echo '

    No field ID is set.

    ';
    +                                print_r( $field );
    +                                echo "

    "; + continue; + } + + if ( isset( $field['type'] ) && $field['type'] == "section" ) { + if ( isset( $field['indent'] ) && $field['indent'] == true ) { + $sectionIndent = true; + } else { + $sectionIndent = false; + } + } + + if ( isset( $field['type'] ) && $field['type'] == "info" && $sectionIndent ) { + $field['indent'] = $sectionIndent; + } + + $th = $this->get_header_html( $field ); + + $field['name'] = $this->args['opt_name'] . '[' . $field['id'] . ']'; + + // Set the default value if present + $this->options_defaults[ $field['id'] ] = isset( $this->options_defaults[ $field['id'] ] ) ? $this->options_defaults[ $field['id'] ] : ''; + + // Set the defaults to the value if not present + $doUpdate = false; + + // Check fields for values in the default parameter + if ( ! isset( $this->options[ $field['id'] ] ) && isset( $field['default'] ) ) { + $this->options_defaults[ $field['id'] ] = $this->options[ $field['id'] ] = $field['default']; + $doUpdate = true; + + // Check fields that hae no default value, but an options value with settings to + // be saved by default + } elseif ( ! isset( $this->options[ $field['id'] ] ) && isset( $field['options'] ) ) { + + // If sorter field, check for options as save them as defaults + if ( $field['type'] == 'sorter' || $field['type'] == 'sortable' ) { + $this->options_defaults[ $field['id'] ] = $this->options[ $field['id'] ] = $field['options']; + $doUpdate = true; + } + } + + // CORRECT URLS if media URLs are wrong, but attachment IDs are present. + if ( $field['type'] == "media" ) { + if ( isset( $this->options[ $field['id'] ]['id'] ) && isset( $this->options[ $field['id'] ]['url'] ) && ! empty( $this->options[ $field['id'] ]['url'] ) && strpos( $this->options[ $field['id'] ]['url'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { + $data = wp_get_attachment_url( $this->options[ $field['id'] ]['id'] ); + + if ( isset( $data ) && ! empty( $data ) ) { + $this->options[ $field['id'] ]['url'] = $data; + $data = wp_get_attachment_image_src( $this->options[ $field['id'] ]['id'], array( + 150, + 150 + ) ); + $this->options[ $field['id'] ]['thumbnail'] = $data[0]; + $doUpdate = true; + } + } + } + + if ( $field['type'] == "background" ) { + if ( isset( $this->options[ $field['id'] ]['media']['id'] ) && isset( $this->options[ $field['id'] ]['background-image'] ) && ! empty( $this->options[ $field['id'] ]['background-image'] ) && strpos( $this->options[ $field['id'] ]['background-image'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { + $data = wp_get_attachment_url( $this->options[ $field['id'] ]['media']['id'] ); + + if ( isset( $data ) && ! empty( $data ) ) { + $this->options[ $field['id'] ]['background-image'] = $data; + $data = wp_get_attachment_image_src( $this->options[ $field['id'] ]['media']['id'], array( + 150, + 150 + ) ); + $this->options[ $field['id'] ]['media']['thumbnail'] = $data[0]; + $doUpdate = true; + } + } + } + + if ( $field['type'] == "slides" ) { + if ( isset( $this->options[ $field['id'] ][0]['attachment_id'] ) && isset( $this->options[ $field['id'] ][0]['image'] ) && ! empty( $this->options[ $field['id'] ][0]['image'] ) && strpos( $this->options[ $field['id'] ][0]['image'], str_replace( 'http://', '', WP_CONTENT_URL ) ) === false ) { + foreach ( $this->options[ $field['id'] ] as $k => $v ) { + $data = wp_get_attachment_url( $v['attachment_id'] ); + + if ( isset( $data ) && ! empty( $data ) ) { + $this->options[ $field['id'] ][ $k ]['image'] = $data; + $data = wp_get_attachment_image_src( $v['attachment_id'], array( + 150, + 150 + ) ); + $this->options[ $field['id'] ][ $k ]['thumb'] = $data[0]; + $doUpdate = true; + } + } + } + } + // END -> CORRECT URLS if media URLs are wrong, but attachment IDs are present. + + if ( true == $doUpdate && ! isset( $this->never_save_to_db ) ) { + if ( $this->args['save_defaults'] ) { // Only save that to the DB if allowed to + $runUpdate = true; + } + // elseif($this->saved != '' && $this->saved != false) { + // $runUpdate = true; + //} + } + + if ( ! isset( $field['class'] ) ) { // No errors please + $field['class'] = ""; + } + $id = $field['id']; + + /** + * filter 'redux-field-{field.id}modifier-{opt_name}' + * + * @deprecated + * + * @param array $field field config + */ + $field = apply_filters( "redux-field-{$field['id']}modifier-{$this->args['opt_name']}", $field ); // REMOVE LATER + + /** + * filter 'redux/options/{opt_name}/field/{field.id}' + * + * @param array $field field config + */ + $field = apply_filters( "redux/options/{$this->args['opt_name']}/field/{$field['id']}", $field ); + + if ( empty( $field ) || ! $field || $field == false ) { + unset( $this->sections[ $k ]['fields'][ $fieldk ] ); + continue; + } + + if ( ! empty( $this->folds[ $field['id'] ]['parent'] ) ) { // This has some fold items, hide it by default + $field['class'] .= " fold"; + } + + if ( ! empty( $this->folds[ $field['id'] ]['children'] ) ) { // Sets the values you shoe fold children on + $field['class'] .= " foldParent"; + } + + if ( ! empty( $field['compiler'] ) ) { + $field['class'] .= " compiler"; + $this->compiler_fields[ $field['id'] ] = 1; + } + + if ( isset( $field['unit'] ) && ! isset( $field['units'] ) ) { + $field['units'] = $field['unit']; + unset( $field['unit'] ); + } + + $this->sections[ $k ]['fields'][ $fieldk ] = $field; + + if ( isset( $this->args['display_source'] ) ) { + $th .= ''; + $th .= '
    View Source'; + } + + /** + * action 'redux/options/{opt_name}/field/field.type}/register' + */ + do_action( "redux/options/{$this->args['opt_name']}/field/{$field['type']}/register", $field ); + + $this->check_dependencies( $field ); + + if ( ! $display || isset( $this->no_panel_section[ $k ] ) ) { + $this->no_panel[] = $field['id']; + } else { + add_settings_field( + "{$fieldk}_field", + $th, + array( &$this, '_field_input' ), + "{$this->args['opt_name']}{$k}_section_group", + "{$this->args['opt_name']}{$k}_section", + $field + ); // checkbox + } + } + } + } + + /** + * action 'redux-register-settings-{opt_name}' + * + * @deprecated + */ + do_action( "redux-register-settings-{$this->args['opt_name']}" ); // REMOVE + + /** + * action 'redux/options/{opt_name}/register' + * + * @param array option sections + */ + do_action( "redux/options/{$this->args['opt_name']}/register", $this->sections ); + + if ( $runUpdate && ! isset( $this->never_save_to_db ) ) { // Always update the DB with new fields + $this->set_options( $this->options ); + } + + if ( isset( $this->transients['run_compiler'] ) && $this->transients['run_compiler'] ) { + $this->args['output_tag'] = false; + $this->_enqueue_output(); + + + /** + * action 'redux-compiler-{opt_name}' + * + * @deprecated + * + * @param array options + * @param string CSS that get sent to the compiler hook + */ + do_action( "redux-compiler-{$this->args['opt_name']}", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); // REMOVE + + /** + * action 'redux/options/{opt_name}/compiler' + * + * @param array options + * @param string CSS that get sent to the compiler hook + */ + do_action( "redux/options/{$this->args['opt_name']}/compiler", $this->options, $this->compilerCSS, $this->transients['changed_values'] ); + + /** + * action 'redux/options/{opt_name}/compiler/advanced' + * + * @param array options + * @param string CSS that get sent to the compiler hook, which sends the full Redux object + */ + do_action( "redux/options/{$this->args['opt_name']}/compiler/advanced", $this ); + + unset( $this->transients['run_compiler'] ); + $this->set_transients(); + } + } // _register_settings() + + /** + * Register Extensions for use + * + * @since 3.0.0 + * @access public + * @return void + */ + private function _register_extensions() { + $path = dirname( __FILE__ ) . '/extensions/'; + $folders = scandir( $path, 1 ); + + /** + * action 'redux/extensions/{opt_name}/before' + * + * @param object $this ReduxFramework + */ + do_action( "redux/extensions/{$this->args['opt_name']}/before", $this ); + + foreach ( $folders as $folder ) { + if ( $folder === '.' || $folder === '..' || ! is_dir( $path . $folder ) || substr( $folder, 0, 1 ) === '.' || substr( $folder, 0, 1 ) === '@' ) { + continue; + } + + $extension_class = 'ReduxFramework_Extension_' . $folder; + + /** + * filter 'redux-extensionclass-load' + * + * @deprecated + * + * @param string extension class file path + * @param string $extension_class extension class name + */ + $class_file = apply_filters( "redux-extensionclass-load", "$path/$folder/extension_{$folder}.php", $extension_class ); // REMOVE LATER + + /** + * filter 'redux/extension/{opt_name}/{folder}' + * + * @param string extension class file path + * @param string $extension_class extension class name + */ + $class_file = apply_filters( "redux/extension/{$this->args['opt_name']}/$folder", "$path/$folder/extension_{$folder}.php", $class_file ); + + if ( $class_file ) { + if ( file_exists( $class_file ) ) { + require_once( $class_file ); + } + + $this->extensions[ $folder ] = new $extension_class( $this ); + } + + } + + /** + * action 'redux-register-extensions-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux-register-extensions-{$this->args['opt_name']}", $this ); // REMOVE + + /** + * action 'redux/extensions/{opt_name}' + * + * @param object $this ReduxFramework + */ + do_action( "redux/extensions/{$this->args['opt_name']}", $this ); + } + + private function get_transients() { + if ( ! isset( $this->transients ) ) { + $this->transients = get_option( $this->args['opt_name'] . '-transients', array() ); + $this->transients_check = $this->transients; + } + } + + private function set_transients() { + if ( ! isset( $this->transients ) || ! isset( $this->transients_check ) || $this->transients != $this->transients_check ) { + update_option( $this->args['opt_name'] . '-transients', $this->transients ); + $this->transients_check = $this->transients; + } + } + + /** + * Validate the Options options before insertion + * + * @since 3.0.0 + * @access public + * + * @param array $plugin_options The options array + * + * @return array|mixed|string|void + */ + public function _validate_options( $plugin_options ) { + + // Save the values not in the panel + if ( isset( $plugin_options['redux-no_panel'] ) ) { + $keys = explode( '|', $plugin_options['redux-no_panel'] ); + foreach ( $keys as $key ) { + $plugin_options[ $key ] = $this->options[ $key ]; + } + unset( $plugin_options['redux-no_panel'] ); + } + + if ( ! empty( $this->hidden_perm_fields ) && is_array( $this->hidden_perm_fields ) ) { + foreach ( $this->hidden_perm_fields as $id => $data ) { + $plugin_options[ $id ] = $data; + } + } + + if ( $plugin_options == $this->options ) { + return $plugin_options; + } + + $time = time(); + + // Sets last saved time + $this->transients['last_save'] = $time; + + // Import + if ( ! empty( $plugin_options['import'] ) ) { + $this->transients['last_save_mode'] = "import"; // Last save mode + $this->transients['last_compiler'] = $time; + $this->transients['last_import'] = $time; + $this->transients['run_compiler'] = 1; + + if ( $plugin_options['import_code'] != '' ) { + $import = $plugin_options['import_code']; + } elseif ( $plugin_options['import_link'] != '' ) { + $import = wp_remote_retrieve_body( wp_remote_get( $plugin_options['import_link'] ) ); + } + + if ( ! empty( $import ) ) { + $imported_options = json_decode( $import, true ); + } + + if ( ! empty( $imported_options ) && is_array( $imported_options ) && isset( $imported_options['redux-backup'] ) && $imported_options['redux-backup'] == '1' ) { + + $this->transients['changed_values'] = array(); + foreach ( $plugin_options as $key => $value ) { + if ( isset( $imported_options[ $key ] ) && $imported_options[ $key ] != $value ) { + $this->transients['changed_values'][ $key ] = $value; + $plugin_options[ $key ] = $value; + } + } + + /** + * action 'redux/options/{opt_name}/import' + * + * @param &array [&$plugin_options, redux_options] + */ + do_action_ref_array( "redux/options/{$this->args['opt_name']}/import", array( + &$plugin_options, + $imported_options, + $this->transients['changed_values'] + ) ); + + // Remove the import/export tab cookie. + if ( $_COOKIE['redux_current_tab'] == 'import_export_default' ) { + setcookie( 'redux_current_tab', '', 1, '/' ); + $_COOKIE['redux_current_tab'] = 1; + } + + setcookie( 'redux_current_tab', '', 1, '/', $time + 1000, "/" ); + $_COOKIE['redux_current_tab'] = 1; + + unset( $plugin_options['defaults'], $plugin_options['compiler'], $plugin_options['import'], $plugin_options['import_code'] ); + if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' || $this->args['database'] == 'network' ) { + $this->set_options( $plugin_options ); + + return; + } + + $plugin_options = wp_parse_args( $imported_options, $plugin_options ); + $this->set_transients(); // Update the transients + + return $plugin_options; + } + } + + // Reset all to defaults + if ( ! empty( $plugin_options['defaults'] ) ) { + if ( empty( $this->options_defaults ) ) { + $this->options_defaults = $this->_default_values(); + } + + // Section reset + //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time() + 3000, '/'); + $plugin_options = $this->options_defaults; + + $this->transients['changed_values'] = array(); + foreach ( $this->options as $key => $value ) { + if ( isset( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { + $this->transients['changed_values'][ $key ] = $value; + } + } + + $this->transients['run_compiler'] = 1; + $this->transients['last_save_mode'] = "defaults"; // Last save mode + + //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time() + 1000, "/"); + //setcookie("redux-saved-{$this->args['opt_name']}", 'defaults', time() + 1000, "/"); + $this->set_transients(); // Update the transients + + return $plugin_options; + } + + // Section reset to defaults + if ( ! empty( $plugin_options['defaults-section'] ) ) { + if ( isset( $plugin_options['redux-section'] ) && isset( $this->sections[ $plugin_options['redux-section'] ]['fields'] ) ) { + foreach ( $this->sections[ $plugin_options['redux-section'] ]['fields'] as $field ) { + if ( isset( $this->options_defaults[ $field['id'] ] ) ) { + $plugin_options[ $field['id'] ] = $this->options_defaults[ $field['id'] ]; + } else { + $plugin_options[ $field['id'] ] = ""; + } + + if ( isset( $field['compiler'] ) ) { + $compiler = true; + } + } + } + + $this->transients['changed_values'] = array(); + foreach ( $this->options as $key => $value ) { + if ( isset( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { + $this->transients['changed_values'][ $key ] = $value; + } + } + + if ( isset( $compiler ) ) { + //$this->run_compiler = true; + //setcookie('redux-compiler-' . $this->args['opt_name'], 1, time()+1000, '/'); + //$plugin_options['REDUX_COMPILER'] = time(); + $this->transients['last_compiler'] = $time; + $this->transients['run_compiler'] = 1; + } + + $this->transients['last_save_mode'] = "defaults_section"; // Last save mode + + //setcookie("redux-saved-{$this->args['opt_name']}", 'defaults_section', time() + 1000, "/"); + unset( $plugin_options['defaults'], $plugin_options['defaults_section'], $plugin_options['import'], $plugin_options['import_code'], $plugin_options['import_link'], $plugin_options['compiler'], $plugin_options['redux-section'] ); + $this->set_transients(); + + return $plugin_options; + } + + $this->transients['last_save_mode'] = "normal"; // Last save mode + + + // Validate fields (if needed) + $plugin_options = $this->_validate_values( $plugin_options, $this->options, $this->sections ); + + if ( ! empty( $this->errors ) || ! empty( $this->warnings ) ) { + $this->transients['notices'] = array( 'errors' => $this->errors, 'warnings' => $this->warnings ); + } + + /** + * action 'redux-validate-{opt_name}' + * + * @deprecated + * + * @param &array [&$plugin_options, redux_options] + */ + do_action_ref_array( "redux-validate-{$this->args['opt_name']}", array( + &$plugin_options, + $this->options + ) ); // REMOVE + + /** + * action 'redux/options/{opt_name}/validate' + * + * @param &array [&$plugin_options, redux_options] + */ + do_action_ref_array( "redux/options/{$this->args['opt_name']}/validate", array( + &$plugin_options, + $this->options, + $this->transients['changed_values'] + ) ); + + if ( ! empty( $plugin_options['compiler'] ) ) { + unset( $plugin_options['compiler'] ); + + $this->transients['last_compiler'] = $time; + $this->transients['run_compiler'] = 1; + } + + $this->transients['changed_values'] = array(); // Changed values since last save + foreach ( $this->options as $key => $value ) { + if ( isset( $plugin_options[ $key ] ) && $value != $plugin_options[ $key ] ) { + $this->transients['changed_values'][ $key ] = $value; + } + } + + unset( $plugin_options['defaults'], $plugin_options['defaults_section'], $plugin_options['import'], $plugin_options['import_code'], $plugin_options['import_link'], $plugin_options['compiler'], $plugin_options['redux-section'] ); + if ( $this->args['database'] == 'transient' || $this->args['database'] == 'theme_mods' || $this->args['database'] == 'theme_mods_expanded' ) { + $this->set_options( $plugin_options ); + + return; + } + + if ( defined( 'WP_CACHE' ) && WP_CACHE && class_exists( 'W3_ObjectCache' ) ) { + //echo "here"; + $w3 = W3_ObjectCache::instance(); + $key = $w3->_get_cache_key( $this->args['opt_name'] . '-transients', 'transient' ); + //echo $key; + $w3->delete( $key, 'transient', true ); + //set_transient($this->args['opt_name'].'-transients', $this->transients); + //exit(); + } + + $this->set_transients( $this->transients ); + + + return $plugin_options; + } + + /** + * Validate values from options form (used in settings api validate function) + * calls the custom validation class for the field so authors can override with custom classes + * + * @since 1.0.0 + * @access public + * + * @param array $plugin_options + * @param array $options + * + * @return array $plugin_options + */ + public function _validate_values( $plugin_options, $options, $sections ) { + foreach ( $sections as $k => $section ) { + if ( isset( $section['fields'] ) ) { + foreach ( $section['fields'] as $fkey => $field ) { + $field['section_id'] = $k; + + if ( isset( $field['type'] ) && ( $field['type'] == 'checkbox' || $field['type'] == 'checkbox_hide_below' || $field['type'] == 'checkbox_hide_all' ) ) { + if ( ! isset( $plugin_options[ $field['id'] ] ) ) { + $plugin_options[ $field['id'] ] = 0; + } + } + + // Default 'not_empty 'flag to false. + $isNotEmpty = false; + + // Make sure 'validate' field is set. + if ( isset( $field['validate'] ) ) { + + // Make sure 'validate field' is set to 'not_empty' or 'email_not_empty' + if ( $field['validate'] == 'not_empty' || $field['validate'] == 'email_not_empty' || $field['validate'] == 'numeric_not_empty' ) { + + // Set the flag. + $isNotEmpty = true; + } + } + + // Check for empty id value + + if ( ! isset( $plugin_options[ $field['id'] ] ) || ( isset( $plugin_options[ $field['id'] ] ) && $plugin_options[ $field['id'] ] == '' ) ) { + + // If we are looking for an empty value, in the case of 'not_empty' + // then we need to keep processing. + if ( ! $isNotEmpty ) { + + // Empty id and not checking for 'not_empty. Bail out... + continue; + } + } + + // Force validate of custom field types + if ( isset( $field['type'] ) && ! isset( $field['validate'] ) ) { + if ( $field['type'] == 'color' || $field['type'] == 'color_gradient' ) { + $field['validate'] = 'color'; + } elseif ( $field['type'] == 'date' ) { + $field['validate'] = 'date'; + } + } + + if ( isset( $field['validate'] ) ) { + $validate = 'Redux_Validation_' . $field['validate']; + + if ( ! class_exists( $validate ) ) { + /** + * filter 'redux-validateclass-load' + * + * @deprecated + * + * @param string validation class file path + * @param string $validate validation class name + */ + $class_file = apply_filters( "redux-validateclass-load", self::$_dir . "inc/validation/{$field['validate']}/validation_{$field['validate']}.php", $validate ); // REMOVE LATER + + /** + * filter 'redux/validate/{opt_name}/class/{field.validate}' + * + * @param string validation class file path + * @param string $class_file validation class file path + */ + $class_file = apply_filters( "redux/validate/{$this->args['opt_name']}/class/{$field['validate']}", self::$_dir . "inc/validation/{$field['validate']}/validation_{$field['validate']}.php", $class_file ); + + if ( $class_file ) { + if ( file_exists( $class_file ) ) { + require_once( $class_file ); + } + } + } + + if ( class_exists( $validate ) ) { + + //!DOVY - DB saving stuff. Is this right? + if ( empty ( $options[ $field['id'] ] ) ) { + $options[ $field['id'] ] = ''; + } + + if ( isset( $plugin_options[ $field['id'] ] ) && is_array( $plugin_options[ $field['id'] ] ) && ! empty( $plugin_options[ $field['id'] ] ) ) { + foreach ( $plugin_options[ $field['id'] ] as $key => $value ) { + $before = $after = null; + if ( isset( $plugin_options[ $field['id'] ][ $key ] ) && ! empty( $plugin_options[ $field['id'] ][ $key ] ) ) { + if ( is_array( $plugin_options[ $field['id'] ][ $key ] ) ) { + $before = $plugin_options[ $field['id'] ][ $key ]; + } else { + $before = trim( $plugin_options[ $field['id'] ][ $key ] ); + } + } + + if ( isset( $options[ $field['id'] ][ $key ] ) && ! empty( $options[ $field['id'] ][ $key ] ) ) { + $after = $options[ $field['id'] ][ $key ]; + } + + $validation = new $validate( $this, $field, $before, $after ); + if ( ! empty( $validation->value ) ) { + $plugin_options[ $field['id'] ][ $key ] = $validation->value; + } else { + unset( $plugin_options[ $field['id'] ][ $key ] ); + } + + if ( isset( $validation->error ) ) { + $this->errors[] = $validation->error; + } + + if ( isset( $validation->warning ) ) { + $this->warnings[] = $validation->warning; + } + } + } else { + if ( is_array( $plugin_options[ $field['id'] ] ) ) { + $pofi = $plugin_options[ $field['id'] ]; + } else { + $pofi = trim( $plugin_options[ $field['id'] ] ); + } + + $validation = new $validate( $this, $field, $pofi, $options[ $field['id'] ] ); + $plugin_options[ $field['id'] ] = $validation->value; + + if ( isset( $validation->error ) ) { + $this->errors[] = $validation->error; + } + + if ( isset( $validation->warning ) ) { + $this->warnings[] = $validation->warning; + } + } + + continue; + } + } + if ( isset( $field['validate_callback'] ) && ( is_callable( $field['validate_callback'] ) || ( is_string( $field['validate_callback'] ) && function_exists( $field['validate_callback'] ) ) ) ) { + $callback = $field['validate_callback']; + unset( $field['validate_callback'] ); + + $callbackvalues = call_user_func( $callback, $field, $plugin_options[ $field['id'] ], $options[ $field['id'] ] ); + $plugin_options[ $field['id'] ] = $callbackvalues['value']; + + if ( isset( $callbackvalues['error'] ) ) { + $this->errors[] = $callbackvalues['error']; + } + // TODO - This warning message is failing. Hmm. + if ( isset( $callbackvalues['warning'] ) ) { + $this->warnings[] = $callbackvalues['warning']; + } + } + } + } + } + + return $plugin_options; + } + + /** + * Return Section Menu HTML + * + * @since 3.1.5 + * @access public + * @return void + */ + public function section_menu( $k, $section, $suffix = "", $sections = array() ) { + $display = true; + + $section['class'] = isset( $section['class'] ) ? ' ' . $section['class'] : ''; + + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset( $section['panel'] ) && $section['panel'] == false ) { + $display = false; + } + } + + if ( ! $display ) { + return ""; + } + + if ( empty( $sections ) ) { + $sections = $this->sections; + } + + $string = ""; + if ( ( isset( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) || ( isset( $section['icon_type'] ) && $section['icon_type'] == 'image' ) ) { + //if( !empty( $this->args['icon_type'] ) && $this->args['icon_type'] == 'image' ) { + $icon = ( ! isset( $section['icon'] ) ) ? '' : ' '; + } else { + if ( ! empty( $section['icon_class'] ) ) { + $icon_class = ' ' . $section['icon_class']; + } elseif ( ! empty( $this->args['default_icon_class'] ) ) { + $icon_class = ' ' . $this->args['default_icon_class']; + } else { + $icon_class = ''; + } + $icon = ( ! isset( $section['icon'] ) ) ? ' ' : ' '; + } + + $canBeSubSection = ( $k > 0 && ( ! isset( $sections[ ( $k ) ]['type'] ) || $sections[ ( $k ) ]['type'] != "divide" ) ) ? true : false; + + if ( ! $canBeSubSection && isset( $section['subsection'] ) && $section['subsection'] == true ) { + unset( $section['subsection'] ); + } + + if ( isset( $section['type'] ) && $section['type'] == "divide" ) { + $string .= '
  •  
  • '; + } else if ( ! isset( $section['subsection'] ) || $section['subsection'] != true ) { + + // DOVY! REPLACE $k with $section['ID'] when used properly. + //$active = ( ( is_numeric($this->current_tab) && $this->current_tab == $k ) || ( !is_numeric($this->current_tab) && $this->current_tab === $k ) ) ? ' active' : ''; + $subsections = ( isset( $sections[ ( $k + 1 ) ] ) && isset( $sections[ ( $k + 1 ) ]['subsection'] ) && $sections[ ( $k + 1 ) ]['subsection'] == true ) ? true : false; + $subsectionsClass = $subsections ? ' hasSubSections' : ''; + $subsectionsClass .= ( ! isset( $section['fields'] ) || empty( $section['fields'] ) ) ? ' empty_section' : ''; + $extra_icon = $subsections ? ' ' : ''; + $string .= ''; + } + + return $string; + + } // section_menu() + + + /** + * HTML OUTPUT. + * + * @since 1.0.0 + * @access public + * @return void + */ + public function _options_page_html() { + echo '

    '; // Stupid hack for Wordpress alerts and warnings + + echo '
    '; + echo '
    '; + + // Do we support JS? + echo ''; + + // Security is vital! + echo ''; + + /** + * action 'redux-page-before-form-{opt_name}' + * + * @deprecated + */ + do_action( "redux-page-before-form-{$this->args['opt_name']}" ); // Remove + + /** + * action 'redux/page/{opt_name}/form/before' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->args['opt_name']}/form/before", $this ); + + // Main container + $expanded = ( $this->args['open_expanded'] ) ? ' fully-expanded' : ''; + + echo '
    '; + $url = './options.php'; + if ( $this->args['database'] == "network" && $this->args['network_admin'] ) { + if ( is_network_admin() ) { + $url = './edit.php?action=redux_' . $this->args['opt_name']; + } + } + echo '
    '; + echo ''; + echo ''; + if ( ! empty( $this->no_panel ) ) { + echo ''; + } + + + settings_fields( "{$this->args['opt_name']}_group" ); + + // Last tab? + $this->options['last_tab'] = ( isset( $_GET['tab'] ) && ! isset( $this->transients['last_save_mode'] ) ) ? $_GET['tab'] : ''; + + echo ''; + + // Header area + echo '
    '; + + if ( ! empty( $this->args['display_name'] ) ) { + echo '
    '; + + if ( isset( $this->args['dev_mode'] ) && $this->args['dev_mode'] ) { + echo '' . __( 'Developer Mode Enabled', 'redux-framework' ) . ''; + } + + echo '

    ' . $this->args['display_name'] . '

    '; + + if ( ! empty( $this->args['display_version'] ) ) { + echo '' . $this->args['display_version'] . ''; + } + + echo '
    '; + } + + echo '
    '; + echo '
    '; + + // Intro text + if ( isset( $this->args['intro_text'] ) ) { + echo '
    '; + echo $this->args['intro_text']; + echo '
    '; + } + + // Stickybar + echo '
    '; + echo '
    '; + + $expanded = ( $this->args['open_expanded'] ) ? ' expanded' : ''; + + echo '' . __( 'Expand', 'redux-framework' ) . ''; + echo '
    '; + submit_button( __( 'Save Changes', 'redux-framework' ), 'primary', 'redux_save', false ); + + if ( false === $this->args['hide_reset'] ) { + echo ' '; + submit_button( __( 'Reset Section', 'redux-framework' ), 'secondary', $this->args['opt_name'] . '[defaults-section]', false ); + echo ' '; + submit_button( __( 'Reset All', 'redux-framework' ), 'secondary', $this->args['opt_name'] . '[defaults]', false ); + } + + echo '
    '; + + echo '
     
    '; + echo '
    '; + echo '
    '; + + // Warning bar + if ( isset( $this->transients['last_save_mode'] ) ) { + + if ( $this->transients['last_save_mode'] == "import" ) { + /** + * action 'redux/options/{opt_name}/import' + * + * @param object $this ReduxFramework + */ + do_action( "redux/options/{$this->args['opt_name']}/import", $this, $this->transients['changed_values'] ); + + /** + * filter 'redux-imported-text-{opt_name}' + * + * @param string translated "settings imported" text + */ + echo '
    ' . apply_filters( "redux-imported-text-{$this->args['opt_name']}", __( 'Settings Imported!', 'redux-framework' ) ) . '
    '; + //exit(); + } else if ( $this->transients['last_save_mode'] == "defaults" ) { + /** + * action 'redux/options/{opt_name}/reset' + * + * @param object $this ReduxFramework + */ + do_action( "redux/options/{$this->args['opt_name']}/reset", $this ); + + /** + * filter 'redux-defaults-text-{opt_name}' + * + * @param string translated "settings imported" text + */ + echo '
    ' . apply_filters( "redux-defaults-text-{$this->args['opt_name']}", __( 'All Defaults Restored!', 'redux-framework' ) ) . '
    '; + } else if ( $this->transients['last_save_mode'] == "defaults_section" ) { + /** + * action 'redux/options/{opt_name}/section/reset' + * + * @param object $this ReduxFramework + */ + do_action( "redux/options/{$this->args['opt_name']}/section/reset", $this ); + + /** + * filter 'redux-defaults-section-text-{opt_name}' + * + * @param string translated "settings imported" text + */ + echo '
    ' . apply_filters( "redux-defaults-section-text-{$this->args['opt_name']}", __( 'Section Defaults Restored!', 'redux-framework' ) ) . '
    '; + } else { + /** + * action 'redux/options/{opt_name}/saved' + * + * @param mixed $value set/saved option value + */ + do_action( "redux/options/{$this->args['opt_name']}/saved", $this->options, $this->transients['changed_values'] ); + + /** + * filter 'redux-saved-text-{opt_name}' + * + * @param string translated "settings saved" text + */ + echo '
    ' . apply_filters( "redux-saved-text-{$this->args['opt_name']}", __( 'Settings Saved!', 'redux-framework' ) ) . '
    '; + } + unset( $this->transients['last_save_mode'] ); + + } + + /** + * action 'redux/options/{opt_name}/settings/changes' + * + * @param mixed $value set/saved option value + */ + do_action( "redux/options/{$this->args['opt_name']}/settings/change", $this->options, $this->transients['changed_values'] ); + + /** + * filter 'redux-changed-text-{opt_name}' + * + * @param string translated "settings have changed" text + */ + echo '
    ' . apply_filters( "redux-changed-text-{$this->args['opt_name']}", __( 'Settings have changed, you should save them!', 'redux-framework' ) ) . '
    '; + + /** + * action 'redux/options/{opt_name}/errors' + * + * @param array $this ->errors error information + */ + do_action( "redux/options/{$this->args['opt_name']}/errors", $this->errors ); + echo '
    ' . __( 'error(s) were found!', 'redux-framework' ) . '
    '; + + /** + * action 'redux/options/{opt_name}/warnings' + * + * @param array $this ->warnings warning information + */ + do_action( "redux/options/{$this->args['opt_name']}/warnings", $this->warnings ); + echo '
    ' . __( 'warning(s) were found!', 'redux-framework' ) . '
    '; + + echo '
    '; + + echo '
    '; + + // Sidebar + echo '
    '; + echo '
      '; + + foreach ( $this->sections as $k => $section ) { + $title = isset( $section['title'] ) ? $section['title'] : ''; + + $skip_sec = false; + foreach ( $this->hidden_perm_sections as $num => $section_title ) { + if ( $section_title == $title ) { + $skip_sec = true; + } + } + + if ( isset( $section['customizer_only'] ) && $section['customizer_only'] == true ) { + continue; + } + + if ( false == $skip_sec ) { + echo $this->section_menu( $k, $section ); + $skip_sec = false; + } + } + + /** + * action 'redux-page-after-sections-menu-{opt_name}' + * + * @param object $this ReduxFramework + */ + do_action( "redux-page-after-sections-menu-{$this->args['opt_name']}", $this ); + + /** + * action 'redux/page/{opt_name}/menu/after' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->args['opt_name']}/menu/after", $this ); + + // Import / Export tab + if ( true == $this->args['show_import_export'] && false == $this->import_export->is_field ) { + $this->import_export->render_tab(); + } + + // Debug tab + if ( $this->args['dev_mode'] == true ) { + $this->debug->render_tab(); + } + + if ( $this->args['system_info'] === true ) { + echo ''; + } + + echo '
    '; + echo '
    '; + + echo '
    '; + + foreach ( $this->sections as $k => $section ) { + if ( isset( $section['customizer_only'] ) && $section['customizer_only'] == true ) { + continue; + } + + //$active = ( ( is_numeric($this->current_tab) && $this->current_tab == $k ) || ( !is_numeric($this->current_tab) && $this->current_tab === $k ) ) ? ' style="display: block;"' : ''; + $section['class'] = isset( $section['class'] ) ? ' ' . $section['class'] : ''; + echo '
    '; + //echo '
    '; + + echo '
      '; + + foreach ($section['tab'] as $subkey => $subsection) { + //echo '-=' . $subkey . '=-'; + echo '
    • ' . $subsection['title'] . '
    • '; + } + + echo '
    '; + foreach ($section['tab'] as $subkey => $subsection) { + echo '
    '; + echo '
    '; + echo "hello ".$subkey; + do_settings_sections( $this->args['opt_name'] . $k . '_tab_' . $subkey . '_section_group' ); + echo "
    "; + echo "
    "; + } + echo "
    "; + } else { + */ + + // Don't display in the + $display = true; + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset( $section['panel'] ) && $section['panel'] == "false" ) { + $display = false; + } + } + + if ( $display ) { + do_settings_sections( $this->args['opt_name'] . $k . '_section_group' ); + } + //} + echo "
    "; + //echo '
    '; + } + + // Import / Export output + if ( true == $this->args['show_import_export'] && false == $this->import_export->is_field ) { + $this->import_export->enqueue(); + + echo '
    '; + $this->import_export->render(); + echo '
    '; + + } + + // Debug object output + if ( $this->args['dev_mode'] == true ) { + $this->debug->render(); + } + + if ( $this->args['system_info'] === true ) { + require_once 'inc/sysinfo.php'; + $system_info = new Simple_System_Info(); + + echo '
    '; + echo '

    ' . __( 'System Info', 'redux-framework' ) . '

    '; + + echo '
    '; + echo $system_info->get( true ); + echo '
    '; + + echo '
    '; + } + + /** + * action 'redux/page-after-sections-{opt_name}' + * + * @deprecated + * + * @param object $this ReduxFramework + */ + do_action( "redux/page-after-sections-{$this->args['opt_name']}", $this ); // REMOVE LATER + + /** + * action 'redux/page/{opt_name}/sections/after' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->args['opt_name']}/sections/after", $this ); + + echo '
    '; + echo '
    '; + echo '
    '; + + echo ''; + echo '
    '; + + echo ( isset( $this->args['footer_text'] ) ) ? '' : ''; + + /** + * action 'redux-page-after-form-{opt_name}' + * + * @deprecated + */ + do_action( "redux-page-after-form-{$this->args['opt_name']}" ); // REMOVE + + /** + * action 'redux/page/{opt_name}/form/after' + * + * @param object $this ReduxFramework + */ + do_action( "redux/page/{$this->args['opt_name']}/form/after", $this ); + + echo '
    '; + echo '
    '; + + if ( $this->args['dev_mode'] == true ) { + if ( current_user_can( 'administrator' ) ) { + global $wpdb; + echo "
    ";
    +                        print_r( $wpdb->queries );
    +                        echo "
    "; + } + + echo '
    ' . get_num_queries() . ' queries in ' . timer_stop( 0 ) . ' seconds
    Redux is currently set to developer mode.
    '; + } + + $this->set_transients(); + + } + + /** + * Section HTML OUTPUT. + * + * @since 1.0.0 + * @access public + * + * @param array $section + * + * @return void + */ + public function _section_desc( $section ) { + $id = trim( rtrim( $section['id'], '_section' ), $this->args['opt_name'] ); + + if ( isset( $this->sections[ $id ]['desc'] ) && ! empty( $this->sections[ $id ]['desc'] ) ) { + echo '
    ' . $this->sections[ $id ]['desc'] . '
    '; + } + } + + /** + * Field HTML OUTPUT. + * Gets option from options array, then calls the specific field type class - allows extending by other devs + * + * @since 1.0.0 + * + * @param array $field + * @param string $v + * + * @return void + */ + public function _field_input( $field, $v = null ) { + + if ( isset( $field['callback'] ) && ( is_callable( $field['callback'] ) || ( is_string( $field['callback'] ) && function_exists( $field['callback'] ) ) ) ) { + + $value = ( isset( $this->options[ $field['id'] ] ) ) ? $this->options[ $field['id'] ] : ''; + + /** + * action 'redux-before-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux-before-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/callback/before' + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux/field/{$this->args['opt_name']}/{$field['type']}/callback/before", $field, $value ); + + /** + * action 'redux/field/{opt_name}/callback/before' + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux/field/{$this->args['opt_name']}/callback/before", $field, $value ); + + call_user_func( $field['callback'], $field, $value ); + + + /** + * action 'redux-after-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux-after-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/callback/after' + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux/field/{$this->args['opt_name']}/{$field['type']}/callback/after", $field, $value ); + + /** + * action 'redux/field/{opt_name}/callback/after' + * + * @param array $field field data + * @param string $value field.id + */ + do_action( "redux/field/{$this->args['opt_name']}/callback/after", $field, $value ); + + return; + } + + if ( isset( $field['type'] ) ) { + + // If the field is set not to display in the panel + $display = true; + if ( isset( $_GET['page'] ) && $_GET['page'] == $this->args['page_slug'] ) { + if ( isset( $field['panel'] ) && $field['panel'] == false ) { + $display = false; + } + } + + if ( ! $display ) { + return; + } + + $field_class = "ReduxFramework_{$field['type']}"; + + if ( ! class_exists( $field_class ) ) { +// $class_file = apply_filters( 'redux/field/class/'.$field['type'], self::$_dir . 'inc/fields/' . $field['type'] . '/field_' . $field['type'] . '.php', $field ); // REMOVE + /** + * filter 'redux/{opt_name}/field/class/{field.type}' + * + * @param string field class file path + * @param array $field field data + */ + $class_file = apply_filters( "redux/{$this->args['opt_name']}/field/class/{$field['type']}", self::$_dir . "inc/fields/{$field['type']}/field_{$field['type']}.php", $field ); + + if ( $class_file ) { + if ( file_exists( $class_file ) ) { + require_once( $class_file ); + } + } + + } + + if ( class_exists( $field_class ) ) { + $value = isset( $this->options[ $field['id'] ] ) ? $this->options[ $field['id'] ] : ''; + + if ( $v !== null ) { + $value = $v; + } + + /** + * action 'redux-before-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux-before-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/render/before' + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux/field/{$this->args['opt_name']}/{$field['type']}/render/before", $field, $value ); + + /** + * action 'redux/field/{$this->args['opt_name']}/render/before' + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux/field/{$this->args['opt_name']}/render/before", $field, $value ); + + if ( ! isset( $field['name_suffix'] ) ) { + $field['name_suffix'] = ""; + } + + $render = new $field_class( $field, $value, $this ); + ob_start(); + + $render->render(); + + /* + + echo "
    ";
    +                    print_r($value);
    +                    echo "
    "; + */ + + /** + * filter 'redux-field-{opt_name}' + * + * @deprecated + * + * @param string rendered field markup + * @param array $field field data + */ + $_render = apply_filters( "redux-field-{$this->args['opt_name']}", ob_get_contents(), $field ); // REMOVE + + /** + * filter 'redux/field/{opt_name}/{field.type}/render/after' + * + * @param string rendered field markup + * @param array $field field data + */ + $_render = apply_filters( "redux/field/{$this->args['opt_name']}/{$field['type']}/render/after", $_render, $field ); + + /** + * filter 'redux/field/{opt_name}/render/after' + * + * @param string rendered field markup + * @param array $field field data + */ + $_render = apply_filters( "redux/field/{$this->args['opt_name']}/render/after", $_render, $field ); + + ob_end_clean(); + + //save the values into a unique array in case we need it for dependencies + $this->fieldsValues[ $field['id'] ] = ( isset( $value['url'] ) && is_array( $value ) ) ? $value['url'] : $value; + + //create default data und class string and checks the dependencies of an object + $class_string = ''; + $data_string = ''; + + $this->check_dependencies( $field ); + + /** + * action 'redux/field/{opt_name}/{field.type}/fieldset/before/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux/field/{$this->args['opt_name']}/{$field['type']}/fieldset/before/{$this->args['opt_name']}", $field, $value ); + + /** + * action 'redux/field/{opt_name}/fieldset/before/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux/field/{$this->args['opt_name']}/fieldset/before/{$this->args['opt_name']}", $field, $value ); + + if ( ! isset( $field['fields'] ) || empty( $field['fields'] ) ) { + echo '
    '; + } + + echo $_render; + + if ( ! empty( $field['desc'] ) ) { + $field['description'] = $field['desc']; + } + + echo ( isset( $field['description'] ) && $field['type'] != "info" && $field['type'] !== "section" && ! empty( $field['description'] ) ) ? '
    ' . $field['description'] . '
    ' : ''; + + if ( ! isset( $field['fields'] ) || empty( $field['fields'] ) ) { + echo '
    '; + } + + /** + * action 'redux-after-field-{opt_name}' + * + * @deprecated + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux-after-field-{$this->args['opt_name']}", $field, $value ); // REMOVE + + /** + * action 'redux/field/{opt_name}/{field.type}/fieldset/after/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux/field/{$this->args['opt_name']}/{$field['type']}/fieldset/after/{$this->args['opt_name']}", $field, $value ); + + /** + * action 'redux/field/{opt_name}/fieldset/after/{opt_name}' + * + * @param array $field field data + * @param string $value field id + */ + do_action( "redux/field/{$this->args['opt_name']}/fieldset/after/{$this->args['opt_name']}", $field, $value ); + } + } + } // _field_input() + + /** + * Can Output CSS + * Check if a field meets its requirements before outputting to CSS + * + * @param $field + * + * @return bool + */ + public function _can_output_css( $field ) { + $return = true; + + $field = apply_filters( "redux/field/{$this->args['opt_name']}/_can_output_css", $field ); + if ( isset( $field['force_output'] ) && $field['force_output'] == true ) { + return $return; + } + + if ( ! empty( $field['required'] ) ) { + if ( isset( $field['required'][0] ) ) { + if ( ! is_array( $field['required'][0] ) && count( $field['required'] ) == 3 ) { + $parentValue = $GLOBALS[ $this->args['global_variable'] ][ $field['required'][0] ]; + $checkValue = $field['required'][2]; + $operation = $field['required'][1]; + $return = $this->compareValueDependencies( $parentValue, $checkValue, $operation ); + } else if ( is_array( $field['required'][0] ) ) { + foreach ( $field['required'] as $required ) { + if ( ! is_array( $required[0] ) && count( $required ) == 3 ) { + $parentValue = $GLOBALS[ $this->args['global_variable'] ][ $required[0] ]; + $checkValue = $required[2]; + $operation = $required[1]; + $return = $this->compareValueDependencies( $parentValue, $checkValue, $operation ); + } + if ( ! $return ) { + return $return; + } + } + } + } + } + + return $return; + } // _can_output_css + + /** + * Checks dependencies between objects based on the $field['required'] array + * If the array is set it needs to have exactly 3 entries. + * The first entry describes which field should be monitored by the current field. eg: "content" + * The second entry describes the comparison parameter. eg: "equals, not, is_larger, is_smaller ,contains" + * The third entry describes the value that we are comparing against. + * Example: if the required array is set to array('content','equals','Hello World'); then the current + * field will only be displayed if the field with id "content" has exactly the value "Hello World" + * + * @param array $field + * + * @return array $params + */ + private function check_dependencies( $field ) { + //$params = array('data_string' => "", 'class_string' => ""); + + if ( ! empty( $field['required'] ) ) { + + //$this->folds[$field['id']] = $this->folds[$field['id']] ? $this->folds[$field['id']] : array(); + if ( ! isset( $this->required_child[ $field['id'] ] ) ) { + $this->required_child[ $field['id'] ] = array(); + } + + if ( ! isset( $this->required[ $field['id'] ] ) ) { + $this->required[ $field['id'] ] = array(); + } + + if ( is_array( $field['required'][0] ) ) { + foreach ( $field['required'] as $value ) { + if ( is_array( $value ) && count( $value ) == 3 ) { + $data = array(); + $data['parent'] = $value[0]; + $data['operation'] = $value[1]; + $data['checkValue'] = $value[2]; + + $this->required[ $data['parent'] ][ $field['id'] ][] = $data; + + if ( ! in_array( $data['parent'], $this->required_child[ $field['id'] ] ) ) { + $this->required_child[ $field['id'] ][] = $data; + } + + $this->checkRequiredDependencies( $field, $data ); + } + } + } else { + $data = array(); + $data['parent'] = $field['required'][0]; + $data['operation'] = $field['required'][1]; + $data['checkValue'] = $field['required'][2]; + + $this->required[ $data['parent'] ][ $field['id'] ][] = $data; + + if ( ! in_array( $data['parent'], $this->required_child[ $field['id'] ] ) ) { + $this->required_child[ $field['id'] ][] = $data; + } + + $this->checkRequiredDependencies( $field, $data ); + } + + } + //return $params; + } + + // Compare data for required field + private function compareValueDependencies( $parentValue, $checkValue, $operation ) { + $return = false; + + switch ( $operation ) { + case '=': + case 'equals': + $data['operation'] = "="; + if ( is_array( $checkValue ) ) { + if ( in_array( $parentValue, $checkValue ) ) { + $return = true; + } + } else { + if ( $parentValue == $checkValue ) { + $return = true; + } else if ( is_array( $parentValue ) ) { + if ( in_array( $checkValue, $parentValue ) ) { + $return = true; + } + } + } + break; + case '!=': + case 'not': + $data['operation'] = "!=="; + if ( is_array( $checkValue ) ) { + if ( ! in_array( $parentValue, $checkValue ) ) { + $return = true; + } + } else { + if ( $parentValue != $checkValue ) { + $return = true; + } else if ( is_array( $parentValue ) ) { + if ( ! in_array( $checkValue, $parentValue ) ) { + $return = true; + } + } + } + break; + case '>': + case 'greater': + case 'is_larger': + $data['operation'] = ">"; + if ( $parentValue > $checkValue ) { + $return = true; + } + break; + case '>=': + case 'greater_equal': + case 'is_larger_equal': + $data['operation'] = ">="; + if ( $parentValue >= $checkValue ) { + $return = true; + } + break; + case '<': + case 'less': + case 'is_smaller': + $data['operation'] = "<"; + if ( $parentValue < $checkValue ) { + $return = true; + } + break; + case '<=': + case 'less_equal': + case 'is_smaller_equal': + $data['operation'] = "<="; + if ( $parentValue <= $checkValue ) { + $return = true; + } + break; + case 'contains': + if ( strpos( $parentValue, $checkValue ) !== false ) { + $return = true; + } + break; + case 'doesnt_contain': + case 'not_contain': + if ( strpos( $parentValue, $checkValue ) === false ) { + $return = true; + } + break; + case 'is_empty_or': + if ( empty( $parentValue ) || $parentValue == $checkValue ) { + $return = true; + } + break; + case 'not_empty_and': + if ( ! empty( $parentValue ) && $parentValue != $checkValue ) { + $return = true; + } + break; + case 'is_empty': + case 'empty': + case '!isset': + if ( empty( $parentValue ) || $parentValue == "" || $parentValue == null ) { + $return = true; + } + break; + case 'not_empty': + case '!empty': + case 'isset': + if ( ! empty( $parentValue ) && $parentValue != "" && $parentValue != null ) { + $return = true; + } + break; + } + + return $return; + } + + private function checkRequiredDependencies( $field, $data ) { + //required field must not be hidden. otherwise hide this one by default + + if ( ! in_array( $data['parent'], $this->fieldsHidden ) && ( ! isset( $this->folds[ $field['id'] ] ) || $this->folds[ $field['id'] ] != "hide" ) ) { + if ( isset( $this->options[ $data['parent'] ] ) ) { + $return = $this->compareValueDependencies( $this->options[ $data['parent'] ], $data['checkValue'], $data['operation'] ); + } + } + + if ( ( isset( $return ) && $return ) && ( ! isset( $this->folds[ $field['id'] ] ) || $this->folds[ $field['id'] ] != "hide" ) ) { + $this->folds[ $field['id'] ] = "show"; + } else { + $this->folds[ $field['id'] ] = "hide"; + if ( ! in_array( $field['id'], $this->fieldsHidden ) ) { + $this->fieldsHidden[] = $field['id']; + } + } + } + + /** + * converts an array into a html data string + * + * @param array $data example input: array('id'=>'true') + * + * @return string $data_string example output: data-id='true' + */ + public function create_data_string( $data = array() ) { + $data_string = ""; + + foreach ( $data as $key => $value ) { + if ( is_array( $value ) ) { + $value = implode( "|", $value ); + } + $data_string .= " data-$key='$value' "; + } + + return $data_string; + } + + public function admin_page(){ + + $page = $_REQUEST['page']; + + if ( $page == 'ultimatemember') + + include_once um_path . 'admin/templates/dashboard.php'; + + } + + } // ReduxFramework + + /** + * action 'redux/init' + * + * @param null + */ + do_action( 'redux/init', ReduxFramework::init() ); + + } // class_exists('ReduxFramework') diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/browser.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/browser.php new file mode 100644 index 00000000..99e9b695 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/browser.php @@ -0,0 +1,1195 @@ +getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) { + * echo 'You have Firefox version 2 or greater'; + * } + * User agents sampled from: http://www.useragentstring.com/ + * Based on original work from Gary White (http://apptools.com/phptools/browser/ + * CHANGELOG: + * 2012-12-26 (v1.9c by Chris Christoff): + * + Changed vars to publics + * 2012-12-23 (v1.9b by Chris Christoff): + * + Removed the browser string return and added spacing. + * + Also removed return HTML formatting. + * 2012-12-23 (v1.9a by Chris Christoff): + * + Split user string and add formatting so we can print a nicely + * formatted user agent string + * 2010-08-20 (v1.9): + * + Added MSN Explorer Browser (legacy) + * + Added Bing/MSN Robot (Thanks Rob MacDonald) + * + Added the Android Platform (PLATFORM_ANDROID) + * + Fixed issue with Android 1.6/2.2 (Thanks Tom Hirashima) + * 2010-04-27 (v1.8): + * + Added iPad Support + * 2010-03-07 (v1.7): + * + *MAJOR* Rebuild (preg_match and other "slow" routine removal(s)) + * + Almost allof Gary's original code has been replaced + * + Large PHPUNIT testing environment created to validate new releases and additions + * + Added FreeBSD Platform + * + Added OpenBSD Platform + * + Added NetBSD Platform + * + Added SunOS Platform + * + Added OpenSolaris Platform + * + Added support of the Iceweazel Browser + * + Added isChromeFrame() call to check if chromeframe is in use + * + Moved the Opera check in front of the Firefox check due to legacy Opera User Agents + * + Added the __toString() method (Thanks Deano) + * 2009-11-15: + * + Updated the checkes for Firefox + * + Added the NOKIA platform + * + Added Checks for the NOKIA brower(s) + * 2009-11-08: + * + PHP 5.3 Support + * + Added support for BlackBerry OS and BlackBerry browser + * + Added support for the Opera Mini browser + * + Added additional documenation + * + Added support for isRobot() and isMobile() + * + Added support for Opera version 10 + * + Added support for deprecated Netscape Navigator version 9 + * + Added support for IceCat + * + Added support for Shiretoko + * 2010-04-27 (v1.8): + * + Added iPad Support + * 2009-08-18: + * + Updated to support PHP 5.3 - removed all deprecated function calls + * + Updated to remove all double quotes (") -- converted to single quotes (') + * 2009-04-27: + * + Updated the IE check to remove a typo and bug (thanks John) + * 2009-04-22: + * + Added detection for GoogleBot + * + Added detection for the W3C Validator. + * + Added detection for Yahoo! Slurp + * 2009-03-14: + * + Added detection for iPods. + * + Added Platform detection for iPhones + * + Added Platform detection for iPods + * 2009-02-16: (Rick Hale) + * + Added version detection for Android phones. + * 2008-12-09: + * + Removed unused constant + * 2008-11-07: + * + Added Google's Chrome to the detection list + * + Added isBrowser(string) to the list of functions special thanks to + * Daniel 'mavrick' Lang for the function concept (http://mavrick.id.au) + * Gary White noted: "Since browser detection is so unreliable, I am + * no longer maintaining this script. You are free to use and or + * modify/update it as you want, however the author assumes no + * responsibility for the accuracy of the detected values." + * Anyone experienced with Gary's script might be interested in these notes: + * Added class constants + * Added detection and version detection for Google's Chrome + * Updated the version detection for Amaya + * Updated the version detection for Firefox + * Updated the version detection for Lynx + * Updated the version detection for WebTV + * Updated the version detection for NetPositive + * Updated the version detection for IE + * Updated the version detection for OmniWeb + * Updated the version detection for iCab + * Updated the version detection for Safari + * Updated Safari to remove mobile devices (iPhone) + * Added detection for iPhone + * Added detection for robots + * Added detection for mobile devices + * Added detection for BlackBerry + * Removed Netscape checks (matches heavily with firefox & mozilla) + */ + + + // Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + + if ( ! class_exists( 'Browser' ) ) { + + /** + * Browser detection class + * + * @author Chris Schuld + * @since 1.0 + */ + class Browser { + public $_agent = ''; + public $_browser_name = ''; + public $_version = ''; + public $_platform = ''; + public $_os = ''; + public $_is_aol = false; + public $_is_mobile = false; + public $_is_robot = false; + public $_aol_version = ''; + + public $BROWSER_UNKNOWN = 'unknown'; + public $VERSION_UNKNOWN = 'unknown'; + + public $BROWSER_OPERA = 'Opera'; // Http://www.opera.com/ + public $BROWSER_OPERA_MINI = 'Opera Mini'; // Http://www.opera.com/mini/ + public $BROWSER_WEBTV = 'WebTV'; // Http://www.webtv.net/pc/ + public $BROWSER_IE = 'Internet Explorer'; // Http://www.microsoft.com/ie/ + public $BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // Http://en.wikipedia.org/wiki/Internet_Explorer_Mobile + public $BROWSER_KONQUEROR = 'Konqueror'; // Http://www.konqueror.org/ + public $BROWSER_ICAB = 'iCab'; // Http://www.icab.de/ + public $BROWSER_OMNIWEB = 'OmniWeb'; // Http://www.omnigroup.com/applications/omniweb/ + public $BROWSER_FIREBIRD = 'Firebird'; // Http://www.ibphoenix.com/ + public $BROWSER_FIREFOX = 'Firefox'; // Http://www.mozilla.com/en-US/firefox/firefox.html + public $BROWSER_ICEWEASEL = 'Iceweasel'; // Http://www.geticeweasel.org/ + public $BROWSER_SHIRETOKO = 'Shiretoko'; // Http://wiki.mozilla.org/Projects/shiretoko + public $BROWSER_MOZILLA = 'Mozilla'; // Http://www.mozilla.com/en-US/ + public $BROWSER_AMAYA = 'Amaya'; // Http://www.w3.org/Amaya/ + public $BROWSER_LYNX = 'Lynx'; // Http://en.wikipedia.org/wiki/Lynx + public $BROWSER_SAFARI = 'Safari'; // Http://apple.com + public $BROWSER_IPHONE = 'iPhone'; // Http://apple.com + public $BROWSER_IPOD = 'iPod'; // Http://apple.com + public $BROWSER_IPAD = 'iPad'; // Http://apple.com + public $BROWSER_CHROME = 'Chrome'; // Http://www.google.com/chrome + public $BROWSER_ANDROID = 'Android'; // Http://www.android.com/ + public $BROWSER_GOOGLEBOT = 'GoogleBot'; // Http://en.wikipedia.org/wiki/Googlebot + public $BROWSER_SLURP = 'Yahoo! Slurp'; // Http://en.wikipedia.org/wiki/Yahoo!_Slurp + public $BROWSER_W3CVALIDATOR = 'W3C Validator'; // Http://validator.w3.org/ + public $BROWSER_BLACKBERRY = 'BlackBerry'; // Http://www.blackberry.com/ + public $BROWSER_ICECAT = 'IceCat'; // Http://en.wikipedia.org/wiki/GNU_IceCat + public $BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // Http://en.wikipedia.org/wiki/Web_Browser_for_S60 + public $BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform + public $BROWSER_MSN = 'MSN Browser'; // Http://explorer.msn.com/ + public $BROWSER_MSNBOT = 'MSN Bot'; // Http://search.msn.com/msnbot.htm + // Http://en.wikipedia.org/wiki/Msnbot (used for Bing as well) + + public $BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // Http://browser.netscape.com/ (DEPRECATED) + public $BROWSER_GALEON = 'Galeon'; // Http://galeon.sourceforge.net/ (DEPRECATED) + public $BROWSER_NETPOSITIVE = 'NetPositive'; // Http://en.wikipedia.org/wiki/NetPositive (DEPRECATED) + public $BROWSER_PHOENIX = 'Phoenix'; // Http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED) + + public $PLATFORM_UNKNOWN = 'unknown'; + public $PLATFORM_WINDOWS = 'Windows'; + public $PLATFORM_WINDOWS_CE = 'Windows CE'; + public $PLATFORM_APPLE = 'Apple'; + public $PLATFORM_LINUX = 'Linux'; + public $PLATFORM_OS2 = 'OS/2'; + public $PLATFORM_BEOS = 'BeOS'; + public $PLATFORM_IPHONE = 'iPhone'; + public $PLATFORM_IPOD = 'iPod'; + public $PLATFORM_IPAD = 'iPad'; + public $PLATFORM_BLACKBERRY = 'BlackBerry'; + public $PLATFORM_NOKIA = 'Nokia'; + public $PLATFORM_FREEBSD = 'FreeBSD'; + public $PLATFORM_OPENBSD = 'OpenBSD'; + public $PLATFORM_NETBSD = 'NetBSD'; + public $PLATFORM_SUNOS = 'SunOS'; + public $PLATFORM_OPENSOLARIS = 'OpenSolaris'; + public $PLATFORM_ANDROID = 'Android'; + + public $OPERATING_SYSTEM_UNKNOWN = 'unknown'; + + function Browser( $useragent = '' ) { + $this->reset(); + + if ( $useragent != '' ) { + $this->setUserAgent( $useragent ); + } else { + $this->determine(); + } + } + + /** + * Reset all properties + */ + function reset() { + $this->_agent = isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : ''; + $this->_browser_name = $this->BROWSER_UNKNOWN; + $this->_version = $this->VERSION_UNKNOWN; + $this->_platform = $this->PLATFORM_UNKNOWN; + $this->_os = $this->OPERATING_SYSTEM_UNKNOWN; + $this->_is_aol = false; + $this->_is_mobile = false; + $this->_is_robot = false; + $this->_aol_version = $this->VERSION_UNKNOWN; + } + + /** + * Check to see if the specific browser is valid + * + * @param string $browserName + * + * @return True if the browser is the specified browser + */ + function isBrowser( $browserName ) { + return ( 0 == strcasecmp( $this->_browser_name, trim( $browserName ) ) ); + } + + /** + * The name of the browser. All return types are from the class contants + * + * @return string Name of the browser + */ + function getBrowser() { + return $this->_browser_name; + } + + /** + * Set the name of the browser + * + * @param $browser The name of the Browser + */ + function setBrowser( $browser ) { + return $this->_browser_name = $browser; + } + + /** + * The name of the platform. All return types are from the class contants + * + * @return string Name of the browser + */ + function getPlatform() { + return $this->_platform; + } + + /** + * Set the name of the platform + * + * @param $platform The name of the Platform + */ + function setPlatform( $platform ) { + return $this->_platform = $platform; + } + + /** + * The version of the browser. + * + * @return string Version of the browser (will only contain alpha-numeric characters and a period) + */ + function getVersion() { + return $this->_version; + } + + /** + * Set the version of the browser + * + * @param $version The version of the Browser + */ + function setVersion( $version ) { + $this->_version = preg_replace( '/[^0-9,.,a-z,A-Z-]/', '', $version ); + } + + /** + * The version of AOL. + * + * @return string Version of AOL (will only contain alpha-numeric characters and a period) + */ + function getAolVersion() { + return $this->_aol_version; + } + + /** + * Set the version of AOL + * + * @param $version The version of AOL + */ + function setAolVersion( $version ) { + $this->_aol_version = preg_replace( '/[^0-9,.,a-z,A-Z]/', '', $version ); + } + + /** + * Is the browser from AOL? + * + * @return boolean True if the browser is from AOL otherwise false + */ + function isAol() { + return $this->_is_aol; + } + + /** + * Is the browser from a mobile device? + * + * @return boolean True if the browser is from a mobile device otherwise false + */ + function isMobile() { + return $this->_is_mobile; + } + + /** + * Is the browser from a robot (ex Slurp,GoogleBot)? + * + * @return boolean True if the browser is from a robot otherwise false + */ + function isRobot() { + return $this->_is_robot; + } + + /** + * Set the browser to be from AOL + * + * @param $isAol + */ + function setAol( $isAol ) { + $this->_is_aol = $isAol; + } + + /** + * Set the Browser to be mobile + * + * @param boolean $value is the browser a mobile brower or not + */ + function setMobile( $value = true ) { + $this->_is_mobile = $value; + } + + /** + * Set the Browser to be a robot + * + * @param boolean $value is the browser a robot or not + */ + function setRobot( $value = true ) { + $this->_is_robot = $value; + } + + /** + * Get the user agent value in use to determine the browser + * + * @return string The user agent from the HTTP header + */ + function getUserAgent() { + return $this->_agent; + } + + /** + * Set the user agent value (the construction will use the HTTP header value - this will overwrite it) + * + * @param $agent_string The value for the User Agent + */ + function setUserAgent( $agent_string ) { + $this->reset(); + $this->_agent = $agent_string; + $this->determine(); + } + + /** + * Used to determine if the browser is actually "chromeframe" + * + * @since 1.7 + * @return boolean True if the browser is using chromeframe + */ + function isChromeFrame() { + return ( strpos( $this->_agent, 'chromeframe' ) !== false ); + } + + /** + * Returns a formatted string with a summary of the details of the browser. + * + * @return string formatted string with a summary of the browser + */ + function __toString() { + $text1 = $this->getUserAgent(); // Grabs the UA string + $UAline1 = substr( $text1, 0, 32 ); // The first line we print should only be the first 32 characters of the UA string + $text2 = $this->getUserAgent(); // Now we grab it again and save it to a string + $towrapUA = str_replace( $UAline1, '', $text2 ); // The rest of the printoff (other than first line) is equivalent + // to the whole string minus the part we printed off. IE + // User Agent: thefirst32charactersfromUAline1 + // the rest of it is now stored in + // $text2 to be printed off + // But we need to add spaces before each line that is split other than line 1 + $space = ''; + for ( $i = 0; $i < 25; $i ++ ) { + $space .= ' '; + } + + // Now we split the remaining string of UA ($text2) into lines that are prefixed by spaces for formatting + $wordwrapped = chunk_split( $towrapUA, 32, "\n $space" ); + + return "Platform: {$this->getPlatform()} \n" . + "Browser Name: {$this->getBrowser()} \n" . + "Browser Version: {$this->getVersion()} \n" . + "User Agent String: $UAline1 \n\t\t\t " . + "$wordwrapped"; + } + + /** + * Protected routine to calculate and determine what the browser is in use (including platform) + */ + function determine() { + $this->checkPlatform(); + $this->checkBrowsers(); + $this->checkForAol(); + } + + /** + * Protected routine to determine the browser type + * + * @return boolean True if the browser was detected otherwise false + */ + function checkBrowsers() { + return ( + // Well-known, well-used + // Special Notes: + // (1) Opera must be checked before FireFox due to the odd + // user agents used in some older versions of Opera + // (2) WebTV is strapped onto Internet Explorer so we must + // check for WebTV before IE + // (3) (deprecated) Galeon is based on Firefox and needs to be + // tested before Firefox is tested + // (4) OmniWeb is based on Safari so OmniWeb check must occur + // before Safari + // (5) Netscape 9+ is based on Firefox so Netscape checks + // before FireFox are necessary + $this->checkBrowserWebTv() || + $this->checkBrowserInternetExplorer() || + $this->checkBrowserOpera() || + $this->checkBrowserGaleon() || + $this->checkBrowserNetscapeNavigator9Plus() || + $this->checkBrowserFirefox() || + $this->checkBrowserChrome() || + $this->checkBrowserOmniWeb() || + + // Common mobile + $this->checkBrowserAndroid() || + $this->checkBrowseriPad() || + $this->checkBrowseriPod() || + $this->checkBrowseriPhone() || + $this->checkBrowserBlackBerry() || + $this->checkBrowserNokia() || + + // Common bots + $this->checkBrowserGoogleBot() || + $this->checkBrowserMSNBot() || + $this->checkBrowserSlurp() || + + // WebKit base check (post mobile and others) + $this->checkBrowserSafari() || + + // Everyone else + $this->checkBrowserNetPositive() || + $this->checkBrowserFirebird() || + $this->checkBrowserKonqueror() || + $this->checkBrowserIcab() || + $this->checkBrowserPhoenix() || + $this->checkBrowserAmaya() || + $this->checkBrowserLynx() || + + $this->checkBrowserShiretoko() || + $this->checkBrowserIceCat() || + $this->checkBrowserW3CValidator() || + $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */ + ); + } + + /** + * Determine if the user is using a BlackBerry (last updated 1.7) + * + * @return boolean True if the browser is the BlackBerry browser otherwise false + */ + function checkBrowserBlackBerry() { + if ( stripos( $this->_agent, 'blackberry' ) !== false ) { + $aresult = explode( "/", stristr( $this->_agent, "BlackBerry" ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->_browser_name = $this->BROWSER_BLACKBERRY; + $this->setMobile( true ); + + return true; + } + + return false; + } + + /** + * Determine if the user is using an AOL User Agent (last updated 1.7) + * + * @return boolean True if the browser is from AOL otherwise false + */ + function checkForAol() { + $this->setAol( false ); + $this->setAolVersion( $this->VERSION_UNKNOWN ); + + if ( stripos( $this->_agent, 'aol' ) !== false ) { + $aversion = explode( ' ', stristr( $this->_agent, 'AOL' ) ); + $this->setAol( true ); + $this->setAolVersion( preg_replace( '/[^0-9\.a-z]/i', '', $aversion[1] ) ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is the GoogleBot or not (last updated 1.7) + * + * @return boolean True if the browser is the GoogletBot otherwise false + */ + function checkBrowserGoogleBot() { + if ( stripos( $this->_agent, 'googlebot' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'googlebot' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( str_replace( ';', '', $aversion[0] ) ); + $this->_browser_name = $this->BROWSER_GOOGLEBOT; + $this->setRobot( true ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is the MSNBot or not (last updated 1.9) + * + * @return boolean True if the browser is the MSNBot otherwise false + */ + function checkBrowserMSNBot() { + if ( stripos( $this->_agent, "msnbot" ) !== false ) { + $aresult = explode( "/", stristr( $this->_agent, "msnbot" ) ); + $aversion = explode( " ", $aresult[1] ); + $this->setVersion( str_replace( ";", "", $aversion[0] ) ); + $this->_browser_name = $this->BROWSER_MSNBOT; + $this->setRobot( true ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is the W3C Validator or not (last updated 1.7) + * + * @return boolean True if the browser is the W3C Validator otherwise false + */ + function checkBrowserW3CValidator() { + if ( stripos( $this->_agent, 'W3C-checklink' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'W3C-checklink' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->_browser_name = $this->BROWSER_W3CVALIDATOR; + + return true; + } else if ( stripos( $this->_agent, 'W3C_Validator' ) !== false ) { + // Some of the Validator versions do not delineate w/ a slash - add it back in + $ua = str_replace( "W3C_Validator ", "W3C_Validator/", $this->_agent ); + $aresult = explode( '/', stristr( $ua, 'W3C_Validator' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->_browser_name = $this->BROWSER_W3CVALIDATOR; + + return true; + } + + return false; + } + + /** + * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7) + * + * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false + */ + function checkBrowserSlurp() { + if ( stripos( $this->_agent, 'slurp' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Slurp' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->_browser_name = $this->BROWSER_SLURP; + $this->setRobot( true ); + $this->setMobile( false ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Internet Explorer or not (last updated 1.7) + * + * @return boolean True if the browser is Internet Explorer otherwise false + */ + function checkBrowserInternetExplorer() { + + // Test for v1 - v1.5 IE + if ( stripos( $this->_agent, 'microsoft internet explorer' ) !== false ) { + $this->setBrowser( $this->BROWSER_IE ); + $this->setVersion( '1.0' ); + $aresult = stristr( $this->_agent, '/' ); + if ( preg_match( '/308|425|426|474|0b1/i', $aresult ) ) { + $this->setVersion( '1.5' ); + } + + return true; + // Test for versions > 1.5 + } else if ( stripos( $this->_agent, 'msie' ) !== false && stripos( $this->_agent, 'opera' ) === false ) { + // See if the browser is the odd MSN Explorer + if ( stripos( $this->_agent, 'msnb' ) !== false ) { + $aresult = explode( ' ', stristr( str_replace( ';', '; ', $this->_agent ), 'MSN' ) ); + $this->setBrowser( $this->BROWSER_MSN ); + $this->setVersion( str_replace( array( '(', ')', ';' ), '', $aresult[1] ) ); + + return true; + } + $aresult = explode( ' ', stristr( str_replace( ';', '; ', $this->_agent ), 'msie' ) ); + $this->setBrowser( $this->BROWSER_IE ); + $this->setVersion( str_replace( array( '(', ')', ';' ), '', $aresult[1] ) ); + + return true; + // Test for Pocket IE + } else if ( stripos( $this->_agent, 'mspie' ) !== false || stripos( $this->_agent, 'pocket' ) !== false ) { + $aresult = explode( ' ', stristr( $this->_agent, 'mspie' ) ); + $this->setPlatform( $this->PLATFORM_WINDOWS_CE ); + $this->setBrowser( $this->BROWSER_POCKET_IE ); + $this->setMobile( true ); + + if ( stripos( $this->_agent, 'mspie' ) !== false ) { + $this->setVersion( $aresult[1] ); + } else { + $aversion = explode( '/', $this->_agent ); + $this->setVersion( $aversion[1] ); + } + + return true; + } + + return false; + } + + /** + * Determine if the browser is Opera or not (last updated 1.7) + * + * @return boolean True if the browser is Opera otherwise false + */ + function checkBrowserOpera() { + if ( stripos( $this->_agent, 'opera mini' ) !== false ) { + $resultant = stristr( $this->_agent, 'opera mini' ); + if ( preg_match( '/\//', $resultant ) ) { + $aresult = explode( '/', $resultant ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $aversion = explode( ' ', stristr( $resultant, 'opera mini' ) ); + $this->setVersion( $aversion[1] ); + } + $this->_browser_name = $this->BROWSER_OPERA_MINI; + $this->setMobile( true ); + + return true; + } else if ( stripos( $this->_agent, 'opera' ) !== false ) { + $resultant = stristr( $this->_agent, 'opera' ); + if ( preg_match( '/Version\/(10.*)$/', $resultant, $matches ) ) { + $this->setVersion( $matches[1] ); + } else if ( preg_match( '/\//', $resultant ) ) { + $aresult = explode( '/', str_replace( "(", " ", $resultant ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $aversion = explode( ' ', stristr( $resultant, 'opera' ) ); + $this->setVersion( isset( $aversion[1] ) ? $aversion[1] : "" ); + } + $this->_browser_name = $this->BROWSER_OPERA; + + return true; + } + + return false; + } + + /** + * Determine if the browser is Chrome or not (last updated 1.7) + * + * @return boolean True if the browser is Chrome otherwise false + */ + function checkBrowserChrome() { + if ( stripos( $this->_agent, 'Chrome' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Chrome' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->setBrowser( $this->BROWSER_CHROME ); + + return true; + } + + return false; + } + + + /** + * Determine if the browser is WebTv or not (last updated 1.7) + * + * @return boolean True if the browser is WebTv otherwise false + */ + function checkBrowserWebTv() { + if ( stripos( $this->_agent, 'webtv' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'webtv' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->setBrowser( $this->BROWSER_WEBTV ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is NetPositive or not (last updated 1.7) + * + * @return boolean True if the browser is NetPositive otherwise false + */ + function checkBrowserNetPositive() { + if ( stripos( $this->_agent, 'NetPositive' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'NetPositive' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( str_replace( array( '(', ')', ';' ), '', $aversion[0] ) ); + $this->setBrowser( $this->BROWSER_NETPOSITIVE ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Galeon or not (last updated 1.7) + * + * @return boolean True if the browser is Galeon otherwise false + */ + function checkBrowserGaleon() { + if ( stripos( $this->_agent, 'galeon' ) !== false ) { + $aresult = explode( ' ', stristr( $this->_agent, 'galeon' ) ); + $aversion = explode( '/', $aresult[0] ); + $this->setVersion( $aversion[1] ); + $this->setBrowser( $this->BROWSER_GALEON ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Konqueror or not (last updated 1.7) + * + * @return boolean True if the browser is Konqueror otherwise false + */ + function checkBrowserKonqueror() { + if ( stripos( $this->_agent, 'Konqueror' ) !== false ) { + $aresult = explode( ' ', stristr( $this->_agent, 'Konqueror' ) ); + $aversion = explode( '/', $aresult[0] ); + $this->setVersion( $aversion[1] ); + $this->setBrowser( $this->BROWSER_KONQUEROR ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is iCab or not (last updated 1.7) + * + * @return boolean True if the browser is iCab otherwise false + */ + function checkBrowserIcab() { + if ( stripos( $this->_agent, 'icab' ) !== false ) { + $aversion = explode( ' ', stristr( str_replace( '/', ' ', $this->_agent ), 'icab' ) ); + $this->setVersion( $aversion[1] ); + $this->setBrowser( $this->BROWSER_ICAB ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is OmniWeb or not (last updated 1.7) + * + * @return boolean True if the browser is OmniWeb otherwise false + */ + function checkBrowserOmniWeb() { + if ( stripos( $this->_agent, 'omniweb' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'omniweb' ) ); + $aversion = explode( ' ', isset( $aresult[1] ) ? $aresult[1] : "" ); + $this->setVersion( $aversion[0] ); + $this->setBrowser( $this->BROWSER_OMNIWEB ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Phoenix or not (last updated 1.7) + * + * @return boolean True if the browser is Phoenix otherwise false + */ + function checkBrowserPhoenix() { + if ( stripos( $this->_agent, 'Phoenix' ) !== false ) { + $aversion = explode( '/', stristr( $this->_agent, 'Phoenix' ) ); + $this->setVersion( $aversion[1] ); + $this->setBrowser( $this->BROWSER_PHOENIX ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Firebird or not (last updated 1.7) + * + * @return boolean True if the browser is Firebird otherwise false + */ + function checkBrowserFirebird() { + if ( stripos( $this->_agent, 'Firebird' ) !== false ) { + $aversion = explode( '/', stristr( $this->_agent, 'Firebird' ) ); + $this->setVersion( $aversion[1] ); + $this->setBrowser( $this->BROWSER_FIREBIRD ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7) + * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008) + * + * @return boolean True if the browser is Netscape Navigator 9+ otherwise false + */ + function checkBrowserNetscapeNavigator9Plus() { + if ( stripos( $this->_agent, 'Firefox' ) !== false && preg_match( '/Navigator\/([^ ]*)/i', $this->_agent, $matches ) ) { + $this->setVersion( $matches[1] ); + $this->setBrowser( $this->BROWSER_NETSCAPE_NAVIGATOR ); + + return true; + } else if ( stripos( $this->_agent, 'Firefox' ) === false && preg_match( '/Netscape6?\/([^ ]*)/i', $this->_agent, $matches ) ) { + $this->setVersion( $matches[1] ); + $this->setBrowser( $this->BROWSER_NETSCAPE_NAVIGATOR ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7) + * + * @return boolean True if the browser is Shiretoko otherwise false + */ + function checkBrowserShiretoko() { + if ( stripos( $this->_agent, 'Mozilla' ) !== false && preg_match( '/Shiretoko\/([^ ]*)/i', $this->_agent, $matches ) ) { + $this->setVersion( $matches[1] ); + $this->setBrowser( $this->BROWSER_SHIRETOKO ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7) + * + * @return boolean True if the browser is Ice Cat otherwise false + */ + function checkBrowserIceCat() { + if ( stripos( $this->_agent, 'Mozilla' ) !== false && preg_match( '/IceCat\/([^ ]*)/i', $this->_agent, $matches ) ) { + $this->setVersion( $matches[1] ); + $this->setBrowser( $this->BROWSER_ICECAT ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Nokia or not (last updated 1.7) + * + * @return boolean True if the browser is Nokia otherwise false + */ + function checkBrowserNokia() { + if ( preg_match( "/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches ) ) { + $this->setVersion( $matches[2] ); + if ( stripos( $this->_agent, 'Series60' ) !== false || strpos( $this->_agent, 'S60' ) !== false ) { + $this->setBrowser( $this->BROWSER_NOKIA_S60 ); + } else { + $this->setBrowser( $this->BROWSER_NOKIA ); + } + $this->setMobile( true ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Firefox or not (last updated 1.7) + * + * @return boolean True if the browser is Firefox otherwise false + */ + function checkBrowserFirefox() { + if ( stripos( $this->_agent, 'safari' ) === false ) { + if ( preg_match( "/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches ) ) { + $this->setVersion( $matches[1] ); + $this->setBrowser( $this->BROWSER_FIREFOX ); + + return true; + } else if ( preg_match( "/Firefox$/i", $this->_agent, $matches ) ) { + $this->setVersion( "" ); + $this->setBrowser( $this->BROWSER_FIREFOX ); + + return true; + } + } + + return false; + } + + /** + * Determine if the browser is Firefox or not (last updated 1.7) + * + * @return boolean True if the browser is Firefox otherwise false + */ + function checkBrowserIceweasel() { + if ( stripos( $this->_agent, 'Iceweasel' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Iceweasel' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->setBrowser( $this->BROWSER_ICEWEASEL ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Mozilla or not (last updated 1.7) + * + * @return boolean True if the browser is Mozilla otherwise false + */ + function checkBrowserMozilla() { + if ( stripos( $this->_agent, 'mozilla' ) !== false && preg_match( '/rv:[0-9].[0-9][a-b]?/i', $this->_agent ) && stripos( $this->_agent, 'netscape' ) === false ) { + $aversion = explode( ' ', stristr( $this->_agent, 'rv:' ) ); + preg_match( '/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion ); + $this->setVersion( str_replace( 'rv:', '', $aversion[0] ) ); + $this->setBrowser( $this->BROWSER_MOZILLA ); + + return true; + } else if ( stripos( $this->_agent, 'mozilla' ) !== false && preg_match( '/rv:[0-9]\.[0-9]/i', $this->_agent ) && stripos( $this->_agent, 'netscape' ) === false ) { + $aversion = explode( '', stristr( $this->_agent, 'rv:' ) ); + $this->setVersion( str_replace( 'rv:', '', $aversion[0] ) ); + $this->setBrowser( $this->BROWSER_MOZILLA ); + + return true; + } else if ( stripos( $this->_agent, 'mozilla' ) !== false && preg_match( '/mozilla\/([^ ]*)/i', $this->_agent, $matches ) && stripos( $this->_agent, 'netscape' ) === false ) { + $this->setVersion( $matches[1] ); + $this->setBrowser( $this->BROWSER_MOZILLA ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Lynx or not (last updated 1.7) + * + * @return boolean True if the browser is Lynx otherwise false + */ + function checkBrowserLynx() { + if ( stripos( $this->_agent, 'lynx' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Lynx' ) ); + $aversion = explode( ' ', ( isset( $aresult[1] ) ? $aresult[1] : "" ) ); + $this->setVersion( $aversion[0] ); + $this->setBrowser( $this->BROWSER_LYNX ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Amaya or not (last updated 1.7) + * + * @return boolean True if the browser is Amaya otherwise false + */ + function checkBrowserAmaya() { + if ( stripos( $this->_agent, 'amaya' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Amaya' ) ); + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + $this->setBrowser( $this->BROWSER_AMAYA ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Safari or not (last updated 1.7) + * + * @return boolean True if the browser is Safari otherwise false + */ + function checkBrowserSafari() { + if ( stripos( $this->_agent, 'Safari' ) !== false && stripos( $this->_agent, 'iPhone' ) === false && stripos( $this->_agent, 'iPod' ) === false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Version' ) ); + if ( isset( $aresult[1] ) ) { + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $this->setVersion( $this->VERSION_UNKNOWN ); + } + $this->setBrowser( $this->BROWSER_SAFARI ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is iPhone or not (last updated 1.7) + * + * @return boolean True if the browser is iPhone otherwise false + */ + function checkBrowseriPhone() { + if ( stripos( $this->_agent, 'iPhone' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Version' ) ); + if ( isset( $aresult[1] ) ) { + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $this->setVersion( $this->VERSION_UNKNOWN ); + } + $this->setMobile( true ); + $this->setBrowser( $this->BROWSER_IPHONE ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is iPod or not (last updated 1.7) + * + * @return boolean True if the browser is iPod otherwise false + */ + function checkBrowseriPad() { + if ( stripos( $this->_agent, 'iPad' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Version' ) ); + if ( isset( $aresult[1] ) ) { + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $this->setVersion( $this->VERSION_UNKNOWN ); + } + $this->setMobile( true ); + $this->setBrowser( $this->BROWSER_IPAD ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is iPod or not (last updated 1.7) + * + * @return boolean True if the browser is iPod otherwise false + */ + function checkBrowseriPod() { + if ( stripos( $this->_agent, 'iPod' ) !== false ) { + $aresult = explode( '/', stristr( $this->_agent, 'Version' ) ); + if ( isset( $aresult[1] ) ) { + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $this->setVersion( $this->VERSION_UNKNOWN ); + } + $this->setMobile( true ); + $this->setBrowser( $this->BROWSER_IPOD ); + + return true; + } + + return false; + } + + /** + * Determine if the browser is Android or not (last updated 1.7) + * + * @return boolean True if the browser is Android otherwise false + */ + function checkBrowserAndroid() { + if ( stripos( $this->_agent, 'Android' ) !== false ) { + $aresult = explode( ' ', stristr( $this->_agent, 'Android' ) ); + if ( isset( $aresult[1] ) ) { + $aversion = explode( ' ', $aresult[1] ); + $this->setVersion( $aversion[0] ); + } else { + $this->setVersion( $this->VERSION_UNKNOWN ); + } + $this->setMobile( true ); + $this->setBrowser( $this->BROWSER_ANDROID ); + + return true; + } + + return false; + } + + /** + * Determine the user's platform (last updated 1.7) + */ + function checkPlatform() { + if ( stripos( $this->_agent, 'windows' ) !== false ) { + $this->_platform = $this->PLATFORM_WINDOWS; + } elseif ( stripos( $this->_agent, 'iPad' ) !== false ) { + $this->_platform = $this->PLATFORM_IPAD; + } elseif ( stripos( $this->_agent, 'iPod' ) !== false ) { + $this->_platform = $this->PLATFORM_IPOD; + } elseif ( stripos( $this->_agent, 'iPhone' ) !== false ) { + $this->_platform = $this->PLATFORM_IPHONE; + } elseif ( stripos( $this->_agent, 'mac' ) !== false ) { + $this->_platform = $this->PLATFORM_APPLE; + } elseif ( stripos( $this->_agent, 'android' ) !== false ) { + $this->_platform = $this->PLATFORM_ANDROID; + } elseif ( stripos( $this->_agent, 'linux' ) !== false ) { + $this->_platform = $this->PLATFORM_LINUX; + } elseif ( stripos( $this->_agent, 'Nokia' ) !== false ) { + $this->_platform = $this->PLATFORM_NOKIA; + } elseif ( stripos( $this->_agent, 'BlackBerry' ) !== false ) { + $this->_platform = $this->PLATFORM_BLACKBERRY; + } elseif ( stripos( $this->_agent, 'FreeBSD' ) !== false ) { + $this->_platform = $this->PLATFORM_FREEBSD; + } elseif ( stripos( $this->_agent, 'OpenBSD' ) !== false ) { + $this->_platform = $this->PLATFORM_OPENBSD; + } elseif ( stripos( $this->_agent, 'NetBSD' ) !== false ) { + $this->_platform = $this->PLATFORM_NETBSD; + } elseif ( stripos( $this->_agent, 'OpenSolaris' ) !== false ) { + $this->_platform = $this->PLATFORM_OPENSOLARIS; + } elseif ( stripos( $this->_agent, 'SunOS' ) !== false ) { + $this->_platform = $this->PLATFORM_SUNOS; + } elseif ( stripos( $this->_agent, 'OS\/2' ) !== false ) { + $this->_platform = $this->PLATFORM_OS2; + } elseif ( stripos( $this->_agent, 'BeOS' ) !== false ) { + $this->_platform = $this->PLATFORM_BEOS; + } elseif ( stripos( $this->_agent, 'win' ) !== false ) { + $this->_platform = $this->PLATFORM_WINDOWS; + } + } + } + } +?> diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/class.p.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.p.php new file mode 100644 index 00000000..bb182208 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.p.php @@ -0,0 +1,292 @@ + and +// are disabled by default, see for more information. +// callback - If specified, the response JSON will be wrapped in this named +// function call. This parameter and are disabled by +// default, see for more information. +// user_agent - This value will be sent to the remote URL request as the +// `User-Agent:` HTTP request header. If omitted, the browser user agent +// will be passed through. +// send_cookies - If send_cookies=1, all cookies will be forwarded through to +// the remote URL request. +// send_session - If send_session=1 and send_cookies=1, the SID cookie will be +// forwarded through to the remote URL request. +// full_headers - If a JSON request and full_headers=1, the JSON response will +// contain detailed header information. +// full_status - If a JSON request and full_status=1, the JSON response will +// contain detailed cURL status information, otherwise it will just contain +// the `http_code` property. +// +// Topic: POST Parameters +// +// All POST parameters are automatically passed through to the remote URL +// request. +// +// Topic: JSON requests +// +// This request will return the contents of the specified url in JSON format. +// +// Request: +// +// > ba-simple-proxy.php?url=http://example.com/ +// +// Response: +// +// > { "contents": "...", "headers": {...}, "status": {...} } +// +// JSON object properties: +// +// contents - (String) The contents of the remote URL resource. +// headers - (Object) A hash of HTTP headers returned by the remote URL +// resource. +// status - (Object) A hash of status codes returned by cURL. +// +// Topic: JSONP requests +// +// This request will return the contents of the specified url in JSONP format +// (but only if $enable_jsonp is enabled in the PHP script). +// +// Request: +// +// > ba-simple-proxy.php?url=http://example.com/&callback=foo +// +// Response: +// +// > foo({ "contents": "...", "headers": {...}, "status": {...} }) +// +// JSON object properties: +// +// contents - (String) The contents of the remote URL resource. +// headers - (Object) A hash of HTTP headers returned by the remote URL +// resource. +// status - (Object) A hash of status codes returned by cURL. +// +// Topic: Native requests +// +// This request will return the contents of the specified url in the format it +// was received in, including the same content-type and other headers (but only +// if $enable_native is enabled in the PHP script). +// +// Request: +// +// > ba-simple-proxy.php?url=http://example.com/&mode=native +// +// Response: +// +// > ... +// +// Topic: Notes +// +// * Assumes magic_quotes_gpc = Off in php.ini +// +// Topic: Configuration Options +// +// These variables can be manually edited in the PHP file if necessary. +// +// $enable_jsonp - Only enable if you really need to. If you +// install this script on the same server as the page you're calling it +// from, plain JSON will work. Defaults to false. +// $enable_native - You can enable , but you should only do +// this if you also whitelist specific URLs using $valid_url_regex, to avoid +// possible XSS vulnerabilities. Defaults to false. +// $valid_url_regex - This regex is matched against the url parameter to +// ensure that it is valid. This setting only needs to be used if either +// $enable_jsonp or $enable_native are enabled. Defaults to '/.*/' which +// validates all URLs. +// +// ############################################################################ + + + $_GET['mode'] = "native"; + $_GET['full_headers'] = 1; + $_GET['full_status'] = 1; + $_GET['send_cookies'] = 1; + + +// Change these configuration options if needed, see above descriptions for info. + $enable_jsonp = false; + $enable_native = true; + $valid_url_regex = '/.*/'; + +// ############################################################################ + $url = $_GET['url']; + + if ( ! $url ) { + + // Passed url not specified. + $contents = 'ERROR: url not specified'; + $status = array( 'http_code' => 'ERROR' ); + + } else if ( ! preg_match( $valid_url_regex, $url ) ) { + + // Passed url doesn't match $valid_url_regex. + $contents = 'ERROR: invalid url'; + $status = array( 'http_code' => 'ERROR' ); + + } else { + $url = urldecode( $url ); + if ( isset( $_GET['proxy'] ) ) { + $url .= '&proxy=' . $_GET['proxy']; + } + + // Ad URL rewrite + if ( strpos( $url, 'http' ) === false ) { + $url = 'http:' . $url; + } + + if ( isset( $_GET['callback'] ) ) { + foreach ( $_GET as $key => $value ) { + if ( in_array( $key, array( 'url', 'mode', 'full_headers', 'full_status', 'send_cookies' ) ) ) { + continue; + } + $url .= "&" . $key . '=' . $value; + } + } + + + $args = array( + 'user-agent' => isset( $_GET['user_agent'] ) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'], + 'method' => 'GET', + ); + + if ( isset( $_GET['send_cookies'] ) && $_GET['send_cookies'] ) { + $cookie = array(); + foreach ( $_COOKIE as $key => $value ) { + $cookie[] = $key . '=' . $value; + } + if ( isset( $_GET['send_session'] ) && $_GET['send_session'] ) { + $cookie[] = SID; + } + $args['cookies'] = $cookie; + + } + if ( strtolower( $_SERVER['REQUEST_METHOD'] ) == 'post' ) { + $args['body'] = $_POST; + $args['method'] = 'POST'; + + } + + + $response = wp_remote_request( + $url, + $args + ); + + if ( ! is_wp_error( $response ) ) { + $status = $response['response']['code']; + $contents = $response['body']; + } + + } + + + if ( isset( $_GET['mode'] ) && $_GET['mode'] == 'native' ) { + if ( ! $enable_native ) { + $contents = 'ERROR: invalid mode'; + $status = array( 'http_code' => 'ERROR' ); + } + + if ( isset( $response['headers']['content-type'] ) ) { + header('Content-Type: '.$response['headers']['content-type']); + } + if ( isset( $response['headers']['content-language'] ) ) { + header('Content-Language: '.$response['headers']['content-language']); + } + if ( isset( $response['headers']['set-cookie'] ) ) { + header('Set-Cookie: '.$response['headers']['set-cookie']); + } + + print str_replace( 'ads.reduxframework.com', 'look.reduxframework.com', $contents ); + + } else { + + // $data will be serialized into JSON data. + $data = array(); + + // Propagate all HTTP headers into the JSON data object. + if ( isset( $_GET['full_headers'] ) && $_GET['full_headers'] ) { + $data['headers'] = array(); + + } + + // Propagate all cURL request / response info to the JSON data object. + if ( isset( $_GET['full_status'] ) && $_GET['full_status'] ) { + $data['status'] = $status; + } else { + $data['status'] = array(); + $data['status']['http_code'] = $status['http_code']; + } + + // Set the JSON data object contents, decoding it from JSON if possible. + $decoded_json = json_decode( $contents ); + $data['contents'] = str_replace('e(window).width()', 'window.innerWidth||e(window).width()', $decoded_json ? $decoded_json : $contents); + + // Generate appropriate content-type header. + + $is_xhr = isset( $_SERVER['HTTP_X_REQUESTED_WITH'] ) ? strtolower( $_SERVER['HTTP_X_REQUESTED_WITH'] ) : 'xmlhttprequest'; + header( 'Content-type: application/' . ( $is_xhr ? 'json' : 'x-javascript' ) ); + + // Get JSONP callback. + $jsonp_callback = $enable_jsonp && isset( $_GET['callback'] ) ? $_GET['callback'] : null; + + // Generate JSON/JSONP string + $json = json_encode( $data ); + + print $jsonp_callback ? "$jsonp_callback($json)" : $json; + + } + + } + } + + new Redux_P(); + diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_filesystem.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_filesystem.php new file mode 100644 index 00000000..f5e43bc6 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_filesystem.php @@ -0,0 +1,138 @@ +filesystem = $this; + $this->parent = $parent; + add_action( 'all_admin_notices', array( $this, 'ftp_form' ) ); + } + + public function ftp_form() { + if ( isset( $this->ftp_form ) && ! empty( $this->ftp_form ) ) { + echo '

    '; + echo __( 'Unable to create a required directory. Please ensure that', 'redux-framework' ); + echo ' ' . Redux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/ '; + echo __( 'has the proper read/write permissions or enter your FTP information below.', 'redux-framework' ); + echo '

    ' . $this->ftp_form . '
    '; + } + } + + public function execute( $action, $file = '', $params = '' ) { + + if ( ! empty ( $params ) ) { + extract( $params ); + } + + // Setup the filesystem with creds + require_once( ABSPATH . '/wp-admin/includes/template.php' ); + require_once( ABSPATH . '/wp-admin/includes/file.php' ); + + if ( $this->parent->args['menu_type'] == 'submenu' ) { + $page_parent = $this->parent->args['page_parent']; + $base = $page_parent . '?page=' . $this->parent->args['page_slug']; + } else { + $base = 'admin.php?page=' . $this->parent->args['page_slug']; + } + + $url = wp_nonce_url( $base ); + + if ( ! isset( $this->creds ) ) { + if ( false === ( $this->creds = request_filesystem_credentials( $url, 'direct', false, false ) ) ) { + $res = $this->do_action( $action, $file, $params ); + if ( $res ) { + $this->creds = true; + } else { + return true; + } + } + } + + if ( ! WP_Filesystem( $this->creds ) ) { + + $res = $this->do_action( $action, $file, $params ); + if ( $res ) { + return $res; + } else if ( is_admin() ) { + // our credentials were no good, ask the user for them again + ob_start(); + request_filesystem_credentials( $url, '', true, false ); + $this->ftp_form = ob_get_contents(); + ob_end_clean(); + + return true; + } else { + return false; + } + + } + + return $this->do_action( $action, $file, $params ); + } + + public function do_action( $action, $file = '', $params = '' ) { + + if ( ! empty ( $params ) ) { + extract( $params ); + } + + global $wp_filesystem; + + if ( defined( 'FS_CHMOD_FILE' ) ) { + $chmod = FS_CHMOD_FILE; + } + + // Do unique stuff + if ( $action == 'mkdir' && ! isset( $this->filesystem->killswitch ) ) { + wp_mkdir_p( $file ); + + $res = file_exists( $file ); + if ( defined( 'FS_CHMOD_DIR' ) ) { + $chmod = FS_CHMOD_DIR; + } else { + $chmod = 0755; + } + if ( ! $res ) { + mkdir( $file, $chmod, true ); + $res = file_exists( $file ); + } + } elseif ( $action == 'copy' && ! isset( $this->filesystem->killswitch ) ) { + $res = $wp_filesystem->copy( $file, $destination, $overwrite, $chmod ); + if ( ! $res ) { + $res = copy( $file, $destination ); + if ( $res ) { + chmod( $destination, $chmod ); + } + } + } elseif ( $action == 'put_contents' && ! isset( $this->filesystem->killswitch ) ) { + $res = $wp_filesystem->put_contents( $file, $content, $chmod ); + if ( ! $res ) { + $res = file_put_contents( $file, $content ); + if ( $res ) { + chmod( $file, $chmod ); + } + } + } elseif ( $action == 'get_contents' ) { + $res = $wp_filesystem->get_contents( $file ); + if ( ! $res ) { + $res = file_get_contents( $file ); + } + } elseif ( $action == 'object' ) { + $res = $wp_filesystem; + } + if ( isset( $res ) && ! $res ) { + $this->killswitch = true; + } + + return $res; + } + } + } diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_functions.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_functions.php new file mode 100644 index 00000000..24c94f2e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_functions.php @@ -0,0 +1,294 @@ +args['dev_mode'] ) { + $min = '.min'; + } + + return $min; + } + + /** + * Parse CSS from output/compiler array + * + * @since 3.2.8 + * @access private + * @return $css CSS string + */ + public static function parseCSS( $cssArray = array(), $style = '', $value = '' ) { + + // Something wrong happened + if ( count( $cssArray ) == 0 ) { + return; + } else { //if ( count( $cssArray ) >= 1 ) { + $css = ''; + + foreach ( $cssArray as $element => $selector ) { + + // The old way + if ( $element === 0 ) { + $css = self::theOldWay( $cssArray, $style ); + + return $css; + } + + // New way continued + $cssStyle = $element . ':' . $value . ';'; + + $css .= $selector . '{' . $cssStyle . '}'; + } + } + + return $css; + } + + private static function theOldWay( $cssArray, $style ) { + $keys = implode( ",", $cssArray ); + $css = $keys . "{" . $style . '}'; + + return $css; + } + + /** + * initWpFilesystem - Initialized the Wordpress filesystem, if it already isn't. + * + * @since 3.2.3 + * @access public + * @return void + */ + public static function initWpFilesystem() { + global $wp_filesystem; + + // Initialize the Wordpress filesystem, no more using file_put_contents function + if ( empty( $wp_filesystem ) ) { + require_once( ABSPATH . '/wp-admin/includes/file.php' ); + WP_Filesystem(); + } + } + + /** + * modRewriteCheck - Check for the installation of apache mod_rewrite + * + * @since 3.2.3 + * @access public + * @return void + */ + public static function modRewriteCheck() { + if ( function_exists( 'apache_get_modules' ) ) { + if ( ! in_array( 'mod_rewrite', apache_get_modules() ) ) { + self::$_parent->admin_notices[] = array( + 'type' => 'error', + 'msg' => '
    The Apache mod_rewrite module is not enabled on your server.
    +
    + Both Wordpress and Redux require the enabling of the Apache mod_rewrite module to function properly. Please contact whomever provides support for your server and ask them to enable the mod_rewrite module', + 'id' => 'mod_rewrite_notice_', + 'dismiss' => false + ); + } + } + } + + /** + * verFromGit - Retrives latest Redux version from GIT + * + * @since 3.2.0 + * @access private + * @return string $ver + */ + private static function verFromGit() { + // Get the raw framework.php from github + $gitpage = wp_remote_get( + 'https://raw.github.com/ReduxFramework/redux-framework/master/ReduxCore/framework.php', array( + 'headers' => array( + 'Accept-Encoding' => '' + ), + 'sslverify' => true, + 'timeout' => 300 + ) ); + + // Is the response code the corect one? + if ( ! is_wp_error( $gitpage ) ) { + if ( isset( $gitpage['body'] ) ) { + // Get the page text. + $body = $gitpage['body']; + + // Find version line in framework.php + $needle = 'public static $_version ='; + $pos = strpos( $body, $needle ); + + // If it's there, continue. We don't want errors if $pos = 0. + if ( $pos > 0 ) { + + // Look for the semi-colon at the end of the version line + $semi = strpos( $body, ";", $pos ); + + // Error avoidance. If the semi-colon is there, continue. + if ( $semi > 0 ) { + + // Extract the version line + $text = substr( $body, $pos, ( $semi - $pos ) ); + + // Find the first quote around the veersion number. + $quote = strpos( $body, "'", $pos ); + + // Extract the version number + $ver = substr( $body, $quote, ( $semi - $quote ) ); + + // Strip off quotes. + $ver = str_replace( "'", '', $ver ); + + return $ver; + } + } + } + } + } + + /** + * updateCheck - Checks for updates to Redux Framework + * + * @since 3.2.0 + * @access public + * + * @param string $curVer Current version of Redux Framework + * + * @return void - Admin notice is diaplyed if new version is found + */ + public static function updateCheck( $curVer ) { + + // If no cookie, check for new ver + if ( ! isset( $_COOKIE['redux_update_check'] ) ) { // || 1 == strcmp($_COOKIE['redux_update_check'], self::$_version)) { + // actual ver number from git repo + $ver = self::verFromGit(); + + // hour long cookie. + setcookie( "redux_update_check", $ver, time() + 3600, '/' ); + } else { + + // saved value from cookie. If it's different from current ver + // we can still show the update notice. + $ver = $_COOKIE['redux_update_check']; + } + + // Set up admin notice on new version + //if ( 1 == strcmp( $ver, $curVer ) ) { + if ( version_compare( $ver, $curVer, '>' ) ) { + self::$_parent->admin_notices[] = array( + 'type' => 'updated', + 'msg' => 'A new build of Redux is now available!

    Your version: ' . $curVer . '
    New version: ' . $ver . '

    If you are not a developer, your theme/plugin author shipped with dev_mode on. Contact them to fix it, but in the meantime you can use our dev_mode disabler.

    Get it now  |', + 'id' => 'dev_notice_' . $ver, + 'dismiss' => true, + ); + } + } + + /** + * adminNotices - Evaluates user dismiss option for displaying admin notices + * + * @since 3.2.0 + * @access public + * @return void + */ + public static function adminNotices() { + global $current_user, $pagenow; + + // Check for an active admin notice array + if ( ! empty( self::$_parent->admin_notices ) ) { + + // Enum admin notices + foreach ( self::$_parent->admin_notices as $notice ) { + if ( true == $notice['dismiss'] ) { + + // Get user ID + $userid = $current_user->ID; + + if ( ! get_user_meta( $userid, 'ignore_' . $notice['id'] ) ) { + + // Check if we are on admin.php. If we are, we have + // to get the current page slug and tab, so we can + // feed it back to Wordpress. Why> admin.php cannot + // be accessed without the page parameter. We add the + // tab to return the user to the last panel they were + // on. + $pageName = ''; + $curTab = ''; + if ( $pagenow == 'admin.php' || $pagenow == 'themes.php' ) { + + // Get the current page. To avoid errors, we'll set + // the redux page slug if the GET is empty. + $pageName = empty( $_GET['page'] ) ? '&page=' . self::$_parent->args['page_slug'] : '&page=' . $_GET['page']; + + // Ditto for the current tab. + $curTab = empty( $_GET['tab'] ) ? '&tab=0' : '&tab=' . $_GET['tab']; + } + + // Print the notice with the dismiss link + echo ''; + } + } else { + + // Standard notice + echo '

    ' . $notice['msg'] . '.

    '; + } + } + + // Clear the admin notice array + self::$_parent->admin_notices = array(); + } + } + + /** + * dismissAdminNotice - Updates user meta to store dismiss notice preference + * + * @since 3.2.0 + * @access public + * @return void + */ + public static function dismissAdminNotice() { + global $current_user; + + // Verify the dismiss and id parameters are present. + if ( isset( $_GET['dismiss'] ) && isset( $_GET['id'] ) ) { + if ( 'true' == $_GET['dismiss'] || 'false' == $_GET['dismiss'] ) { + + // Get the user id + $userid = $current_user->ID; + + // Get the notice id + $id = $_GET['id']; + $val = $_GET['dismiss']; + + // Add the dismiss request to the user meta. + update_user_meta( $userid, 'ignore_' . $id, $val ); + } + } + } + } + } \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_helpers.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_helpers.php new file mode 100644 index 00000000..6ba48fed --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_helpers.php @@ -0,0 +1,308 @@ +sections as $k => $section ) { + if ( ! isset( $section['title'] ) ) { + continue; + } + + if ( isset( $section['fields'] ) && ! empty( $section['fields'] ) ) { + if ( Redux_Helpers::recursive_array_search( $field, $section['fields'] ) ) { + return $k; + continue; + } + } + } + } + + public static function isFieldInUseByType( $fields, $field = array() ) { + foreach ( $field as $name ) { + if ( array_key_exists( $name, $fields ) ) { + return true; + } + } + + return false; + } + + public static function isFieldInUse( $parent, $field ) { + foreach ( $parent->sections as $k => $section ) { + if ( ! isset( $section['title'] ) ) { + continue; + } + + if ( isset( $section['fields'] ) && ! empty( $section['fields'] ) ) { + if ( Redux_Helpers::recursive_array_search( $field, $section['fields'] ) ) { + return true; + continue; + } + } + } + } + + public function trackingObject() { + global $blog_id, $wpdb; + $pts = array(); + + foreach ( get_post_types( array( 'public' => true ) ) as $pt ) { + $count = wp_count_posts( $pt ); + $pts[ $pt ] = $count->publish; + } + + $comments_count = wp_count_comments(); + $theme_data = wp_get_theme(); + $theme = array( + 'version' => $theme_data->Version, + 'name' => $theme_data->Name, + 'author' => $theme_data->Author, + 'template' => $theme_data->Template, + ); + + if ( ! function_exists( 'get_plugin_data' ) ) { + require_once( ABSPATH . 'wp-admin/includes/admin.php' ); + } + + $plugins = array(); + foreach ( get_option( 'active_plugins', array() ) as $plugin_path ) { + $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); + + $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); + $plugins[ $slug ] = array( + 'version' => $plugin_info['Version'], + 'name' => $plugin_info['Name'], + 'plugin_uri' => $plugin_info['PluginURI'], + 'author' => $plugin_info['AuthorName'], + 'author_uri' => $plugin_info['AuthorURI'], + ); + } + if ( is_multisite() ) { + foreach ( get_option( 'active_sitewide_plugins', array() ) as $plugin_path ) { + $plugin_info = get_plugin_data( WP_PLUGIN_DIR . '/' . $plugin_path ); + $slug = str_replace( '/' . basename( $plugin_path ), '', $plugin_path ); + $plugins[ $slug ] = array( + 'version' => $plugin_info['Version'], + 'name' => $plugin_info['Name'], + 'plugin_uri' => $plugin_info['PluginURI'], + 'author' => $plugin_info['AuthorName'], + 'author_uri' => $plugin_info['AuthorURI'], + ); + } + } + + + $version = explode( '.', PHP_VERSION ); + $version = array( 'major' => $version[0], + 'minor' => $version[0] . '.' . $version[1], + 'release' => PHP_VERSION + ); + + $user_query = new WP_User_Query( array( 'blog_id' => $blog_id, 'count_total' => true, ) ); + $comments_query = new WP_Comment_Query(); + $data = array( + '_id' => $this->options['hash'], + 'localhost' => ( $_SERVER['REMOTE_ADDR'] === '127.0.0.1' ) ? 1 : 0, + 'php' => $version, + 'site' => array( + 'hash' => $this->options['hash'], + 'version' => get_bloginfo( 'version' ), + 'multisite' => is_multisite(), + 'users' => $user_query->get_total(), + 'lang' => get_locale(), + 'wp_debug' => ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? true : false : false ), + 'memory' => WP_MEMORY_LIMIT, + ), + 'pts' => $pts, + 'comments' => array( + 'total' => $comments_count->total_comments, + 'approved' => $comments_count->approved, + 'spam' => $comments_count->spam, + 'pings' => $comments_query->query( array( 'count' => true, 'type' => 'pingback' ) ), + ), + 'options' => apply_filters( 'redux/tracking/options', array() ), + 'theme' => $theme, + 'redux' => array( + 'mode' => ReduxFramework::$_is_plugin ? 'plugin' : 'theme', + 'version' => ReduxFramework::$_version, + 'demo_mode' => get_option( 'ReduxFrameworkPlugin' ), + ), + 'developer' => apply_filters( 'redux/tracking/developer', array() ), + 'plugins' => $plugins, + ); + + $parts = explode( ' ', $_SERVER['SERVER_SOFTWARE'] ); + $software = array(); + foreach ( $parts as $part ) { + if ( $part[0] == "(" ) { + continue; + } + if ( strpos( $part, '/' ) !== false ) { + $chunk = explode( "/", $part ); + $software[ strtolower( $chunk[0] ) ] = $chunk[1]; + } + } + $software['full'] = $_SERVER['SERVER_SOFTWARE']; + $data['environment'] = $software; + if ( function_exists( 'mysql_get_server_info' ) ) { + $data['environment']['mysql'] = mysql_get_server_info(); + } + if ( empty( $data['developer'] ) ) { + unset( $data['developer'] ); + } + + return $data; + } + + public static function isParentTheme( $file ) { + $file = self::cleanFilePath( $file ); + $dir = self::cleanFilePath( get_template_directory() ); + + $file = str_replace('//', '/', $file); + $dir = str_replace('//', '/', $dir); + + if ( strpos( $file, $dir ) !== false ) { + return true; + } + + return false; + } + + public static function isChildTheme( $file ) { + $file = self::cleanFilePath( $file ); + $dir = self::cleanFilePath( get_stylesheet_directory() ); + + $file = str_replace('//', '/', $file); + $dir = str_replace('//', '/', $dir); + + if ( strpos( $file, $dir ) !== false ) { + return true; + } + + return false; + } + + private static function reduxAsPlugin() { + return ReduxFramework::$_as_plugin; + } + + public static function isTheme( $file ) { + + if ( true == self::isChildTheme( $file ) || true == self::isParentTheme( $file ) ) { + return true; + } + + return false; + } + + public static function array_in_array( $needle, $haystack ) { + //Make sure $needle is an array for foreach + if ( ! is_array( $needle ) ) { + $needle = array( $needle ); + } + //For each value in $needle, return TRUE if in $haystack + foreach ( $needle as $pin ) //echo 'needle' . $pin; + { + if ( in_array( $pin, $haystack ) ) { + return true; + } + } + + //Return FALSE if none of the values from $needle are found in $haystack + return false; + } + + public static function recursive_array_search( $needle, $haystack ) { + foreach ( $haystack as $key => $value ) { + if ( $needle === $value || ( is_array( $value ) && self::recursive_array_search( $needle, $value ) !== false ) ) { + return true; + } + } + + return false; + } + + /** + * Take a path and return it clean + * + * @param string $path + * + * @since 3.1.7 + */ + public static function cleanFilePath( $path ) { + $path = str_replace( '', '', str_replace( array( "\\", "\\\\" ), '/', $path ) ); + + if ( $path[ strlen( $path ) - 1 ] === '/' ) { + $path = rtrim( $path, '/' ); + } + + return $path; + } + + /** + * Take a path and delete it + * + * @param string $path + * + * @since 3.3.3 + */ + public static function rmdir( $dir ) { + if ( is_dir( $dir ) ) { + $objects = scandir( $dir ); + foreach ( $objects as $object ) { + if ( $object != "." && $object != ".." ) { + if ( filetype( $dir . "/" . $object ) == "dir" ) { + rrmdir( $dir . "/" . $object ); + } else { + unlink( $dir . "/" . $object ); + } + } + } + reset( $objects ); + rmdir( $dir ); + } + } + + /** + * Field Render Function. + * Takes the color hex value and converts to a rgba. + * + * @since ReduxFramework 3.0.4 + */ + public static function hex2rgba( $hex, $alpha = '' ) { + $hex = str_replace( "#", "", $hex ); + if ( strlen( $hex ) == 3 ) { + $r = hexdec( substr( $hex, 0, 1 ) . substr( $hex, 0, 1 ) ); + $g = hexdec( substr( $hex, 1, 1 ) . substr( $hex, 1, 1 ) ); + $b = hexdec( substr( $hex, 2, 1 ) . substr( $hex, 2, 1 ) ); + } else { + $r = hexdec( substr( $hex, 0, 2 ) ); + $g = hexdec( substr( $hex, 2, 2 ) ); + $b = hexdec( substr( $hex, 4, 2 ) ); + } + $rgb = $r . ',' . $g . ',' . $b; + + if ( '' == $alpha ) { + return $rgb; + } else { + $alpha = floatval( $alpha ); + + return 'rgba(' . $rgb . ',' . $alpha . ')'; + } + } + } +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_instances.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_instances.php new file mode 100644 index 00000000..d6362aeb --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_instances.php @@ -0,0 +1,164 @@ +options = get_option( 'redux-framework-tracking' ); + $this->options['dev_mode'] = false; + + if ( ! isset( $this->options['hash'] ) || ! $this->options['hash'] || empty( $this->options['hash'] ) ) { + $this->options['hash'] = md5( network_site_url() . '-' . $_SERVER['REMOTE_ADDR'] ); + update_option( 'redux-framework-tracking', $this->options ); + } + + if ( isset( $_GET['redux_framework_disable_tracking'] ) && ! empty( $_GET['redux_framework_disable_tracking'] ) ) { + $this->options['allow_tracking'] = false; + update_option( 'redux-framework-tracking', $this->options ); + } + + if ( isset( $_GET['redux_framework_enable_tracking'] ) && ! empty( $_GET['redux_framework_enable_tracking'] ) ) { + $this->options['allow_tracking'] = true; + update_option( 'redux-framework-tracking', $this->options ); + } + + header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); + header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . "GMT" ); + header( 'Expires: Sat, 26 Jul 1997 05:00:00 GMT' ); + header( 'Cache-Control: no-store, no-cache, must-revalidate' ); + header( 'Cache-Control: post-check=0, pre-check=0', false ); + header( 'Pragma: no-cache' ); + $instances = ReduxFrameworkInstances::get_all_instances(); + + if ( isset( $_REQUEST['i'] ) && ! empty( $_REQUEST['i'] ) ) { + if ( is_array( $instances ) && ! empty( $instances ) ) { + foreach ( $instances as $opt_name => $data ) { + if ( md5( $opt_name . '-debug' ) == $_REQUEST['i'] ) { + $array = $instances[ $opt_name ]; + } + if ($data->args['dev_mode']) { + $this->options['dev_mode'] = $data->args['dev_mode']; + } + } + } + if ( isset( $array ) ) { + if ( isset( $array->extensions ) && is_array( $array->extensions ) && ! empty( $array->extensions ) ) { + foreach ( $array->extensions as $key => $extension ) { + if ( isset( $extension->$version ) ) { + $array->extensions[ $key ] = $extension->$version; + } else { + $array->extensions[ $key ] = true; + } + } + } + if ( isset( $array->import_export ) ) { + unset( $array->import_export ); + } + if ( isset( $array->debug ) ) { + unset( $array->debug ); + } + } else { + die(); + } + + } else { + $array = Redux_Helpers::trackingObject(); + if ( is_array( $instances ) && ! empty( $instances ) ) { + $array['instances'] = array(); + foreach ( $instances as $opt_name => $data ) { + $array['instances'][] = $opt_name; + } + } + $array['key'] = md5( AUTH_KEY . SECURE_AUTH_KEY ); + } + + echo @json_encode( $array, true ); + die(); + } + + function capture( $ReduxFramework ) { + $this->store( $ReduxFramework ); + } + + private function store( $ReduxFramework ) { + if ( $ReduxFramework instanceof ReduxFramework ) { + $key = $ReduxFramework->args['opt_name']; + self::$instances[ $key ] = $ReduxFramework; + } + } + } diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_themecheck.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_themecheck.php new file mode 100644 index 00000000..360690ef --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/class.redux_themecheck.php @@ -0,0 +1,123 @@ +load(); + } + } + + public function load() { + + $redux = new ReduxFramework(); + $redux->init(); + + + + //if ( ! empty( $redux ) ) { + + + $dir = ReduxFramework::$_dir . '../'; + + if ( isset( $_POST['themename'] ) && ! empty( $_POST['themename'] ) ) { + if ( strpos( $dir, $_POST['themename'] ) !== false ) { + ?> +
    +

    Redux Framework', '', '' ); + ?> +

    +
    +

    Redux directory. They may cause errors in Theme-Check.', 'redux-framework' ); + echo '

      '; + foreach ( $errors as $error ) { + echo '
    • ~/' . $error . '
    • '; + } + ?> +
    . + * + * @package ReduxFramework + * @subpackage debug object + * @author Dovy Paukstys + * @author Kevin Provance (kprovance) + * @version 3.1.8 + */ + +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + + if ( ! class_exists( 'ReduxDebugObject' ) ) { + + /** + * Main ReduxFramework_import_export class + * + * @since 1.0.0 + */ + class ReduxDebugObject { + public function __construct( $parent ) { + $this->parent = $parent; + } + + public function render() { + echo '
    '; + echo '

    ' . __( 'Options Object', 'redux-framework' ) . '

    '; + echo '
    '; + echo '
    '; + echo '
    '; + + if ( version_compare( phpversion(), "5.3.0", ">=" ) ) { + $json = json_encode( $this->parent->options, true ); + } else { + $json = json_encode( $this->parent->options ); + } + + echo '
    ' . $json . '
    '; + + echo '' . __( 'Show Object in Javascript Console Object', 'redux-framework' ) . ''; + + echo '
    '; + } + + public function render_tab() { + echo ''; + } + + public function add_submenu() { + add_submenu_page( + $this->parent->args['page_slug'], + __( 'Options Object', 'redux-framework' ), + __( 'Options Object', 'redux-framework' ), + $this->parent->args['page_permissions'], + $this->parent->args['page_slug'] . '&tab=dev_mode_default', + '__return_null' + ); + } + } + } diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.css b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.css new file mode 100644 index 00000000..1017d935 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.css @@ -0,0 +1,12 @@ +.redux-container-ace_editor .ace-wrapper { + position: static; +} +.redux-container-ace_editor .ace_editor { + height: 200px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; +} +.redux-container-ace_editor .ace_gutter { + z-index: 1 !important; +} diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.js new file mode 100644 index 00000000..9f2a161e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.js @@ -0,0 +1,62 @@ +/*global jQuery, document, redux*/ + +(function( $ ) { + "use strict"; + + redux.field_objects = redux.field_objects || {}; + redux.field_objects.ace_editor = redux.field_objects.ace_editor || {}; + + $( document ).ready( + function() { + //redux.field_objects.ace_editor.init(); + } + ); + + + redux.field_objects.ace_editor.init = function( selector ) { + if ( !selector ) { + selector = $( document ).find( '.redux-container-ace_editor' ); + } + + $( selector ).each( + function() { + var el = $( this ); + var parent = el; + if ( !el.hasClass( 'redux-field-container' ) ) { + parent = el.parents( '.redux-field-container:first' ); + } + if ( parent.hasClass( 'redux-field-init' ) ) { + parent.removeClass( 'redux-field-init' ); + } else { + return; + } + el.find( '.ace-editor' ).each( + function( index, element ) { + var area = element; + var params = JSON.parse( $( this ).parent().find( '.localize_data' ).val() ); + var editor = $( element ).attr( 'data-editor' ); + + var aceeditor = ace.edit( editor ); + aceeditor.setTheme( "ace/theme/" + jQuery( element ).attr( 'data-theme' ) ); + aceeditor.getSession().setMode( "ace/mode/" + $( element ).attr( 'data-mode' ) ); + var parent = ''; + if ( el.hasClass( 'redux-field-container' ) ) { + parent = el.attr( 'data-id' ); + } else { + parent = el.parents( '.redux-field-container:first' ).attr( 'data-id' ); + } + + aceeditor.setOptions( params ); + aceeditor.on( + 'change', function( e ) { + $( '#' + area.id ).val( aceeditor.getSession().getValue() ); + redux_change( $( element ) ); + aceeditor.resize(); + } + ); + } + ); + } + ); + }; +})( jQuery ); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.less b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.less new file mode 100644 index 00000000..0f7f3ed1 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.less @@ -0,0 +1,15 @@ +.redux-container-ace_editor { + .ace-wrapper { + position: static; + } + .ace_editor { + height: 200px; + -webkit-border-radius: 3px; + -moz-border-radius: 3px; + border-radius: 3px; + } + .ace_gutter { + z-index: 1 !important; + } +} + diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js new file mode 100644 index 00000000..44a7964f --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.min.js @@ -0,0 +1 @@ +!function(a){"use strict";redux.field_objects=redux.field_objects||{},redux.field_objects.ace_editor=redux.field_objects.ace_editor||{},a(document).ready(function(){}),redux.field_objects.ace_editor.init=function(b){b||(b=a(document).find(".redux-container-ace_editor")),a(b).each(function(){var b=a(this),c=b;b.hasClass("redux-field-container")||(c=b.parents(".redux-field-container:first")),c.hasClass("redux-field-init")&&(c.removeClass("redux-field-init"),b.find(".ace-editor").each(function(c,d){var e=d,f=JSON.parse(a(this).parent().find(".localize_data").val()),g=a(d).attr("data-editor"),h=ace.edit(g);h.setTheme("ace/theme/"+jQuery(d).attr("data-theme")),h.getSession().setMode("ace/mode/"+a(d).attr("data-mode"));var i="";i=b.hasClass("redux-field-container")?b.attr("data-id"):b.parents(".redux-field-container:first").attr("data-id"),h.setOptions(f),h.on("change",function(){a("#"+e.id).val(h.getSession().getValue()),redux_change(a(d)),h.resize()})}))})}}(jQuery); \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.php b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.php new file mode 100644 index 00000000..b62a8481 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/field_ace_editor.php @@ -0,0 +1,127 @@ +. + * + * @package Redux_Field + * @subpackage ACE_Editor + * @version 3.0.0 + */ +// Exit if accessed directly + if ( ! defined( 'ABSPATH' ) ) { + exit; + } + +// Don't duplicate me! + if ( ! class_exists( 'ReduxFramework_ace_editor' ) ) { + class ReduxFramework_ace_editor { + + /** + * Field Constructor. + * Required - must call the parent constructor, then assign field and value to vars, and obviously call the render field function + * + * @since ReduxFramework 1.0.0 + */ + function __construct( $field = array(), $value = '', $parent ) { + $this->parent = $parent; + $this->field = $field; + $this->value = $value; + + if ( is_array( $this->value ) ) { + $this->value = ''; + } else { + $this->value = trim( $this->value ); + } + + if ( ! empty( $this->field['options'] ) ) { + $this->field['args'] = $this->field['options']; + unset( $this->field['options'] ); + } + + } + + /** + * Field Render Function. + * Takes the vars and outputs the HTML for the field in the settings + * + * @since ReduxFramework 1.0.0 + */ + function render() { + + if ( ! isset( $this->field['mode'] ) ) { + $this->field['mode'] = 'javascript'; + } + if ( ! isset( $this->field['theme'] ) ) { + $this->field['theme'] = 'monokai'; + } + + $params = array( + 'minLines' => 10, + 'maxLines' => 30, + ); + + if ( isset( $this->field['args'] ) && ! empty( $this->field['args'] ) && is_array( $this->field['args'] ) ) { + $params = wp_parse_args( $this->field['args'], $params ); + } + + ?> +
    + + +
    value ); ?>
    +
    + 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;et.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+ta)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>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>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>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>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>>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>>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=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.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,t.isChromeOS=i.indexOf(" CrOS ")>=0}),ace.define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t,n){var o=s(t);if(!i.isMac&&u){if(u[91]||u[92])o|=8;if(u.altGr){if((3&o)==3)return;u.altGr=0}if(n===18||n===17){var f=t.location||t.keyLocation;if(n===17&&f===1)a=t.timeStamp;else if(n===18&&o===3&&f===2){var l=-a;a=t.timeStamp,l+=a,l<3&&(u.altGr=!0)}}}if(n in r.MODIFIER_KEYS){switch(r.MODIFIER_KEYS[n]){case"Alt":o=2;break;case"Shift":o=4;break;case"Ctrl":o=1;break;default:o=8}n=-1}o&8&&(n===91||n===93)&&(n=-1);if(!o&&n===13)if(t.location||t.keyLocation===3){e(t,o,-n);if(t.defaultPrevented)return}if(i.isChromeOS&&o&8){e(t,o,n);if(t.defaultPrevented)return;o&=-9}return!!o||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,o,n):!1}var r=e("./keys"),i=e("./useragent");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"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?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 c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),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 s=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[s(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/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},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=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.$clickSelection=null,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.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row)},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);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/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),ace.define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
    "),i.setHtml(f),i.show(),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=n.$cells[t.session.documentToScreenRow(r,0)].element,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);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 o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),ace.define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";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){"use strict";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=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/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";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()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";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;o1&&(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=f;var c={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)}},h={};t.defineOptions=function(e,t,n){return e.$options||(h[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,c),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=h[e]||(h[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/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){"use strict";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){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){!e.isFocused()&&e.textInput&&e.textInput.moveToMouse(t),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener(u,[400,300,250],this,"onMouseEvent"),e.renderer.scrollBarV&&(r.addMultiMouseDownListener(e.renderer.scrollBarV.inner,[400,300,250],this,"onMouseEvent"),r.addMultiMouseDownListener(e.renderer.scrollBarH.inner,[400,300,250],this,"onMouseEvent"),i.isIE&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousemove",n))),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",function(t){return e.focus(),r.preventDefault(t)}),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(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){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();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.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&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,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),ace.define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";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){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},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;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);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/range",["require","exports","module"],function(e,t,n){"use strict";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?tthis.end.column?1:0:ethis.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.rowt)var r={row:t+1,column:0};else if(this.start.rowt.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.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),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.row0&&(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(),e0&&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(e0&&/^\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.getRangeOfMovements=function(e){var t=this.getCursor();try{e.call(null,this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},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/tokenizer",["require","exports","module"],function(e,t,n){"use strict";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;a1?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)}r.length||(s[0]=0,r.push("$")),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;il){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;gr){while(l1&&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){"use strict";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=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/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){"use strict";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=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;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.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=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;tthis.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=i?i=s.column:i=Math.max(0,i-(o.column-s.column)):s.row!==o.row&&s.row=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/document",["require","exports","module","ace/lib/oop","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";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._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},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};while(t.length>61440){var n=this._insertLines(e,t.slice(0,61440));t=t.slice(61440),e=n.row}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._signal("change",{data:o}),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._signal("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._signal("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._signal("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._signal("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._signal("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=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;i20){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._signal("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){"use strict";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/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";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.rowthis.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;f0)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=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.rowi)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&&fc.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=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=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=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(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&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==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=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/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";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=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=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._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(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(oe&&(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;ao){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;re.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;o0){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=Array(t),this.$updateWrapData(0,t-1)}this._signal("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._signal("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._signal("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=u.row&&l.shiftRow(-n)}s=i}else{var p=Array(n);p.unshift(i,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,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=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;at){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>2)),i-1);while(f>c&&e[f]c&&e[f]c&&e[f]==p)f--}else while(f>c&&e[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;o39&&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=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=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];if(v){var 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;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(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._signal("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._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("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/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";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,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=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=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/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";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/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";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/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","Ctrl-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Ctrl-Shift-E"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("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:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("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:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o("Ctrl-Alt-0","Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("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:o("Ctrl-Shift-Home","Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("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:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("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:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("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",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",readOnly:!0},{name:"passKeysToBrowser",bindKey:o("null","null"),exec:function(){},passEvent:!0,readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("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",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o=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.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,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;var t=this.session;if(t){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,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._signal("changeSession",{session:e,oldSession:t}),t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},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,t){this.renderer.setTheme(e,t)},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.$highlightTags=function(){var e=this.session;if(this.$highlightTagPending)return;var t=this;this.$highlightTagPending=!0,setTimeout(function(){t.$highlightTagPending=!1;var n=t.getCursorPosition(),r=new y(t.session,n.row,n.column),i=r.getCurrentToken();if(!i||i.type.indexOf("tag-name")===-1){e.removeMarker(e.$tagHighlight),e.$tagHighlight=null;return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="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._signal("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._signal("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;var t={text:e};this._signal("paste",t),this.insert(t.text,!0)},this.execCommand=function(e,t){this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.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;tt.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 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)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=new y(this.session,t.row,t.column),r=n.getCurrentToken(),i=r;i||(i=n.stepForward());if(!i)return;var s,o=!1,u={},a=t.column-i.start,f,l={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(i.value.match(/[{}()\[\]]/g))for(;a=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._signal("destroy",this)},this.setAutoScrollEditorIntoView=function(e){if(!e)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.topwindow.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)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(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("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.$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},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"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",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),ace.define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){this.execute=function(e){var t=e.args[0];this.$doc=e.args[1],e.merge&&this.hasUndo()&&(this.dirtyCounter--,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/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";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;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){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=t.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]=t.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&&vn.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){"use strict";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 i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start",e)}this.element.innerHTML=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
    "),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
    "),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<0)return;u=this.$getTop(t.start.row+1,r),e.push("
    ")},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("
    ")},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("
    ")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
    ")}}).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){"use strict";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.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2192",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},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"+this.TAB_CHAR+s.stringRepeat("\u00a0",n-1)+""):t.push(s.stringRepeat("\u00a0",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=this.TAB_CHAR+s.stringRepeat("\u00a0",this.tabSize-1)}else var u=s.stringRepeat("\u00a0",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},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),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;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.firstRowt.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 while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
    "),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
    "),i++}this.element.innerHTML=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?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":s.stringRepeat("\u00a0",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=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},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("",a,"")}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=o)u=this.$renderToken(e,u,f,l.substring(0,o-i)),l=l.substring(o-i),i=o,r||e.push("
    ","
    "),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");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("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
    ")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?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){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i="opacity"in 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"),this.$updateCursors=this.$updateVisibility.bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},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&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=(e?this.$updateOpacity:this.$updateVisibility).bind(this),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(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);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(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},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;ne.height+e.offset||s.top<0)&&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(s.prototype),t.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";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){"use strict";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/layer/font_metrics",["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=0,f=t.FontMetrics=function(e,t){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=1:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="-100px",e.visibility="hidden",e.position="fixed",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},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.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&this.$pollSizeChangesTimer},this.$measureSizes=function(){if(a===1)var e=this.$measureNode.getBoundingClientRect(),t={height:e.height,width:e.width};else var t={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),ace.define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),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("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font-family: \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;font-size: 12px;line-height: normal;direction: ltr;}.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;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.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,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.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;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_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;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");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;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_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: block;max-width: 100%;padding: 3px 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;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.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;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");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;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.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);}.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(m,"ace_editor");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,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.$fontMetrics=new d(this.container,500),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),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,gutterOffset: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),s.resetOptions(this),s._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,v),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&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e;if(!e)return;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.session.$setFontMetrics(this.$fontMetrics),this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$changedLines.lastRow2)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",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(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+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,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.scrollTop%this.lineHeight,o=t.scrollerHeight+this.lineHeight,u=this.$getLongestLine(),a=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-u-2*this.$padding<0),f=this.$horizScroll!==a;f&&(this.$horizScroll=a,this.scrollBarH.setVisible(a)),!this.$maxLines&&this.$scrollPastEnd&&(i+=(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd);var l=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i<0),c=this.$vScroll!==l;c&&(this.$vScroll=l,this.scrollBarV.setVisible(l)),this.session.setScrollTop(Math.max(-this.scrollMargin.top,Math.min(this.scrollTop,i-t.scrollerHeight+this.scrollMargin.bottom))),this.session.setScrollLeft(Math.max(-this.scrollMargin.left,Math.min(this.scrollLeft,u+2*this.$padding-t.scrollerWidth+this.scrollMargin.right)));var h=Math.ceil(o/this.lineHeight)-1,p=Math.max(0,Math.round((this.scrollTop-s)/this.lineHeight)),d=p+h,v,m,g=this.lineHeight;p=e.screenToDocumentRow(p,0);var y=e.getFoldLine(p);y&&(p=y.start.row),v=e.documentToScreenRow(p,0),m=e.getRowLength(p)*g,d=Math.min(e.screenToDocumentRow(d,0),e.getLength()-1),o=t.scrollerHeight+e.getRowLength(d)*g+m,s=this.scrollTop-v*g;var b=0;this.layerConfig.width!=u&&(b=this.CHANGE_H_SCROLL);if(f||c)b=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),c&&(u=this.$getLongestLine());return this.layerConfig={width:u,padding:this.$padding,firstRow:p,firstRowScreen:v,lastRow:d,lineHeight:g,characterWidth:this.characterWidth,minHeight:o,maxHeight:i,offset:s,gutterOffset:Math.max(0,Math.ceil((s+t.height-t.scrollerHeight)/g)),height:this.$size.scrollerHeight},b},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(ts?(t&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-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 o(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;s.loadModule(["theme",r],o)}else o(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(g.prototype),s.defineOptions(g.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.$loop.schedule(this.CHANGE_FULL),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},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},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=g}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){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);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}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,s),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._signal(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 i.qualifyURL(e)},this.terminate=function(){this._signal("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){console.error(n.stack)}},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})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=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,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";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.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=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};u.row===n.start.row&&n.start.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;e1&&!this.inMultiSelectMode&&(this._signal("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._signal("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._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("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;c1){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.column0)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._emit("changeSelection")},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=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},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;rr.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,e);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}},this.findAll=function(e,t,n){t=t||{},t.needle=e||t.needle;if(t.needle==undefined){var r=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();t.needle=this.session.getTextRange(r)}this.$search.set(t);var i=this.$search.findAll(this.session);if(!i.length)return 0;this.$blockScrolling+=1;var s=this.multiSelect;n||s.toSingleRange(i[0]);for(var o=i.length;o--;)s.addRange(i[o],!0);return r&&s.rangeList.rangeAtPoint(r.start)&&s.addRange(r,!0),this.$blockScrolling-=1,i.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,r=-1,s=n.filter(function(e){if(e.cursor.row==r)return!0;r=e.cursor.row});if(!n.length||s.length==n.length-1){var o=this.selection.getRange(),u=o.start.row,f=o.end.row,l=u==f;if(l){var c=this.session.getLength(),h;do h=this.session.getLine(f);while(/[=:]/.test(h)&&++f0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.doc.removeLines(u,f);p=this.$reAlignText(p,l),this.session.doc.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});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),io?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),st[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.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange),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/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";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(++tf){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){"use strict";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;color: black;}.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/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";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.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;s0&&!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}),ace.define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";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];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,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.moveToPosition(s);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("
    "),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};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),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},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/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";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;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),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));u.setSession(o);var f={document:o,editor:u,onResize:u.resize.bind(u,null)};return i.addListener(window,"resize",f.onResize),u.on("destroy",function(){i.removeListener(window,"resize",f.onResize)}),e.env=u.env=f,u},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u}); + (function() { + ace.require(["ace/ace"], function(a) { + a && a.config.init(true); + if (!window.ace) + window.ace = a; + for (var key in a) if (a.hasOwnProperty(key)) + window.ace[key] = a[key]; + }); + })(); + \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-css.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-css.js new file mode 100644 index 00000000..7004bf60 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-css.js @@ -0,0 +1 @@ +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){"use strict";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){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),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){"use strict";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/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","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){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,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 u(["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(l.prototype),t.Mode=l}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-html.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-html.js new file mode 100644 index 00000000..9c15f36e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-html.js @@ -0,0 +1 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return 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/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("jslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.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){"use strict";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/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";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/css",["require","exports","module","ace/lib/oop","ace/mode/text","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){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,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 u(["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(l.prototype),t.Mode=l}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)([-_a-zA-Z0-9]+)",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)([-_a-zA-Z0-9]+)",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+"},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,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}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getCursorPosition(),a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>u.column||h==u.column&&l!=c)return}}while(!o(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==u.row&&(v=v.substring(0,u.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var s=n.getCursorPosition(),o=r.getLine(s.row),u=o.substring(s.column,s.column+2);if(u=="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=r.mixin(e||{},t||{})};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements.hasOwnProperty(t.tagName))return;if(this.voidElements.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-javascript.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-javascript.js new file mode 100644 index 00000000..30dcda85 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-javascript.js @@ -0,0 +1 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return 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/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("jslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-json.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-json.js new file mode 100644 index 00000000..84eda38c --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-json.js @@ -0,0 +1 @@ +ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"invalid.illegal",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"invalid.illegal",regex:"\\/\\/.*$"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'[^"\\\\]+'},{token:"string",regex:'"',next:"start"},{token:"string",regex:"",next:"start"}]}};r.inherits(s,i),t.JsonHighlightRules=s}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./json_highlight_rules").JsonHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/cstyle").CstyleBehaviour,a=e("./folding/cstyle").FoldMode,f=e("../worker/worker_client").WorkerClient,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(l,i),function(){this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t);if(e=="start"){var i=t.match(/^.*[\{\(\[]\s*$/);i&&(r+=n)}return 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 f(["ace"],"ace/mode/json_worker","JsonWorker");return t.attachToDocument(e.getDocument()),t.on("error",function(t){e.setAnnotations([t.data])}),t.on("ok",function(){e.clearAnnotations()}),t},this.$id="ace/mode/json"}.call(l.prototype),t.Mode=l}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-less.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-less.js new file mode 100644 index 00000000..62029488 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-less.js @@ -0,0 +1 @@ +ace.define("ace/mode/less_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}]}};r.inherits(o,s),t.LessHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),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){"use strict";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/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/less",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/less_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./less_highlight_rules").LessHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",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.$id="ace/mode/less"}.call(f.prototype),t.Mode=f}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-markdown.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-markdown.js new file mode 100644 index 00000000..b314dc2e --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-markdown.js @@ -0,0 +1 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../range").Range,a=e("../worker/worker_client").WorkerClient,f=e("./behaviour/cstyle").CstyleBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.foldingRules=new l};r.inherits(c,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*\:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return 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/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("jslint",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(c.prototype),t.Mode=c}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)([-_a-zA-Z0-9]+)",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)([-_a-zA-Z0-9]+)",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+"},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,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}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getCursorPosition(),a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>u.column||h==u.column&&l!=c)return}}while(!o(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==u.row&&(v=v.substring(0,u.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var s=n.getCursorPosition(),o=r.getLine(s.row),u=o.substring(s.column,s.column+2);if(u=="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=r.mixin(e||{},t||{})};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements.hasOwnProperty(t.tagName))return;if(this.voidElements.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:""},this.$id="ace/mode/xml"}.call(f.prototype),t.Mode=f}),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){"use strict";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/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";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/css",["require","exports","module","ace/lib/oop","ace/mode/text","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){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/css").CssBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,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 u(["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(l.prototype),t.Mode=l}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/folding/mixed",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=t.FoldMode=function(e,t){this.defaultMode=e,this.subModes=t};r.inherits(s,i),function(){this.$getMode=function(e){typeof e!="string"&&(e=e[0]);for(var t in this.subModes)if(e.indexOf(t)===0)return this.subModes[t];return null},this.$tryMode=function(e,t,n,r){var i=this.$getMode(e);return i?i.getFoldWidget(t,n,r):""},this.getFoldWidget=function(e,t,n){return this.$tryMode(e.getState(n-1),e,t,n)||this.$tryMode(e.getState(n),e,t,n)||this.defaultMode.getFoldWidget(e,t,n)},this.getFoldWidgetRange=function(e,t,n){var r=this.$getMode(e.getState(n-1));if(!r||!r.getFoldWidget(e,t,n))r=this.$getMode(e.getState(n));if(!r||!r.getFoldWidget(e,t,n))r=this.defaultMode;return r.getFoldWidgetRange(e,t,n)}}.call(s.prototype)}),ace.define("ace/mode/folding/html",["require","exports","module","ace/lib/oop","ace/mode/folding/mixed","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./mixed").FoldMode,s=e("./xml").FoldMode,o=e("./cstyle").FoldMode,u=t.FoldMode=function(e,t){i.call(this,new s(e,t),{"js-":new o,"css-":new o})};r.inherits(u,i)}),ace.define("ace/mode/html_completions",["require","exports","module","ace/token_iterator"],function(e,t,n){"use strict";function f(e,t){return e.type.lastIndexOf(t+".xml")>-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:["manifest"],head:[],title:[],base:["href","target"],link:["href","hreflang","rel","media","type","sizes"],meta:["http-equiv","name","content","charset"],style:["type","media","scoped"],script:["charset","type","src","defer","async"],noscript:["href"],body:["onafterprint","onbeforeprint","onbeforeunload","onhashchange","onmessage","onoffline","onpopstate","onredo","onresize","onstorage","onundo","onunload"],section:[],nav:[],article:["pubdate"],aside:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],header:[],footer:[],address:[],main:[],p:[],hr:[],pre:[],blockquote:["cite"],ol:["start","reversed"],ul:[],li:["value"],dl:[],dt:[],dd:[],figure:[],figcaption:[],div:[],a:["href","target","ping","rel","media","hreflang","type"],em:[],strong:[],small:[],s:[],cite:[],q:["cite"],dfn:[],abbr:[],data:[],time:["datetime"],code:[],"var":[],samp:[],kbd:[],sub:[],sup:[],i:[],b:[],u:[],mark:[],ruby:[],rt:[],rp:[],bdi:[],bdo:[],span:[],br:[],wbr:[],ins:["cite","datetime"],del:["cite","datetime"],img:["alt","src","height","width","usemap","ismap"],iframe:["name","src","height","width","sandbox","seamless"],embed:["src","height","width","type"],object:["param","data","type","height","width","usemap","name","form","classid"],param:["name","value"],video:["src","autobuffer","autoplay","loop","controls","width","height","poster"],audio:["src","autobuffer","autoplay","loop","controls"],source:["src","type","media"],track:["kind","src","srclang","label","default"],canvas:["width","height"],map:["name"],area:["shape","coords","href","hreflang","alt","target","media","rel","ping","type"],svg:[],math:[],table:["summary"],caption:[],colgroup:["span"],col:["span"],tbody:[],thead:[],tfoot:[],tr:[],td:["headers","rowspan","colspan"],th:["headers","rowspan","colspan","scope"],form:["accept-charset","action","autocomplete","enctype","method","name","novalidate","target"],fieldset:["disabled","form","name"],legend:[],label:["form","for"],input:["type","accept","alt","autocomplete","checked","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","height","list","max","maxlength","min","multiple","pattern","placeholder","readonly","required","size","src","step","width","files","value"],button:["autofocus","disabled","form","formaction","formenctype","formmethod","formnovalidate","formtarget","name","value","type"],select:["autofocus","disabled","form","multiple","name","size"],datalist:[],optgroup:["disabled","label"],option:["disabled","selected","label","value"],textarea:["autofocus","disabled","form","maxlength","name","placeholder","readonly","required","rows","cols","wrap"],keygen:["autofocus","challenge","disabled","form","keytype","name"],output:["for","form","name"],progress:["value","max"],meter:["value","min","max","low","high","optimum"],details:["open"],summary:[],command:["type","label","icon","disabled","checked","radiogroup","command"],menu:["type","label"],dialog:["open"]},a=Object.keys(u),c=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);return i?f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open")?this.getTagCompletions(e,t,n,r):f(i,"tag-whitespace")||f(i,"attribute-name")?this.getAttributeCompetions(e,t,n,r):[]:[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompetions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(u[i])),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})}}).call(c.prototype),t.HtmlCompletions=c}),ace.define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}),ace.define("ace/mode/markdown_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules","ace/mode/html_highlight_rules","ace/mode/css_highlight_rules"],function(e,t,n){"use strict";function c(e,t){return{token:"support.function",regex:"^\\s*```"+e+"\\s*$",push:t+"start"}}var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./css_highlight_rules").CssHighlightRules,l=function(e){return"(?:[^"+i.escapeRegExp(e)+"\\\\]|\\\\.)*"},h=function(){a.call(this),this.$rules.start.unshift({token:"empty_line",regex:"^$",next:"allowBlock"},{token:"markup.heading.1",regex:"^=+(?=\\s*$)"},{token:"markup.heading.2",regex:"^\\-+(?=\\s*$)"},{token:function(e){return"markup.heading."+e.length},regex:/^#{1,6}(?=\s*[^ #]|\s+#.)/,next:"header"},c("(?:javascript|js)","jscode-"),c("xml","xmlcode-"),c("html","htmlcode-"),c("css","csscode-"),{token:"support.function",regex:"^\\s*```\\s*\\S*(?:{.*?\\})?\\s*$",next:"githubblock"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{token:"constant",regex:"^ {0,2}(?:(?: ?\\* ?){3,}|(?: ?\\- ?){3,}|(?: ?\\_ ?){3,})\\s*$",next:"allowBlock"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic"}),this.addRules({basic:[{token:"constant.language.escape",regex:/\\[\\`*_{}\[\]()#+\-.!]/},{token:"support.function",regex:"(`+)(.*?[^`])(\\1)"},{token:["text","constant","text","url","string","text"],regex:'^([ ]{0,3}\\[)([^\\]]+)(\\]:\\s*)([^ ]+)(\\s*(?:["][^"]+["])?(\\s*))$'},{token:["text","string","text","constant","text"],regex:"(\\[)("+l("]")+")(\\]s*\\[)("+l("]")+")(\\])"},{token:["text","string","text","markup.underline","string","text"],regex:"(\\[)("+l("]")+")(\\]\\()"+'((?:[^\\)\\s\\\\]|\\\\.|\\s(?=[^"]))*)'+'(\\s*"'+l('"')+'"\\s*)?'+"(\\))"},{token:"string.strong",regex:"([*]{2}|[_]{2}(?=\\S))(.*?\\S[*_]*)(\\1)"},{token:"string.emphasis",regex:"([*]|[_](?=\\S))(.*?\\S[*_]*)(\\1)"},{token:["text","url","text"],regex:"(<)((?:https?|ftp|dict):[^'\">\\s]+|(?:mailto:)?[-.\\w]+\\@[-a-z0-9]+(?:\\.[-a-z0-9]+)*\\.[a-z]+)(>)"}],allowBlock:[{token:"support.function",regex:"^ {4}.+",next:"allowBlock"},{token:"empty",regex:"",next:"start"}],header:[{regex:"$",next:"start"},{include:"basic"},{defaultToken:"heading"}],"listblock-start":[{token:"support.variable",regex:/(?:\[[ x]\])?/,next:"listblock"}],listblock:[{token:"empty_line",regex:"^$",next:"start"},{token:"markup.list",regex:"^\\s{0,3}(?:[*+-]|\\d+\\.)\\s+",next:"listblock-start"},{include:"basic",noEscape:!0},{token:"support.function",regex:"^\\s*```\\s*[a-zA-Z]*(?:{.*?\\})?\\s*$",next:"githubblock"},{defaultToken:"list"}],blockquote:[{token:"empty_line",regex:"^\\s*$",next:"start"},{token:"string.blockquote",regex:"^\\s*>\\s*(?:[*+-]|\\d+\\.)?\\s+",next:"blockquote"},{include:"basic",noEscape:!0},{defaultToken:"string.blockquote"}],githubblock:[{token:"support.function",regex:"^\\s*```",next:"start"},{token:"support.function",regex:".+"}]}),this.embedRules(o,"jscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(a,"htmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(f,"csscode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.embedRules(u,"xmlcode-",[{token:"support.function",regex:"^\\s*```",next:"pop"}]),this.normalizeRules()};r.inherits(h,s),t.MarkdownHighlightRules=h}),ace.define("ace/mode/folding/markdown",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.foldingStartMarker=/^(?:[=-]+\s*$|#{1,6} |`{3})/,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?r[0]=="`"?e.bgTokenizer.getState(n)=="start"?"end":"start":"start":""},this.getFoldWidgetRange=function(e,t,n){function l(t){return f=e.getTokens(t)[0],f&&f.type.lastIndexOf(c,0)===0}function h(){var e=f.value[0];return e=="="?6:e=="-"?5:7-f.value.search(/[^#]/)}var r=e.getLine(n),i=r.length,o=e.getLength(),u=n,a=n;if(!r.match(this.foldingStartMarker))return;if(r[0]=="`"){if(e.bgTokenizer.getState(n)!=="start"){while(++n0){r=e.getLine(n);if(r[0]=="`"&r.substring(0,3)=="```")break}return new s(n,r.length,u,0)}var f,c="markup.heading";if(l(n)){var p=h();while(++n=p)break}a=n-(!f||["=","-"].indexOf(f.value[0])==-1?1:2);if(a>u)while(a>u&&/^\s*$/.test(e.getLine(a)))a--;if(a>u){var v=e.getLine(a).length;return new s(u,i,a,v)}}}}.call(o.prototype)}),ace.define("ace/mode/markdown",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript","ace/mode/xml","ace/mode/html","ace/mode/markdown_highlight_rules","ace/mode/folding/markdown"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript").Mode,o=e("./xml").Mode,u=e("./html").Mode,a=e("./markdown_highlight_rules").MarkdownHighlightRules,f=e("./folding/markdown").FoldMode,l=function(){this.HighlightRules=a,this.createModeDelegates({"js-":s,"xml-":o,"html-":u}),this.foldingRules=new f};r.inherits(l,i),function(){this.type="text",this.blockComment={start:""},this.getNextLineIndent=function(e,t,n){if(e=="listblock"){var r=/^(\s*)(?:([-+*])|(\d+)\.)(\s+)/.exec(t);if(!r)return"";var i=r[2];return i||(i=parseInt(r[3],10)+1+"."),r[1]+i+r[4]}return this.$getIndent(t)},this.$id="ace/mode/markdown"}.call(l.prototype),t.Mode=l}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-mysql.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-mysql.js new file mode 100644 index 00000000..01da5d06 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-mysql.js @@ -0,0 +1 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/mysql_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=function(){function i(e){var t=e.start,n=e.escape;return{token:"string.start",regex:t,next:[{token:"constant.language.escape",regex:n},{token:"string.end",next:"start",regex:t},{defaultToken:"string"}]}}var e="alter|and|as|asc|between|count|create|delete|desc|distinct|drop|from|having|in|insert|into|is|join|like|not|on|or|order|select|set|table|union|update|values|where|accessible|action|add|after|algorithm|all|analyze|asensitive|at|authors|auto_increment|autocommit|avg|avg_row_length|before|binary|binlog|both|btree|cache|call|cascade|cascaded|case|catalog_name|chain|change|changed|character|check|checkpoint|checksum|class_origin|client_statistics|close|coalesce|code|collate|collation|collations|column|columns|comment|commit|committed|completion|concurrent|condition|connection|consistent|constraint|contains|continue|contributors|convert|cross|current_date|current_time|current_timestamp|current_user|cursor|data|database|databases|day_hour|day_microsecond|day_minute|day_second|deallocate|dec|declare|default|delay_key_write|delayed|delimiter|des_key_file|describe|deterministic|dev_pop|dev_samp|deviance|directory|disable|discard|distinctrow|div|dual|dumpfile|each|elseif|enable|enclosed|end|ends|engine|engines|enum|errors|escape|escaped|even|event|events|every|execute|exists|exit|explain|extended|fast|fetch|field|fields|first|flush|for|force|foreign|found_rows|full|fulltext|function|general|global|grant|grants|group|groupby_concat|handler|hash|help|high_priority|hosts|hour_microsecond|hour_minute|hour_second|if|ignore|ignore_server_ids|import|index|index_statistics|infile|inner|innodb|inout|insensitive|insert_method|install|interval|invoker|isolation|iterate|key|keys|kill|language|last|leading|leave|left|level|limit|linear|lines|list|load|local|localtime|localtimestamp|lock|logs|low_priority|master|master_heartbeat_period|master_ssl_verify_server_cert|masters|match|max|max_rows|maxvalue|message_text|middleint|migrate|min|min_rows|minute_microsecond|minute_second|mod|mode|modifies|modify|mutex|mysql_errno|natural|next|no|no_write_to_binlog|offline|offset|one|online|open|optimize|option|optionally|out|outer|outfile|pack_keys|parser|partition|partitions|password|phase|plugin|plugins|prepare|preserve|prev|primary|privileges|procedure|processlist|profile|profiles|purge|query|quick|range|read|read_write|reads|real|rebuild|recover|references|regexp|relaylog|release|remove|rename|reorganize|repair|repeatable|replace|require|resignal|restrict|resume|return|returns|revoke|right|rlike|rollback|rollup|row|row_format|rtree|savepoint|schedule|schema|schema_name|schemas|second_microsecond|security|sensitive|separator|serializable|server|session|share|show|signal|slave|slow|smallint|snapshot|soname|spatial|specific|sql|sql_big_result|sql_buffer_result|sql_cache|sql_calc_found_rows|sql_no_cache|sql_small_result|sqlexception|sqlstate|sqlwarning|ssl|start|starting|starts|status|std|stddev|stddev_pop|stddev_samp|storage|straight_join|subclass_origin|sum|suspend|table_name|table_statistics|tables|tablespace|temporary|terminated|to|trailing|transaction|trigger|triggers|truncate|uncommitted|undo|uninstall|unique|unlock|upgrade|usage|use|use_frm|user|user_resources|user_statistics|using|utc_date|utc_time|utc_timestamp|value|variables|varying|view|views|warnings|when|while|with|work|write|xa|xor|year_month|zerofill|begin|do|then|else|loop|repeat",t="by|bool|boolean|bit|blob|decimal|double|enum|float|long|longblob|longtext|medium|mediumblob|mediumint|mediumtext|time|timestamp|tinyblob|tinyint|tinytext|text|bigint|int|int1|int2|int3|int4|int8|integer|float|float4|float8|double|char|varbinary|varchar|varcharacter|precision|date|datetime|year|unsigned|signed|numeric",n="charset|clear|connect|edit|ego|exit|go|help|nopager|notee|nowarning|pager|print|prompt|quit|rehash|source|status|system|tee",r=this.createKeywordMapper({"support.function":t,keyword:e,constant:"false|true|null|unknown|date|time|timestamp|ODBCdotTable|zerolessFloat","variable.language":n},"identifier",!0);this.$rules={start:[{token:"comment",regex:"(?:-- |#).*$"},i({start:'"',escape:/\\[0'"bnrtZ\\%_]?/}),i({start:"'",escape:/\\[0'"bnrtZ\\%_]?/}),s.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+|[xX]'[0-9a-fA-F]+'|0[bB][01]+|[bB]'[01]+'/},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:r,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.class",regex:"@@?[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"constant.buildin",regex:"`[^`]*`"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}],comment:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]},this.embedRules(s,"doc-",[s.getEndRule("start")]),this.normalizeRules()};r.inherits(u,o),t.MysqlHighlightRules=u}),ace.define("ace/mode/mysql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/mysql_highlight_rules","ace/range"],function(e,t,n){var r=e("../lib/oop"),i=e("../mode/text").Mode,s=e("./mysql_highlight_rules").MysqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart=["--","#"],this.blockComment={start:"/*",end:"*/"},this.$id="ace/mode/mysql"}.call(u.prototype),t.Mode=u}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-php.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-php.js new file mode 100644 index 00000000..eb0bac74 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-php.js @@ -0,0 +1 @@ +ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},{token:"comment.doc.tag",regex:"\\bTODO\\b"},{defaultToken:"comment.doc"}]}};r.inherits(s,i),s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),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){"use strict";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/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),t="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",n="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*\\b",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|[0-2][0-7]{0,2}|3[0-6][0-7]?|37[0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[{token:"comment",regex:"\\/\\/",next:"line_comment"},i.getStartRule("doc-start"),{token:"comment",regex:/\/\*/,next:"comment"},{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0[xX][0-9a-fA-F]+\b/},{token:"constant.numeric",regex:/[+-]?\d+(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+n+")(\\.)(prototype)(\\.)("+n+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+n+")(\\.)("+n+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+t+")\\b",next:"start"},{token:["punctuation.operator","support.function"],regex:/(\.)(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:["punctuation.operator","support.function.dom"],regex:/(\.)(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:["punctuation.operator","support.constant"],regex:/(\.)(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:e,regex:n},{token:"keyword.operator",regex:/--|\+\+|[!$%&*+\-~]|===|==|=|!=|!==|<=|>=|<<=|>>=|>>>=|<>|<|>|!|&&|\|\||\?\:|\*=|%=|\+=|\-=|&=|\^=/,next:"start"},{token:"punctuation.operator",regex:/\?|\:|\,|\;|\./,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"keyword.operator",regex:/\/=?/,next:"start"},{token:"comment",regex:/^#!.*$/}],start:[i.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment_regex_allowed"},{token:"comment",regex:"\\/\\/",next:"line_comment_regex_allowed"},{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],comment_regex_allowed:[{token:"comment",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}],comment:[{token:"comment",regex:"\\*\\/",next:"no_regex"},{defaultToken:"comment"}],line_comment_regex_allowed:[{token:"comment",regex:"$|^",next:"start"},{defaultToken:"comment"}],line_comment:[{token:"comment",regex:"$|^",next:"no_regex"},{defaultToken:"comment"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},this.embedRules(i,"doc-",[i.getEndRule("no_regex")])};r.inherits(o,s),t.JavaScriptHighlightRules=o}),ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)([-_a-zA-Z0-9]+)",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)([-_a-zA-Z0-9]+)",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+"},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules(o,"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),ace.define("ace/mode/php_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules","ace/mode/html_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./doc_comment_highlight_rules").DocCommentHighlightRules,o=e("./text_highlight_rules").TextHighlightRules,u=e("./html_highlight_rules").HtmlHighlightRules,a=function(){var e=s,t=i.arrayToMap("abs|acos|acosh|addcslashes|addslashes|aggregate|aggregate_info|aggregate_methods|aggregate_methods_by_list|aggregate_methods_by_regexp|aggregate_properties|aggregate_properties_by_list|aggregate_properties_by_regexp|aggregation_info|amqpconnection|amqpexchange|amqpqueue|apache_child_terminate|apache_get_modules|apache_get_version|apache_getenv|apache_lookup_uri|apache_note|apache_request_headers|apache_reset_timeout|apache_response_headers|apache_setenv|apc_add|apc_bin_dump|apc_bin_dumpfile|apc_bin_load|apc_bin_loadfile|apc_cache_info|apc_cas|apc_clear_cache|apc_compile_file|apc_dec|apc_define_constants|apc_delete|apc_delete_file|apc_exists|apc_fetch|apc_inc|apc_load_constants|apc_sma_info|apc_store|apciterator|apd_breakpoint|apd_callstack|apd_clunk|apd_continue|apd_croak|apd_dump_function_table|apd_dump_persistent_resources|apd_dump_regular_resources|apd_echo|apd_get_active_symbols|apd_set_pprof_trace|apd_set_session|apd_set_session_trace|apd_set_session_trace_socket|appenditerator|array|array_change_key_case|array_chunk|array_combine|array_count_values|array_diff|array_diff_assoc|array_diff_key|array_diff_uassoc|array_diff_ukey|array_fill|array_fill_keys|array_filter|array_flip|array_intersect|array_intersect_assoc|array_intersect_key|array_intersect_uassoc|array_intersect_ukey|array_key_exists|array_keys|array_map|array_merge|array_merge_recursive|array_multisort|array_pad|array_pop|array_product|array_push|array_rand|array_reduce|array_replace|array_replace_recursive|array_reverse|array_search|array_shift|array_slice|array_splice|array_sum|array_udiff|array_udiff_assoc|array_udiff_uassoc|array_uintersect|array_uintersect_assoc|array_uintersect_uassoc|array_unique|array_unshift|array_values|array_walk|array_walk_recursive|arrayaccess|arrayiterator|arrayobject|arsort|asin|asinh|asort|assert|assert_options|atan|atan2|atanh|audioproperties|badfunctioncallexception|badmethodcallexception|base64_decode|base64_encode|base_convert|basename|bbcode_add_element|bbcode_add_smiley|bbcode_create|bbcode_destroy|bbcode_parse|bbcode_set_arg_parser|bbcode_set_flags|bcadd|bccomp|bcdiv|bcmod|bcmul|bcompiler_load|bcompiler_load_exe|bcompiler_parse_class|bcompiler_read|bcompiler_write_class|bcompiler_write_constant|bcompiler_write_exe_footer|bcompiler_write_file|bcompiler_write_footer|bcompiler_write_function|bcompiler_write_functions_from_file|bcompiler_write_header|bcompiler_write_included_filename|bcpow|bcpowmod|bcscale|bcsqrt|bcsub|bin2hex|bind_textdomain_codeset|bindec|bindtextdomain|bson_decode|bson_encode|bumpValue|bzclose|bzcompress|bzdecompress|bzerrno|bzerror|bzerrstr|bzflush|bzopen|bzread|bzwrite|cachingiterator|cairo|cairo_create|cairo_font_face_get_type|cairo_font_face_status|cairo_font_options_create|cairo_font_options_equal|cairo_font_options_get_antialias|cairo_font_options_get_hint_metrics|cairo_font_options_get_hint_style|cairo_font_options_get_subpixel_order|cairo_font_options_hash|cairo_font_options_merge|cairo_font_options_set_antialias|cairo_font_options_set_hint_metrics|cairo_font_options_set_hint_style|cairo_font_options_set_subpixel_order|cairo_font_options_status|cairo_format_stride_for_width|cairo_image_surface_create|cairo_image_surface_create_for_data|cairo_image_surface_create_from_png|cairo_image_surface_get_data|cairo_image_surface_get_format|cairo_image_surface_get_height|cairo_image_surface_get_stride|cairo_image_surface_get_width|cairo_matrix_create_scale|cairo_matrix_create_translate|cairo_matrix_invert|cairo_matrix_multiply|cairo_matrix_rotate|cairo_matrix_transform_distance|cairo_matrix_transform_point|cairo_matrix_translate|cairo_pattern_add_color_stop_rgb|cairo_pattern_add_color_stop_rgba|cairo_pattern_create_for_surface|cairo_pattern_create_linear|cairo_pattern_create_radial|cairo_pattern_create_rgb|cairo_pattern_create_rgba|cairo_pattern_get_color_stop_count|cairo_pattern_get_color_stop_rgba|cairo_pattern_get_extend|cairo_pattern_get_filter|cairo_pattern_get_linear_points|cairo_pattern_get_matrix|cairo_pattern_get_radial_circles|cairo_pattern_get_rgba|cairo_pattern_get_surface|cairo_pattern_get_type|cairo_pattern_set_extend|cairo_pattern_set_filter|cairo_pattern_set_matrix|cairo_pattern_status|cairo_pdf_surface_create|cairo_pdf_surface_set_size|cairo_ps_get_levels|cairo_ps_level_to_string|cairo_ps_surface_create|cairo_ps_surface_dsc_begin_page_setup|cairo_ps_surface_dsc_begin_setup|cairo_ps_surface_dsc_comment|cairo_ps_surface_get_eps|cairo_ps_surface_restrict_to_level|cairo_ps_surface_set_eps|cairo_ps_surface_set_size|cairo_scaled_font_create|cairo_scaled_font_extents|cairo_scaled_font_get_ctm|cairo_scaled_font_get_font_face|cairo_scaled_font_get_font_matrix|cairo_scaled_font_get_font_options|cairo_scaled_font_get_scale_matrix|cairo_scaled_font_get_type|cairo_scaled_font_glyph_extents|cairo_scaled_font_status|cairo_scaled_font_text_extents|cairo_surface_copy_page|cairo_surface_create_similar|cairo_surface_finish|cairo_surface_flush|cairo_surface_get_content|cairo_surface_get_device_offset|cairo_surface_get_font_options|cairo_surface_get_type|cairo_surface_mark_dirty|cairo_surface_mark_dirty_rectangle|cairo_surface_set_device_offset|cairo_surface_set_fallback_resolution|cairo_surface_show_page|cairo_surface_status|cairo_surface_write_to_png|cairo_svg_surface_create|cairo_svg_surface_restrict_to_version|cairo_svg_version_to_string|cairoantialias|cairocontent|cairocontext|cairoexception|cairoextend|cairofillrule|cairofilter|cairofontface|cairofontoptions|cairofontslant|cairofonttype|cairofontweight|cairoformat|cairogradientpattern|cairohintmetrics|cairohintstyle|cairoimagesurface|cairolineargradient|cairolinecap|cairolinejoin|cairomatrix|cairooperator|cairopath|cairopattern|cairopatterntype|cairopdfsurface|cairopslevel|cairopssurface|cairoradialgradient|cairoscaledfont|cairosolidpattern|cairostatus|cairosubpixelorder|cairosurface|cairosurfacepattern|cairosurfacetype|cairosvgsurface|cairosvgversion|cairotoyfontface|cal_days_in_month|cal_from_jd|cal_info|cal_to_jd|calcul_hmac|calculhmac|call_user_func|call_user_func_array|call_user_method|call_user_method_array|callbackfilteriterator|ceil|chdb|chdb_create|chdir|checkdate|checkdnsrr|chgrp|chmod|chop|chown|chr|chroot|chunk_split|class_alias|class_exists|class_implements|class_parents|classkit_import|classkit_method_add|classkit_method_copy|classkit_method_redefine|classkit_method_remove|classkit_method_rename|clearstatcache|clone|closedir|closelog|collator|com|com_addref|com_create_guid|com_event_sink|com_get|com_get_active_object|com_invoke|com_isenum|com_load|com_load_typelib|com_message_pump|com_print_typeinfo|com_propget|com_propput|com_propset|com_release|com_set|compact|connection_aborted|connection_status|connection_timeout|constant|construct|construct|construct|convert_cyr_string|convert_uudecode|convert_uuencode|copy|cos|cosh|count|count_chars|countable|counter_bump|counter_bump_value|counter_create|counter_get|counter_get_meta|counter_get_named|counter_get_value|counter_reset|counter_reset_value|crack_check|crack_closedict|crack_getlastmessage|crack_opendict|crc32|create_function|crypt|ctype_alnum|ctype_alpha|ctype_cntrl|ctype_digit|ctype_graph|ctype_lower|ctype_print|ctype_punct|ctype_space|ctype_upper|ctype_xdigit|cubrid_affected_rows|cubrid_bind|cubrid_client_encoding|cubrid_close|cubrid_close_prepare|cubrid_close_request|cubrid_col_get|cubrid_col_size|cubrid_column_names|cubrid_column_types|cubrid_commit|cubrid_connect|cubrid_connect_with_url|cubrid_current_oid|cubrid_data_seek|cubrid_db_name|cubrid_disconnect|cubrid_drop|cubrid_errno|cubrid_error|cubrid_error_code|cubrid_error_code_facility|cubrid_error_msg|cubrid_execute|cubrid_fetch|cubrid_fetch_array|cubrid_fetch_assoc|cubrid_fetch_field|cubrid_fetch_lengths|cubrid_fetch_object|cubrid_fetch_row|cubrid_field_flags|cubrid_field_len|cubrid_field_name|cubrid_field_seek|cubrid_field_table|cubrid_field_type|cubrid_free_result|cubrid_get|cubrid_get_autocommit|cubrid_get_charset|cubrid_get_class_name|cubrid_get_client_info|cubrid_get_db_parameter|cubrid_get_server_info|cubrid_insert_id|cubrid_is_instance|cubrid_list_dbs|cubrid_load_from_glo|cubrid_lob_close|cubrid_lob_export|cubrid_lob_get|cubrid_lob_send|cubrid_lob_size|cubrid_lock_read|cubrid_lock_write|cubrid_move_cursor|cubrid_new_glo|cubrid_next_result|cubrid_num_cols|cubrid_num_fields|cubrid_num_rows|cubrid_ping|cubrid_prepare|cubrid_put|cubrid_query|cubrid_real_escape_string|cubrid_result|cubrid_rollback|cubrid_save_to_glo|cubrid_schema|cubrid_send_glo|cubrid_seq_drop|cubrid_seq_insert|cubrid_seq_put|cubrid_set_add|cubrid_set_autocommit|cubrid_set_db_parameter|cubrid_set_drop|cubrid_unbuffered_query|cubrid_version|curl_close|curl_copy_handle|curl_errno|curl_error|curl_exec|curl_getinfo|curl_init|curl_multi_add_handle|curl_multi_close|curl_multi_exec|curl_multi_getcontent|curl_multi_info_read|curl_multi_init|curl_multi_remove_handle|curl_multi_select|curl_setopt|curl_setopt_array|curl_version|current|cyrus_authenticate|cyrus_bind|cyrus_close|cyrus_connect|cyrus_query|cyrus_unbind|date|date_add|date_create|date_create_from_format|date_date_set|date_default_timezone_get|date_default_timezone_set|date_diff|date_format|date_get_last_errors|date_interval_create_from_date_string|date_interval_format|date_isodate_set|date_modify|date_offset_get|date_parse|date_parse_from_format|date_sub|date_sun_info|date_sunrise|date_sunset|date_time_set|date_timestamp_get|date_timestamp_set|date_timezone_get|date_timezone_set|dateinterval|dateperiod|datetime|datetimezone|db2_autocommit|db2_bind_param|db2_client_info|db2_close|db2_column_privileges|db2_columns|db2_commit|db2_conn_error|db2_conn_errormsg|db2_connect|db2_cursor_type|db2_escape_string|db2_exec|db2_execute|db2_fetch_array|db2_fetch_assoc|db2_fetch_both|db2_fetch_object|db2_fetch_row|db2_field_display_size|db2_field_name|db2_field_num|db2_field_precision|db2_field_scale|db2_field_type|db2_field_width|db2_foreign_keys|db2_free_result|db2_free_stmt|db2_get_option|db2_last_insert_id|db2_lob_read|db2_next_result|db2_num_fields|db2_num_rows|db2_pclose|db2_pconnect|db2_prepare|db2_primary_keys|db2_procedure_columns|db2_procedures|db2_result|db2_rollback|db2_server_info|db2_set_option|db2_special_columns|db2_statistics|db2_stmt_error|db2_stmt_errormsg|db2_table_privileges|db2_tables|dba_close|dba_delete|dba_exists|dba_fetch|dba_firstkey|dba_handlers|dba_insert|dba_key_split|dba_list|dba_nextkey|dba_open|dba_optimize|dba_popen|dba_replace|dba_sync|dbase_add_record|dbase_close|dbase_create|dbase_delete_record|dbase_get_header_info|dbase_get_record|dbase_get_record_with_names|dbase_numfields|dbase_numrecords|dbase_open|dbase_pack|dbase_replace_record|dbplus_add|dbplus_aql|dbplus_chdir|dbplus_close|dbplus_curr|dbplus_errcode|dbplus_errno|dbplus_find|dbplus_first|dbplus_flush|dbplus_freealllocks|dbplus_freelock|dbplus_freerlocks|dbplus_getlock|dbplus_getunique|dbplus_info|dbplus_last|dbplus_lockrel|dbplus_next|dbplus_open|dbplus_prev|dbplus_rchperm|dbplus_rcreate|dbplus_rcrtexact|dbplus_rcrtlike|dbplus_resolve|dbplus_restorepos|dbplus_rkeys|dbplus_ropen|dbplus_rquery|dbplus_rrename|dbplus_rsecindex|dbplus_runlink|dbplus_rzap|dbplus_savepos|dbplus_setindex|dbplus_setindexbynumber|dbplus_sql|dbplus_tcl|dbplus_tremove|dbplus_undo|dbplus_undoprepare|dbplus_unlockrel|dbplus_unselect|dbplus_update|dbplus_xlockrel|dbplus_xunlockrel|dbx_close|dbx_compare|dbx_connect|dbx_error|dbx_escape_string|dbx_fetch_row|dbx_query|dbx_sort|dcgettext|dcngettext|deaggregate|debug_backtrace|debug_print_backtrace|debug_zval_dump|decbin|dechex|decoct|define|define_syslog_variables|defined|deg2rad|delete|dgettext|die|dio_close|dio_fcntl|dio_open|dio_read|dio_seek|dio_stat|dio_tcsetattr|dio_truncate|dio_write|dir|directoryiterator|dirname|disk_free_space|disk_total_space|diskfreespace|dl|dngettext|dns_check_record|dns_get_mx|dns_get_record|dom_import_simplexml|domainexception|domattr|domattribute_name|domattribute_set_value|domattribute_specified|domattribute_value|domcharacterdata|domcomment|domdocument|domdocument_add_root|domdocument_create_attribute|domdocument_create_cdata_section|domdocument_create_comment|domdocument_create_element|domdocument_create_element_ns|domdocument_create_entity_reference|domdocument_create_processing_instruction|domdocument_create_text_node|domdocument_doctype|domdocument_document_element|domdocument_dump_file|domdocument_dump_mem|domdocument_get_element_by_id|domdocument_get_elements_by_tagname|domdocument_html_dump_mem|domdocument_xinclude|domdocumentfragment|domdocumenttype|domdocumenttype_entities|domdocumenttype_internal_subset|domdocumenttype_name|domdocumenttype_notations|domdocumenttype_public_id|domdocumenttype_system_id|domelement|domelement_get_attribute|domelement_get_attribute_node|domelement_get_elements_by_tagname|domelement_has_attribute|domelement_remove_attribute|domelement_set_attribute|domelement_set_attribute_node|domelement_tagname|domentity|domentityreference|domexception|domimplementation|domnamednodemap|domnode|domnode_add_namespace|domnode_append_child|domnode_append_sibling|domnode_attributes|domnode_child_nodes|domnode_clone_node|domnode_dump_node|domnode_first_child|domnode_get_content|domnode_has_attributes|domnode_has_child_nodes|domnode_insert_before|domnode_is_blank_node|domnode_last_child|domnode_next_sibling|domnode_node_name|domnode_node_type|domnode_node_value|domnode_owner_document|domnode_parent_node|domnode_prefix|domnode_previous_sibling|domnode_remove_child|domnode_replace_child|domnode_replace_node|domnode_set_content|domnode_set_name|domnode_set_namespace|domnode_unlink_node|domnodelist|domnotation|domprocessinginstruction|domprocessinginstruction_data|domprocessinginstruction_target|domtext|domxml_new_doc|domxml_open_file|domxml_open_mem|domxml_version|domxml_xmltree|domxml_xslt_stylesheet|domxml_xslt_stylesheet_doc|domxml_xslt_stylesheet_file|domxml_xslt_version|domxpath|domxsltstylesheet_process|domxsltstylesheet_result_dump_file|domxsltstylesheet_result_dump_mem|dotnet|dotnet_load|doubleval|each|easter_date|easter_days|echo|empty|emptyiterator|enchant_broker_describe|enchant_broker_dict_exists|enchant_broker_free|enchant_broker_free_dict|enchant_broker_get_error|enchant_broker_init|enchant_broker_list_dicts|enchant_broker_request_dict|enchant_broker_request_pwl_dict|enchant_broker_set_ordering|enchant_dict_add_to_personal|enchant_dict_add_to_session|enchant_dict_check|enchant_dict_describe|enchant_dict_get_error|enchant_dict_is_in_session|enchant_dict_quick_check|enchant_dict_store_replacement|enchant_dict_suggest|end|ereg|ereg_replace|eregi|eregi_replace|error_get_last|error_log|error_reporting|errorexception|escapeshellarg|escapeshellcmd|eval|event_add|event_base_free|event_base_loop|event_base_loopbreak|event_base_loopexit|event_base_new|event_base_priority_init|event_base_set|event_buffer_base_set|event_buffer_disable|event_buffer_enable|event_buffer_fd_set|event_buffer_free|event_buffer_new|event_buffer_priority_set|event_buffer_read|event_buffer_set_callback|event_buffer_timeout_set|event_buffer_watermark_set|event_buffer_write|event_del|event_free|event_new|event_set|exception|exec|exif_imagetype|exif_read_data|exif_tagname|exif_thumbnail|exit|exp|expect_expectl|expect_popen|explode|expm1|export|export|extension_loaded|extract|ezmlm_hash|fam_cancel_monitor|fam_close|fam_monitor_collection|fam_monitor_directory|fam_monitor_file|fam_next_event|fam_open|fam_pending|fam_resume_monitor|fam_suspend_monitor|fbsql_affected_rows|fbsql_autocommit|fbsql_blob_size|fbsql_change_user|fbsql_clob_size|fbsql_close|fbsql_commit|fbsql_connect|fbsql_create_blob|fbsql_create_clob|fbsql_create_db|fbsql_data_seek|fbsql_database|fbsql_database_password|fbsql_db_query|fbsql_db_status|fbsql_drop_db|fbsql_errno|fbsql_error|fbsql_fetch_array|fbsql_fetch_assoc|fbsql_fetch_field|fbsql_fetch_lengths|fbsql_fetch_object|fbsql_fetch_row|fbsql_field_flags|fbsql_field_len|fbsql_field_name|fbsql_field_seek|fbsql_field_table|fbsql_field_type|fbsql_free_result|fbsql_get_autostart_info|fbsql_hostname|fbsql_insert_id|fbsql_list_dbs|fbsql_list_fields|fbsql_list_tables|fbsql_next_result|fbsql_num_fields|fbsql_num_rows|fbsql_password|fbsql_pconnect|fbsql_query|fbsql_read_blob|fbsql_read_clob|fbsql_result|fbsql_rollback|fbsql_rows_fetched|fbsql_select_db|fbsql_set_characterset|fbsql_set_lob_mode|fbsql_set_password|fbsql_set_transaction|fbsql_start_db|fbsql_stop_db|fbsql_table_name|fbsql_tablename|fbsql_username|fbsql_warnings|fclose|fdf_add_doc_javascript|fdf_add_template|fdf_close|fdf_create|fdf_enum_values|fdf_errno|fdf_error|fdf_get_ap|fdf_get_attachment|fdf_get_encoding|fdf_get_file|fdf_get_flags|fdf_get_opt|fdf_get_status|fdf_get_value|fdf_get_version|fdf_header|fdf_next_field_name|fdf_open|fdf_open_string|fdf_remove_item|fdf_save|fdf_save_string|fdf_set_ap|fdf_set_encoding|fdf_set_file|fdf_set_flags|fdf_set_javascript_action|fdf_set_on_import_javascript|fdf_set_opt|fdf_set_status|fdf_set_submit_form_action|fdf_set_target_frame|fdf_set_value|fdf_set_version|feof|fflush|fgetc|fgetcsv|fgets|fgetss|file|file_exists|file_get_contents|file_put_contents|fileatime|filectime|filegroup|fileinode|filemtime|fileowner|fileperms|filepro|filepro_fieldcount|filepro_fieldname|filepro_fieldtype|filepro_fieldwidth|filepro_retrieve|filepro_rowcount|filesize|filesystemiterator|filetype|filter_has_var|filter_id|filter_input|filter_input_array|filter_list|filter_var|filter_var_array|filteriterator|finfo_buffer|finfo_close|finfo_file|finfo_open|finfo_set_flags|floatval|flock|floor|flush|fmod|fnmatch|fopen|forward_static_call|forward_static_call_array|fpassthru|fprintf|fputcsv|fputs|fread|frenchtojd|fribidi_log2vis|fscanf|fseek|fsockopen|fstat|ftell|ftok|ftp_alloc|ftp_cdup|ftp_chdir|ftp_chmod|ftp_close|ftp_connect|ftp_delete|ftp_exec|ftp_fget|ftp_fput|ftp_get|ftp_get_option|ftp_login|ftp_mdtm|ftp_mkdir|ftp_nb_continue|ftp_nb_fget|ftp_nb_fput|ftp_nb_get|ftp_nb_put|ftp_nlist|ftp_pasv|ftp_put|ftp_pwd|ftp_quit|ftp_raw|ftp_rawlist|ftp_rename|ftp_rmdir|ftp_set_option|ftp_site|ftp_size|ftp_ssl_connect|ftp_systype|ftruncate|func_get_arg|func_get_args|func_num_args|function_exists|fwrite|gc_collect_cycles|gc_disable|gc_enable|gc_enabled|gd_info|gearmanclient|gearmanjob|gearmantask|gearmanworker|geoip_continent_code_by_name|geoip_country_code3_by_name|geoip_country_code_by_name|geoip_country_name_by_name|geoip_database_info|geoip_db_avail|geoip_db_filename|geoip_db_get_all_info|geoip_id_by_name|geoip_isp_by_name|geoip_org_by_name|geoip_record_by_name|geoip_region_by_name|geoip_region_name_by_code|geoip_time_zone_by_country_and_region|getMeta|getNamed|getValue|get_browser|get_called_class|get_cfg_var|get_class|get_class_methods|get_class_vars|get_current_user|get_declared_classes|get_declared_interfaces|get_defined_constants|get_defined_functions|get_defined_vars|get_extension_funcs|get_headers|get_html_translation_table|get_include_path|get_included_files|get_loaded_extensions|get_magic_quotes_gpc|get_magic_quotes_runtime|get_meta_tags|get_object_vars|get_parent_class|get_required_files|get_resource_type|getallheaders|getconstant|getconstants|getconstructor|getcwd|getdate|getdefaultproperties|getdoccomment|getendline|getenv|getextension|getextensionname|getfilename|gethostbyaddr|gethostbyname|gethostbynamel|gethostname|getimagesize|getinterfacenames|getinterfaces|getlastmod|getmethod|getmethods|getmodifiers|getmxrr|getmygid|getmyinode|getmypid|getmyuid|getname|getnamespacename|getopt|getparentclass|getproperties|getproperty|getprotobyname|getprotobynumber|getrandmax|getrusage|getservbyname|getservbyport|getshortname|getstartline|getstaticproperties|getstaticpropertyvalue|gettext|gettimeofday|gettype|glob|globiterator|gmagick|gmagickdraw|gmagickpixel|gmdate|gmmktime|gmp_abs|gmp_add|gmp_and|gmp_clrbit|gmp_cmp|gmp_com|gmp_div|gmp_div_q|gmp_div_qr|gmp_div_r|gmp_divexact|gmp_fact|gmp_gcd|gmp_gcdext|gmp_hamdist|gmp_init|gmp_intval|gmp_invert|gmp_jacobi|gmp_legendre|gmp_mod|gmp_mul|gmp_neg|gmp_nextprime|gmp_or|gmp_perfect_square|gmp_popcount|gmp_pow|gmp_powm|gmp_prob_prime|gmp_random|gmp_scan0|gmp_scan1|gmp_setbit|gmp_sign|gmp_sqrt|gmp_sqrtrem|gmp_strval|gmp_sub|gmp_testbit|gmp_xor|gmstrftime|gnupg_adddecryptkey|gnupg_addencryptkey|gnupg_addsignkey|gnupg_cleardecryptkeys|gnupg_clearencryptkeys|gnupg_clearsignkeys|gnupg_decrypt|gnupg_decryptverify|gnupg_encrypt|gnupg_encryptsign|gnupg_export|gnupg_geterror|gnupg_getprotocol|gnupg_import|gnupg_init|gnupg_keyinfo|gnupg_setarmor|gnupg_seterrormode|gnupg_setsignmode|gnupg_sign|gnupg_verify|gopher_parsedir|grapheme_extract|grapheme_stripos|grapheme_stristr|grapheme_strlen|grapheme_strpos|grapheme_strripos|grapheme_strrpos|grapheme_strstr|grapheme_substr|gregoriantojd|gupnp_context_get_host_ip|gupnp_context_get_port|gupnp_context_get_subscription_timeout|gupnp_context_host_path|gupnp_context_new|gupnp_context_set_subscription_timeout|gupnp_context_timeout_add|gupnp_context_unhost_path|gupnp_control_point_browse_start|gupnp_control_point_browse_stop|gupnp_control_point_callback_set|gupnp_control_point_new|gupnp_device_action_callback_set|gupnp_device_info_get|gupnp_device_info_get_service|gupnp_root_device_get_available|gupnp_root_device_get_relative_location|gupnp_root_device_new|gupnp_root_device_set_available|gupnp_root_device_start|gupnp_root_device_stop|gupnp_service_action_get|gupnp_service_action_return|gupnp_service_action_return_error|gupnp_service_action_set|gupnp_service_freeze_notify|gupnp_service_info_get|gupnp_service_info_get_introspection|gupnp_service_introspection_get_state_variable|gupnp_service_notify|gupnp_service_proxy_action_get|gupnp_service_proxy_action_set|gupnp_service_proxy_add_notify|gupnp_service_proxy_callback_set|gupnp_service_proxy_get_subscribed|gupnp_service_proxy_remove_notify|gupnp_service_proxy_set_subscribed|gupnp_service_thaw_notify|gzclose|gzcompress|gzdecode|gzdeflate|gzencode|gzeof|gzfile|gzgetc|gzgets|gzgetss|gzinflate|gzopen|gzpassthru|gzputs|gzread|gzrewind|gzseek|gztell|gzuncompress|gzwrite|halt_compiler|haruannotation|haruannotation_setborderstyle|haruannotation_sethighlightmode|haruannotation_seticon|haruannotation_setopened|harudestination|harudestination_setfit|harudestination_setfitb|harudestination_setfitbh|harudestination_setfitbv|harudestination_setfith|harudestination_setfitr|harudestination_setfitv|harudestination_setxyz|harudoc|harudoc_addpage|harudoc_addpagelabel|harudoc_construct|harudoc_createoutline|harudoc_getcurrentencoder|harudoc_getcurrentpage|harudoc_getencoder|harudoc_getfont|harudoc_getinfoattr|harudoc_getpagelayout|harudoc_getpagemode|harudoc_getstreamsize|harudoc_insertpage|harudoc_loadjpeg|harudoc_loadpng|harudoc_loadraw|harudoc_loadttc|harudoc_loadttf|harudoc_loadtype1|harudoc_output|harudoc_readfromstream|harudoc_reseterror|harudoc_resetstream|harudoc_save|harudoc_savetostream|harudoc_setcompressionmode|harudoc_setcurrentencoder|harudoc_setencryptionmode|harudoc_setinfoattr|harudoc_setinfodateattr|harudoc_setopenaction|harudoc_setpagelayout|harudoc_setpagemode|harudoc_setpagesconfiguration|harudoc_setpassword|harudoc_setpermission|harudoc_usecnsencodings|harudoc_usecnsfonts|harudoc_usecntencodings|harudoc_usecntfonts|harudoc_usejpencodings|harudoc_usejpfonts|harudoc_usekrencodings|harudoc_usekrfonts|haruencoder|haruencoder_getbytetype|haruencoder_gettype|haruencoder_getunicode|haruencoder_getwritingmode|haruexception|harufont|harufont_getascent|harufont_getcapheight|harufont_getdescent|harufont_getencodingname|harufont_getfontname|harufont_gettextwidth|harufont_getunicodewidth|harufont_getxheight|harufont_measuretext|haruimage|haruimage_getbitspercomponent|haruimage_getcolorspace|haruimage_getheight|haruimage_getsize|haruimage_getwidth|haruimage_setcolormask|haruimage_setmaskimage|haruoutline|haruoutline_setdestination|haruoutline_setopened|harupage|harupage_arc|harupage_begintext|harupage_circle|harupage_closepath|harupage_concat|harupage_createdestination|harupage_createlinkannotation|harupage_createtextannotation|harupage_createurlannotation|harupage_curveto|harupage_curveto2|harupage_curveto3|harupage_drawimage|harupage_ellipse|harupage_endpath|harupage_endtext|harupage_eofill|harupage_eofillstroke|harupage_fill|harupage_fillstroke|harupage_getcharspace|harupage_getcmykfill|harupage_getcmykstroke|harupage_getcurrentfont|harupage_getcurrentfontsize|harupage_getcurrentpos|harupage_getcurrenttextpos|harupage_getdash|harupage_getfillingcolorspace|harupage_getflatness|harupage_getgmode|harupage_getgrayfill|harupage_getgraystroke|harupage_getheight|harupage_gethorizontalscaling|harupage_getlinecap|harupage_getlinejoin|harupage_getlinewidth|harupage_getmiterlimit|harupage_getrgbfill|harupage_getrgbstroke|harupage_getstrokingcolorspace|harupage_gettextleading|harupage_gettextmatrix|harupage_gettextrenderingmode|harupage_gettextrise|harupage_gettextwidth|harupage_gettransmatrix|harupage_getwidth|harupage_getwordspace|harupage_lineto|harupage_measuretext|harupage_movetextpos|harupage_moveto|harupage_movetonextline|harupage_rectangle|harupage_setcharspace|harupage_setcmykfill|harupage_setcmykstroke|harupage_setdash|harupage_setflatness|harupage_setfontandsize|harupage_setgrayfill|harupage_setgraystroke|harupage_setheight|harupage_sethorizontalscaling|harupage_setlinecap|harupage_setlinejoin|harupage_setlinewidth|harupage_setmiterlimit|harupage_setrgbfill|harupage_setrgbstroke|harupage_setrotate|harupage_setsize|harupage_setslideshow|harupage_settextleading|harupage_settextmatrix|harupage_settextrenderingmode|harupage_settextrise|harupage_setwidth|harupage_setwordspace|harupage_showtext|harupage_showtextnextline|harupage_stroke|harupage_textout|harupage_textrect|hasconstant|hash|hash_algos|hash_copy|hash_file|hash_final|hash_hmac|hash_hmac_file|hash_init|hash_update|hash_update_file|hash_update_stream|hasmethod|hasproperty|header|header_register_callback|header_remove|headers_list|headers_sent|hebrev|hebrevc|hex2bin|hexdec|highlight_file|highlight_string|html_entity_decode|htmlentities|htmlspecialchars|htmlspecialchars_decode|http_build_cookie|http_build_query|http_build_str|http_build_url|http_cache_etag|http_cache_last_modified|http_chunked_decode|http_date|http_deflate|http_get|http_get_request_body|http_get_request_body_stream|http_get_request_headers|http_head|http_inflate|http_match_etag|http_match_modified|http_match_request_header|http_negotiate_charset|http_negotiate_content_type|http_negotiate_language|http_parse_cookie|http_parse_headers|http_parse_message|http_parse_params|http_persistent_handles_clean|http_persistent_handles_count|http_persistent_handles_ident|http_post_data|http_post_fields|http_put_data|http_put_file|http_put_stream|http_redirect|http_request|http_request_body_encode|http_request_method_exists|http_request_method_name|http_request_method_register|http_request_method_unregister|http_response_code|http_send_content_disposition|http_send_content_type|http_send_data|http_send_file|http_send_last_modified|http_send_status|http_send_stream|http_support|http_throttle|httpdeflatestream|httpdeflatestream_construct|httpdeflatestream_factory|httpdeflatestream_finish|httpdeflatestream_flush|httpdeflatestream_update|httpinflatestream|httpinflatestream_construct|httpinflatestream_factory|httpinflatestream_finish|httpinflatestream_flush|httpinflatestream_update|httpmessage|httpmessage_addheaders|httpmessage_construct|httpmessage_detach|httpmessage_factory|httpmessage_fromenv|httpmessage_fromstring|httpmessage_getbody|httpmessage_getheader|httpmessage_getheaders|httpmessage_gethttpversion|httpmessage_getparentmessage|httpmessage_getrequestmethod|httpmessage_getrequesturl|httpmessage_getresponsecode|httpmessage_getresponsestatus|httpmessage_gettype|httpmessage_guesscontenttype|httpmessage_prepend|httpmessage_reverse|httpmessage_send|httpmessage_setbody|httpmessage_setheaders|httpmessage_sethttpversion|httpmessage_setrequestmethod|httpmessage_setrequesturl|httpmessage_setresponsecode|httpmessage_setresponsestatus|httpmessage_settype|httpmessage_tomessagetypeobject|httpmessage_tostring|httpquerystring|httpquerystring_construct|httpquerystring_get|httpquerystring_mod|httpquerystring_set|httpquerystring_singleton|httpquerystring_toarray|httpquerystring_tostring|httpquerystring_xlate|httprequest|httprequest_addcookies|httprequest_addheaders|httprequest_addpostfields|httprequest_addpostfile|httprequest_addputdata|httprequest_addquerydata|httprequest_addrawpostdata|httprequest_addssloptions|httprequest_clearhistory|httprequest_construct|httprequest_enablecookies|httprequest_getcontenttype|httprequest_getcookies|httprequest_getheaders|httprequest_gethistory|httprequest_getmethod|httprequest_getoptions|httprequest_getpostfields|httprequest_getpostfiles|httprequest_getputdata|httprequest_getputfile|httprequest_getquerydata|httprequest_getrawpostdata|httprequest_getrawrequestmessage|httprequest_getrawresponsemessage|httprequest_getrequestmessage|httprequest_getresponsebody|httprequest_getresponsecode|httprequest_getresponsecookies|httprequest_getresponsedata|httprequest_getresponseheader|httprequest_getresponseinfo|httprequest_getresponsemessage|httprequest_getresponsestatus|httprequest_getssloptions|httprequest_geturl|httprequest_resetcookies|httprequest_send|httprequest_setcontenttype|httprequest_setcookies|httprequest_setheaders|httprequest_setmethod|httprequest_setoptions|httprequest_setpostfields|httprequest_setpostfiles|httprequest_setputdata|httprequest_setputfile|httprequest_setquerydata|httprequest_setrawpostdata|httprequest_setssloptions|httprequest_seturl|httprequestpool|httprequestpool_attach|httprequestpool_construct|httprequestpool_destruct|httprequestpool_detach|httprequestpool_getattachedrequests|httprequestpool_getfinishedrequests|httprequestpool_reset|httprequestpool_send|httprequestpool_socketperform|httprequestpool_socketselect|httpresponse|httpresponse_capture|httpresponse_getbuffersize|httpresponse_getcache|httpresponse_getcachecontrol|httpresponse_getcontentdisposition|httpresponse_getcontenttype|httpresponse_getdata|httpresponse_getetag|httpresponse_getfile|httpresponse_getgzip|httpresponse_getheader|httpresponse_getlastmodified|httpresponse_getrequestbody|httpresponse_getrequestbodystream|httpresponse_getrequestheaders|httpresponse_getstream|httpresponse_getthrottledelay|httpresponse_guesscontenttype|httpresponse_redirect|httpresponse_send|httpresponse_setbuffersize|httpresponse_setcache|httpresponse_setcachecontrol|httpresponse_setcontentdisposition|httpresponse_setcontenttype|httpresponse_setdata|httpresponse_setetag|httpresponse_setfile|httpresponse_setgzip|httpresponse_setheader|httpresponse_setlastmodified|httpresponse_setstream|httpresponse_setthrottledelay|httpresponse_status|hw_array2objrec|hw_changeobject|hw_children|hw_childrenobj|hw_close|hw_connect|hw_connection_info|hw_cp|hw_deleteobject|hw_docbyanchor|hw_docbyanchorobj|hw_document_attributes|hw_document_bodytag|hw_document_content|hw_document_setcontent|hw_document_size|hw_dummy|hw_edittext|hw_error|hw_errormsg|hw_free_document|hw_getanchors|hw_getanchorsobj|hw_getandlock|hw_getchildcoll|hw_getchildcollobj|hw_getchilddoccoll|hw_getchilddoccollobj|hw_getobject|hw_getobjectbyquery|hw_getobjectbyquerycoll|hw_getobjectbyquerycollobj|hw_getobjectbyqueryobj|hw_getparents|hw_getparentsobj|hw_getrellink|hw_getremote|hw_getremotechildren|hw_getsrcbydestobj|hw_gettext|hw_getusername|hw_identify|hw_incollections|hw_info|hw_inscoll|hw_insdoc|hw_insertanchors|hw_insertdocument|hw_insertobject|hw_mapid|hw_modifyobject|hw_mv|hw_new_document|hw_objrec2array|hw_output_document|hw_pconnect|hw_pipedocument|hw_root|hw_setlinkroot|hw_stat|hw_unlock|hw_who|hwapi_attribute|hwapi_attribute_key|hwapi_attribute_langdepvalue|hwapi_attribute_value|hwapi_attribute_values|hwapi_checkin|hwapi_checkout|hwapi_children|hwapi_content|hwapi_content_mimetype|hwapi_content_read|hwapi_copy|hwapi_dbstat|hwapi_dcstat|hwapi_dstanchors|hwapi_dstofsrcanchor|hwapi_error_count|hwapi_error_reason|hwapi_find|hwapi_ftstat|hwapi_hgcsp|hwapi_hwstat|hwapi_identify|hwapi_info|hwapi_insert|hwapi_insertanchor|hwapi_insertcollection|hwapi_insertdocument|hwapi_link|hwapi_lock|hwapi_move|hwapi_new_content|hwapi_object|hwapi_object_assign|hwapi_object_attreditable|hwapi_object_count|hwapi_object_insert|hwapi_object_new|hwapi_object_remove|hwapi_object_title|hwapi_object_value|hwapi_objectbyanchor|hwapi_parents|hwapi_reason_description|hwapi_reason_type|hwapi_remove|hwapi_replace|hwapi_setcommittedversion|hwapi_srcanchors|hwapi_srcsofdst|hwapi_unlock|hwapi_user|hwapi_userlist|hypot|ibase_add_user|ibase_affected_rows|ibase_backup|ibase_blob_add|ibase_blob_cancel|ibase_blob_close|ibase_blob_create|ibase_blob_echo|ibase_blob_get|ibase_blob_import|ibase_blob_info|ibase_blob_open|ibase_close|ibase_commit|ibase_commit_ret|ibase_connect|ibase_db_info|ibase_delete_user|ibase_drop_db|ibase_errcode|ibase_errmsg|ibase_execute|ibase_fetch_assoc|ibase_fetch_object|ibase_fetch_row|ibase_field_info|ibase_free_event_handler|ibase_free_query|ibase_free_result|ibase_gen_id|ibase_maintain_db|ibase_modify_user|ibase_name_result|ibase_num_fields|ibase_num_params|ibase_param_info|ibase_pconnect|ibase_prepare|ibase_query|ibase_restore|ibase_rollback|ibase_rollback_ret|ibase_server_info|ibase_service_attach|ibase_service_detach|ibase_set_event_handler|ibase_timefmt|ibase_trans|ibase_wait_event|iconv|iconv_get_encoding|iconv_mime_decode|iconv_mime_decode_headers|iconv_mime_encode|iconv_set_encoding|iconv_strlen|iconv_strpos|iconv_strrpos|iconv_substr|id3_get_frame_long_name|id3_get_frame_short_name|id3_get_genre_id|id3_get_genre_list|id3_get_genre_name|id3_get_tag|id3_get_version|id3_remove_tag|id3_set_tag|id3v2attachedpictureframe|id3v2frame|id3v2tag|idate|idn_to_ascii|idn_to_unicode|idn_to_utf8|ifx_affected_rows|ifx_blobinfile_mode|ifx_byteasvarchar|ifx_close|ifx_connect|ifx_copy_blob|ifx_create_blob|ifx_create_char|ifx_do|ifx_error|ifx_errormsg|ifx_fetch_row|ifx_fieldproperties|ifx_fieldtypes|ifx_free_blob|ifx_free_char|ifx_free_result|ifx_get_blob|ifx_get_char|ifx_getsqlca|ifx_htmltbl_result|ifx_nullformat|ifx_num_fields|ifx_num_rows|ifx_pconnect|ifx_prepare|ifx_query|ifx_textasvarchar|ifx_update_blob|ifx_update_char|ifxus_close_slob|ifxus_create_slob|ifxus_free_slob|ifxus_open_slob|ifxus_read_slob|ifxus_seek_slob|ifxus_tell_slob|ifxus_write_slob|ignore_user_abort|iis_add_server|iis_get_dir_security|iis_get_script_map|iis_get_server_by_comment|iis_get_server_by_path|iis_get_server_rights|iis_get_service_state|iis_remove_server|iis_set_app_settings|iis_set_dir_security|iis_set_script_map|iis_set_server_rights|iis_start_server|iis_start_service|iis_stop_server|iis_stop_service|image2wbmp|image_type_to_extension|image_type_to_mime_type|imagealphablending|imageantialias|imagearc|imagechar|imagecharup|imagecolorallocate|imagecolorallocatealpha|imagecolorat|imagecolorclosest|imagecolorclosestalpha|imagecolorclosesthwb|imagecolordeallocate|imagecolorexact|imagecolorexactalpha|imagecolormatch|imagecolorresolve|imagecolorresolvealpha|imagecolorset|imagecolorsforindex|imagecolorstotal|imagecolortransparent|imageconvolution|imagecopy|imagecopymerge|imagecopymergegray|imagecopyresampled|imagecopyresized|imagecreate|imagecreatefromgd|imagecreatefromgd2|imagecreatefromgd2part|imagecreatefromgif|imagecreatefromjpeg|imagecreatefrompng|imagecreatefromstring|imagecreatefromwbmp|imagecreatefromxbm|imagecreatefromxpm|imagecreatetruecolor|imagedashedline|imagedestroy|imageellipse|imagefill|imagefilledarc|imagefilledellipse|imagefilledpolygon|imagefilledrectangle|imagefilltoborder|imagefilter|imagefontheight|imagefontwidth|imageftbbox|imagefttext|imagegammacorrect|imagegd|imagegd2|imagegif|imagegrabscreen|imagegrabwindow|imageinterlace|imageistruecolor|imagejpeg|imagelayereffect|imageline|imageloadfont|imagepalettecopy|imagepng|imagepolygon|imagepsbbox|imagepsencodefont|imagepsextendfont|imagepsfreefont|imagepsloadfont|imagepsslantfont|imagepstext|imagerectangle|imagerotate|imagesavealpha|imagesetbrush|imagesetpixel|imagesetstyle|imagesetthickness|imagesettile|imagestring|imagestringup|imagesx|imagesy|imagetruecolortopalette|imagettfbbox|imagettftext|imagetypes|imagewbmp|imagexbm|imagick|imagick_adaptiveblurimage|imagick_adaptiveresizeimage|imagick_adaptivesharpenimage|imagick_adaptivethresholdimage|imagick_addimage|imagick_addnoiseimage|imagick_affinetransformimage|imagick_animateimages|imagick_annotateimage|imagick_appendimages|imagick_averageimages|imagick_blackthresholdimage|imagick_blurimage|imagick_borderimage|imagick_charcoalimage|imagick_chopimage|imagick_clear|imagick_clipimage|imagick_clippathimage|imagick_clone|imagick_clutimage|imagick_coalesceimages|imagick_colorfloodfillimage|imagick_colorizeimage|imagick_combineimages|imagick_commentimage|imagick_compareimagechannels|imagick_compareimagelayers|imagick_compareimages|imagick_compositeimage|imagick_construct|imagick_contrastimage|imagick_contraststretchimage|imagick_convolveimage|imagick_cropimage|imagick_cropthumbnailimage|imagick_current|imagick_cyclecolormapimage|imagick_decipherimage|imagick_deconstructimages|imagick_deleteimageartifact|imagick_despeckleimage|imagick_destroy|imagick_displayimage|imagick_displayimages|imagick_distortimage|imagick_drawimage|imagick_edgeimage|imagick_embossimage|imagick_encipherimage|imagick_enhanceimage|imagick_equalizeimage|imagick_evaluateimage|imagick_extentimage|imagick_flattenimages|imagick_flipimage|imagick_floodfillpaintimage|imagick_flopimage|imagick_frameimage|imagick_fximage|imagick_gammaimage|imagick_gaussianblurimage|imagick_getcolorspace|imagick_getcompression|imagick_getcompressionquality|imagick_getcopyright|imagick_getfilename|imagick_getfont|imagick_getformat|imagick_getgravity|imagick_gethomeurl|imagick_getimage|imagick_getimagealphachannel|imagick_getimageartifact|imagick_getimagebackgroundcolor|imagick_getimageblob|imagick_getimageblueprimary|imagick_getimagebordercolor|imagick_getimagechanneldepth|imagick_getimagechanneldistortion|imagick_getimagechanneldistortions|imagick_getimagechannelextrema|imagick_getimagechannelmean|imagick_getimagechannelrange|imagick_getimagechannelstatistics|imagick_getimageclipmask|imagick_getimagecolormapcolor|imagick_getimagecolors|imagick_getimagecolorspace|imagick_getimagecompose|imagick_getimagecompression|imagick_getimagecompressionquality|imagick_getimagedelay|imagick_getimagedepth|imagick_getimagedispose|imagick_getimagedistortion|imagick_getimageextrema|imagick_getimagefilename|imagick_getimageformat|imagick_getimagegamma|imagick_getimagegeometry|imagick_getimagegravity|imagick_getimagegreenprimary|imagick_getimageheight|imagick_getimagehistogram|imagick_getimageindex|imagick_getimageinterlacescheme|imagick_getimageinterpolatemethod|imagick_getimageiterations|imagick_getimagelength|imagick_getimagemagicklicense|imagick_getimagematte|imagick_getimagemattecolor|imagick_getimageorientation|imagick_getimagepage|imagick_getimagepixelcolor|imagick_getimageprofile|imagick_getimageprofiles|imagick_getimageproperties|imagick_getimageproperty|imagick_getimageredprimary|imagick_getimageregion|imagick_getimagerenderingintent|imagick_getimageresolution|imagick_getimagesblob|imagick_getimagescene|imagick_getimagesignature|imagick_getimagesize|imagick_getimagetickspersecond|imagick_getimagetotalinkdensity|imagick_getimagetype|imagick_getimageunits|imagick_getimagevirtualpixelmethod|imagick_getimagewhitepoint|imagick_getimagewidth|imagick_getinterlacescheme|imagick_getiteratorindex|imagick_getnumberimages|imagick_getoption|imagick_getpackagename|imagick_getpage|imagick_getpixeliterator|imagick_getpixelregioniterator|imagick_getpointsize|imagick_getquantumdepth|imagick_getquantumrange|imagick_getreleasedate|imagick_getresource|imagick_getresourcelimit|imagick_getsamplingfactors|imagick_getsize|imagick_getsizeoffset|imagick_getversion|imagick_hasnextimage|imagick_haspreviousimage|imagick_identifyimage|imagick_implodeimage|imagick_labelimage|imagick_levelimage|imagick_linearstretchimage|imagick_liquidrescaleimage|imagick_magnifyimage|imagick_mapimage|imagick_mattefloodfillimage|imagick_medianfilterimage|imagick_mergeimagelayers|imagick_minifyimage|imagick_modulateimage|imagick_montageimage|imagick_morphimages|imagick_mosaicimages|imagick_motionblurimage|imagick_negateimage|imagick_newimage|imagick_newpseudoimage|imagick_nextimage|imagick_normalizeimage|imagick_oilpaintimage|imagick_opaquepaintimage|imagick_optimizeimagelayers|imagick_orderedposterizeimage|imagick_paintfloodfillimage|imagick_paintopaqueimage|imagick_painttransparentimage|imagick_pingimage|imagick_pingimageblob|imagick_pingimagefile|imagick_polaroidimage|imagick_posterizeimage|imagick_previewimages|imagick_previousimage|imagick_profileimage|imagick_quantizeimage|imagick_quantizeimages|imagick_queryfontmetrics|imagick_queryfonts|imagick_queryformats|imagick_radialblurimage|imagick_raiseimage|imagick_randomthresholdimage|imagick_readimage|imagick_readimageblob|imagick_readimagefile|imagick_recolorimage|imagick_reducenoiseimage|imagick_removeimage|imagick_removeimageprofile|imagick_render|imagick_resampleimage|imagick_resetimagepage|imagick_resizeimage|imagick_rollimage|imagick_rotateimage|imagick_roundcorners|imagick_sampleimage|imagick_scaleimage|imagick_separateimagechannel|imagick_sepiatoneimage|imagick_setbackgroundcolor|imagick_setcolorspace|imagick_setcompression|imagick_setcompressionquality|imagick_setfilename|imagick_setfirstiterator|imagick_setfont|imagick_setformat|imagick_setgravity|imagick_setimage|imagick_setimagealphachannel|imagick_setimageartifact|imagick_setimagebackgroundcolor|imagick_setimagebias|imagick_setimageblueprimary|imagick_setimagebordercolor|imagick_setimagechanneldepth|imagick_setimageclipmask|imagick_setimagecolormapcolor|imagick_setimagecolorspace|imagick_setimagecompose|imagick_setimagecompression|imagick_setimagecompressionquality|imagick_setimagedelay|imagick_setimagedepth|imagick_setimagedispose|imagick_setimageextent|imagick_setimagefilename|imagick_setimageformat|imagick_setimagegamma|imagick_setimagegravity|imagick_setimagegreenprimary|imagick_setimageindex|imagick_setimageinterlacescheme|imagick_setimageinterpolatemethod|imagick_setimageiterations|imagick_setimagematte|imagick_setimagemattecolor|imagick_setimageopacity|imagick_setimageorientation|imagick_setimagepage|imagick_setimageprofile|imagick_setimageproperty|imagick_setimageredprimary|imagick_setimagerenderingintent|imagick_setimageresolution|imagick_setimagescene|imagick_setimagetickspersecond|imagick_setimagetype|imagick_setimageunits|imagick_setimagevirtualpixelmethod|imagick_setimagewhitepoint|imagick_setinterlacescheme|imagick_setiteratorindex|imagick_setlastiterator|imagick_setoption|imagick_setpage|imagick_setpointsize|imagick_setresolution|imagick_setresourcelimit|imagick_setsamplingfactors|imagick_setsize|imagick_setsizeoffset|imagick_settype|imagick_shadeimage|imagick_shadowimage|imagick_sharpenimage|imagick_shaveimage|imagick_shearimage|imagick_sigmoidalcontrastimage|imagick_sketchimage|imagick_solarizeimage|imagick_spliceimage|imagick_spreadimage|imagick_steganoimage|imagick_stereoimage|imagick_stripimage|imagick_swirlimage|imagick_textureimage|imagick_thresholdimage|imagick_thumbnailimage|imagick_tintimage|imagick_transformimage|imagick_transparentpaintimage|imagick_transposeimage|imagick_transverseimage|imagick_trimimage|imagick_uniqueimagecolors|imagick_unsharpmaskimage|imagick_valid|imagick_vignetteimage|imagick_waveimage|imagick_whitethresholdimage|imagick_writeimage|imagick_writeimagefile|imagick_writeimages|imagick_writeimagesfile|imagickdraw|imagickdraw_affine|imagickdraw_annotation|imagickdraw_arc|imagickdraw_bezier|imagickdraw_circle|imagickdraw_clear|imagickdraw_clone|imagickdraw_color|imagickdraw_comment|imagickdraw_composite|imagickdraw_construct|imagickdraw_destroy|imagickdraw_ellipse|imagickdraw_getclippath|imagickdraw_getcliprule|imagickdraw_getclipunits|imagickdraw_getfillcolor|imagickdraw_getfillopacity|imagickdraw_getfillrule|imagickdraw_getfont|imagickdraw_getfontfamily|imagickdraw_getfontsize|imagickdraw_getfontstyle|imagickdraw_getfontweight|imagickdraw_getgravity|imagickdraw_getstrokeantialias|imagickdraw_getstrokecolor|imagickdraw_getstrokedasharray|imagickdraw_getstrokedashoffset|imagickdraw_getstrokelinecap|imagickdraw_getstrokelinejoin|imagickdraw_getstrokemiterlimit|imagickdraw_getstrokeopacity|imagickdraw_getstrokewidth|imagickdraw_gettextalignment|imagickdraw_gettextantialias|imagickdraw_gettextdecoration|imagickdraw_gettextencoding|imagickdraw_gettextundercolor|imagickdraw_getvectorgraphics|imagickdraw_line|imagickdraw_matte|imagickdraw_pathclose|imagickdraw_pathcurvetoabsolute|imagickdraw_pathcurvetoquadraticbezierabsolute|imagickdraw_pathcurvetoquadraticbezierrelative|imagickdraw_pathcurvetoquadraticbeziersmoothabsolute|imagickdraw_pathcurvetoquadraticbeziersmoothrelative|imagickdraw_pathcurvetorelative|imagickdraw_pathcurvetosmoothabsolute|imagickdraw_pathcurvetosmoothrelative|imagickdraw_pathellipticarcabsolute|imagickdraw_pathellipticarcrelative|imagickdraw_pathfinish|imagickdraw_pathlinetoabsolute|imagickdraw_pathlinetohorizontalabsolute|imagickdraw_pathlinetohorizontalrelative|imagickdraw_pathlinetorelative|imagickdraw_pathlinetoverticalabsolute|imagickdraw_pathlinetoverticalrelative|imagickdraw_pathmovetoabsolute|imagickdraw_pathmovetorelative|imagickdraw_pathstart|imagickdraw_point|imagickdraw_polygon|imagickdraw_polyline|imagickdraw_pop|imagickdraw_popclippath|imagickdraw_popdefs|imagickdraw_poppattern|imagickdraw_push|imagickdraw_pushclippath|imagickdraw_pushdefs|imagickdraw_pushpattern|imagickdraw_rectangle|imagickdraw_render|imagickdraw_rotate|imagickdraw_roundrectangle|imagickdraw_scale|imagickdraw_setclippath|imagickdraw_setcliprule|imagickdraw_setclipunits|imagickdraw_setfillalpha|imagickdraw_setfillcolor|imagickdraw_setfillopacity|imagickdraw_setfillpatternurl|imagickdraw_setfillrule|imagickdraw_setfont|imagickdraw_setfontfamily|imagickdraw_setfontsize|imagickdraw_setfontstretch|imagickdraw_setfontstyle|imagickdraw_setfontweight|imagickdraw_setgravity|imagickdraw_setstrokealpha|imagickdraw_setstrokeantialias|imagickdraw_setstrokecolor|imagickdraw_setstrokedasharray|imagickdraw_setstrokedashoffset|imagickdraw_setstrokelinecap|imagickdraw_setstrokelinejoin|imagickdraw_setstrokemiterlimit|imagickdraw_setstrokeopacity|imagickdraw_setstrokepatternurl|imagickdraw_setstrokewidth|imagickdraw_settextalignment|imagickdraw_settextantialias|imagickdraw_settextdecoration|imagickdraw_settextencoding|imagickdraw_settextundercolor|imagickdraw_setvectorgraphics|imagickdraw_setviewbox|imagickdraw_skewx|imagickdraw_skewy|imagickdraw_translate|imagickpixel|imagickpixel_clear|imagickpixel_construct|imagickpixel_destroy|imagickpixel_getcolor|imagickpixel_getcolorasstring|imagickpixel_getcolorcount|imagickpixel_getcolorvalue|imagickpixel_gethsl|imagickpixel_issimilar|imagickpixel_setcolor|imagickpixel_setcolorvalue|imagickpixel_sethsl|imagickpixeliterator|imagickpixeliterator_clear|imagickpixeliterator_construct|imagickpixeliterator_destroy|imagickpixeliterator_getcurrentiteratorrow|imagickpixeliterator_getiteratorrow|imagickpixeliterator_getnextiteratorrow|imagickpixeliterator_getpreviousiteratorrow|imagickpixeliterator_newpixeliterator|imagickpixeliterator_newpixelregioniterator|imagickpixeliterator_resetiterator|imagickpixeliterator_setiteratorfirstrow|imagickpixeliterator_setiteratorlastrow|imagickpixeliterator_setiteratorrow|imagickpixeliterator_synciterator|imap_8bit|imap_alerts|imap_append|imap_base64|imap_binary|imap_body|imap_bodystruct|imap_check|imap_clearflag_full|imap_close|imap_create|imap_createmailbox|imap_delete|imap_deletemailbox|imap_errors|imap_expunge|imap_fetch_overview|imap_fetchbody|imap_fetchheader|imap_fetchmime|imap_fetchstructure|imap_fetchtext|imap_gc|imap_get_quota|imap_get_quotaroot|imap_getacl|imap_getmailboxes|imap_getsubscribed|imap_header|imap_headerinfo|imap_headers|imap_last_error|imap_list|imap_listmailbox|imap_listscan|imap_listsubscribed|imap_lsub|imap_mail|imap_mail_compose|imap_mail_copy|imap_mail_move|imap_mailboxmsginfo|imap_mime_header_decode|imap_msgno|imap_num_msg|imap_num_recent|imap_open|imap_ping|imap_qprint|imap_rename|imap_renamemailbox|imap_reopen|imap_rfc822_parse_adrlist|imap_rfc822_parse_headers|imap_rfc822_write_address|imap_savebody|imap_scan|imap_scanmailbox|imap_search|imap_set_quota|imap_setacl|imap_setflag_full|imap_sort|imap_status|imap_subscribe|imap_thread|imap_timeout|imap_uid|imap_undelete|imap_unsubscribe|imap_utf7_decode|imap_utf7_encode|imap_utf8|implementsinterface|implode|import_request_variables|in_array|include|include_once|inclued_get_data|inet_ntop|inet_pton|infiniteiterator|ingres_autocommit|ingres_autocommit_state|ingres_charset|ingres_close|ingres_commit|ingres_connect|ingres_cursor|ingres_errno|ingres_error|ingres_errsqlstate|ingres_escape_string|ingres_execute|ingres_fetch_array|ingres_fetch_assoc|ingres_fetch_object|ingres_fetch_proc_return|ingres_fetch_row|ingres_field_length|ingres_field_name|ingres_field_nullable|ingres_field_precision|ingres_field_scale|ingres_field_type|ingres_free_result|ingres_next_error|ingres_num_fields|ingres_num_rows|ingres_pconnect|ingres_prepare|ingres_query|ingres_result_seek|ingres_rollback|ingres_set_environment|ingres_unbuffered_query|ini_alter|ini_get|ini_get_all|ini_restore|ini_set|innamespace|inotify_add_watch|inotify_init|inotify_queue_len|inotify_read|inotify_rm_watch|interface_exists|intl_error_name|intl_get_error_code|intl_get_error_message|intl_is_failure|intldateformatter|intval|invalidargumentexception|invoke|invokeargs|ip2long|iptcembed|iptcparse|is_a|is_array|is_bool|is_callable|is_dir|is_double|is_executable|is_file|is_finite|is_float|is_infinite|is_int|is_integer|is_link|is_long|is_nan|is_null|is_numeric|is_object|is_readable|is_real|is_resource|is_scalar|is_soap_fault|is_string|is_subclass_of|is_uploaded_file|is_writable|is_writeable|isabstract|iscloneable|isdisabled|isfinal|isinstance|isinstantiable|isinterface|isinternal|isiterateable|isset|issubclassof|isuserdefined|iterator|iterator_apply|iterator_count|iterator_to_array|iteratoraggregate|iteratoriterator|java_last_exception_clear|java_last_exception_get|jddayofweek|jdmonthname|jdtofrench|jdtogregorian|jdtojewish|jdtojulian|jdtounix|jewishtojd|join|jpeg2wbmp|json_decode|json_encode|json_last_error|jsonserializable|judy|judy_type|judy_version|juliantojd|kadm5_chpass_principal|kadm5_create_principal|kadm5_delete_principal|kadm5_destroy|kadm5_flush|kadm5_get_policies|kadm5_get_principal|kadm5_get_principals|kadm5_init_with_password|kadm5_modify_principal|key|krsort|ksort|lcfirst|lcg_value|lchgrp|lchown|ldap_8859_to_t61|ldap_add|ldap_bind|ldap_close|ldap_compare|ldap_connect|ldap_count_entries|ldap_delete|ldap_dn2ufn|ldap_err2str|ldap_errno|ldap_error|ldap_explode_dn|ldap_first_attribute|ldap_first_entry|ldap_first_reference|ldap_free_result|ldap_get_attributes|ldap_get_dn|ldap_get_entries|ldap_get_option|ldap_get_values|ldap_get_values_len|ldap_list|ldap_mod_add|ldap_mod_del|ldap_mod_replace|ldap_modify|ldap_next_attribute|ldap_next_entry|ldap_next_reference|ldap_parse_reference|ldap_parse_result|ldap_read|ldap_rename|ldap_sasl_bind|ldap_search|ldap_set_option|ldap_set_rebind_proc|ldap_sort|ldap_start_tls|ldap_t61_to_8859|ldap_unbind|lengthexception|levenshtein|libxml_clear_errors|libxml_disable_entity_loader|libxml_get_errors|libxml_get_last_error|libxml_set_streams_context|libxml_use_internal_errors|libxmlerror|limititerator|link|linkinfo|list|locale|localeconv|localtime|log|log10|log1p|logicexception|long2ip|lstat|ltrim|lzf_compress|lzf_decompress|lzf_optimized_for|m_checkstatus|m_completeauthorizations|m_connect|m_connectionerror|m_deletetrans|m_destroyconn|m_destroyengine|m_getcell|m_getcellbynum|m_getcommadelimited|m_getheader|m_initconn|m_initengine|m_iscommadelimited|m_maxconntimeout|m_monitor|m_numcolumns|m_numrows|m_parsecommadelimited|m_responsekeys|m_responseparam|m_returnstatus|m_setblocking|m_setdropfile|m_setip|m_setssl|m_setssl_cafile|m_setssl_files|m_settimeout|m_sslcert_gen_hash|m_transactionssent|m_transinqueue|m_transkeyval|m_transnew|m_transsend|m_uwait|m_validateidentifier|m_verifyconnection|m_verifysslcert|magic_quotes_runtime|mail|mailparse_determine_best_xfer_encoding|mailparse_msg_create|mailparse_msg_extract_part|mailparse_msg_extract_part_file|mailparse_msg_extract_whole_part_file|mailparse_msg_free|mailparse_msg_get_part|mailparse_msg_get_part_data|mailparse_msg_get_structure|mailparse_msg_parse|mailparse_msg_parse_file|mailparse_rfc822_parse_addresses|mailparse_stream_encode|mailparse_uudecode_all|main|max|maxdb_affected_rows|maxdb_autocommit|maxdb_bind_param|maxdb_bind_result|maxdb_change_user|maxdb_character_set_name|maxdb_client_encoding|maxdb_close|maxdb_close_long_data|maxdb_commit|maxdb_connect|maxdb_connect_errno|maxdb_connect_error|maxdb_data_seek|maxdb_debug|maxdb_disable_reads_from_master|maxdb_disable_rpl_parse|maxdb_dump_debug_info|maxdb_embedded_connect|maxdb_enable_reads_from_master|maxdb_enable_rpl_parse|maxdb_errno|maxdb_error|maxdb_escape_string|maxdb_execute|maxdb_fetch|maxdb_fetch_array|maxdb_fetch_assoc|maxdb_fetch_field|maxdb_fetch_field_direct|maxdb_fetch_fields|maxdb_fetch_lengths|maxdb_fetch_object|maxdb_fetch_row|maxdb_field_count|maxdb_field_seek|maxdb_field_tell|maxdb_free_result|maxdb_get_client_info|maxdb_get_client_version|maxdb_get_host_info|maxdb_get_metadata|maxdb_get_proto_info|maxdb_get_server_info|maxdb_get_server_version|maxdb_info|maxdb_init|maxdb_insert_id|maxdb_kill|maxdb_master_query|maxdb_more_results|maxdb_multi_query|maxdb_next_result|maxdb_num_fields|maxdb_num_rows|maxdb_options|maxdb_param_count|maxdb_ping|maxdb_prepare|maxdb_query|maxdb_real_connect|maxdb_real_escape_string|maxdb_real_query|maxdb_report|maxdb_rollback|maxdb_rpl_parse_enabled|maxdb_rpl_probe|maxdb_rpl_query_type|maxdb_select_db|maxdb_send_long_data|maxdb_send_query|maxdb_server_end|maxdb_server_init|maxdb_set_opt|maxdb_sqlstate|maxdb_ssl_set|maxdb_stat|maxdb_stmt_affected_rows|maxdb_stmt_bind_param|maxdb_stmt_bind_result|maxdb_stmt_close|maxdb_stmt_close_long_data|maxdb_stmt_data_seek|maxdb_stmt_errno|maxdb_stmt_error|maxdb_stmt_execute|maxdb_stmt_fetch|maxdb_stmt_free_result|maxdb_stmt_init|maxdb_stmt_num_rows|maxdb_stmt_param_count|maxdb_stmt_prepare|maxdb_stmt_reset|maxdb_stmt_result_metadata|maxdb_stmt_send_long_data|maxdb_stmt_sqlstate|maxdb_stmt_store_result|maxdb_store_result|maxdb_thread_id|maxdb_thread_safe|maxdb_use_result|maxdb_warning_count|mb_check_encoding|mb_convert_case|mb_convert_encoding|mb_convert_kana|mb_convert_variables|mb_decode_mimeheader|mb_decode_numericentity|mb_detect_encoding|mb_detect_order|mb_encode_mimeheader|mb_encode_numericentity|mb_encoding_aliases|mb_ereg|mb_ereg_match|mb_ereg_replace|mb_ereg_search|mb_ereg_search_getpos|mb_ereg_search_getregs|mb_ereg_search_init|mb_ereg_search_pos|mb_ereg_search_regs|mb_ereg_search_setpos|mb_eregi|mb_eregi_replace|mb_get_info|mb_http_input|mb_http_output|mb_internal_encoding|mb_language|mb_list_encodings|mb_output_handler|mb_parse_str|mb_preferred_mime_name|mb_regex_encoding|mb_regex_set_options|mb_send_mail|mb_split|mb_strcut|mb_strimwidth|mb_stripos|mb_stristr|mb_strlen|mb_strpos|mb_strrchr|mb_strrichr|mb_strripos|mb_strrpos|mb_strstr|mb_strtolower|mb_strtoupper|mb_strwidth|mb_substitute_character|mb_substr|mb_substr_count|mcrypt_cbc|mcrypt_cfb|mcrypt_create_iv|mcrypt_decrypt|mcrypt_ecb|mcrypt_enc_get_algorithms_name|mcrypt_enc_get_block_size|mcrypt_enc_get_iv_size|mcrypt_enc_get_key_size|mcrypt_enc_get_modes_name|mcrypt_enc_get_supported_key_sizes|mcrypt_enc_is_block_algorithm|mcrypt_enc_is_block_algorithm_mode|mcrypt_enc_is_block_mode|mcrypt_enc_self_test|mcrypt_encrypt|mcrypt_generic|mcrypt_generic_deinit|mcrypt_generic_end|mcrypt_generic_init|mcrypt_get_block_size|mcrypt_get_cipher_name|mcrypt_get_iv_size|mcrypt_get_key_size|mcrypt_list_algorithms|mcrypt_list_modes|mcrypt_module_close|mcrypt_module_get_algo_block_size|mcrypt_module_get_algo_key_size|mcrypt_module_get_supported_key_sizes|mcrypt_module_is_block_algorithm|mcrypt_module_is_block_algorithm_mode|mcrypt_module_is_block_mode|mcrypt_module_open|mcrypt_module_self_test|mcrypt_ofb|md5|md5_file|mdecrypt_generic|memcache|memcache_debug|memcached|memory_get_peak_usage|memory_get_usage|messageformatter|metaphone|method_exists|mhash|mhash_count|mhash_get_block_size|mhash_get_hash_name|mhash_keygen_s2k|microtime|mime_content_type|min|ming_keypress|ming_setcubicthreshold|ming_setscale|ming_setswfcompression|ming_useconstants|ming_useswfversion|mkdir|mktime|money_format|mongo|mongobindata|mongocode|mongocollection|mongoconnectionexception|mongocursor|mongocursorexception|mongocursortimeoutexception|mongodate|mongodb|mongodbref|mongoexception|mongogridfs|mongogridfscursor|mongogridfsexception|mongogridfsfile|mongoid|mongoint32|mongoint64|mongomaxkey|mongominkey|mongoregex|mongotimestamp|move_uploaded_file|mpegfile|mqseries_back|mqseries_begin|mqseries_close|mqseries_cmit|mqseries_conn|mqseries_connx|mqseries_disc|mqseries_get|mqseries_inq|mqseries_open|mqseries_put|mqseries_put1|mqseries_set|mqseries_strerror|msession_connect|msession_count|msession_create|msession_destroy|msession_disconnect|msession_find|msession_get|msession_get_array|msession_get_data|msession_inc|msession_list|msession_listvar|msession_lock|msession_plugin|msession_randstr|msession_set|msession_set_array|msession_set_data|msession_timeout|msession_uniq|msession_unlock|msg_get_queue|msg_queue_exists|msg_receive|msg_remove_queue|msg_send|msg_set_queue|msg_stat_queue|msql|msql_affected_rows|msql_close|msql_connect|msql_create_db|msql_createdb|msql_data_seek|msql_db_query|msql_dbname|msql_drop_db|msql_error|msql_fetch_array|msql_fetch_field|msql_fetch_object|msql_fetch_row|msql_field_flags|msql_field_len|msql_field_name|msql_field_seek|msql_field_table|msql_field_type|msql_fieldflags|msql_fieldlen|msql_fieldname|msql_fieldtable|msql_fieldtype|msql_free_result|msql_list_dbs|msql_list_fields|msql_list_tables|msql_num_fields|msql_num_rows|msql_numfields|msql_numrows|msql_pconnect|msql_query|msql_regcase|msql_result|msql_select_db|msql_tablename|mssql_bind|mssql_close|mssql_connect|mssql_data_seek|mssql_execute|mssql_fetch_array|mssql_fetch_assoc|mssql_fetch_batch|mssql_fetch_field|mssql_fetch_object|mssql_fetch_row|mssql_field_length|mssql_field_name|mssql_field_seek|mssql_field_type|mssql_free_result|mssql_free_statement|mssql_get_last_message|mssql_guid_string|mssql_init|mssql_min_error_severity|mssql_min_message_severity|mssql_next_result|mssql_num_fields|mssql_num_rows|mssql_pconnect|mssql_query|mssql_result|mssql_rows_affected|mssql_select_db|mt_getrandmax|mt_rand|mt_srand|multipleiterator|mysql_affected_rows|mysql_client_encoding|mysql_close|mysql_connect|mysql_create_db|mysql_data_seek|mysql_db_name|mysql_db_query|mysql_drop_db|mysql_errno|mysql_error|mysql_escape_string|mysql_fetch_array|mysql_fetch_assoc|mysql_fetch_field|mysql_fetch_lengths|mysql_fetch_object|mysql_fetch_row|mysql_field_flags|mysql_field_len|mysql_field_name|mysql_field_seek|mysql_field_table|mysql_field_type|mysql_free_result|mysql_get_client_info|mysql_get_host_info|mysql_get_proto_info|mysql_get_server_info|mysql_info|mysql_insert_id|mysql_list_dbs|mysql_list_fields|mysql_list_processes|mysql_list_tables|mysql_num_fields|mysql_num_rows|mysql_pconnect|mysql_ping|mysql_query|mysql_real_escape_string|mysql_result|mysql_select_db|mysql_set_charset|mysql_stat|mysql_tablename|mysql_thread_id|mysql_unbuffered_query|mysqli|mysqli_bind_param|mysqli_bind_result|mysqli_client_encoding|mysqli_connect|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_driver|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_escape_string|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_report|mysqli_result|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_set_opt|mysqli_slave_query|mysqli_stmt|mysqli_warning|mysqlnd_ms_get_stats|mysqlnd_ms_query_is_select|mysqlnd_ms_set_user_pick_server|mysqlnd_qc_change_handler|mysqlnd_qc_clear_cache|mysqlnd_qc_get_cache_info|mysqlnd_qc_get_core_stats|mysqlnd_qc_get_handler|mysqlnd_qc_get_query_trace_log|mysqlnd_qc_set_user_handlers|natcasesort|natsort|ncurses_addch|ncurses_addchnstr|ncurses_addchstr|ncurses_addnstr|ncurses_addstr|ncurses_assume_default_colors|ncurses_attroff|ncurses_attron|ncurses_attrset|ncurses_baudrate|ncurses_beep|ncurses_bkgd|ncurses_bkgdset|ncurses_border|ncurses_bottom_panel|ncurses_can_change_color|ncurses_cbreak|ncurses_clear|ncurses_clrtobot|ncurses_clrtoeol|ncurses_color_content|ncurses_color_set|ncurses_curs_set|ncurses_def_prog_mode|ncurses_def_shell_mode|ncurses_define_key|ncurses_del_panel|ncurses_delay_output|ncurses_delch|ncurses_deleteln|ncurses_delwin|ncurses_doupdate|ncurses_echo|ncurses_echochar|ncurses_end|ncurses_erase|ncurses_erasechar|ncurses_filter|ncurses_flash|ncurses_flushinp|ncurses_getch|ncurses_getmaxyx|ncurses_getmouse|ncurses_getyx|ncurses_halfdelay|ncurses_has_colors|ncurses_has_ic|ncurses_has_il|ncurses_has_key|ncurses_hide_panel|ncurses_hline|ncurses_inch|ncurses_init|ncurses_init_color|ncurses_init_pair|ncurses_insch|ncurses_insdelln|ncurses_insertln|ncurses_insstr|ncurses_instr|ncurses_isendwin|ncurses_keyok|ncurses_keypad|ncurses_killchar|ncurses_longname|ncurses_meta|ncurses_mouse_trafo|ncurses_mouseinterval|ncurses_mousemask|ncurses_move|ncurses_move_panel|ncurses_mvaddch|ncurses_mvaddchnstr|ncurses_mvaddchstr|ncurses_mvaddnstr|ncurses_mvaddstr|ncurses_mvcur|ncurses_mvdelch|ncurses_mvgetch|ncurses_mvhline|ncurses_mvinch|ncurses_mvvline|ncurses_mvwaddstr|ncurses_napms|ncurses_new_panel|ncurses_newpad|ncurses_newwin|ncurses_nl|ncurses_nocbreak|ncurses_noecho|ncurses_nonl|ncurses_noqiflush|ncurses_noraw|ncurses_pair_content|ncurses_panel_above|ncurses_panel_below|ncurses_panel_window|ncurses_pnoutrefresh|ncurses_prefresh|ncurses_putp|ncurses_qiflush|ncurses_raw|ncurses_refresh|ncurses_replace_panel|ncurses_reset_prog_mode|ncurses_reset_shell_mode|ncurses_resetty|ncurses_savetty|ncurses_scr_dump|ncurses_scr_init|ncurses_scr_restore|ncurses_scr_set|ncurses_scrl|ncurses_show_panel|ncurses_slk_attr|ncurses_slk_attroff|ncurses_slk_attron|ncurses_slk_attrset|ncurses_slk_clear|ncurses_slk_color|ncurses_slk_init|ncurses_slk_noutrefresh|ncurses_slk_refresh|ncurses_slk_restore|ncurses_slk_set|ncurses_slk_touch|ncurses_standend|ncurses_standout|ncurses_start_color|ncurses_termattrs|ncurses_termname|ncurses_timeout|ncurses_top_panel|ncurses_typeahead|ncurses_ungetch|ncurses_ungetmouse|ncurses_update_panels|ncurses_use_default_colors|ncurses_use_env|ncurses_use_extended_names|ncurses_vidattr|ncurses_vline|ncurses_waddch|ncurses_waddstr|ncurses_wattroff|ncurses_wattron|ncurses_wattrset|ncurses_wborder|ncurses_wclear|ncurses_wcolor_set|ncurses_werase|ncurses_wgetch|ncurses_whline|ncurses_wmouse_trafo|ncurses_wmove|ncurses_wnoutrefresh|ncurses_wrefresh|ncurses_wstandend|ncurses_wstandout|ncurses_wvline|newinstance|newinstanceargs|newt_bell|newt_button|newt_button_bar|newt_centered_window|newt_checkbox|newt_checkbox_get_value|newt_checkbox_set_flags|newt_checkbox_set_value|newt_checkbox_tree|newt_checkbox_tree_add_item|newt_checkbox_tree_find_item|newt_checkbox_tree_get_current|newt_checkbox_tree_get_entry_value|newt_checkbox_tree_get_multi_selection|newt_checkbox_tree_get_selection|newt_checkbox_tree_multi|newt_checkbox_tree_set_current|newt_checkbox_tree_set_entry|newt_checkbox_tree_set_entry_value|newt_checkbox_tree_set_width|newt_clear_key_buffer|newt_cls|newt_compact_button|newt_component_add_callback|newt_component_takes_focus|newt_create_grid|newt_cursor_off|newt_cursor_on|newt_delay|newt_draw_form|newt_draw_root_text|newt_entry|newt_entry_get_value|newt_entry_set|newt_entry_set_filter|newt_entry_set_flags|newt_finished|newt_form|newt_form_add_component|newt_form_add_components|newt_form_add_hot_key|newt_form_destroy|newt_form_get_current|newt_form_run|newt_form_set_background|newt_form_set_height|newt_form_set_size|newt_form_set_timer|newt_form_set_width|newt_form_watch_fd|newt_get_screen_size|newt_grid_add_components_to_form|newt_grid_basic_window|newt_grid_free|newt_grid_get_size|newt_grid_h_close_stacked|newt_grid_h_stacked|newt_grid_place|newt_grid_set_field|newt_grid_simple_window|newt_grid_v_close_stacked|newt_grid_v_stacked|newt_grid_wrapped_window|newt_grid_wrapped_window_at|newt_init|newt_label|newt_label_set_text|newt_listbox|newt_listbox_append_entry|newt_listbox_clear|newt_listbox_clear_selection|newt_listbox_delete_entry|newt_listbox_get_current|newt_listbox_get_selection|newt_listbox_insert_entry|newt_listbox_item_count|newt_listbox_select_item|newt_listbox_set_current|newt_listbox_set_current_by_key|newt_listbox_set_data|newt_listbox_set_entry|newt_listbox_set_width|newt_listitem|newt_listitem_get_data|newt_listitem_set|newt_open_window|newt_pop_help_line|newt_pop_window|newt_push_help_line|newt_radio_get_current|newt_radiobutton|newt_redraw_help_line|newt_reflow_text|newt_refresh|newt_resize_screen|newt_resume|newt_run_form|newt_scale|newt_scale_set|newt_scrollbar_set|newt_set_help_callback|newt_set_suspend_callback|newt_suspend|newt_textbox|newt_textbox_get_num_lines|newt_textbox_reflowed|newt_textbox_set_height|newt_textbox_set_text|newt_vertical_scrollbar|newt_wait_for_key|newt_win_choice|newt_win_entries|newt_win_menu|newt_win_message|newt_win_messagev|newt_win_ternary|next|ngettext|nl2br|nl_langinfo|norewinditerator|normalizer|notes_body|notes_copy_db|notes_create_db|notes_create_note|notes_drop_db|notes_find_note|notes_header_info|notes_list_msgs|notes_mark_read|notes_mark_unread|notes_nav_create|notes_search|notes_unread|notes_version|nsapi_request_headers|nsapi_response_headers|nsapi_virtual|nthmac|number_format|numberformatter|oauth|oauth_get_sbs|oauth_urlencode|oauthexception|oauthprovider|ob_clean|ob_deflatehandler|ob_end_clean|ob_end_flush|ob_etaghandler|ob_flush|ob_get_clean|ob_get_contents|ob_get_flush|ob_get_length|ob_get_level|ob_get_status|ob_gzhandler|ob_iconv_handler|ob_implicit_flush|ob_inflatehandler|ob_list_handlers|ob_start|ob_tidyhandler|oci_bind_array_by_name|oci_bind_by_name|oci_cancel|oci_client_version|oci_close|oci_collection_append|oci_collection_assign|oci_collection_element_assign|oci_collection_element_get|oci_collection_free|oci_collection_max|oci_collection_size|oci_collection_trim|oci_commit|oci_connect|oci_define_by_name|oci_error|oci_execute|oci_fetch|oci_fetch_all|oci_fetch_array|oci_fetch_assoc|oci_fetch_object|oci_fetch_row|oci_field_is_null|oci_field_name|oci_field_precision|oci_field_scale|oci_field_size|oci_field_type|oci_field_type_raw|oci_free_statement|oci_internal_debug|oci_lob_append|oci_lob_close|oci_lob_copy|oci_lob_eof|oci_lob_erase|oci_lob_export|oci_lob_flush|oci_lob_free|oci_lob_getbuffering|oci_lob_import|oci_lob_is_equal|oci_lob_load|oci_lob_read|oci_lob_rewind|oci_lob_save|oci_lob_savefile|oci_lob_seek|oci_lob_setbuffering|oci_lob_size|oci_lob_tell|oci_lob_truncate|oci_lob_write|oci_lob_writetemporary|oci_lob_writetofile|oci_new_collection|oci_new_connect|oci_new_cursor|oci_new_descriptor|oci_num_fields|oci_num_rows|oci_parse|oci_password_change|oci_pconnect|oci_result|oci_rollback|oci_server_version|oci_set_action|oci_set_client_identifier|oci_set_client_info|oci_set_edition|oci_set_module_name|oci_set_prefetch|oci_statement_type|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|octdec|odbc_autocommit|odbc_binmode|odbc_close|odbc_close_all|odbc_columnprivileges|odbc_columns|odbc_commit|odbc_connect|odbc_cursor|odbc_data_source|odbc_do|odbc_error|odbc_errormsg|odbc_exec|odbc_execute|odbc_fetch_array|odbc_fetch_into|odbc_fetch_object|odbc_fetch_row|odbc_field_len|odbc_field_name|odbc_field_num|odbc_field_precision|odbc_field_scale|odbc_field_type|odbc_foreignkeys|odbc_free_result|odbc_gettypeinfo|odbc_longreadlen|odbc_next_result|odbc_num_fields|odbc_num_rows|odbc_pconnect|odbc_prepare|odbc_primarykeys|odbc_procedurecolumns|odbc_procedures|odbc_result|odbc_result_all|odbc_rollback|odbc_setoption|odbc_specialcolumns|odbc_statistics|odbc_tableprivileges|odbc_tables|openal_buffer_create|openal_buffer_data|openal_buffer_destroy|openal_buffer_get|openal_buffer_loadwav|openal_context_create|openal_context_current|openal_context_destroy|openal_context_process|openal_context_suspend|openal_device_close|openal_device_open|openal_listener_get|openal_listener_set|openal_source_create|openal_source_destroy|openal_source_get|openal_source_pause|openal_source_play|openal_source_rewind|openal_source_set|openal_source_stop|openal_stream|opendir|openlog|openssl_cipher_iv_length|openssl_csr_export|openssl_csr_export_to_file|openssl_csr_get_public_key|openssl_csr_get_subject|openssl_csr_new|openssl_csr_sign|openssl_decrypt|openssl_dh_compute_key|openssl_digest|openssl_encrypt|openssl_error_string|openssl_free_key|openssl_get_cipher_methods|openssl_get_md_methods|openssl_get_privatekey|openssl_get_publickey|openssl_open|openssl_pkcs12_export|openssl_pkcs12_export_to_file|openssl_pkcs12_read|openssl_pkcs7_decrypt|openssl_pkcs7_encrypt|openssl_pkcs7_sign|openssl_pkcs7_verify|openssl_pkey_export|openssl_pkey_export_to_file|openssl_pkey_free|openssl_pkey_get_details|openssl_pkey_get_private|openssl_pkey_get_public|openssl_pkey_new|openssl_private_decrypt|openssl_private_encrypt|openssl_public_decrypt|openssl_public_encrypt|openssl_random_pseudo_bytes|openssl_seal|openssl_sign|openssl_verify|openssl_x509_check_private_key|openssl_x509_checkpurpose|openssl_x509_export|openssl_x509_export_to_file|openssl_x509_free|openssl_x509_parse|openssl_x509_read|ord|outeriterator|outofboundsexception|outofrangeexception|output_add_rewrite_var|output_reset_rewrite_vars|overflowexception|overload|override_function|ovrimos_close|ovrimos_commit|ovrimos_connect|ovrimos_cursor|ovrimos_exec|ovrimos_execute|ovrimos_fetch_into|ovrimos_fetch_row|ovrimos_field_len|ovrimos_field_name|ovrimos_field_num|ovrimos_field_type|ovrimos_free_result|ovrimos_longreadlen|ovrimos_num_fields|ovrimos_num_rows|ovrimos_prepare|ovrimos_result|ovrimos_result_all|ovrimos_rollback|pack|parentiterator|parse_ini_file|parse_ini_string|parse_str|parse_url|parsekit_compile_file|parsekit_compile_string|parsekit_func_arginfo|passthru|pathinfo|pclose|pcntl_alarm|pcntl_exec|pcntl_fork|pcntl_getpriority|pcntl_setpriority|pcntl_signal|pcntl_signal_dispatch|pcntl_sigprocmask|pcntl_sigtimedwait|pcntl_sigwaitinfo|pcntl_wait|pcntl_waitpid|pcntl_wexitstatus|pcntl_wifexited|pcntl_wifsignaled|pcntl_wifstopped|pcntl_wstopsig|pcntl_wtermsig|pdf_activate_item|pdf_add_annotation|pdf_add_bookmark|pdf_add_launchlink|pdf_add_locallink|pdf_add_nameddest|pdf_add_note|pdf_add_outline|pdf_add_pdflink|pdf_add_table_cell|pdf_add_textflow|pdf_add_thumbnail|pdf_add_weblink|pdf_arc|pdf_arcn|pdf_attach_file|pdf_begin_document|pdf_begin_font|pdf_begin_glyph|pdf_begin_item|pdf_begin_layer|pdf_begin_page|pdf_begin_page_ext|pdf_begin_pattern|pdf_begin_template|pdf_begin_template_ext|pdf_circle|pdf_clip|pdf_close|pdf_close_image|pdf_close_pdi|pdf_close_pdi_page|pdf_closepath|pdf_closepath_fill_stroke|pdf_closepath_stroke|pdf_concat|pdf_continue_text|pdf_create_3dview|pdf_create_action|pdf_create_annotation|pdf_create_bookmark|pdf_create_field|pdf_create_fieldgroup|pdf_create_gstate|pdf_create_pvf|pdf_create_textflow|pdf_curveto|pdf_define_layer|pdf_delete|pdf_delete_pvf|pdf_delete_table|pdf_delete_textflow|pdf_encoding_set_char|pdf_end_document|pdf_end_font|pdf_end_glyph|pdf_end_item|pdf_end_layer|pdf_end_page|pdf_end_page_ext|pdf_end_pattern|pdf_end_template|pdf_endpath|pdf_fill|pdf_fill_imageblock|pdf_fill_pdfblock|pdf_fill_stroke|pdf_fill_textblock|pdf_findfont|pdf_fit_image|pdf_fit_pdi_page|pdf_fit_table|pdf_fit_textflow|pdf_fit_textline|pdf_get_apiname|pdf_get_buffer|pdf_get_errmsg|pdf_get_errnum|pdf_get_font|pdf_get_fontname|pdf_get_fontsize|pdf_get_image_height|pdf_get_image_width|pdf_get_majorversion|pdf_get_minorversion|pdf_get_parameter|pdf_get_pdi_parameter|pdf_get_pdi_value|pdf_get_value|pdf_info_font|pdf_info_matchbox|pdf_info_table|pdf_info_textflow|pdf_info_textline|pdf_initgraphics|pdf_lineto|pdf_load_3ddata|pdf_load_font|pdf_load_iccprofile|pdf_load_image|pdf_makespotcolor|pdf_moveto|pdf_new|pdf_open_ccitt|pdf_open_file|pdf_open_gif|pdf_open_image|pdf_open_image_file|pdf_open_jpeg|pdf_open_memory_image|pdf_open_pdi|pdf_open_pdi_document|pdf_open_pdi_page|pdf_open_tiff|pdf_pcos_get_number|pdf_pcos_get_stream|pdf_pcos_get_string|pdf_place_image|pdf_place_pdi_page|pdf_process_pdi|pdf_rect|pdf_restore|pdf_resume_page|pdf_rotate|pdf_save|pdf_scale|pdf_set_border_color|pdf_set_border_dash|pdf_set_border_style|pdf_set_char_spacing|pdf_set_duration|pdf_set_gstate|pdf_set_horiz_scaling|pdf_set_info|pdf_set_info_author|pdf_set_info_creator|pdf_set_info_keywords|pdf_set_info_subject|pdf_set_info_title|pdf_set_layer_dependency|pdf_set_leading|pdf_set_parameter|pdf_set_text_matrix|pdf_set_text_pos|pdf_set_text_rendering|pdf_set_text_rise|pdf_set_value|pdf_set_word_spacing|pdf_setcolor|pdf_setdash|pdf_setdashpattern|pdf_setflat|pdf_setfont|pdf_setgray|pdf_setgray_fill|pdf_setgray_stroke|pdf_setlinecap|pdf_setlinejoin|pdf_setlinewidth|pdf_setmatrix|pdf_setmiterlimit|pdf_setpolydash|pdf_setrgbcolor|pdf_setrgbcolor_fill|pdf_setrgbcolor_stroke|pdf_shading|pdf_shading_pattern|pdf_shfill|pdf_show|pdf_show_boxed|pdf_show_xy|pdf_skew|pdf_stringwidth|pdf_stroke|pdf_suspend_page|pdf_translate|pdf_utf16_to_utf8|pdf_utf32_to_utf16|pdf_utf8_to_utf16|pdo|pdo_cubrid_schema|pdo_pgsqllobcreate|pdo_pgsqllobopen|pdo_pgsqllobunlink|pdo_sqlitecreateaggregate|pdo_sqlitecreatefunction|pdoexception|pdostatement|pfsockopen|pg_affected_rows|pg_cancel_query|pg_client_encoding|pg_close|pg_connect|pg_connection_busy|pg_connection_reset|pg_connection_status|pg_convert|pg_copy_from|pg_copy_to|pg_dbname|pg_delete|pg_end_copy|pg_escape_bytea|pg_escape_string|pg_execute|pg_fetch_all|pg_fetch_all_columns|pg_fetch_array|pg_fetch_assoc|pg_fetch_object|pg_fetch_result|pg_fetch_row|pg_field_is_null|pg_field_name|pg_field_num|pg_field_prtlen|pg_field_size|pg_field_table|pg_field_type|pg_field_type_oid|pg_free_result|pg_get_notify|pg_get_pid|pg_get_result|pg_host|pg_insert|pg_last_error|pg_last_notice|pg_last_oid|pg_lo_close|pg_lo_create|pg_lo_export|pg_lo_import|pg_lo_open|pg_lo_read|pg_lo_read_all|pg_lo_seek|pg_lo_tell|pg_lo_unlink|pg_lo_write|pg_meta_data|pg_num_fields|pg_num_rows|pg_options|pg_parameter_status|pg_pconnect|pg_ping|pg_port|pg_prepare|pg_put_line|pg_query|pg_query_params|pg_result_error|pg_result_error_field|pg_result_seek|pg_result_status|pg_select|pg_send_execute|pg_send_prepare|pg_send_query|pg_send_query_params|pg_set_client_encoding|pg_set_error_verbosity|pg_trace|pg_transaction_status|pg_tty|pg_unescape_bytea|pg_untrace|pg_update|pg_version|php_check_syntax|php_ini_loaded_file|php_ini_scanned_files|php_logo_guid|php_sapi_name|php_strip_whitespace|php_uname|phpcredits|phpinfo|phpversion|pi|png2wbmp|popen|pos|posix_access|posix_ctermid|posix_errno|posix_get_last_error|posix_getcwd|posix_getegid|posix_geteuid|posix_getgid|posix_getgrgid|posix_getgrnam|posix_getgroups|posix_getlogin|posix_getpgid|posix_getpgrp|posix_getpid|posix_getppid|posix_getpwnam|posix_getpwuid|posix_getrlimit|posix_getsid|posix_getuid|posix_initgroups|posix_isatty|posix_kill|posix_mkfifo|posix_mknod|posix_setegid|posix_seteuid|posix_setgid|posix_setpgid|posix_setsid|posix_setuid|posix_strerror|posix_times|posix_ttyname|posix_uname|pow|preg_filter|preg_grep|preg_last_error|preg_match|preg_match_all|preg_quote|preg_replace|preg_replace_callback|preg_split|prev|print|print_r|printer_abort|printer_close|printer_create_brush|printer_create_dc|printer_create_font|printer_create_pen|printer_delete_brush|printer_delete_dc|printer_delete_font|printer_delete_pen|printer_draw_bmp|printer_draw_chord|printer_draw_elipse|printer_draw_line|printer_draw_pie|printer_draw_rectangle|printer_draw_roundrect|printer_draw_text|printer_end_doc|printer_end_page|printer_get_option|printer_list|printer_logical_fontheight|printer_open|printer_select_brush|printer_select_font|printer_select_pen|printer_set_option|printer_start_doc|printer_start_page|printer_write|printf|proc_close|proc_get_status|proc_nice|proc_open|proc_terminate|property_exists|ps_add_bookmark|ps_add_launchlink|ps_add_locallink|ps_add_note|ps_add_pdflink|ps_add_weblink|ps_arc|ps_arcn|ps_begin_page|ps_begin_pattern|ps_begin_template|ps_circle|ps_clip|ps_close|ps_close_image|ps_closepath|ps_closepath_stroke|ps_continue_text|ps_curveto|ps_delete|ps_end_page|ps_end_pattern|ps_end_template|ps_fill|ps_fill_stroke|ps_findfont|ps_get_buffer|ps_get_parameter|ps_get_value|ps_hyphenate|ps_include_file|ps_lineto|ps_makespotcolor|ps_moveto|ps_new|ps_open_file|ps_open_image|ps_open_image_file|ps_open_memory_image|ps_place_image|ps_rect|ps_restore|ps_rotate|ps_save|ps_scale|ps_set_border_color|ps_set_border_dash|ps_set_border_style|ps_set_info|ps_set_parameter|ps_set_text_pos|ps_set_value|ps_setcolor|ps_setdash|ps_setflat|ps_setfont|ps_setgray|ps_setlinecap|ps_setlinejoin|ps_setlinewidth|ps_setmiterlimit|ps_setoverprintmode|ps_setpolydash|ps_shading|ps_shading_pattern|ps_shfill|ps_show|ps_show2|ps_show_boxed|ps_show_xy|ps_show_xy2|ps_string_geometry|ps_stringwidth|ps_stroke|ps_symbol|ps_symbol_name|ps_symbol_width|ps_translate|pspell_add_to_personal|pspell_add_to_session|pspell_check|pspell_clear_session|pspell_config_create|pspell_config_data_dir|pspell_config_dict_dir|pspell_config_ignore|pspell_config_mode|pspell_config_personal|pspell_config_repl|pspell_config_runtogether|pspell_config_save_repl|pspell_new|pspell_new_config|pspell_new_personal|pspell_save_wordlist|pspell_store_replacement|pspell_suggest|putenv|px_close|px_create_fp|px_date2string|px_delete|px_delete_record|px_get_field|px_get_info|px_get_parameter|px_get_record|px_get_schema|px_get_value|px_insert_record|px_new|px_numfields|px_numrecords|px_open_fp|px_put_record|px_retrieve_record|px_set_blob_file|px_set_parameter|px_set_tablename|px_set_targetencoding|px_set_value|px_timestamp2string|px_update_record|qdom_error|qdom_tree|quoted_printable_decode|quoted_printable_encode|quotemeta|rad2deg|radius_acct_open|radius_add_server|radius_auth_open|radius_close|radius_config|radius_create_request|radius_cvt_addr|radius_cvt_int|radius_cvt_string|radius_demangle|radius_demangle_mppe_key|radius_get_attr|radius_get_vendor_attr|radius_put_addr|radius_put_attr|radius_put_int|radius_put_string|radius_put_vendor_addr|radius_put_vendor_attr|radius_put_vendor_int|radius_put_vendor_string|radius_request_authenticator|radius_send_request|radius_server_secret|radius_strerror|rand|range|rangeexception|rar_wrapper_cache_stats|rararchive|rarentry|rarexception|rawurldecode|rawurlencode|read_exif_data|readdir|readfile|readgzfile|readline|readline_add_history|readline_callback_handler_install|readline_callback_handler_remove|readline_callback_read_char|readline_clear_history|readline_completion_function|readline_info|readline_list_history|readline_on_new_line|readline_read_history|readline_redisplay|readline_write_history|readlink|realpath|realpath_cache_get|realpath_cache_size|recode|recode_file|recode_string|recursivearrayiterator|recursivecachingiterator|recursivecallbackfilteriterator|recursivedirectoryiterator|recursivefilteriterator|recursiveiterator|recursiveiteratoriterator|recursiveregexiterator|recursivetreeiterator|reflection|reflectionclass|reflectionexception|reflectionextension|reflectionfunction|reflectionfunctionabstract|reflectionmethod|reflectionobject|reflectionparameter|reflectionproperty|reflector|regexiterator|register_shutdown_function|register_tick_function|rename|rename_function|require|require_once|reset|resetValue|resourcebundle|restore_error_handler|restore_exception_handler|restore_include_path|return|rewind|rewinddir|rmdir|round|rpm_close|rpm_get_tag|rpm_is_valid|rpm_open|rpm_version|rrd_create|rrd_error|rrd_fetch|rrd_first|rrd_graph|rrd_info|rrd_last|rrd_lastupdate|rrd_restore|rrd_tune|rrd_update|rrd_xport|rrdcreator|rrdgraph|rrdupdater|rsort|rtrim|runkit_class_adopt|runkit_class_emancipate|runkit_constant_add|runkit_constant_redefine|runkit_constant_remove|runkit_function_add|runkit_function_copy|runkit_function_redefine|runkit_function_remove|runkit_function_rename|runkit_import|runkit_lint|runkit_lint_file|runkit_method_add|runkit_method_copy|runkit_method_redefine|runkit_method_remove|runkit_method_rename|runkit_return_value_used|runkit_sandbox_output_handler|runkit_superglobals|runtimeexception|samconnection_commit|samconnection_connect|samconnection_constructor|samconnection_disconnect|samconnection_errno|samconnection_error|samconnection_isconnected|samconnection_peek|samconnection_peekall|samconnection_receive|samconnection_remove|samconnection_rollback|samconnection_send|samconnection_setDebug|samconnection_subscribe|samconnection_unsubscribe|sammessage_body|sammessage_constructor|sammessage_header|sca_createdataobject|sca_getservice|sca_localproxy_createdataobject|sca_soapproxy_createdataobject|scandir|sdo_das_changesummary_beginlogging|sdo_das_changesummary_endlogging|sdo_das_changesummary_getchangeddataobjects|sdo_das_changesummary_getchangetype|sdo_das_changesummary_getoldcontainer|sdo_das_changesummary_getoldvalues|sdo_das_changesummary_islogging|sdo_das_datafactory_addpropertytotype|sdo_das_datafactory_addtype|sdo_das_datafactory_getdatafactory|sdo_das_dataobject_getchangesummary|sdo_das_relational_applychanges|sdo_das_relational_construct|sdo_das_relational_createrootdataobject|sdo_das_relational_executepreparedquery|sdo_das_relational_executequery|sdo_das_setting_getlistindex|sdo_das_setting_getpropertyindex|sdo_das_setting_getpropertyname|sdo_das_setting_getvalue|sdo_das_setting_isset|sdo_das_xml_addtypes|sdo_das_xml_create|sdo_das_xml_createdataobject|sdo_das_xml_createdocument|sdo_das_xml_document_getrootdataobject|sdo_das_xml_document_getrootelementname|sdo_das_xml_document_getrootelementuri|sdo_das_xml_document_setencoding|sdo_das_xml_document_setxmldeclaration|sdo_das_xml_document_setxmlversion|sdo_das_xml_loadfile|sdo_das_xml_loadstring|sdo_das_xml_savefile|sdo_das_xml_savestring|sdo_datafactory_create|sdo_dataobject_clear|sdo_dataobject_createdataobject|sdo_dataobject_getcontainer|sdo_dataobject_getsequence|sdo_dataobject_gettypename|sdo_dataobject_gettypenamespaceuri|sdo_exception_getcause|sdo_list_insert|sdo_model_property_getcontainingtype|sdo_model_property_getdefault|sdo_model_property_getname|sdo_model_property_gettype|sdo_model_property_iscontainment|sdo_model_property_ismany|sdo_model_reflectiondataobject_construct|sdo_model_reflectiondataobject_export|sdo_model_reflectiondataobject_getcontainmentproperty|sdo_model_reflectiondataobject_getinstanceproperties|sdo_model_reflectiondataobject_gettype|sdo_model_type_getbasetype|sdo_model_type_getname|sdo_model_type_getnamespaceuri|sdo_model_type_getproperties|sdo_model_type_getproperty|sdo_model_type_isabstracttype|sdo_model_type_isdatatype|sdo_model_type_isinstance|sdo_model_type_isopentype|sdo_model_type_issequencedtype|sdo_sequence_getproperty|sdo_sequence_insert|sdo_sequence_move|seekableiterator|sem_acquire|sem_get|sem_release|sem_remove|serializable|serialize|session_cache_expire|session_cache_limiter|session_commit|session_decode|session_destroy|session_encode|session_get_cookie_params|session_id|session_is_registered|session_module_name|session_name|session_pgsql_add_error|session_pgsql_get_error|session_pgsql_get_field|session_pgsql_reset|session_pgsql_set_field|session_pgsql_status|session_regenerate_id|session_register|session_save_path|session_set_cookie_params|session_set_save_handler|session_start|session_unregister|session_unset|session_write_close|setCounterClass|set_error_handler|set_exception_handler|set_file_buffer|set_include_path|set_magic_quotes_runtime|set_socket_blocking|set_time_limit|setcookie|setlocale|setproctitle|setrawcookie|setstaticpropertyvalue|setthreadtitle|settype|sha1|sha1_file|shell_exec|shm_attach|shm_detach|shm_get_var|shm_has_var|shm_put_var|shm_remove|shm_remove_var|shmop_close|shmop_delete|shmop_open|shmop_read|shmop_size|shmop_write|show_source|shuffle|signeurlpaiement|similar_text|simplexml_import_dom|simplexml_load_file|simplexml_load_string|simplexmlelement|simplexmliterator|sin|sinh|sizeof|sleep|snmp|snmp2_get|snmp2_getnext|snmp2_real_walk|snmp2_set|snmp2_walk|snmp3_get|snmp3_getnext|snmp3_real_walk|snmp3_set|snmp3_walk|snmp_get_quick_print|snmp_get_valueretrieval|snmp_read_mib|snmp_set_enum_print|snmp_set_oid_numeric_print|snmp_set_oid_output_format|snmp_set_quick_print|snmp_set_valueretrieval|snmpget|snmpgetnext|snmprealwalk|snmpset|snmpwalk|snmpwalkoid|soapclient|soapfault|soapheader|soapparam|soapserver|soapvar|socket_accept|socket_bind|socket_clear_error|socket_close|socket_connect|socket_create|socket_create_listen|socket_create_pair|socket_get_option|socket_get_status|socket_getpeername|socket_getsockname|socket_last_error|socket_listen|socket_read|socket_recv|socket_recvfrom|socket_select|socket_send|socket_sendto|socket_set_block|socket_set_blocking|socket_set_nonblock|socket_set_option|socket_set_timeout|socket_shutdown|socket_strerror|socket_write|solr_get_version|solrclient|solrclientexception|solrdocument|solrdocumentfield|solrexception|solrgenericresponse|solrillegalargumentexception|solrillegaloperationexception|solrinputdocument|solrmodifiableparams|solrobject|solrparams|solrpingresponse|solrquery|solrqueryresponse|solrresponse|solrupdateresponse|solrutils|sort|soundex|sphinxclient|spl_autoload|spl_autoload_call|spl_autoload_extensions|spl_autoload_functions|spl_autoload_register|spl_autoload_unregister|spl_classes|spl_object_hash|splbool|spldoublylinkedlist|splenum|splfileinfo|splfileobject|splfixedarray|splfloat|splheap|splint|split|spliti|splmaxheap|splminheap|splobjectstorage|splobserver|splpriorityqueue|splqueue|splstack|splstring|splsubject|spltempfileobject|spoofchecker|sprintf|sql_regcase|sqlite3|sqlite3result|sqlite3stmt|sqlite_array_query|sqlite_busy_timeout|sqlite_changes|sqlite_close|sqlite_column|sqlite_create_aggregate|sqlite_create_function|sqlite_current|sqlite_error_string|sqlite_escape_string|sqlite_exec|sqlite_factory|sqlite_fetch_all|sqlite_fetch_array|sqlite_fetch_column_types|sqlite_fetch_object|sqlite_fetch_single|sqlite_fetch_string|sqlite_field_name|sqlite_has_more|sqlite_has_prev|sqlite_key|sqlite_last_error|sqlite_last_insert_rowid|sqlite_libencoding|sqlite_libversion|sqlite_next|sqlite_num_fields|sqlite_num_rows|sqlite_open|sqlite_popen|sqlite_prev|sqlite_query|sqlite_rewind|sqlite_seek|sqlite_single_query|sqlite_udf_decode_binary|sqlite_udf_encode_binary|sqlite_unbuffered_query|sqlite_valid|sqrt|srand|sscanf|ssdeep_fuzzy_compare|ssdeep_fuzzy_hash|ssdeep_fuzzy_hash_filename|ssh2_auth_hostbased_file|ssh2_auth_none|ssh2_auth_password|ssh2_auth_pubkey_file|ssh2_connect|ssh2_exec|ssh2_fetch_stream|ssh2_fingerprint|ssh2_methods_negotiated|ssh2_publickey_add|ssh2_publickey_init|ssh2_publickey_list|ssh2_publickey_remove|ssh2_scp_recv|ssh2_scp_send|ssh2_sftp|ssh2_sftp_lstat|ssh2_sftp_mkdir|ssh2_sftp_readlink|ssh2_sftp_realpath|ssh2_sftp_rename|ssh2_sftp_rmdir|ssh2_sftp_stat|ssh2_sftp_symlink|ssh2_sftp_unlink|ssh2_shell|ssh2_tunnel|stat|stats_absolute_deviation|stats_cdf_beta|stats_cdf_binomial|stats_cdf_cauchy|stats_cdf_chisquare|stats_cdf_exponential|stats_cdf_f|stats_cdf_gamma|stats_cdf_laplace|stats_cdf_logistic|stats_cdf_negative_binomial|stats_cdf_noncentral_chisquare|stats_cdf_noncentral_f|stats_cdf_poisson|stats_cdf_t|stats_cdf_uniform|stats_cdf_weibull|stats_covariance|stats_den_uniform|stats_dens_beta|stats_dens_cauchy|stats_dens_chisquare|stats_dens_exponential|stats_dens_f|stats_dens_gamma|stats_dens_laplace|stats_dens_logistic|stats_dens_negative_binomial|stats_dens_normal|stats_dens_pmf_binomial|stats_dens_pmf_hypergeometric|stats_dens_pmf_poisson|stats_dens_t|stats_dens_weibull|stats_harmonic_mean|stats_kurtosis|stats_rand_gen_beta|stats_rand_gen_chisquare|stats_rand_gen_exponential|stats_rand_gen_f|stats_rand_gen_funiform|stats_rand_gen_gamma|stats_rand_gen_ibinomial|stats_rand_gen_ibinomial_negative|stats_rand_gen_int|stats_rand_gen_ipoisson|stats_rand_gen_iuniform|stats_rand_gen_noncenral_chisquare|stats_rand_gen_noncentral_f|stats_rand_gen_noncentral_t|stats_rand_gen_normal|stats_rand_gen_t|stats_rand_get_seeds|stats_rand_phrase_to_seeds|stats_rand_ranf|stats_rand_setall|stats_skew|stats_standard_deviation|stats_stat_binomial_coef|stats_stat_correlation|stats_stat_gennch|stats_stat_independent_t|stats_stat_innerproduct|stats_stat_noncentral_t|stats_stat_paired_t|stats_stat_percentile|stats_stat_powersum|stats_variance|stomp|stomp_connect_error|stomp_version|stompexception|stompframe|str_getcsv|str_ireplace|str_pad|str_repeat|str_replace|str_rot13|str_shuffle|str_split|str_word_count|strcasecmp|strchr|strcmp|strcoll|strcspn|stream_bucket_append|stream_bucket_make_writeable|stream_bucket_new|stream_bucket_prepend|stream_context_create|stream_context_get_default|stream_context_get_options|stream_context_get_params|stream_context_set_default|stream_context_set_option|stream_context_set_params|stream_copy_to_stream|stream_encoding|stream_filter_append|stream_filter_prepend|stream_filter_register|stream_filter_remove|stream_get_contents|stream_get_filters|stream_get_line|stream_get_meta_data|stream_get_transports|stream_get_wrappers|stream_is_local|stream_notification_callback|stream_register_wrapper|stream_resolve_include_path|stream_select|stream_set_blocking|stream_set_read_buffer|stream_set_timeout|stream_set_write_buffer|stream_socket_accept|stream_socket_client|stream_socket_enable_crypto|stream_socket_get_name|stream_socket_pair|stream_socket_recvfrom|stream_socket_sendto|stream_socket_server|stream_socket_shutdown|stream_supports_lock|stream_wrapper_register|stream_wrapper_restore|stream_wrapper_unregister|streamwrapper|strftime|strip_tags|stripcslashes|stripos|stripslashes|stristr|strlen|strnatcasecmp|strnatcmp|strncasecmp|strncmp|strpbrk|strpos|strptime|strrchr|strrev|strripos|strrpos|strspn|strstr|strtok|strtolower|strtotime|strtoupper|strtr|strval|substr|substr_compare|substr_count|substr_replace|svm|svmmodel|svn_add|svn_auth_get_parameter|svn_auth_set_parameter|svn_blame|svn_cat|svn_checkout|svn_cleanup|svn_client_version|svn_commit|svn_delete|svn_diff|svn_export|svn_fs_abort_txn|svn_fs_apply_text|svn_fs_begin_txn2|svn_fs_change_node_prop|svn_fs_check_path|svn_fs_contents_changed|svn_fs_copy|svn_fs_delete|svn_fs_dir_entries|svn_fs_file_contents|svn_fs_file_length|svn_fs_is_dir|svn_fs_is_file|svn_fs_make_dir|svn_fs_make_file|svn_fs_node_created_rev|svn_fs_node_prop|svn_fs_props_changed|svn_fs_revision_prop|svn_fs_revision_root|svn_fs_txn_root|svn_fs_youngest_rev|svn_import|svn_log|svn_ls|svn_mkdir|svn_repos_create|svn_repos_fs|svn_repos_fs_begin_txn_for_commit|svn_repos_fs_commit_txn|svn_repos_hotcopy|svn_repos_open|svn_repos_recover|svn_revert|svn_status|svn_update|swf_actiongeturl|swf_actiongotoframe|swf_actiongotolabel|swf_actionnextframe|swf_actionplay|swf_actionprevframe|swf_actionsettarget|swf_actionstop|swf_actiontogglequality|swf_actionwaitforframe|swf_addbuttonrecord|swf_addcolor|swf_closefile|swf_definebitmap|swf_definefont|swf_defineline|swf_definepoly|swf_definerect|swf_definetext|swf_endbutton|swf_enddoaction|swf_endshape|swf_endsymbol|swf_fontsize|swf_fontslant|swf_fonttracking|swf_getbitmapinfo|swf_getfontinfo|swf_getframe|swf_labelframe|swf_lookat|swf_modifyobject|swf_mulcolor|swf_nextid|swf_oncondition|swf_openfile|swf_ortho|swf_ortho2|swf_perspective|swf_placeobject|swf_polarview|swf_popmatrix|swf_posround|swf_pushmatrix|swf_removeobject|swf_rotate|swf_scale|swf_setfont|swf_setframe|swf_shapearc|swf_shapecurveto|swf_shapecurveto3|swf_shapefillbitmapclip|swf_shapefillbitmaptile|swf_shapefilloff|swf_shapefillsolid|swf_shapelinesolid|swf_shapelineto|swf_shapemoveto|swf_showframe|swf_startbutton|swf_startdoaction|swf_startshape|swf_startsymbol|swf_textwidth|swf_translate|swf_viewport|swfaction|swfbitmap|swfbutton|swfdisplayitem|swffill|swffont|swffontchar|swfgradient|swfmorph|swfmovie|swfprebuiltclip|swfshape|swfsound|swfsoundinstance|swfsprite|swftext|swftextfield|swfvideostream|swish_construct|swish_getmetalist|swish_getpropertylist|swish_prepare|swish_query|swishresult_getmetalist|swishresult_stem|swishresults_getparsedwords|swishresults_getremovedstopwords|swishresults_nextresult|swishresults_seekresult|swishsearch_execute|swishsearch_resetlimit|swishsearch_setlimit|swishsearch_setphrasedelimiter|swishsearch_setsort|swishsearch_setstructure|sybase_affected_rows|sybase_close|sybase_connect|sybase_data_seek|sybase_deadlock_retry_count|sybase_fetch_array|sybase_fetch_assoc|sybase_fetch_field|sybase_fetch_object|sybase_fetch_row|sybase_field_seek|sybase_free_result|sybase_get_last_message|sybase_min_client_severity|sybase_min_error_severity|sybase_min_message_severity|sybase_min_server_severity|sybase_num_fields|sybase_num_rows|sybase_pconnect|sybase_query|sybase_result|sybase_select_db|sybase_set_message_handler|sybase_unbuffered_query|symlink|sys_get_temp_dir|sys_getloadavg|syslog|system|tag|tan|tanh|tcpwrap_check|tempnam|textdomain|tidy|tidy_access_count|tidy_config_count|tidy_diagnose|tidy_error_count|tidy_get_error_buffer|tidy_get_output|tidy_load_config|tidy_reset_config|tidy_save_config|tidy_set_encoding|tidy_setopt|tidy_warning_count|tidynode|time|time_nanosleep|time_sleep_until|timezone_abbreviations_list|timezone_identifiers_list|timezone_location_get|timezone_name_from_abbr|timezone_name_get|timezone_offset_get|timezone_open|timezone_transitions_get|timezone_version_get|tmpfile|token_get_all|token_name|tokyotyrant|tokyotyrantquery|tokyotyranttable|tostring|tostring|touch|transliterator|traversable|trigger_error|trim|uasort|ucfirst|ucwords|udm_add_search_limit|udm_alloc_agent|udm_alloc_agent_array|udm_api_version|udm_cat_list|udm_cat_path|udm_check_charset|udm_check_stored|udm_clear_search_limits|udm_close_stored|udm_crc32|udm_errno|udm_error|udm_find|udm_free_agent|udm_free_ispell_data|udm_free_res|udm_get_doc_count|udm_get_res_field|udm_get_res_param|udm_hash32|udm_load_ispell_data|udm_open_stored|udm_set_agent_param|uksort|umask|underflowexception|unexpectedvalueexception|uniqid|unixtojd|unlink|unpack|unregister_tick_function|unserialize|unset|urldecode|urlencode|use_soap_error_handler|user_error|usleep|usort|utf8_decode|utf8_encode|v8js|v8jsexception|var_dump|var_export|variant|variant_abs|variant_add|variant_and|variant_cast|variant_cat|variant_cmp|variant_date_from_timestamp|variant_date_to_timestamp|variant_div|variant_eqv|variant_fix|variant_get_type|variant_idiv|variant_imp|variant_int|variant_mod|variant_mul|variant_neg|variant_not|variant_or|variant_pow|variant_round|variant_set|variant_set_type|variant_sub|variant_xor|version_compare|vfprintf|virtual|vpopmail_add_alias_domain|vpopmail_add_alias_domain_ex|vpopmail_add_domain|vpopmail_add_domain_ex|vpopmail_add_user|vpopmail_alias_add|vpopmail_alias_del|vpopmail_alias_del_domain|vpopmail_alias_get|vpopmail_alias_get_all|vpopmail_auth_user|vpopmail_del_domain|vpopmail_del_domain_ex|vpopmail_del_user|vpopmail_error|vpopmail_passwd|vpopmail_set_user_quota|vprintf|vsprintf|w32api_deftype|w32api_init_dtype|w32api_invoke_function|w32api_register_function|w32api_set_call_method|wddx_add_vars|wddx_deserialize|wddx_packet_end|wddx_packet_start|wddx_serialize_value|wddx_serialize_vars|win32_continue_service|win32_create_service|win32_delete_service|win32_get_last_control_message|win32_pause_service|win32_ps_list_procs|win32_ps_stat_mem|win32_ps_stat_proc|win32_query_service_status|win32_set_service_status|win32_start_service|win32_start_service_ctrl_dispatcher|win32_stop_service|wincache_fcache_fileinfo|wincache_fcache_meminfo|wincache_lock|wincache_ocache_fileinfo|wincache_ocache_meminfo|wincache_refresh_if_changed|wincache_rplist_fileinfo|wincache_rplist_meminfo|wincache_scache_info|wincache_scache_meminfo|wincache_ucache_add|wincache_ucache_cas|wincache_ucache_clear|wincache_ucache_dec|wincache_ucache_delete|wincache_ucache_exists|wincache_ucache_get|wincache_ucache_inc|wincache_ucache_info|wincache_ucache_meminfo|wincache_ucache_set|wincache_unlock|wordwrap|xattr_get|xattr_list|xattr_remove|xattr_set|xattr_supported|xdiff_file_bdiff|xdiff_file_bdiff_size|xdiff_file_bpatch|xdiff_file_diff|xdiff_file_diff_binary|xdiff_file_merge3|xdiff_file_patch|xdiff_file_patch_binary|xdiff_file_rabdiff|xdiff_string_bdiff|xdiff_string_bdiff_size|xdiff_string_bpatch|xdiff_string_diff|xdiff_string_diff_binary|xdiff_string_merge3|xdiff_string_patch|xdiff_string_patch_binary|xdiff_string_rabdiff|xhprof_disable|xhprof_enable|xhprof_sample_disable|xhprof_sample_enable|xml_error_string|xml_get_current_byte_index|xml_get_current_column_number|xml_get_current_line_number|xml_get_error_code|xml_parse|xml_parse_into_struct|xml_parser_create|xml_parser_create_ns|xml_parser_free|xml_parser_get_option|xml_parser_set_option|xml_set_character_data_handler|xml_set_default_handler|xml_set_element_handler|xml_set_end_namespace_decl_handler|xml_set_external_entity_ref_handler|xml_set_notation_decl_handler|xml_set_object|xml_set_processing_instruction_handler|xml_set_start_namespace_decl_handler|xml_set_unparsed_entity_decl_handler|xmlreader|xmlrpc_decode|xmlrpc_decode_request|xmlrpc_encode|xmlrpc_encode_request|xmlrpc_get_type|xmlrpc_is_fault|xmlrpc_parse_method_descriptions|xmlrpc_server_add_introspection_data|xmlrpc_server_call_method|xmlrpc_server_create|xmlrpc_server_destroy|xmlrpc_server_register_introspection_callback|xmlrpc_server_register_method|xmlrpc_set_type|xmlwriter_end_attribute|xmlwriter_end_cdata|xmlwriter_end_comment|xmlwriter_end_document|xmlwriter_end_dtd|xmlwriter_end_dtd_attlist|xmlwriter_end_dtd_element|xmlwriter_end_dtd_entity|xmlwriter_end_element|xmlwriter_end_pi|xmlwriter_flush|xmlwriter_full_end_element|xmlwriter_open_memory|xmlwriter_open_uri|xmlwriter_output_memory|xmlwriter_set_indent|xmlwriter_set_indent_string|xmlwriter_start_attribute|xmlwriter_start_attribute_ns|xmlwriter_start_cdata|xmlwriter_start_comment|xmlwriter_start_document|xmlwriter_start_dtd|xmlwriter_start_dtd_attlist|xmlwriter_start_dtd_element|xmlwriter_start_dtd_entity|xmlwriter_start_element|xmlwriter_start_element_ns|xmlwriter_start_pi|xmlwriter_text|xmlwriter_write_attribute|xmlwriter_write_attribute_ns|xmlwriter_write_cdata|xmlwriter_write_comment|xmlwriter_write_dtd|xmlwriter_write_dtd_attlist|xmlwriter_write_dtd_element|xmlwriter_write_dtd_entity|xmlwriter_write_element|xmlwriter_write_element_ns|xmlwriter_write_pi|xmlwriter_write_raw|xpath_eval|xpath_eval_expression|xpath_new_context|xpath_register_ns|xpath_register_ns_auto|xptr_eval|xptr_new_context|xslt_backend_info|xslt_backend_name|xslt_backend_version|xslt_create|xslt_errno|xslt_error|xslt_free|xslt_getopt|xslt_process|xslt_set_base|xslt_set_encoding|xslt_set_error_handler|xslt_set_log|xslt_set_object|xslt_set_sax_handler|xslt_set_sax_handlers|xslt_set_scheme_handler|xslt_set_scheme_handlers|xslt_setopt|xsltprocessor|yaml_emit|yaml_emit_file|yaml_parse|yaml_parse_file|yaml_parse_url|yaz_addinfo|yaz_ccl_conf|yaz_ccl_parse|yaz_close|yaz_connect|yaz_database|yaz_element|yaz_errno|yaz_error|yaz_es|yaz_es_result|yaz_get_option|yaz_hits|yaz_itemorder|yaz_present|yaz_range|yaz_record|yaz_scan|yaz_scan_result|yaz_schema|yaz_search|yaz_set_option|yaz_sort|yaz_syntax|yaz_wait|yp_all|yp_cat|yp_err_string|yp_errno|yp_first|yp_get_default_domain|yp_master|yp_match|yp_next|yp_order|zend_logo_guid|zend_thread_id|zend_version|zip_close|zip_entry_close|zip_entry_compressedsize|zip_entry_compressionmethod|zip_entry_filesize|zip_entry_name|zip_entry_open|zip_entry_read|zip_open|zip_read|ziparchive|ziparchive_addemptydir|ziparchive_addfile|ziparchive_addfromstring|ziparchive_close|ziparchive_deleteindex|ziparchive_deletename|ziparchive_extractto|ziparchive_getarchivecomment|ziparchive_getcommentindex|ziparchive_getcommentname|ziparchive_getfromindex|ziparchive_getfromname|ziparchive_getnameindex|ziparchive_getstatusstring|ziparchive_getstream|ziparchive_locatename|ziparchive_open|ziparchive_renameindex|ziparchive_renamename|ziparchive_setCommentName|ziparchive_setarchivecomment|ziparchive_setcommentindex|ziparchive_statindex|ziparchive_statname|ziparchive_unchangeall|ziparchive_unchangearchive|ziparchive_unchangeindex|ziparchive_unchangename|zlib_get_coding_type".split("|")),n=i.arrayToMap("abstract|and|array|as|break|case|catch|class|clone|const|continue|declare|default|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|final|for|foreach|function|global|goto|if|implements|interface|instanceof|namespace|new|or|private|protected|public|static|switch|throw|try|use|var|while|xor".split("|")),r=i.arrayToMap("die|echo|empty|exit|eval|include|include_once|isset|list|require|require_once|return|print|unset".split("|")),o=i.arrayToMap("true|false|null|__CLASS__|__DIR__|__FILE__|__LINE__|__METHOD__|__FUNCTION__|__NAMESPACE__".split("|")),u=i.arrayToMap("$GLOBALS|$_SERVER|$_GET|$_POST|$_FILES|$_REQUEST|$_SESSION|$_ENV|$_COOKIE|$php_errormsg|$HTTP_RAW_POST_DATA|$http_response_header|$argc|$argv".split("|")),a=i.arrayToMap("key_exists|cairo_matrix_create_scale|cairo_matrix_create_translate|call_user_method|call_user_method_array|com_addref|com_get|com_invoke|com_isenum|com_load|com_release|com_set|connection_timeout|cubrid_load_from_glo|cubrid_new_glo|cubrid_save_to_glo|cubrid_send_glo|define_syslog_variables|dl|ereg|ereg_replace|eregi|eregi_replace|hw_documentattributes|hw_documentbodytag|hw_documentsize|hw_outputdocument|imagedashedline|maxdb_bind_param|maxdb_bind_result|maxdb_client_encoding|maxdb_close_long_data|maxdb_execute|maxdb_fetch|maxdb_get_metadata|maxdb_param_count|maxdb_send_long_data|mcrypt_ecb|mcrypt_generic_end|mime_content_type|mysql_createdb|mysql_dbname|mysql_db_query|mysql_drop_db|mysql_dropdb|mysql_escape_string|mysql_fieldflags|mysql_fieldflags|mysql_fieldname|mysql_fieldtable|mysql_fieldtype|mysql_freeresult|mysql_listdbs|mysql_list_fields|mysql_listfields|mysql_list_tables|mysql_listtables|mysql_numfields|mysql_numrows|mysql_selectdb|mysql_tablename|mysqli_bind_param|mysqli_bind_result|mysqli_disable_reads_from_master|mysqli_disable_rpl_parse|mysqli_enable_reads_from_master|mysqli_enable_rpl_parse|mysqli_execute|mysqli_fetch|mysqli_get_metadata|mysqli_master_query|mysqli_param_count|mysqli_rpl_parse_enabled|mysqli_rpl_probe|mysqli_rpl_query_type|mysqli_send_long_data|mysqli_send_query|mysqli_slave_query|ocibindbyname|ocicancel|ocicloselob|ocicollappend|ocicollassign|ocicollassignelem|ocicollgetelem|ocicollmax|ocicollsize|ocicolltrim|ocicolumnisnull|ocicolumnname|ocicolumnprecision|ocicolumnscale|ocicolumnsize|ocicolumntype|ocicolumntyperaw|ocicommit|ocidefinebyname|ocierror|ociexecute|ocifetch|ocifetchinto|ocifetchstatement|ocifreecollection|ocifreecursor|ocifreedesc|ocifreestatement|ociinternaldebug|ociloadlob|ocilogoff|ocilogon|ocinewcollection|ocinewcursor|ocinewdescriptor|ocinlogon|ocinumcols|ociparse|ociplogon|ociresult|ocirollback|ocirowcount|ocisavelob|ocisavelobfile|ociserverversion|ocisetprefetch|ocistatementtype|ociwritelobtofile|ociwritetemporarylob|PDF_add_annotation|PDF_add_bookmark|PDF_add_launchlink|PDF_add_locallink|PDF_add_note|PDF_add_outline|PDF_add_pdflink|PDF_add_weblink|PDF_attach_file|PDF_begin_page|PDF_begin_template|PDF_close_pdi|PDF_close|PDF_findfont|PDF_get_font|PDF_get_fontname|PDF_get_fontsize|PDF_get_image_height|PDF_get_image_width|PDF_get_majorversion|PDF_get_minorversion|PDF_get_pdi_parameter|PDF_get_pdi_value|PDF_open_ccitt|PDF_open_file|PDF_open_gif|PDF_open_image_file|PDF_open_image|PDF_open_jpeg|PDF_open_pdi|PDF_open_tiff|PDF_place_image|PDF_place_pdi_page|PDF_set_border_color|PDF_set_border_dash|PDF_set_border_style|PDF_set_char_spacing|PDF_set_duration|PDF_set_horiz_scaling|PDF_set_info_author|PDF_set_info_creator|PDF_set_info_keywords|PDF_set_info_subject|PDF_set_info_title|PDF_set_leading|PDF_set_text_matrix|PDF_set_text_rendering|PDF_set_text_rise|PDF_set_word_spacing|PDF_setgray_fill|PDF_setgray_stroke|PDF_setgray|PDF_setpolydash|PDF_setrgbcolor_fill|PDF_setrgbcolor_stroke|PDF_setrgbcolor|PDF_show_boxed|php_check_syntax|px_set_tablename|px_set_targetencoding|runkit_sandbox_output_handler|session_is_registered|session_register|session_unregisterset_magic_quotes_runtime|magic_quotes_runtime|set_socket_blocking|socket_set_blocking|set_socket_timeout|socket_set_timeout|split|spliti|sql_regcase".split("|")),f=i.arrayToMap("cfunction|old_function".split("|")),l=i.arrayToMap([]);this.$rules={start:[{token:"comment",regex:/(?:#|\/\/)(?:[^?]|\?[^>])*/},e.getStartRule("doc-start"),{token:"comment",regex:"\\/\\*",next:"comment"},{token:"string.regexp",regex:"[/](?:(?:\\[(?:\\\\]|[^\\]])+\\])|(?:\\\\/|[^\\]/]))*[/][gimy]*\\s*(?=[).,;]|$)"},{token:"string",regex:'"',next:"qqstring"},{token:"string",regex:"'",next:"qstring"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language",regex:"\\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\\b"},{token:["keyword","text","support.class"],regex:"\\b(new)(\\s+)(\\w+)"},{token:["support.class","keyword.operator"],regex:"\\b(\\w+)(::)"},{token:"constant.language",regex:"\\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR)|STD(?:IN|OUT|ERR))\\b"},{token:function(e){return n.hasOwnProperty(e)?"keyword":o.hasOwnProperty(e)?"constant.language":u.hasOwnProperty(e)?"variable.language":l.hasOwnProperty(e)?"invalid.illegal":t.hasOwnProperty(e)?"support.function":e=="debugger"?"invalid.deprecated":e.match(/^(\$[a-zA-Z_\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*|self|parent)$/)?"variable":"identifier"},regex:/[a-zA-Z_$\x7f-\uffff][a-zA-Z0-9_\x7f-\uffff]*/},{onMatch:function(e,t,n){e=e.substr(3);if(e[0]=="'"||e[0]=='"')e=e.slice(1,-1);return n.unshift(this.next,e),"markup.list"},regex:/<<<(?:\w+|'\w+'|"\w+")$/,next:"heredoc"},{token:"keyword.operator",regex:"::|!|\\$|%|&|\\*|\\-\\-|\\-|\\+\\+|\\+|~|===|==|!=|!==|<=|>=|=>|<<=|>>=|>>>=|<>|<|>|=|!|&&|\\|\\||\\?\\:|\\*=|%=|\\+=|\\-=|&=|\\^=|\\b(?:in|instanceof|new|delete|typeof|void)"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"}],heredoc:[{onMatch:function(e,t,n){return n[1]!=e?"string":(n.shift(),n.shift(),"markup.list")},regex:"^\\w+(?=;?$)",next:"start"},{token:"string",regex:".*"}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"constant.language.escape",regex:'\\\\(?:[nrtvef\\\\"$]|[0-7]{1,3}|x[0-9A-Fa-f]{1,2})'},{token:"constant.language.escape",regex:/\$[\w]+(?:\[[\w\]+]|=>\w+)?/},{token:"constant.language.escape",regex:/\$\{[^"\}]+\}?/},{token:"string",regex:'"',next:"start"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:/\\['\\]/},{token:"string",regex:"'",next:"start"},{defaultToken:"string"}]},this.embedRules(s,"doc-",[s.getEndRule("start")])};r.inherits(a,o);var f=function(){u.call(this);var e=[{token:"support.php_tag",regex:"<\\?(?:php|=)?",push:"php-start"}],t=[{token:"support.php_tag",regex:"\\?>",next:"pop"}];for(var n in this.$rules)this.$rules[n].unshift.apply(this.$rules[n],e);this.embedRules(a,"php-",t,["start"]),this.normalizeRules()};r.inherits(f,u),t.PhpHighlightRules=f,t.PhpLangHighlightRules=a}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/php",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/php_highlight_rules","ace/mode/php_highlight_rules","ace/mode/matching_brace_outdent","ace/range","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle","ace/unicode"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./php_highlight_rules").PhpHighlightRules,o=e("./php_highlight_rules").PhpLangHighlightRules,u=e("./matching_brace_outdent").MatchingBraceOutdent,a=e("../range").Range,f=e("../worker/worker_client").WorkerClient,l=e("./behaviour/cstyle").CstyleBehaviour,c=e("./folding/cstyle").FoldMode,h=e("../unicode"),p=function(e){this.inlinePhp=e&&e.inline;var t=this.inlinePhp?o:s;this.HighlightRules=t,this.$outdent=new u,this.$behaviour=new l,this.foldingRules=new c};r.inherits(p,i),function(){this.tokenRe=new RegExp("^["+h.packages.L+h.packages.Mn+h.packages.Mc+h.packages.Nd+h.packages.Pc+"_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+h.packages.L+h.packages.Mn+h.packages.Mc+h.packages.Nd+h.packages.Pc+"_]|s])+","g"),this.lineCommentStart=["//","#"],this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="php-start"){var u=t.match(/^.*[\{\(\[\:]\s*$/);u&&(r+=n)}else if(e=="php-doc-start"){if(o!="php-doc-start")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return 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 f(["ace"],"ace/mode/php_worker","PhpWorker");return t.attachToDocument(e.getDocument()),this.inlinePhp&&t.call("setOptions",[{inline:!0}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("ok",function(){e.clearAnnotations()}),t},this.$id="ace/mode/php"}.call(p.prototype),t.Mode=p}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-plain_text.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-plain_text.js new file mode 100644 index 00000000..be72ab99 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-plain_text.js @@ -0,0 +1 @@ +ace.define("ace/mode/plain_text",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/text_highlight_rules","ace/mode/behaviour"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./text_highlight_rules").TextHighlightRules,o=e("./behaviour").Behaviour,u=function(){this.HighlightRules=s,this.$behaviour=new o};r.inherits(u,i),function(){this.type="text",this.getNextLineIndent=function(e,t,n){return""},this.$id="ace/mode/plain_text"}.call(u.prototype),t.Mode=u}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-sass.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-sass.js new file mode 100644 index 00000000..91a991d6 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-sass.js @@ -0,0 +1 @@ +ace.define("ace/mode/scss_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=function(){var e=i.arrayToMap(function(){var e="-webkit-|-moz-|-o-|-ms-|-svg-|-pie-|-khtml-".split("|"),t="appearance|background-clip|background-inline-policy|background-origin|background-size|binding|border-bottom-colors|border-left-colors|border-right-colors|border-top-colors|border-end|border-end-color|border-end-style|border-end-width|border-image|border-start|border-start-color|border-start-style|border-start-width|box-align|box-direction|box-flex|box-flexgroup|box-ordinal-group|box-orient|box-pack|box-sizing|column-count|column-gap|column-width|column-rule|column-rule-width|column-rule-style|column-rule-color|float-edge|font-feature-settings|font-language-override|force-broken-image-icon|image-region|margin-end|margin-start|opacity|outline|outline-color|outline-offset|outline-radius|outline-radius-bottomleft|outline-radius-bottomright|outline-radius-topleft|outline-radius-topright|outline-style|outline-width|padding-end|padding-start|stack-sizing|tab-size|text-blink|text-decoration-color|text-decoration-line|text-decoration-style|transform|transform-origin|transition|transition-delay|transition-duration|transition-property|transition-timing-function|user-focus|user-input|user-modify|user-select|window-shadow|border-radius".split("|"),n="azimuth|background-attachment|background-color|background-image|background-position|background-repeat|background|border-bottom-color|border-bottom-style|border-bottom-width|border-bottom|border-collapse|border-color|border-left-color|border-left-style|border-left-width|border-left|border-right-color|border-right-style|border-right-width|border-right|border-spacing|border-style|border-top-color|border-top-style|border-top-width|border-top|border-width|border|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|content|counter-increment|counter-reset|cue-after|cue-before|cue|cursor|direction|display|elevation|empty-cells|float|font-family|font-size-adjust|font-size|font-stretch|font-style|font-variant|font-weight|font|height|left|letter-spacing|line-height|list-style-image|list-style-position|list-style-type|list-style|margin-bottom|margin-left|margin-right|margin-top|marker-offset|margin|marks|max-height|max-width|min-height|min-width|opacity|orphans|outline-color|outline-style|outline-width|outline|overflow|overflow-x|overflow-y|padding-bottom|padding-left|padding-right|padding-top|padding|page-break-after|page-break-before|page-break-inside|page|pause-after|pause-before|pause|pitch-range|pitch|play-during|position|quotes|richness|right|size|speak-header|speak-numeral|speak-punctuation|speech-rate|speak|stress|table-layout|text-align|text-decoration|text-indent|text-shadow|text-transform|top|unicode-bidi|vertical-align|visibility|voice-family|volume|white-space|widows|width|word-spacing|z-index".split("|"),r=[];for(var i=0,s=e.length;i|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/sass_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/scss_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./scss_highlight_rules").ScssHighlightRules,o=function(){s.call(this);var e=this.$rules.start;e[1].token=="comment"&&(e.splice(1,1,{onMatch:function(e,t,n){return n.unshift(this.next,-1,e.length-2,t),"comment"},regex:/^\s*\/\*/,next:"comment"},{token:"error.invalid",regex:"/\\*|[{;}]"},{token:"support.type",regex:/^\s*:[\w\-]+\s/}),this.$rules.comment=[{regex:/^\s*/,onMatch:function(e,t,n){return n[1]===-1&&(n[1]=Math.max(n[2],e.length-1)),e.length<=n[1]?(n.shift(),n.shift(),n.shift(),this.next=n.shift(),"text"):(this.next="","comment")},next:"start"},{defaultToken:"comment"}])};r.inherits(o,s),t.SassHighlightRules=o}),ace.define("ace/mode/folding/coffee",["require","exports","module","ace/lib/oop","ace/mode/folding/fold_mode","ace/range"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("./fold_mode").FoldMode,s=e("../../range").Range,o=t.FoldMode=function(){};r.inherits(o,i),function(){this.getFoldWidgetRange=function(e,t,n){var r=this.indentationBlock(e,n);if(r)return r;var i=/\S/,o=e.getLine(n),u=o.search(i);if(u==-1||o[u]!="#")return;var a=o.length,f=e.getLength(),l=n,c=n;while(++nl){var p=e.getLine(c).length;return new s(l,a,c,p)}},this.getFoldWidget=function(e,t,n){var r=e.getLine(n),i=r.search(/\S/),s=e.getLine(n+1),o=e.getLine(n-1),u=o.search(/\S/),a=s.search(/\S/);if(i==-1)return e.foldWidgets[n-1]=u!=-1&&u|<=|>=|==|!=|-|%|#|\\+|\\$|\\+|\\*"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"text",regex:"\\s+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:".*?\\*\\/",next:"start"},{token:"comment",regex:".+"}],qqstring:[{token:"string",regex:'(?:(?:\\\\.)|(?:[^"\\\\]))*?"',next:"start"},{token:"string",regex:".+"}],qstring:[{token:"string",regex:"(?:(?:\\\\.)|(?:[^'\\\\]))*?'",next:"start"},{token:"string",regex:".+"}]}};r.inherits(o,s),t.ScssHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";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/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";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,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.id,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return{text:"{"+l+"}",selection:!1};if(h.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(h.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var p=u.substring(s.column,s.column+1);if(p=="}"){var d=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(d!==null&&h.isAutoInsertedClosing(s,u,i))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var v="";h.isMaybeInsertedClosing(s,u)&&(v=o.stringRepeat("}",f.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var p=u.substring(s.column,s.column+1);if(p==="}"){var m=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!m)return null;var g=this.$getIndent(r.getLine(m.row))}else{if(!v){h.clearMaybeInsertedClosing();return}var g=this.$getIndent(u)}var y=g+r.getTabString();return{text:"\n"+y+"\n"+g+v,selection:[1,y.length,1,y.length]}}h.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);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;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"("+o+")",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="("){c(n);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=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return{text:"["+o+"]",selection:!1};if(h.isSaneInsertion(n,r))return h.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);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&&h.isAutoInsertedClosing(u,a,i))return h.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=="["){c(n);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=="'"){c(n);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 p=r.getTokens(o.start.row),d=0,v,m=-1;for(var g=0;go.start.column)break;d+=p[g].value.length}if(!v||m<0&&v.type!=="comment"&&(v.type!=="string"||o.start.column!==v.value.length+d-1&&v.value.lastIndexOf(s)===v.value.length-1)){if(!h.isSaneInsertion(n,r))return;return{text:s+s,selection:[1,1]}}if(v&&v.type==="string"){var y=f.substring(a.column,a.column+1);if(y==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=="'")){c(n);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}})};h.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)},h.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},h.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},h.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},h.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},h.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(h,i),t.CstyleBehaviour=h}),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){"use strict";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/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";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(++tf)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)}),ace.define("ace/mode/scss",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/scss_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./scss_highlight_rules").ScssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("./behaviour/css").CssBehaviour,a=e("./folding/cstyle").FoldMode,f=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,i),function(){this.lineCommentStart="//",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.$id="ace/mode/scss"}.call(f.prototype),t.Mode=f}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-text.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-text.js new file mode 100644 index 00000000..e69de29b diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-xml.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-xml.js new file mode 100644 index 00000000..f03e532c --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/mode-xml.js @@ -0,0 +1 @@ +ace.define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)([-_a-zA-Z0-9]+)",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)([-_a-zA-Z0-9]+)",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:[-_a-zA-Z0-9]+:)?[-_a-zA-Z0-9]+"},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,t,n){"use strict";function o(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,u=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var u=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:u+a+u,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==u&&(o(p,"attribute-value")||o(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(o(p,"tag-whitespace")||o(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(o(p,"attribute-equals")&&(d||c==">")||o(p,"decl-attribute-equals")&&(d||c=="?"))return{text:u+u,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}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var u=n.getCursorPosition(),a=new s(r,u.row,u.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(o(f,"tag-name")||o(f,"tag-whitespace")||o(f,"attribute-name")||o(f,"attribute-equals")||o(f,"attribute-value")))return;if(o(f,"reference.attribute-value"))return;if(o(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>u.column||h==u.column&&l!=c)return}}while(!o(f,"tag-name"))f=a.stepBackward();var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(o(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==u.row&&(v=v.substring(0,u.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var s=n.getCursorPosition(),o=r.getLine(s.row),u=o.substring(s.column,s.column+2);if(u=="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=r.mixin(e||{},t||{})};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.voidElements.hasOwnProperty(t.tagName))return;if(this.voidElements.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,s.fromPoints(a.start,c)}else o.push(a)}}}}).call(a.prototype)}),ace.define("ace/mode/xml",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/xml_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/xml"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./xml_highlight_rules").XmlHighlightRules,u=e("./behaviour/xml").XmlBehaviour,a=e("./folding/xml").FoldMode,f=function(){this.HighlightRules=o,this.$behaviour=new u,this.foldingRules=new a};r.inherits(f,s),function(){this.voidElements=i.arrayToMap([]),this.blockComment={start:""},this.$id="ace/mode/xml"}.call(f.prototype),t.Mode=f}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/snippets/css.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/snippets/css.js new file mode 100644 index 00000000..9659ba49 --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/snippets/css.js @@ -0,0 +1 @@ +ace.define("ace/snippets/css",["require","exports","module"],function(e,t,n){"use strict";t.snippetText="snippet .\n ${1} {\n ${2}\n }\nsnippet !\n !important\nsnippet bdi:m+\n -moz-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:m\n -moz-border-image: ${1};\nsnippet bdrz:m\n -moz-border-radius: ${1};\nsnippet bxsh:m+\n -moz-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:m\n -moz-box-shadow: ${1};\nsnippet bdi:w+\n -webkit-border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:w\n -webkit-border-image: ${1};\nsnippet bdrz:w\n -webkit-border-radius: ${1};\nsnippet bxsh:w+\n -webkit-box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh:w\n -webkit-box-shadow: ${1};\nsnippet @f\n @font-face {\n font-family: ${1};\n src: url(${2});\n }\nsnippet @i\n @import url(${1});\nsnippet @m\n @media ${1:print} {\n ${2}\n }\nsnippet bg+\n background: #${1:FFF} url(${2}) ${3:0} ${4:0} ${5:no-repeat};\nsnippet bga\n background-attachment: ${1};\nsnippet bga:f\n background-attachment: fixed;\nsnippet bga:s\n background-attachment: scroll;\nsnippet bgbk\n background-break: ${1};\nsnippet bgbk:bb\n background-break: bounding-box;\nsnippet bgbk:c\n background-break: continuous;\nsnippet bgbk:eb\n background-break: each-box;\nsnippet bgcp\n background-clip: ${1};\nsnippet bgcp:bb\n background-clip: border-box;\nsnippet bgcp:cb\n background-clip: content-box;\nsnippet bgcp:nc\n background-clip: no-clip;\nsnippet bgcp:pb\n background-clip: padding-box;\nsnippet bgc\n background-color: #${1:FFF};\nsnippet bgc:t\n background-color: transparent;\nsnippet bgi\n background-image: url(${1});\nsnippet bgi:n\n background-image: none;\nsnippet bgo\n background-origin: ${1};\nsnippet bgo:bb\n background-origin: border-box;\nsnippet bgo:cb\n background-origin: content-box;\nsnippet bgo:pb\n background-origin: padding-box;\nsnippet bgpx\n background-position-x: ${1};\nsnippet bgpy\n background-position-y: ${1};\nsnippet bgp\n background-position: ${1:0} ${2:0};\nsnippet bgr\n background-repeat: ${1};\nsnippet bgr:n\n background-repeat: no-repeat;\nsnippet bgr:x\n background-repeat: repeat-x;\nsnippet bgr:y\n background-repeat: repeat-y;\nsnippet bgr:r\n background-repeat: repeat;\nsnippet bgz\n background-size: ${1};\nsnippet bgz:a\n background-size: auto;\nsnippet bgz:ct\n background-size: contain;\nsnippet bgz:cv\n background-size: cover;\nsnippet bg\n background: ${1};\nsnippet bg:ie\n filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='${1}',sizingMethod='${2:crop}');\nsnippet bg:n\n background: none;\nsnippet bd+\n border: ${1:1px} ${2:solid} #${3:000};\nsnippet bdb+\n border-bottom: ${1:1px} ${2:solid} #${3:000};\nsnippet bdbc\n border-bottom-color: #${1:000};\nsnippet bdbi\n border-bottom-image: url(${1});\nsnippet bdbi:n\n border-bottom-image: none;\nsnippet bdbli\n border-bottom-left-image: url(${1});\nsnippet bdbli:c\n border-bottom-left-image: continue;\nsnippet bdbli:n\n border-bottom-left-image: none;\nsnippet bdblrz\n border-bottom-left-radius: ${1};\nsnippet bdbri\n border-bottom-right-image: url(${1});\nsnippet bdbri:c\n border-bottom-right-image: continue;\nsnippet bdbri:n\n border-bottom-right-image: none;\nsnippet bdbrrz\n border-bottom-right-radius: ${1};\nsnippet bdbs\n border-bottom-style: ${1};\nsnippet bdbs:n\n border-bottom-style: none;\nsnippet bdbw\n border-bottom-width: ${1};\nsnippet bdb\n border-bottom: ${1};\nsnippet bdb:n\n border-bottom: none;\nsnippet bdbk\n border-break: ${1};\nsnippet bdbk:c\n border-break: close;\nsnippet bdcl\n border-collapse: ${1};\nsnippet bdcl:c\n border-collapse: collapse;\nsnippet bdcl:s\n border-collapse: separate;\nsnippet bdc\n border-color: #${1:000};\nsnippet bdci\n border-corner-image: url(${1});\nsnippet bdci:c\n border-corner-image: continue;\nsnippet bdci:n\n border-corner-image: none;\nsnippet bdf\n border-fit: ${1};\nsnippet bdf:c\n border-fit: clip;\nsnippet bdf:of\n border-fit: overwrite;\nsnippet bdf:ow\n border-fit: overwrite;\nsnippet bdf:r\n border-fit: repeat;\nsnippet bdf:sc\n border-fit: scale;\nsnippet bdf:sp\n border-fit: space;\nsnippet bdf:st\n border-fit: stretch;\nsnippet bdi\n border-image: url(${1}) ${2:0} ${3:0} ${4:0} ${5:0} ${6:stretch} ${7:stretch};\nsnippet bdi:n\n border-image: none;\nsnippet bdl+\n border-left: ${1:1px} ${2:solid} #${3:000};\nsnippet bdlc\n border-left-color: #${1:000};\nsnippet bdli\n border-left-image: url(${1});\nsnippet bdli:n\n border-left-image: none;\nsnippet bdls\n border-left-style: ${1};\nsnippet bdls:n\n border-left-style: none;\nsnippet bdlw\n border-left-width: ${1};\nsnippet bdl\n border-left: ${1};\nsnippet bdl:n\n border-left: none;\nsnippet bdlt\n border-length: ${1};\nsnippet bdlt:a\n border-length: auto;\nsnippet bdrz\n border-radius: ${1};\nsnippet bdr+\n border-right: ${1:1px} ${2:solid} #${3:000};\nsnippet bdrc\n border-right-color: #${1:000};\nsnippet bdri\n border-right-image: url(${1});\nsnippet bdri:n\n border-right-image: none;\nsnippet bdrs\n border-right-style: ${1};\nsnippet bdrs:n\n border-right-style: none;\nsnippet bdrw\n border-right-width: ${1};\nsnippet bdr\n border-right: ${1};\nsnippet bdr:n\n border-right: none;\nsnippet bdsp\n border-spacing: ${1};\nsnippet bds\n border-style: ${1};\nsnippet bds:ds\n border-style: dashed;\nsnippet bds:dtds\n border-style: dot-dash;\nsnippet bds:dtdtds\n border-style: dot-dot-dash;\nsnippet bds:dt\n border-style: dotted;\nsnippet bds:db\n border-style: double;\nsnippet bds:g\n border-style: groove;\nsnippet bds:h\n border-style: hidden;\nsnippet bds:i\n border-style: inset;\nsnippet bds:n\n border-style: none;\nsnippet bds:o\n border-style: outset;\nsnippet bds:r\n border-style: ridge;\nsnippet bds:s\n border-style: solid;\nsnippet bds:w\n border-style: wave;\nsnippet bdt+\n border-top: ${1:1px} ${2:solid} #${3:000};\nsnippet bdtc\n border-top-color: #${1:000};\nsnippet bdti\n border-top-image: url(${1});\nsnippet bdti:n\n border-top-image: none;\nsnippet bdtli\n border-top-left-image: url(${1});\nsnippet bdtli:c\n border-corner-image: continue;\nsnippet bdtli:n\n border-corner-image: none;\nsnippet bdtlrz\n border-top-left-radius: ${1};\nsnippet bdtri\n border-top-right-image: url(${1});\nsnippet bdtri:c\n border-top-right-image: continue;\nsnippet bdtri:n\n border-top-right-image: none;\nsnippet bdtrrz\n border-top-right-radius: ${1};\nsnippet bdts\n border-top-style: ${1};\nsnippet bdts:n\n border-top-style: none;\nsnippet bdtw\n border-top-width: ${1};\nsnippet bdt\n border-top: ${1};\nsnippet bdt:n\n border-top: none;\nsnippet bdw\n border-width: ${1};\nsnippet bd\n border: ${1};\nsnippet bd:n\n border: none;\nsnippet b\n bottom: ${1};\nsnippet b:a\n bottom: auto;\nsnippet bxsh+\n box-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet bxsh\n box-shadow: ${1};\nsnippet bxsh:n\n box-shadow: none;\nsnippet bxz\n box-sizing: ${1};\nsnippet bxz:bb\n box-sizing: border-box;\nsnippet bxz:cb\n box-sizing: content-box;\nsnippet cps\n caption-side: ${1};\nsnippet cps:b\n caption-side: bottom;\nsnippet cps:t\n caption-side: top;\nsnippet cl\n clear: ${1};\nsnippet cl:b\n clear: both;\nsnippet cl:l\n clear: left;\nsnippet cl:n\n clear: none;\nsnippet cl:r\n clear: right;\nsnippet cp\n clip: ${1};\nsnippet cp:a\n clip: auto;\nsnippet cp:r\n clip: rect(${1:0} ${2:0} ${3:0} ${4:0});\nsnippet c\n color: #${1:000};\nsnippet ct\n content: ${1};\nsnippet ct:a\n content: attr(${1});\nsnippet ct:cq\n content: close-quote;\nsnippet ct:c\n content: counter(${1});\nsnippet ct:cs\n content: counters(${1});\nsnippet ct:ncq\n content: no-close-quote;\nsnippet ct:noq\n content: no-open-quote;\nsnippet ct:n\n content: normal;\nsnippet ct:oq\n content: open-quote;\nsnippet coi\n counter-increment: ${1};\nsnippet cor\n counter-reset: ${1};\nsnippet cur\n cursor: ${1};\nsnippet cur:a\n cursor: auto;\nsnippet cur:c\n cursor: crosshair;\nsnippet cur:d\n cursor: default;\nsnippet cur:ha\n cursor: hand;\nsnippet cur:he\n cursor: help;\nsnippet cur:m\n cursor: move;\nsnippet cur:p\n cursor: pointer;\nsnippet cur:t\n cursor: text;\nsnippet d\n display: ${1};\nsnippet d:mib\n display: -moz-inline-box;\nsnippet d:mis\n display: -moz-inline-stack;\nsnippet d:b\n display: block;\nsnippet d:cp\n display: compact;\nsnippet d:ib\n display: inline-block;\nsnippet d:itb\n display: inline-table;\nsnippet d:i\n display: inline;\nsnippet d:li\n display: list-item;\nsnippet d:n\n display: none;\nsnippet d:ri\n display: run-in;\nsnippet d:tbcp\n display: table-caption;\nsnippet d:tbc\n display: table-cell;\nsnippet d:tbclg\n display: table-column-group;\nsnippet d:tbcl\n display: table-column;\nsnippet d:tbfg\n display: table-footer-group;\nsnippet d:tbhg\n display: table-header-group;\nsnippet d:tbrg\n display: table-row-group;\nsnippet d:tbr\n display: table-row;\nsnippet d:tb\n display: table;\nsnippet ec\n empty-cells: ${1};\nsnippet ec:h\n empty-cells: hide;\nsnippet ec:s\n empty-cells: show;\nsnippet exp\n expression()\nsnippet fl\n float: ${1};\nsnippet fl:l\n float: left;\nsnippet fl:n\n float: none;\nsnippet fl:r\n float: right;\nsnippet f+\n font: ${1:1em} ${2:Arial},${3:sans-serif};\nsnippet fef\n font-effect: ${1};\nsnippet fef:eb\n font-effect: emboss;\nsnippet fef:eg\n font-effect: engrave;\nsnippet fef:n\n font-effect: none;\nsnippet fef:o\n font-effect: outline;\nsnippet femp\n font-emphasize-position: ${1};\nsnippet femp:a\n font-emphasize-position: after;\nsnippet femp:b\n font-emphasize-position: before;\nsnippet fems\n font-emphasize-style: ${1};\nsnippet fems:ac\n font-emphasize-style: accent;\nsnippet fems:c\n font-emphasize-style: circle;\nsnippet fems:ds\n font-emphasize-style: disc;\nsnippet fems:dt\n font-emphasize-style: dot;\nsnippet fems:n\n font-emphasize-style: none;\nsnippet fem\n font-emphasize: ${1};\nsnippet ff\n font-family: ${1};\nsnippet ff:c\n font-family: ${1:'Monotype Corsiva','Comic Sans MS'},cursive;\nsnippet ff:f\n font-family: ${1:Capitals,Impact},fantasy;\nsnippet ff:m\n font-family: ${1:Monaco,'Courier New'},monospace;\nsnippet ff:ss\n font-family: ${1:Helvetica,Arial},sans-serif;\nsnippet ff:s\n font-family: ${1:Georgia,'Times New Roman'},serif;\nsnippet fza\n font-size-adjust: ${1};\nsnippet fza:n\n font-size-adjust: none;\nsnippet fz\n font-size: ${1};\nsnippet fsm\n font-smooth: ${1};\nsnippet fsm:aw\n font-smooth: always;\nsnippet fsm:a\n font-smooth: auto;\nsnippet fsm:n\n font-smooth: never;\nsnippet fst\n font-stretch: ${1};\nsnippet fst:c\n font-stretch: condensed;\nsnippet fst:e\n font-stretch: expanded;\nsnippet fst:ec\n font-stretch: extra-condensed;\nsnippet fst:ee\n font-stretch: extra-expanded;\nsnippet fst:n\n font-stretch: normal;\nsnippet fst:sc\n font-stretch: semi-condensed;\nsnippet fst:se\n font-stretch: semi-expanded;\nsnippet fst:uc\n font-stretch: ultra-condensed;\nsnippet fst:ue\n font-stretch: ultra-expanded;\nsnippet fs\n font-style: ${1};\nsnippet fs:i\n font-style: italic;\nsnippet fs:n\n font-style: normal;\nsnippet fs:o\n font-style: oblique;\nsnippet fv\n font-variant: ${1};\nsnippet fv:n\n font-variant: normal;\nsnippet fv:sc\n font-variant: small-caps;\nsnippet fw\n font-weight: ${1};\nsnippet fw:b\n font-weight: bold;\nsnippet fw:br\n font-weight: bolder;\nsnippet fw:lr\n font-weight: lighter;\nsnippet fw:n\n font-weight: normal;\nsnippet f\n font: ${1};\nsnippet h\n height: ${1};\nsnippet h:a\n height: auto;\nsnippet l\n left: ${1};\nsnippet l:a\n left: auto;\nsnippet lts\n letter-spacing: ${1};\nsnippet lh\n line-height: ${1};\nsnippet lisi\n list-style-image: url(${1});\nsnippet lisi:n\n list-style-image: none;\nsnippet lisp\n list-style-position: ${1};\nsnippet lisp:i\n list-style-position: inside;\nsnippet lisp:o\n list-style-position: outside;\nsnippet list\n list-style-type: ${1};\nsnippet list:c\n list-style-type: circle;\nsnippet list:dclz\n list-style-type: decimal-leading-zero;\nsnippet list:dc\n list-style-type: decimal;\nsnippet list:d\n list-style-type: disc;\nsnippet list:lr\n list-style-type: lower-roman;\nsnippet list:n\n list-style-type: none;\nsnippet list:s\n list-style-type: square;\nsnippet list:ur\n list-style-type: upper-roman;\nsnippet lis\n list-style: ${1};\nsnippet lis:n\n list-style: none;\nsnippet mb\n margin-bottom: ${1};\nsnippet mb:a\n margin-bottom: auto;\nsnippet ml\n margin-left: ${1};\nsnippet ml:a\n margin-left: auto;\nsnippet mr\n margin-right: ${1};\nsnippet mr:a\n margin-right: auto;\nsnippet mt\n margin-top: ${1};\nsnippet mt:a\n margin-top: auto;\nsnippet m\n margin: ${1};\nsnippet m:4\n margin: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet m:3\n margin: ${1:0} ${2:0} ${3:0};\nsnippet m:2\n margin: ${1:0} ${2:0};\nsnippet m:0\n margin: 0;\nsnippet m:a\n margin: auto;\nsnippet mah\n max-height: ${1};\nsnippet mah:n\n max-height: none;\nsnippet maw\n max-width: ${1};\nsnippet maw:n\n max-width: none;\nsnippet mih\n min-height: ${1};\nsnippet miw\n min-width: ${1};\nsnippet op\n opacity: ${1};\nsnippet op:ie\n filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100});\nsnippet op:ms\n -ms-filter: 'progid:DXImageTransform.Microsoft.Alpha(Opacity=${1:100})';\nsnippet orp\n orphans: ${1};\nsnippet o+\n outline: ${1:1px} ${2:solid} #${3:000};\nsnippet oc\n outline-color: ${1:#000};\nsnippet oc:i\n outline-color: invert;\nsnippet oo\n outline-offset: ${1};\nsnippet os\n outline-style: ${1};\nsnippet ow\n outline-width: ${1};\nsnippet o\n outline: ${1};\nsnippet o:n\n outline: none;\nsnippet ovs\n overflow-style: ${1};\nsnippet ovs:a\n overflow-style: auto;\nsnippet ovs:mq\n overflow-style: marquee;\nsnippet ovs:mv\n overflow-style: move;\nsnippet ovs:p\n overflow-style: panner;\nsnippet ovs:s\n overflow-style: scrollbar;\nsnippet ovx\n overflow-x: ${1};\nsnippet ovx:a\n overflow-x: auto;\nsnippet ovx:h\n overflow-x: hidden;\nsnippet ovx:s\n overflow-x: scroll;\nsnippet ovx:v\n overflow-x: visible;\nsnippet ovy\n overflow-y: ${1};\nsnippet ovy:a\n overflow-y: auto;\nsnippet ovy:h\n overflow-y: hidden;\nsnippet ovy:s\n overflow-y: scroll;\nsnippet ovy:v\n overflow-y: visible;\nsnippet ov\n overflow: ${1};\nsnippet ov:a\n overflow: auto;\nsnippet ov:h\n overflow: hidden;\nsnippet ov:s\n overflow: scroll;\nsnippet ov:v\n overflow: visible;\nsnippet pb\n padding-bottom: ${1};\nsnippet pl\n padding-left: ${1};\nsnippet pr\n padding-right: ${1};\nsnippet pt\n padding-top: ${1};\nsnippet p\n padding: ${1};\nsnippet p:4\n padding: ${1:0} ${2:0} ${3:0} ${4:0};\nsnippet p:3\n padding: ${1:0} ${2:0} ${3:0};\nsnippet p:2\n padding: ${1:0} ${2:0};\nsnippet p:0\n padding: 0;\nsnippet pgba\n page-break-after: ${1};\nsnippet pgba:aw\n page-break-after: always;\nsnippet pgba:a\n page-break-after: auto;\nsnippet pgba:l\n page-break-after: left;\nsnippet pgba:r\n page-break-after: right;\nsnippet pgbb\n page-break-before: ${1};\nsnippet pgbb:aw\n page-break-before: always;\nsnippet pgbb:a\n page-break-before: auto;\nsnippet pgbb:l\n page-break-before: left;\nsnippet pgbb:r\n page-break-before: right;\nsnippet pgbi\n page-break-inside: ${1};\nsnippet pgbi:a\n page-break-inside: auto;\nsnippet pgbi:av\n page-break-inside: avoid;\nsnippet pos\n position: ${1};\nsnippet pos:a\n position: absolute;\nsnippet pos:f\n position: fixed;\nsnippet pos:r\n position: relative;\nsnippet pos:s\n position: static;\nsnippet q\n quotes: ${1};\nsnippet q:en\n quotes: '\\201C' '\\201D' '\\2018' '\\2019';\nsnippet q:n\n quotes: none;\nsnippet q:ru\n quotes: '\\00AB' '\\00BB' '\\201E' '\\201C';\nsnippet rz\n resize: ${1};\nsnippet rz:b\n resize: both;\nsnippet rz:h\n resize: horizontal;\nsnippet rz:n\n resize: none;\nsnippet rz:v\n resize: vertical;\nsnippet r\n right: ${1};\nsnippet r:a\n right: auto;\nsnippet tbl\n table-layout: ${1};\nsnippet tbl:a\n table-layout: auto;\nsnippet tbl:f\n table-layout: fixed;\nsnippet tal\n text-align-last: ${1};\nsnippet tal:a\n text-align-last: auto;\nsnippet tal:c\n text-align-last: center;\nsnippet tal:l\n text-align-last: left;\nsnippet tal:r\n text-align-last: right;\nsnippet ta\n text-align: ${1};\nsnippet ta:c\n text-align: center;\nsnippet ta:l\n text-align: left;\nsnippet ta:r\n text-align: right;\nsnippet td\n text-decoration: ${1};\nsnippet td:l\n text-decoration: line-through;\nsnippet td:n\n text-decoration: none;\nsnippet td:o\n text-decoration: overline;\nsnippet td:u\n text-decoration: underline;\nsnippet te\n text-emphasis: ${1};\nsnippet te:ac\n text-emphasis: accent;\nsnippet te:a\n text-emphasis: after;\nsnippet te:b\n text-emphasis: before;\nsnippet te:c\n text-emphasis: circle;\nsnippet te:ds\n text-emphasis: disc;\nsnippet te:dt\n text-emphasis: dot;\nsnippet te:n\n text-emphasis: none;\nsnippet th\n text-height: ${1};\nsnippet th:a\n text-height: auto;\nsnippet th:f\n text-height: font-size;\nsnippet th:m\n text-height: max-size;\nsnippet th:t\n text-height: text-size;\nsnippet ti\n text-indent: ${1};\nsnippet ti:-\n text-indent: -9999px;\nsnippet tj\n text-justify: ${1};\nsnippet tj:a\n text-justify: auto;\nsnippet tj:d\n text-justify: distribute;\nsnippet tj:ic\n text-justify: inter-cluster;\nsnippet tj:ii\n text-justify: inter-ideograph;\nsnippet tj:iw\n text-justify: inter-word;\nsnippet tj:k\n text-justify: kashida;\nsnippet tj:t\n text-justify: tibetan;\nsnippet to+\n text-outline: ${1:0} ${2:0} #${3:000};\nsnippet to\n text-outline: ${1};\nsnippet to:n\n text-outline: none;\nsnippet tr\n text-replace: ${1};\nsnippet tr:n\n text-replace: none;\nsnippet tsh+\n text-shadow: ${1:0} ${2:0} ${3:0} #${4:000};\nsnippet tsh\n text-shadow: ${1};\nsnippet tsh:n\n text-shadow: none;\nsnippet tt\n text-transform: ${1};\nsnippet tt:c\n text-transform: capitalize;\nsnippet tt:l\n text-transform: lowercase;\nsnippet tt:n\n text-transform: none;\nsnippet tt:u\n text-transform: uppercase;\nsnippet tw\n text-wrap: ${1};\nsnippet tw:no\n text-wrap: none;\nsnippet tw:n\n text-wrap: normal;\nsnippet tw:s\n text-wrap: suppress;\nsnippet tw:u\n text-wrap: unrestricted;\nsnippet t\n top: ${1};\nsnippet t:a\n top: auto;\nsnippet va\n vertical-align: ${1};\nsnippet va:bl\n vertical-align: baseline;\nsnippet va:b\n vertical-align: bottom;\nsnippet va:m\n vertical-align: middle;\nsnippet va:sub\n vertical-align: sub;\nsnippet va:sup\n vertical-align: super;\nsnippet va:tb\n vertical-align: text-bottom;\nsnippet va:tt\n vertical-align: text-top;\nsnippet va:t\n vertical-align: top;\nsnippet v\n visibility: ${1};\nsnippet v:c\n visibility: collapse;\nsnippet v:h\n visibility: hidden;\nsnippet v:v\n visibility: visible;\nsnippet whsc\n white-space-collapse: ${1};\nsnippet whsc:ba\n white-space-collapse: break-all;\nsnippet whsc:bs\n white-space-collapse: break-strict;\nsnippet whsc:k\n white-space-collapse: keep-all;\nsnippet whsc:l\n white-space-collapse: loose;\nsnippet whsc:n\n white-space-collapse: normal;\nsnippet whs\n white-space: ${1};\nsnippet whs:n\n white-space: normal;\nsnippet whs:nw\n white-space: nowrap;\nsnippet whs:pl\n white-space: pre-line;\nsnippet whs:pw\n white-space: pre-wrap;\nsnippet whs:p\n white-space: pre;\nsnippet wid\n widows: ${1};\nsnippet w\n width: ${1};\nsnippet w:a\n width: auto;\nsnippet wob\n word-break: ${1};\nsnippet wob:ba\n word-break: break-all;\nsnippet wob:bs\n word-break: break-strict;\nsnippet wob:k\n word-break: keep-all;\nsnippet wob:l\n word-break: loose;\nsnippet wob:n\n word-break: normal;\nsnippet wos\n word-spacing: ${1};\nsnippet wow\n word-wrap: ${1};\nsnippet wow:no\n word-wrap: none;\nsnippet wow:n\n word-wrap: normal;\nsnippet wow:s\n word-wrap: suppress;\nsnippet wow:u\n word-wrap: unrestricted;\nsnippet z\n z-index: ${1};\nsnippet z:a\n z-index: auto;\nsnippet zoo\n zoom: 1;\n",t.scope="css"}) \ No newline at end of file diff --git a/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/snippets/html.js b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/snippets/html.js new file mode 100644 index 00000000..a220d3df --- /dev/null +++ b/admin/core/lib/ReduxFramework/ReduxCore/inc/fields/ace_editor/vendor/snippets/html.js @@ -0,0 +1 @@ +ace.define("ace/snippets/html",["require","exports","module"],function(e,t,n){"use strict";t.snippetText='# Some useful Unicode entities\n# Non-Breaking Space\nsnippet nbs\n  \n# \u2190\nsnippet left\n ←\n# \u2192\nsnippet right\n →\n# \u2191\nsnippet up\n ↑\n# \u2193\nsnippet down\n ↓\n# \u21a9\nsnippet return\n ↩\n# \u21e4\nsnippet backtab\n ⇤\n# \u21e5\nsnippet tab\n ⇥\n# \u21e7\nsnippet shift\n ⇧\n# \u2303\nsnippet ctrl\n ⌃\n# \u2305\nsnippet enter\n ⌅\n# \u2318\nsnippet cmd\n ⌘\n# \u2325\nsnippet option\n ⌥\n# \u2326\nsnippet delete\n ⌦\n# \u232b\nsnippet backspace\n ⌫\n# \u238b\nsnippet esc\n ⎋\n# Generic Doctype\nsnippet doctype HTML 4.01 Strict\n \nsnippet doctype HTML 4.01 Transitional\n \nsnippet doctype HTML 5\n \nsnippet doctype XHTML 1.0 Frameset\n \nsnippet doctype XHTML 1.0 Strict\n \nsnippet doctype XHTML 1.0 Transitional\n \nsnippet doctype XHTML 1.1\n \n# HTML Doctype 4.01 Strict\nsnippet docts\n \n# HTML Doctype 4.01 Transitional\nsnippet doct\n \n# HTML Doctype 5\nsnippet doct5\n \n# XHTML Doctype 1.0 Frameset\nsnippet docxf\n \n# XHTML Doctype 1.0 Strict\nsnippet docxs\n \n# XHTML Doctype 1.0 Transitional\nsnippet docxt\n \n# XHTML Doctype 1.1\nsnippet docx\n \n# Attributes\nsnippet attr\n ${1:attribute}="${2:property}"\nsnippet attr+\n ${1:attribute}="${2:property}" attr+${3}\nsnippet .\n class="${1}"${2}\nsnippet #\n id="${1}"${2}\nsnippet alt\n alt="${1}"${2}\nsnippet charset\n charset="${1:utf-8}"${2}\nsnippet data\n data-${1}="${2:$1}"${3}\nsnippet for\n for="${1}"${2}\nsnippet height\n height="${1}"${2}\nsnippet href\n href="${1:#}"${2}\nsnippet lang\n lang="${1:en}"${2}\nsnippet media\n media="${1}"${2}\nsnippet name\n name="${1}"${2}\nsnippet rel\n rel="${1}"${2}\nsnippet scope\n scope="${1:row}"${2}\nsnippet src\n src="${1}"${2}\nsnippet title=\n title="${1}"${2}\nsnippet type\n type="${1}"${2}\nsnippet value\n value="${1}"${2}\nsnippet width\n width="${1}"${2}\n# Elements\nsnippet a\n ${2:$1}\nsnippet a.\n ${3:$1}\nsnippet a#\n ${3:$1}\nsnippet a:ext\n ${2:$1}\nsnippet a:mail\n ${3:email me}\nsnippet abbr\n ${2}\nsnippet address\n
    \n ${1}\n
    \nsnippet area\n ${4}\nsnippet area+\n ${4}\n area+${5}\nsnippet area:c\n ${3}\nsnippet area:d\n ${3}\nsnippet area:p\n ${3}\nsnippet area:r\n ${3}\nsnippet article\n
    \n ${1}\n
    \nsnippet article.\n
    \n ${2}\n
    \nsnippet article#\n
    \n ${2}\n
    \nsnippet aside\n \nsnippet aside.\n \nsnippet aside#\n \nsnippet audio\n